]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/static_2/static/feqg_feqg.ma
made executable again
[helm.git] / matita / matita / contribs / lambdadelta / static_2 / static / feqg_feqg.ma
index cb2b11ddd84761cd17fed859888847aa862e9cf7..1d0e4e38ff6240aacfee93fa0d18fbf64d37de34 100644 (file)
@@ -28,7 +28,7 @@ qed-.
 
 lemma feqg_dec (S):
       (∀s1,s2. Decidable … (S s1 s2)) →
-      â\88\80G1,G2,L1,L2,T1,T2. Decidable (â\9dªG1,L1,T1â\9d« â\89\9b[S] â\9dªG2,L2,T2â\9d«).
+      â\88\80G1,G2,L1,L2,T1,T2. Decidable (â\9d¨G1,L1,T1â\9d© â\89\9b[S] â\9d¨G2,L2,T2â\9d©).
 #S #HS #G1 #G2 #L1 #L2 #T1 #T2
 elim (eq_genv_dec G1 G2) #HnG destruct
 [ elim (reqg_dec … HS L1 L2 T1) #HnL
@@ -53,25 +53,32 @@ qed-.
 
 theorem feqg_canc_sn (S):
         reflexive … S → symmetric … S → Transitive … S →
-        â\88\80G,G1,L,L1,T,T1. â\9dªG,L,Tâ\9d« â\89\9b[S] â\9dªG1,L1,T1â\9d« →
-        â\88\80G2,L2,T2. â\9dªG,L,Tâ\9d« â\89\9b[S] â\9dªG2,L2,T2â\9d« â\86\92 â\9dªG1,L1,T1â\9d« â\89\9b[S] â\9dªG2,L2,T2â\9d«.
+        â\88\80G,G1,L,L1,T,T1. â\9d¨G,L,Tâ\9d© â\89\9b[S] â\9d¨G1,L1,T1â\9d© →
+        â\88\80G2,L2,T2. â\9d¨G,L,Tâ\9d© â\89\9b[S] â\9d¨G2,L2,T2â\9d© â\86\92 â\9d¨G1,L1,T1â\9d© â\89\9b[S] â\9d¨G2,L2,T2â\9d©.
 /3 width=5 by feqg_trans, feqg_sym/ qed-.
 
 theorem feqg_canc_dx (S):
         reflexive … S → symmetric … S → Transitive … S →
-        â\88\80G1,G,L1,L,T1,T. â\9dªG1,L1,T1â\9d« â\89\9b[S] â\9dªG,L,Tâ\9d« →
-        â\88\80G2,L2,T2. â\9dªG2,L2,T2â\9d« â\89\9b[S] â\9dªG,L,Tâ\9d« â\86\92 â\9dªG1,L1,T1â\9d« â\89\9b[S] â\9dªG2,L2,T2â\9d«.
+        â\88\80G1,G,L1,L,T1,T. â\9d¨G1,L1,T1â\9d© â\89\9b[S] â\9d¨G,L,Tâ\9d© →
+        â\88\80G2,L2,T2. â\9d¨G2,L2,T2â\9d© â\89\9b[S] â\9d¨G,L,Tâ\9d© â\86\92 â\9d¨G1,L1,T1â\9d© â\89\9b[S] â\9d¨G2,L2,T2â\9d©.
 /3 width=5 by feqg_trans, feqg_sym/ qed-.
 
-(* Main inversion lemmas with generic equivalence on terms ******************)
+lemma feqg_reqg_trans (S) (G2) (L) (T2):
+      reflexive … S → symmetric … S → Transitive … S →
+      ∀G1,L1,T1. ❨G1,L1,T1❩ ≛[S] ❨G2,L,T2❩ →
+      ∀L2. L ≛[S,T2] L2 → ❨G1,L1,T1❩ ≛[S] ❨G2,L2,T2❩.
+#S #G2 #L #T2 #H1S #H2S #H3S #G1 #L1 #T1 #H1 #L2 #HL2
+/4 width=5 by feqg_trans, feqg_intro_sn, teqg_refl/
+qed-.
 
-theorem feqg_tneqg_repl_dx (S):
-        reflexive … S → symmetric … S → Transitive … S →
-        ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≛[S] ❪G2,L2,T2❫ →
-        ∀U1,U2. ❪G1,L1,U1❫ ≛[S] ❪G2,L2,U2❫ →
-        (T2 ≛[S] U2 → ⊥) → (T1 ≛[S] U1 → ⊥).
-#S #H1S #H2S #H3S #G1 #G2 #L1 #L2 #T1 #T2 #HT #U1 #U2 #HU #HnTU2 #HTU1
-elim (feqg_inv_gen_sn … HT) -HT #_ #_ #HT
-elim (feqg_inv_gen_sn … HU) -HU #_ #_ #HU
-/3 width=5 by teqg_repl/
+(* Inversion lemmas with generic equivalence on terms ***********************)
+
+(* Basic_2A1: uses: feqg_tneqg_repl_dx *)
+lemma feqg_tneqg_trans (S) (G1) (G2) (L1) (L2) (T):
+      reflexive … S → symmetric … S → Transitive … S →
+      ∀T1. ❨G1,L1,T1❩ ≛[S] ❨G2,L2,T❩ →
+      ∀T2. (T ≛[S] T2 → ⊥) → (T1 ≛[S] T2 → ⊥).
+#S #G1 #G2 #L1 #L2 #T #H1S #H2S #H3S #T1 #H1 #T2 #HnT2 #HT12
+elim (feqg_inv_gen_sn … H1) -H1 #_ #_ #HnT1 -G1 -G2 -L1 -L2
+/3 width=3 by teqg_canc_sn/
 qed-.