]> matita.cs.unibo.it Git - helm.git/commitdiff
update in delayed_updating
authorFerruccio Guidi <ferruccio.guidi@unibo.it>
Sat, 11 Dec 2021 21:17:15 +0000 (22:17 +0100)
committerFerruccio Guidi <ferruccio.guidi@unibo.it>
Sat, 11 Dec 2021 21:17:15 +0000 (22:17 +0100)
+ terms are defined modulo logical equivalence

12 files changed:
matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/class_d_phi_0.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/uptriangle_1.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/delayed_updating/notation/relations/in_predicate_d_phi_1.ma [deleted file]
matita/matita/contribs/lambdadelta/delayed_updating/notation/relations/up_arrow_epsilon_2.ma [deleted file]
matita/matita/contribs/lambdadelta/delayed_updating/syntax/bdd_term.ma
matita/matita/contribs/lambdadelta/delayed_updating/syntax/preterm.ma
matita/matita/contribs/lambdadelta/delayed_updating/syntax/preterm_constructors.ma
matita/matita/contribs/lambdadelta/delayed_updating/syntax/preterm_dephi.ma
matita/matita/contribs/lambdadelta/delayed_updating/syntax/preterm_equivalence.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/lib/subset_equivalence.ma
matita/matita/contribs/lambdadelta/ground/notation/relations/arroweq_2.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/notation/relations/white_harrow_2.ma [deleted file]

diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/class_d_phi_0.ma b/matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/class_d_phi_0.ma
new file mode 100644 (file)
index 0000000..2e2651d
--- /dev/null
@@ -0,0 +1,19 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* NOTATION FOR DELAYED UPDATING ********************************************)
+
+notation "hvbox( πƒπ›— )"
+  non associative with precedence 75
+  for @{ 'ClassDPhi }.
diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/uptriangle_1.ma b/matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/uptriangle_1.ma
new file mode 100644 (file)
index 0000000..09ceac1
--- /dev/null
@@ -0,0 +1,19 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* NOTATION FOR DELAYED UPDATING ********************************************)
+
+notation "hvbox( β–΅ term 75 t )"
+  non associative with precedence 75
+  for @{ 'UpTriangle $t }.
diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/notation/relations/in_predicate_d_phi_1.ma b/matita/matita/contribs/lambdadelta/delayed_updating/notation/relations/in_predicate_d_phi_1.ma
deleted file mode 100644 (file)
index 7942fed..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-(* NOTATION FOR DELAYED UPDATING ********************************************)
-
-notation "hvbox( t Ο΅ break πƒπ›— )"
-  non associative with precedence 45
-  for @{ 'InPredicateDPhi $t }.
diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/notation/relations/up_arrow_epsilon_2.ma b/matita/matita/contribs/lambdadelta/delayed_updating/notation/relations/up_arrow_epsilon_2.ma
deleted file mode 100644 (file)
index 1c4f842..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-(* NOTATION FOR DELAYED UPDATING ********************************************)
-
-notation "hvbox( p Ο΅β–΅ break term 46 t )"
-  non associative with precedence 45
-  for @{ 'UpArrowEpsilon $p $t }.
index e7d140231dacc30c35f06002fe935b9618b81ff4..26fb80e561757d7ba359140d507c971467d8be38 100644 (file)
@@ -17,44 +17,54 @@ include "ground/xoa/ex_3_1.ma".
 include "ground/xoa/ex_4_2.ma".
 include "ground/xoa/ex_4_3.ma".
 include "ground/xoa/ex_5_3.ma".
+include "delayed_updating/syntax/preterm_equivalence.ma".
 include "delayed_updating/syntax/preterm_constructors.ma".
-include "delayed_updating/notation/relations/in_predicate_d_phi_1.ma".
+include "delayed_updating/notation/functions/class_d_phi_0.ma".
 
 (* BY-DEPTH DELAYED (BDD) TERM **********************************************)
 
-inductive bdd: predicate preterm β‰
+inductive bdd: π’«β¨preterm❩ β‰
 | bdd_oref: βˆ€n. bdd #n
 | bdd_iref: βˆ€t,n. bdd t β†’ bdd π›—n.t
 | bdd_abst: βˆ€t. bdd t β†’ bdd π›Œ.t
 | bdd_appl: βˆ€u,t. bdd u β†’ bdd t β†’ bdd @u.t
+| bdd_conv: βˆ€t1,t2. t1 β‡” t2 β†’ bdd t1 β†’ bdd t2
 .
 
 interpretation
-  "well-formed by-depth delayed (preterm)"
-  'InPredicateDPhi t = (bdd t).
+  "by-depth delayed (preterm)"
+  'ClassDPhi = (bdd).
 
 (* Basic inversions *********************************************************)
 
 lemma bdd_inv_in_comp_gen:
-      βˆ€t,p. t Ο΅ πƒπ›— β†’ p Ο΅β¬¦ t β†’
-      βˆ¨βˆ¨ βˆƒβˆƒn. #n = t & π—±β¨n❩;𝐞 = p
-       | βˆƒβˆƒu,q,n. u Ο΅ πƒπ›— & q Ο΅β¬¦ u & π›—n.u = t & π—±β¨n❩;q = p
-       | βˆƒβˆƒu,q. u Ο΅ πƒπ›— & q Ο΅β¬¦ u & π›Œ.u = t & π—Ÿ;q = p
-       | βˆƒβˆƒv,u,q. v Ο΅ πƒπ›— & u Ο΅ πƒπ›— & q Ο΅β¬¦ u & @v.u = t & π—”;q = p
-       | βˆƒβˆƒv,u,q. v Ο΅ πƒπ›— & u Ο΅ πƒπ›— & q Ο΅β¬¦ v & @v.u = t & π—¦;q = p
+      βˆ€t,p. t Ο΅ πƒπ›— β†’ p Ο΅ t β†’
+      βˆ¨βˆ¨ βˆƒβˆƒn. #n β‡” t & π—±β¨n❩;𝐞 = p
+       | βˆƒβˆƒu,q,n. u Ο΅ πƒπ›— & q Ο΅ u & π›—n.u β‡” t & π—±β¨n❩;q = p
+       | βˆƒβˆƒu,q. u Ο΅ πƒπ›— & q Ο΅ u & π›Œ.u β‡” t & π—Ÿ;q = p
+       | βˆƒβˆƒv,u,q. v Ο΅ πƒπ›— & u Ο΅ πƒπ›— & q Ο΅ u & @v.u β‡” t & π—”;q = p
+       | βˆƒβˆƒv,u,q. v Ο΅ πƒπ›— & u Ο΅ πƒπ›— & q Ο΅ v & @v.u β‡” t & π—¦;q = p
 .
-#t #p *
+#t #p #H elim H -H
 [ #n * /3 width=3 by or5_intro0, ex2_intro/
-| #u #n #Hu * #q #Hq #Hp /3 width=7 by ex4_3_intro, or5_intro1/
-| #u #Hu * #q #Hq #Hp /3 width=6 by or5_intro2, ex4_2_intro/
-| #v #u #Hv #Hu * * #q #Hq #Hp /3 width=8 by ex5_3_intro, or5_intro3, or5_intro4/
+| #u #n #Hu #_ * #q #Hq #Hp /3 width=7 by ex4_3_intro, or5_intro1/
+| #u #Hu #_ * #q #Hq #Hp /3 width=6 by or5_intro2, ex4_2_intro/
+| #v #u #Hv #Hu #_ #_ * * #q #Hq #Hp /3 width=8 by ex5_3_intro, or5_intro3, or5_intro4/
+| #t1 #t2 #Ht12 #_ #IH #Ht2
+  elim IH -IH [6: /2 width=3 by subset_in_eq_repl_fwd/ ] *
+  [ /4 width=3 by subset_eq_trans, or5_intro0, ex2_intro/
+  | /4 width=7 by subset_eq_trans, ex4_3_intro, or5_intro1/
+  | /4 width=6 by subset_eq_trans, or5_intro2, ex4_2_intro/
+  | /4 width=8 by subset_eq_trans, ex5_3_intro, or5_intro3/
+  | /4 width=8 by subset_eq_trans, ex5_3_intro, or5_intro4/
+  ]
 ]
 qed-.
 
 lemma bdd_inv_in_comp_d:
-      βˆ€t,q,n. t Ο΅ πƒπ›— β†’ π—±β¨n❩;q Ο΅β¬¦ t β†’
-      βˆ¨βˆ¨ βˆ§βˆ§ #n = t & πž = q
-       | βˆƒβˆƒu. u Ο΅ πƒπ›— & q Ο΅β¬¦ u & π›—n.u = t
+      βˆ€t,q,n. t Ο΅ πƒπ›— β†’ π—±β¨n❩;q Ο΅ t β†’
+      βˆ¨βˆ¨ βˆ§βˆ§ #n β‡” t & πž = q
+       | βˆƒβˆƒu. u Ο΅ πƒπ›— & q Ο΅ u & π›—n.u β‡” t
 .
 #t #q #n #Ht #Hq
 elim (bdd_inv_in_comp_gen β€¦ Ht Hq) -Ht -Hq *
@@ -67,9 +77,9 @@ elim (bdd_inv_in_comp_gen β€¦ Ht Hq) -Ht -Hq *
 qed-.
 
 lemma bdd_inv_in_root_d:
-      βˆ€t,q,n. t Ο΅ πƒπ›— β†’ π—±β¨n❩;q Ο΅β–΅ t β†’
-      βˆ¨βˆ¨ βˆ§βˆ§ #n = t & πž = q
-       | βˆƒβˆƒu. u Ο΅ πƒπ›— & q Ο΅β–΅ u & π›—n.u = t
+      βˆ€t,q,n. t Ο΅ πƒπ›— β†’ π—±β¨n❩;q Ο΅ β–΅t β†’
+      βˆ¨βˆ¨ βˆ§βˆ§ #n β‡” t & πž = q
+       | βˆƒβˆƒu. u Ο΅ πƒπ›— & q Ο΅ β–΅u & π›—n.u β‡” t
 .
 #t #q #n #Ht * #r #Hq
 elim (bdd_inv_in_comp_d β€¦ Ht Hq) -Ht -Hq *
@@ -82,8 +92,8 @@ elim (bdd_inv_in_comp_d β€¦ Ht Hq) -Ht -Hq *
 qed-.
 
 lemma bdd_inv_in_comp_L:
-      βˆ€t,q. t Ο΅ πƒπ›— β†’ π—Ÿ;q Ο΅β¬¦ t β†’
-      βˆƒβˆƒu. u Ο΅ πƒπ›— & q Ο΅β¬¦ u & π›Œ.u = t
+      βˆ€t,q. t Ο΅ πƒπ›— β†’ π—Ÿ;q Ο΅ t β†’
+      βˆƒβˆƒu. u Ο΅ πƒπ›— & q Ο΅ u & π›Œ.u β‡” t
 .
 #t #q #Ht #Hq
 elim (bdd_inv_in_comp_gen β€¦ Ht Hq) -Ht -Hq *
@@ -96,8 +106,8 @@ elim (bdd_inv_in_comp_gen β€¦ Ht Hq) -Ht -Hq *
 qed-.
 
 lemma bdd_inv_in_root_L:
-      βˆ€t,q. t Ο΅ πƒπ›— β†’ π—Ÿ;q Ο΅β–΅ t β†’
-      βˆƒβˆƒu. u Ο΅ πƒπ›— & q Ο΅β–΅ u & π›Œ.u = t.
+      βˆ€t,q. t Ο΅ πƒπ›— β†’ π—Ÿ;q Ο΅ β–΅t β†’
+      βˆƒβˆƒu. u Ο΅ πƒπ›— & q Ο΅ β–΅u & π›Œ.u β‡” t.
 #t #q #Ht * #r #Hq
 elim (bdd_inv_in_comp_L β€¦ Ht Hq) -Ht -Hq
 #u #Hu #Hq #H0 destruct
@@ -105,8 +115,8 @@ elim (bdd_inv_in_comp_L β€¦ Ht Hq) -Ht -Hq
 qed-.
 
 lemma bdd_inv_in_comp_A:
-      βˆ€t,q. t Ο΅ πƒπ›— β†’ π—”;q Ο΅β¬¦ t β†’
-      βˆƒβˆƒv,u. v Ο΅ πƒπ›— & u Ο΅ πƒπ›— & q Ο΅β¬¦ u & @v.u = t
+      βˆ€t,q. t Ο΅ πƒπ›— β†’ π—”;q Ο΅ t β†’
+      βˆƒβˆƒv,u. v Ο΅ πƒπ›— & u Ο΅ πƒπ›— & q Ο΅ u & @v.u β‡” t
 .
 #t #q #Ht #Hq
 elim (bdd_inv_in_comp_gen β€¦ Ht Hq) -Ht -Hq *
@@ -119,8 +129,8 @@ elim (bdd_inv_in_comp_gen β€¦ Ht Hq) -Ht -Hq *
 qed-.
 
 lemma bdd_inv_in_root_A:
-      βˆ€t,q. t Ο΅ πƒπ›— β†’ π—”;q Ο΅β–΅ t β†’
-      βˆƒβˆƒv,u. v Ο΅ πƒπ›— & u Ο΅ πƒπ›— & q Ο΅β–΅ u & @v.u = t
+      βˆ€t,q. t Ο΅ πƒπ›— β†’ π—”;q Ο΅ β–΅t β†’
+      βˆƒβˆƒv,u. v Ο΅ πƒπ›— & u Ο΅ πƒπ›— & q Ο΅ β–΅u & @v.u β‡” t
 .
 #t #q #Ht * #r #Hq
 elim (bdd_inv_in_comp_A β€¦ Ht Hq) -Ht -Hq
@@ -129,8 +139,8 @@ elim (bdd_inv_in_comp_A β€¦ Ht Hq) -Ht -Hq
 qed-.
 
 lemma bdd_inv_in_comp_S:
-      βˆ€t,q. t Ο΅ πƒπ›— β†’ π—¦;q Ο΅β¬¦ t β†’
-      βˆƒβˆƒv,u. v Ο΅ πƒπ›— & u Ο΅ πƒπ›— & q Ο΅β¬¦ v & @v.u = t
+      βˆ€t,q. t Ο΅ πƒπ›— β†’ π—¦;q Ο΅ t β†’
+      βˆƒβˆƒv,u. v Ο΅ πƒπ›— & u Ο΅ πƒπ›— & q Ο΅ v & @v.u β‡” t
 .
 #t #q #Ht #Hq
 elim (bdd_inv_in_comp_gen β€¦ Ht Hq) -Ht -Hq *
@@ -143,8 +153,8 @@ elim (bdd_inv_in_comp_gen β€¦ Ht Hq) -Ht -Hq *
 qed-.
 
 lemma bdd_inv_in_root_S:
-      βˆ€t,q. t Ο΅ πƒπ›— β†’ π—¦;q Ο΅β–΅ t β†’
-      βˆƒβˆƒv,u. v Ο΅ πƒπ›— & u Ο΅ πƒπ›— & q Ο΅β–΅ v & @v.u = t
+      βˆ€t,q. t Ο΅ πƒπ›— β†’ π—¦;q Ο΅ β–΅t β†’
+      βˆƒβˆƒv,u. v Ο΅ πƒπ›— & u Ο΅ πƒπ›— & q Ο΅ β–΅v & @v.u β‡” t
 .
 #t #q #Ht * #r #Hq
 elim (bdd_inv_in_comp_S β€¦ Ht Hq) -Ht -Hq
@@ -155,13 +165,17 @@ qed-.
 (* Advanced inversions ******************************************************)
 
 lemma bbd_mono_in_root_d:
-      βˆ€l,n,p,t. t Ο΅ πƒπ›— β†’ p,𝗱❨n❩ Ο΅β–΅ t β†’ p,l Ο΅β–΅ t β†’ π—±β¨n❩ = l.
+      βˆ€l,n,p,t. t Ο΅ πƒπ›— β†’ p,𝗱❨n❩ Ο΅ β–΅t β†’ p,l Ο΅ β–΅t β†’ π—±β¨n❩ = l.
 #l #n #p elim p -p
 [ #t #Ht <list_cons_comm <list_cons_comm #Hn #Hl
   elim (bdd_inv_in_root_d β€¦ Ht Hn) -Ht -Hn *
-  [ #H0 #_ destruct
+  [ #H0 #_
+    lapply (preterm_root_eq_repl β€¦ H0) -H0 #H0
+    lapply (subset_in_eq_repl_fwd ?? β€¦ Hl β€¦ H0) -H0 -Hl #Hl
     elim (preterm_in_root_inv_lcons_oref β€¦ Hl) -Hl //
-  | #u #_ #_ #H0 destruct
+  | #u #_ #_ #H0
+    lapply (preterm_root_eq_repl β€¦ H0) -H0 #H0
+    lapply (subset_in_eq_repl_fwd ?? β€¦ Hl β€¦ H0) -H0 -Hl #Hl
     elim (preterm_in_root_inv_lcons_iref β€¦ Hl) -Hl //
   ]
 | * [ #m ] #p #IH #t #Ht
@@ -169,20 +183,28 @@ lemma bbd_mono_in_root_d:
   [ elim (bdd_inv_in_root_d β€¦ Ht Hn) -Ht -Hn *
     [ #_ #H0
       elim (eq_inv_list_empty_rcons ??? H0)
-    | #u #Hu #Hp #H0 destruct
+    | #u #Hu #Hp #H0
+      lapply (preterm_root_eq_repl β€¦ H0) -H0 #H0
+      lapply (subset_in_eq_repl_fwd ?? β€¦ Hl β€¦ H0) -H0 -Hl #Hl
       elim (preterm_in_root_inv_lcons_iref β€¦ Hl) -Hl #_ #Hl
       /2 width=4 by/
     ]
   | elim (bdd_inv_in_root_L β€¦ Ht Hn) -Ht -Hn
-    #u #Hu #Hp #H0 destruct
+    #u #Hu #Hp #H0
+    lapply (preterm_root_eq_repl β€¦ H0) -H0 #H0
+    lapply (subset_in_eq_repl_fwd ?? β€¦ Hl β€¦ H0) -H0 -Hl #Hl  
     elim (preterm_in_root_inv_lcons_abst β€¦ Hl) -Hl #_ #Hl
     /2 width=4 by/
   | elim (bdd_inv_in_root_A β€¦ Ht Hn) -Ht -Hn
-    #v #u #_ #Hu #Hp #H0 destruct
+    #v #u #_ #Hu #Hp #H0
+    lapply (preterm_root_eq_repl β€¦ H0) -H0 #H0
+    lapply (subset_in_eq_repl_fwd ?? β€¦ Hl β€¦ H0) -H0 -Hl #Hl
     elim (preterm_in_root_inv_lcons_appl β€¦ Hl) -Hl * #H0 #Hl destruct
     /2 width=4 by/
   | elim (bdd_inv_in_root_S β€¦ Ht Hn) -Ht -Hn
-    #v #u #Hv #_ #Hp #H0 destruct
+    #v #u #Hv #_ #Hp #H0
+    lapply (preterm_root_eq_repl β€¦ H0) -H0 #H0
+    lapply (subset_in_eq_repl_fwd ?? β€¦ Hl β€¦ H0) -H0 -Hl #Hl
     elim (preterm_in_root_inv_lcons_appl β€¦ Hl) -Hl * #H0 #Hl destruct
     /2 width=4 by/
   ]
index 1da2d0174a8ddc1f188b5dadbc9131620bfc4968..44d923d9bb742b2b8b49fc247031c9e8c40916d4 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
+include "ground/lib/subset.ma".
 include "delayed_updating/syntax/path.ma".
-include "delayed_updating/notation/relations/up_down_arrow_epsilon_2.ma".
-include "delayed_updating/notation/relations/up_arrow_epsilon_2.ma".
+include "delayed_updating/notation/functions/uptriangle_1.ma".
 
 (* PRETERM ******************************************************************)
 
-definition preterm: Type[0] β‰ predicate path.
+(* Note: preterms are subsets of complete paths *)
+definition preterm: Type[0] β‰ π’«β¨path❩.
 
-definition preterm_in_comp: relation2 path preterm β‰
-           Ξ»p,t. t p.
+definition preterm_root: preterm β†’ preterm β‰
+           Ξ»t,p. βˆƒq. p;;q Ο΅ t.
 
 interpretation
-  "belongs to complete (preterm)"
-  'UpDownArrowEpsilon p t = (preterm_in_comp p t).
-
-definition preterm_in_root: relation2 path preterm β‰
-           Ξ»p,t. βˆƒq. p;;q Ο΅β¬¦ t.
-
-interpretation
-  "belongs to root (preterm)"
-  'UpArrowEpsilon p t = (preterm_in_root p t).
+  "root (preterm)"
+  'UpTriangle t = (preterm_root t).
 
 (* Basic constructions ******************************************************)
 
 lemma preterm_in_comp_root (p) (t):
-      p Ο΅β¬¦ t β†’ p Ο΅β–΅ t.
+      p Ο΅ t β†’ p Ο΅ β–΅t.
 /2 width=2 by ex_intro/
 qed.
index 03394c5bf6349fe99c6ab14b648259bea5fe8334..0cd0158c05e16f3016b4af5e1f24c4f2a8f0d363 100644 (file)
@@ -24,12 +24,12 @@ definition preterm_node_0 (l): preterm β‰
            Ξ»p. l;𝐞 = p.
 
 definition preterm_node_1 (l): preterm β†’ preterm β‰
-           Ξ»t,p. βˆƒβˆƒq. q Ο΅β¬¦ t & l;q = p.
+           Ξ»t,p. βˆƒβˆƒq. q Ο΅ t & l;q = p.
 
 definition preterm_node_2 (l1) (l2): preterm β†’ preterm β†’ preterm β‰
            Ξ»t1,t2,p.
-           βˆ¨βˆ¨ βˆƒβˆƒq. q Ο΅β¬¦ t1 & l1;q = p
-            | βˆƒβˆƒq. q Ο΅β¬¦ t2 & l2;q = p.
+           βˆ¨βˆ¨ βˆƒβˆƒq. q Ο΅ t1 & l1;q = p
+            | βˆƒβˆƒq. q Ο΅ t2 & l2;q = p.
 
 interpretation
   "outer variable reference by depth (preterm)"
@@ -50,7 +50,7 @@ interpretation
 (* Basic Inversions *********************************************************)
 
 lemma preterm_in_root_inv_lcons_oref:
-      βˆ€p,l,n. l;p Ο΅β–΅ #n β†’
+      βˆ€p,l,n. l;p Ο΅ β–΅#n β†’
       βˆ§βˆ§ π—±β¨n❩ = l & πž = p.
 #p #l #n * #q
 <list_append_lcons_sn #H0 destruct -H0
@@ -59,25 +59,25 @@ elim (eq_inv_list_empty_append β€¦ e0) -e0 #H0 #_
 qed-.
 
 lemma preterm_in_root_inv_lcons_iref:
-      βˆ€t,p,l,n. l;p Ο΅β–΅ π›—n.t β†’
-      βˆ§βˆ§ π—±β¨n❩ = l & p Ο΅β–΅ t.
+      βˆ€t,p,l,n. l;p Ο΅ β–΅π›—n.t β†’
+      βˆ§βˆ§ π—±β¨n❩ = l & p Ο΅ β–΅t.
 #t #p #l #n * #q
 <list_append_lcons_sn * #r #Hr #H0 destruct
 /3 width=2 by ex_intro, conj/
 qed-.
 
 lemma preterm_in_root_inv_lcons_abst:
-      βˆ€t,p,l. l;p Ο΅β–΅ π›Œ.t β†’
-      βˆ§βˆ§ π—Ÿ = l & p Ο΅β–΅ t.
+      βˆ€t,p,l. l;p Ο΅ β–΅π›Œ.t β†’
+      βˆ§βˆ§ π—Ÿ = l & p Ο΅ β–΅t.
 #t #p #l * #q
 <list_append_lcons_sn * #r #Hr #H0 destruct
 /3 width=2 by ex_intro, conj/
 qed-.
 
 lemma preterm_in_root_inv_lcons_appl:
-      βˆ€u,t,p,l. l;p Ο΅β–΅ @u.t β†’
-      βˆ¨βˆ¨ βˆ§βˆ§ π—¦ = l & p Ο΅β–΅ u
-       | βˆ§βˆ§ π—” = l & p Ο΅β–΅ t.
+      βˆ€u,t,p,l. l;p Ο΅ β–΅@u.t β†’
+      βˆ¨βˆ¨ βˆ§βˆ§ π—¦ = l & p Ο΅ β–΅u
+       | βˆ§βˆ§ π—” = l & p Ο΅ β–΅t.
 #u #t #p #l * #q
 <list_append_lcons_sn * * #r #Hr #H0 destruct
 /4 width=2 by ex_intro, or_introl, or_intror, conj/
index 67aa029d70af910f5833f87c9dba5dec5658d18f..60c5a4a41f7bdf191bc194a4a7460607c0ea8efb 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
+include "delayed_updating/syntax/path_dephi.ma".
 include "delayed_updating/syntax/preterm_constructors.ma".
 
 (* DEPHI FOR PRETERM ********************************************************)
 
-definition preterm_dephi (f) (t) β‰
-           Ξ»p. βˆƒβˆƒq. q Ο΅β¬¦ t & p = path_dephi f q. 
+definition preterm_dephi (f) (t): preterm β‰
+           Ξ»p. βˆƒβˆƒq. q Ο΅ t & p = path_dephi f q. 
diff --git a/matita/matita/contribs/lambdadelta/delayed_updating/syntax/preterm_equivalence.ma b/matita/matita/contribs/lambdadelta/delayed_updating/syntax/preterm_equivalence.ma
new file mode 100644 (file)
index 0000000..6f788a7
--- /dev/null
@@ -0,0 +1,32 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/lib/subset_equivalence.ma".
+include "delayed_updating/syntax/preterm.ma".
+
+(* EQUIVALENCE FOR PRETERM **************************************************)
+
+(* Constructions with preterm_root ******************************************)
+
+lemma preterm_root_incl_repl:
+      βˆ€t1,t2. t1 βŠ† t2 β†’ β–΅t1 βŠ† β–΅t2.
+#t1 #t2 #Ht #p * #q #Hq
+/3 width=2 by ex_intro/
+qed.
+
+lemma preterm_root_eq_repl:
+      βˆ€t1,t2. t1 β‡” t2 β†’ β–΅t1 β‡” β–΅t2.
+#t1 #t2 * #H1 #H2
+/3 width=3 by conj, preterm_root_incl_repl/
+qed.
index bab6b26e1677fa3dbca1f0d37083eb1037c26d8d..b3957eaf304a6079d1dd03c0ccdbbcd9738b40ce 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "ground/notation/relations/white_harrow_2.ma".
+include "ground/notation/relations/arroweq_2.ma".
 include "ground/lib/subset_inclusion.ma".
 
 (* EQUIVALENCE FOR SUBSETS **************************************************)
@@ -22,7 +22,21 @@ definition subset_eq (A): relation2 π’«β¨A❩ π’«β¨A❩ β‰
 
 interpretation
   "equivalence (subset)"
-  'WhiteHArrow u1 u2 = (subset_eq ? u1 u2).
+  'ArrowEq u1 u2 = (subset_eq ? u1 u2).
+
+(* Basic destructions *******************************************************)
+
+lemma subset_in_eq_repl_back (A) (a:A):
+      βˆ€u1. a Ο΅ u1 β†’ βˆ€u2. u1 β‡” u2 β†’ a Ο΅ u2.
+#A #a #u1 #Hu1 #u2 *
+/2 width=1 by/
+qed-.
+
+lemma subset_in_eq_repl_fwd (A) (a:A):
+      βˆ€u1. a Ο΅ u1 β†’ βˆ€u2. u2 β‡” u1 β†’ a Ο΅ u2.
+#A #a #u1 #Hu1 #u2 *
+/2 width=1 by/
+qed-.
 
 (* Basic constructions ******************************************************)
 
diff --git a/matita/matita/contribs/lambdadelta/ground/notation/relations/arroweq_2.ma b/matita/matita/contribs/lambdadelta/ground/notation/relations/arroweq_2.ma
new file mode 100644 (file)
index 0000000..d8fbac4
--- /dev/null
@@ -0,0 +1,19 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* GROUND NOTATION **********************************************************)
+
+notation "hvbox( a1 β‡” break term 46 a2 )"
+  non associative with precedence 45
+  for @{ 'ArrowEq $a1 $a2 }.
diff --git a/matita/matita/contribs/lambdadelta/ground/notation/relations/white_harrow_2.ma b/matita/matita/contribs/lambdadelta/ground/notation/relations/white_harrow_2.ma
deleted file mode 100644 (file)
index b7130df..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-(* GROUND NOTATION **********************************************************)
-
-notation "hvbox( a1 β‡” break term 46 a2 )"
-  non associative with precedence 45
-  for @{ 'WhiteHArrow $a1 $a2 }.