]> matita.cs.unibo.it Git - helm.git/commitdiff
...
authorEnrico Tassi <enrico.tassi@inria.fr>
Mon, 9 Mar 2009 18:21:23 +0000 (18:21 +0000)
committerEnrico Tassi <enrico.tassi@inria.fr>
Mon, 9 Mar 2009 18:21:23 +0000 (18:21 +0000)
helm/software/matita/tests/unifhint.ma [new file with mode: 0644]
helm/software/matita/tests/unifhint_simple.ma [new file with mode: 0644]

diff --git a/helm/software/matita/tests/unifhint.ma b/helm/software/matita/tests/unifhint.ma
new file mode 100644 (file)
index 0000000..6d0c733
--- /dev/null
@@ -0,0 +1,92 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+record group : Type β‰ {
+  gcarr :> Type;
+  gmult : gcarr β†’ gcarr β†’ gcarr; 
+  gopp  : gcarr β†’ gcarr;
+  gunit : gcarr
+}.
+
+interpretation "unif hints inverse" 'invert x = (gopp _ x).
+interpretation "unif hing times" 'times x y = (gmult _ x y).
+notation "πŸ™" non associative with precedence 90 for @{ 'unit }.
+interpretation "unif hint unit" 'unit = (gunit _).
+
+include "nat/nat.ma".
+include "list/list.ma".
+
+inductive Expr : Type β‰
+  | Evar : nat β†’ Expr
+  | Eopp : Expr β†’ Expr
+  | Eunit : Expr
+  | Emult : Expr β†’ Expr β†’ Expr.
+  
+let rec sem (g : group) (e : Expr) (gamma : list (gcarr g)) on e : gcarr g β‰ 
+  match e with
+  [ Evar n β‡’ nth ? gamma πŸ™ n
+  | Eopp x β‡’ (sem g x gamma) ^ -1
+  | Eunit β‡’ πŸ™
+  | Emult x y β‡’ (sem g x gamma) * (sem g y gamma)].
+  
+notation "γ€šterm 19 x, term 19 gγ€›" non associative with precedence 90 
+for @{ 'sem $x $g}.
+interpretation "unif hint sem" 'sem x g = (sem _ x g). 
+  
+axiom P : βˆ€g:group. gcarr g β†’ Prop.
+axiom tac : Expr β†’ Expr.
+axiom start : βˆ€g,x,G.P g γ€šx,Gγ€› β†’ Prop.
+
+notation "@ t" non associative with precedence 90 for @{ (Ξ»x.x) $t }.
+
+
+unification hint 0 (βˆ€g:group.βˆ€x:Expr.βˆ€G:list (gcarr g). γ€šEopp x,Gγ€› = (@γ€šx,Gγ€›) ^-1).
+unification hint 0 (βˆ€g:group.βˆ€x,y.βˆ€G:list (gcarr g). γ€šEmult x y,Gγ€› = (@γ€šx,Gγ€›) * (@γ€šy,Gγ€›)).
+unification hint 0 (βˆ€g:group.βˆ€G:list (gcarr g). γ€šEunit,Gγ€› = πŸ™).
+unification hint 2 (βˆ€g:group.βˆ€G:list (gcarr g).βˆ€x:gcarr g. γ€š(Evar 0), (x :: G)γ€› = @x).
+unification hint 3 (βˆ€g:group.βˆ€G:list (gcarr g).βˆ€n.βˆ€x:gcarr g.(@γ€šEvar n, Gγ€›)=
+   (γ€š(Evar (S n)), (x :: G)γ€›) ) . 
+
+lemma test : βˆ€g:group.βˆ€x,y:gcarr g. βˆ€h:P ? ((πŸ™ * x) * (x^-1 * y)). 
+   start g ? ? h.
+   y == [| ?, x::? |]  
+   
+   γ€šEvar n, Gγ€› 
+   
+   
+   int: γ€š(Evar (S n)), (x :: G)γ€› = γ€šEvar n, Gγ€›
+                             nth (m) (G)          = γ€šEvar n, Gγ€›
+
+
+βˆ€x,Ξ“. [| B 0, x::Ξ“ |] = x
+βˆ€n,y,Ξ“. [| B n, Ξ“ |] = [| B (S n), y::Ξ“ |] 
+βˆ€e,f. [| Add e f, Ξ“ |] = [| e, Ξ“ |] + [| f, Ξ“ |]
+
+
+x + x = [| ?1, ?2 |]
+
+x = [| ?1,?2 |]
+?1 β‰ B 0
+?2 β‰ x::?3
+
+x = [| ?4, y::x::?3 |]
+
+[| ?4, x::?3 |] =?= [| B (S ?n), ?y::?Ξ“ |]
+x =?= [| B ?n, ?Ξ“ |]
+
+
+x  =?=   E
+
+x  =?=  ?,   ? =?= E
diff --git a/helm/software/matita/tests/unifhint_simple.ma b/helm/software/matita/tests/unifhint_simple.ma
new file mode 100644 (file)
index 0000000..48ad5c4
--- /dev/null
@@ -0,0 +1,79 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+record group : Type β‰ {
+  gcarr :> Type;
+  gmult : gcarr β†’ gcarr β†’ gcarr; 
+  gopp  : gcarr β†’ gcarr;
+  gunit : gcarr
+}.
+
+interpretation "unif hints inverse" 'invert x = (gopp _ x).
+interpretation "unif hing times" 'times x y = (gmult _ x y).
+notation "πŸ™" non associative with precedence 90 for @{ 'unit }.
+interpretation "unif hint unit" 'unit = (gunit _).
+
+inductive Expr (g : group) : Type β‰
+  | Evar : gcarr g β†’ Expr g
+  | Eopp : Expr g β†’ Expr g
+  | Eunit : Expr g
+  | Emult : Expr g β†’ Expr g β†’ Expr g.
+  
+let rec sem (g : group) (e : Expr g) on e : gcarr g β‰ 
+  match e with
+  [ Evar x β‡’ x
+  | Eopp x β‡’ (sem g x) ^ -1
+  | Eunit β‡’ πŸ™
+  | Emult x y β‡’ (sem g x) * (sem g y)].
+  
+notation "γ€šxγ€›" non associative with precedence 90 for @{ 'sem $x }.
+interpretation "unif hint sem" 'sem x = (sem _ x). 
+  
+axiom P : βˆ€g:group. gcarr g β†’ Prop.
+axiom tac : βˆ€g:group. Expr g β†’ Expr g.
+axiom start : βˆ€g,x.P g γ€šxγ€› β†’ Prop.
+
+
+include "logic/equality.ma".
+
+notation "@ t" non associative with precedence 90 for @{ (Ξ»x.x) $t }.
+
+unification hint (βˆ€g:group.βˆ€x:g. γ€šEvar ? xγ€› = x).
+unification hint (βˆ€g:group.βˆ€x. γ€šEopp g xγ€› = (@γ€šxγ€›) ^-1).
+unification hint (βˆ€g:group.βˆ€x,y. γ€šEmult g x yγ€› = (@γ€šxγ€›) * (@γ€šyγ€›)).
+
+lemma test : βˆ€g:group.βˆ€x,y:g. βˆ€h:P ? (x * (x^-1 * y)). start g ? h.
+
+
+βˆ€x,Ξ“. [| B 0, x::Ξ“ |] = x
+βˆ€n,y,Ξ“. [| B n, Ξ“ |] = [| B (S n), y::Ξ“ |] 
+βˆ€e,f. [| Add e f, Ξ“ |] = [| e, Ξ“ |] + [| f, Ξ“ |]
+
+
+x + x = [| ?1, ?2 |]
+
+x = [| ?1,?2 |]
+?1 β‰ B 0
+?2 β‰ x::?3
+
+x = [| ?4, y::x::?3 |]
+
+[| ?4, x::?3 |] =?= [| B (S ?n), ?y::?Ξ“ |]
+x =?= [| B ?n, ?Ξ“ |]
+
+
+x  =?=   E
+
+x  =?=  ?,   ? =?= E
\ No newline at end of file