]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/basic_2/static/lfeq_lfeq.ma
update in basic_2
[helm.git] / matita / matita / contribs / lambdadelta / basic_2 / static / lfeq_lfeq.ma
index 677f53973585f56aa2be1b980877a53e12128936..8fd1f2f4f05e141a1c27902a9edcb84923029c53 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/relocation/lreq_lreq.ma".
 include "basic_2/static/lfxs_lfxs.ma".
-include "basic_2/static/lfeq_lreq.ma".
+include "basic_2/static/lfeq.ma".
 
-(* EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES *******************)
+(* SYNTACTIC EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES *********)
 
-(* Main properties **********************************************************)
+(* Advanced forward lemmas **************************************************)
 
-theorem lfeq_bind: ∀p,I,L1,L2,V1,V2,T.
-                   L1 ≡[V1] L2 → L1.ⓑ{I}V1 ≡[T] L2.ⓑ{I}V2 →
-                   L1 ≡[ⓑ{p,I}V1.T] L2.
-/2 width=2 by lfxs_bind/ qed.
-
-theorem lfeq_flat: ∀I,L1,L2,V,T. L1 ≡[V] L2 → L1 ≡[T] L2 →
-                   L1 ≡[ⓕ{I}V.T] L2.
-/2 width=1 by lfxs_flat/ qed.
-
-(* Note: /2 width=3 by lfeq_lfxs_trans/ *)
-theorem lfeq_trans: ∀T. Transitive … (lfeq T).
-#T #L1 #L * #f1 #Hf1 #HL1 #L2 * #f2 #Hf2 #HL2
-lapply (frees_lreq_conf … Hf1 … HL1) #H0
-lapply (frees_mono … Hf2 … H0) -Hf2 -H0
-/4 width=7 by lreq_trans, lexs_eq_repl_back, ex2_intro/
-qed-.
-
-theorem lfeq_canc_sn: ∀T. left_cancellable … (lfeq T).
-/3 width=3 by lfeq_trans, lfeq_sym/ qed-.
-
-theorem lfeq_canc_dx: ∀T. right_cancellable … (lfeq T).
-/3 width=3 by lfeq_trans, lfeq_sym/ qed-.
-
-(* Advanced properies on negated lazy equivalence *****************************)
-
-(* Note: for use in auto, works with /4 width=8/ so lfeq_canc_sn is preferred *) 
-lemma lfeq_nlfeq_trans: ∀T,L1,L. L1 ≡[T] L →
-                        ∀L2. (L ≡[T] L2 → ⊥) → (L1 ≡[T] L2 → ⊥).
-/3 width=3 by lfeq_canc_sn/ qed-.
-
-lemma nlfeq_lfeq_div: ∀T,L2,L. L2 ≡[T] L →
-                      ∀L1. (L1 ≡[T] L → ⊥) → (L1 ≡[T] L2 → ⊥).
-/3 width=3 by lfeq_trans/ qed-.
+(* Note: the proof should may invoke lfeq_transitive_inv_lfxs *)
+lemma lfeq_lfxs_trans: ∀R. c_reflexive … R → lfeq_transitive R →
+                       ∀L1,L,T. L1 ≡[T] L →
+                       ∀L2. L ⪤*[R, T] L2 → L1 ⪤*[R, T] L2.
+/3 width=9 by lfxs_trans_gen/ qed-.