]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/static_2/relocation/drops_length.ma
partial commit in static_2
[helm.git] / matita / matita / contribs / lambdadelta / static_2 / relocation / drops_length.ma
index 1a20d722f2e8160f4a20e89515bcd261b91da5fb..49c4f0206867da6c0862469fd9d59feb811cd594 100644 (file)
@@ -20,13 +20,13 @@ include "static_2/relocation/drops.ma".
 (* Forward lemmas with length for local environments ************************)
 
 (* Basic_2A1: includes: drop_fwd_length_le4 *)
-lemma drops_fwd_length_le4: â\88\80b,f,L1,L2. â¬\87*[b,f] L1 ≘ L2 → |L2| ≤ |L1|.
-#b #f #L1 #L2 #H elim H -f -L1 -L2 /2 width=1 by le_S, le_S_S/
+lemma drops_fwd_length_le4: â\88\80b,f,L1,L2. â\87©*[b,f] L1 ≘ L2 → |L2| ≤ |L1|.
+#b #f #L1 #L2 #H elim H -f -L1 -L2 /2 width=1 by nle_succ_dx, nle_succ_bi/
 qed-.
 
 (* Basic_2A1: includes: drop_fwd_length_eq1 *)
-theorem drops_fwd_length_eq1: â\88\80b1,b2,f,L1,K1. â¬\87*[b1,f] L1 ≘ K1 →
-                              â\88\80L2,K2. â¬\87*[b2,f] L2 ≘ K2 →
+theorem drops_fwd_length_eq1: â\88\80b1,b2,f,L1,K1. â\87©*[b1,f] L1 ≘ K1 →
+                              â\88\80L2,K2. â\87©*[b2,f] L2 ≘ K2 →
                               |L1| = |L2| → |K1| = |K2|.
 #b1 #b2 #f #L1 #K1 #HLK1 elim HLK1 -f -L1 -K1
 [ #f #_ #L2 #K2 #HLK2 #H lapply (length_inv_zero_sn … H) -H
@@ -39,87 +39,87 @@ theorem drops_fwd_length_eq1: ∀b1,b2,f,L1,K1. ⬇*[b1,f] L1 ≘ K1 →
   #I2 #K2 #HLK2 #_ #H destruct
   lapply (IH … HLK2 H12) -f >length_bind >length_bind /2 width=1 by/ (**) (* full auto fails *)
 ]
-qed-.  
+qed-.
 
 (* forward lemmas with finite colength assignment ***************************)
 
-lemma drops_fwd_fcla: â\88\80f,L1,L2. â¬\87*[Ⓣ,f] L1 ≘ L2 →
-                      â\88\83â\88\83n. ð\9d\90\82â¦\83fâ¦\84 ≘ n & |L1| = |L2| + n.
+lemma drops_fwd_fcla: â\88\80f,L1,L2. â\87©*[Ⓣ,f] L1 ≘ L2 →
+                      â\88\83â\88\83n. ð\9d\90\82â\9dªfâ\9d« ≘ n & |L1| = |L2| + n.
 #f #L1 #L2 #H elim H -f -L1 -L2
-[ /4 width=3 by fcla_isid, ex2_intro/
-| #f #I #L1 #L2 #_ * >length_bind /3 width=3 by fcla_next, ex2_intro, eq_f/
-| #f #I1 #I2 #L1 #L2 #_ #_ * >length_bind >length_bind /3 width=3 by fcla_push, ex2_intro/
+[ /4 width=3 by pr_fcla_isi, ex2_intro/
+| #f #I #L1 #L2 #_ * >length_bind /3 width=3 by pr_fcla_next, ex2_intro, eq_f/
+| #f #I1 #I2 #L1 #L2 #_ #_ * >length_bind >length_bind /3 width=3 by pr_fcla_push, ex2_intro/
 ]
 qed-.
 
 (* Basic_2A1: includes: drop_fwd_length *)
-lemma drops_fcla_fwd: â\88\80f,L1,L2,n. â¬\87*[â\93\89,f] L1 â\89\98 L2 â\86\92 ð\9d\90\82â¦\83fâ¦\84 ≘ n →
+lemma drops_fcla_fwd: â\88\80f,L1,L2,n. â\87©*[â\93\89,f] L1 â\89\98 L2 â\86\92 ð\9d\90\82â\9dªfâ\9d« ≘ n →
                       |L1| = |L2| + n.
 #f #l1 #l2 #n #Hf #Hn elim (drops_fwd_fcla … Hf) -Hf
-#k #Hm #H <(fcla_mono … Hm … Hn) -f //
+#k #Hm #H <(pr_fcla_mono … Hm … Hn) -f //
 qed-.
 
-lemma drops_fwd_fcla_le2: â\88\80f,L1,L2. â¬\87*[Ⓣ,f] L1 ≘ L2 →
-                          â\88\83â\88\83n. ð\9d\90\82â¦\83fâ¦\84 ≘ n & n ≤ |L1|.
+lemma drops_fwd_fcla_le2: â\88\80f,L1,L2. â\87©*[Ⓣ,f] L1 ≘ L2 →
+                          â\88\83â\88\83n. ð\9d\90\82â\9dªfâ\9d« ≘ n & n ≤ |L1|.
 #f #L1 #L2 #H elim (drops_fwd_fcla … H) -H /2 width=3 by ex2_intro/
 qed-.
 
 (* Basic_2A1: includes: drop_fwd_length_le2 *)
-lemma drops_fcla_fwd_le2: â\88\80f,L1,L2,n. â¬\87*[â\93\89,f] L1 â\89\98 L2 â\86\92 ð\9d\90\82â¦\83fâ¦\84 ≘ n →
+lemma drops_fcla_fwd_le2: â\88\80f,L1,L2,n. â\87©*[â\93\89,f] L1 â\89\98 L2 â\86\92 ð\9d\90\82â\9dªfâ\9d« ≘ n →
                           n ≤ |L1|.
 #f #L1 #L2 #n #H #Hn elim (drops_fwd_fcla_le2 … H) -H
-#k #Hm #H <(fcla_mono … Hm … Hn) -f //
+#k #Hm #H <(pr_fcla_mono … Hm … Hn) -f //
 qed-.
 
-lemma drops_fwd_fcla_lt2: â\88\80f,L1,I2,K2. â¬\87*[â\93\89,f] L1 â\89\98 K2.â\93\98{I2} →
-                          â\88\83â\88\83n. ð\9d\90\82â¦\83fâ¦\84 ≘ n & n < |L1|.
+lemma drops_fwd_fcla_lt2: â\88\80f,L1,I2,K2. â\87©*[â\93\89,f] L1 â\89\98 K2.â\93\98[I2] →
+                          â\88\83â\88\83n. ð\9d\90\82â\9dªfâ\9d« ≘ n & n < |L1|.
 #f #L1 #I2 #K2 #H elim (drops_fwd_fcla … H) -H
-#n #Hf #H >H -L1 /3 width=3 by le_S_S, ex2_intro/
+#n #Hf #H >H -L1 /3 width=3 by nle_succ_bi, ex2_intro/
 qed-.
 
 (* Basic_2A1: includes: drop_fwd_length_lt2 *)
 lemma drops_fcla_fwd_lt2: ∀f,L1,I2,K2,n.
-                          â¬\87*[â\93\89,f] L1 â\89\98 K2.â\93\98{I2} â\86\92 ð\9d\90\82â¦\83fâ¦\84 ≘ n →
+                          â\87©*[â\93\89,f] L1 â\89\98 K2.â\93\98[I2] â\86\92 ð\9d\90\82â\9dªfâ\9d« ≘ n →
                           n < |L1|.
 #f #L1 #I2 #K2 #n #H #Hn elim (drops_fwd_fcla_lt2 … H) -H
-#k #Hm #H <(fcla_mono … Hm … Hn) -f //
+#k #Hm #H <(pr_fcla_mono … Hm … Hn) -f //
 qed-.
 
 (* Basic_2A1: includes: drop_fwd_length_lt4 *)
-lemma drops_fcla_fwd_lt4: â\88\80f,L1,L2,n. â¬\87*[â\93\89,f] L1 â\89\98 L2 â\86\92 ð\9d\90\82â¦\83fâ¦\84 ≘ n → 0 < n →
+lemma drops_fcla_fwd_lt4: â\88\80f,L1,L2,n. â\87©*[â\93\89,f] L1 â\89\98 L2 â\86\92 ð\9d\90\82â\9dªfâ\9d« ≘ n → 0 < n →
                           |L2| < |L1|.
 #f #L1 #L2 #n #H #Hf #Hn lapply (drops_fcla_fwd … H Hf) -f
-/2 width=1 by lt_minus_to_plus_r/ qed-.
+/2 width=1 by nlt_inv_minus_dx/ qed-.
 
 (* Basic_2A1: includes: drop_inv_length_eq *)
-lemma drops_inv_length_eq: â\88\80f,L1,L2. â¬\87*[â\93\89,f] L1 â\89\98 L2 â\86\92 |L1| = |L2| â\86\92 ð\9d\90\88â¦\83fâ¦\84.
+lemma drops_inv_length_eq: â\88\80f,L1,L2. â\87©*[â\93\89,f] L1 â\89\98 L2 â\86\92 |L1| = |L2| â\86\92 ð\9d\90\88â\9dªfâ\9d«.
 #f #L1 #L2 #H #HL12 elim (drops_fwd_fcla … H) -H
-#n #Hn <HL12 -L2 #H lapply (discr_plus_x_xy … H) -H
-/2 width=3 by fcla_inv_xp/
+#n #Hn <HL12 -L2 #H lapply (nplus_refl_sn … H) -H
+/2 width=3 by pr_fcla_inv_zero/
 qed-.
 
 (* Basic_2A1: includes: drop_fwd_length_eq2 *)
-theorem drops_fwd_length_eq2: â\88\80f,L1,L2,K1,K2. â¬\87*[â\93\89,f] L1 â\89\98 K1 â\86\92 â¬\87*[Ⓣ,f] L2 ≘ K2 →
+theorem drops_fwd_length_eq2: â\88\80f,L1,L2,K1,K2. â\87©*[â\93\89,f] L1 â\89\98 K1 â\86\92 â\87©*[Ⓣ,f] L2 ≘ K2 →
                               |K1| = |K2| → |L1| = |L2|.
 #f #L1 #L2 #K1 #K2 #HLK1 #HLK2 #HL12
 elim (drops_fwd_fcla … HLK1) -HLK1 #n1 #Hn1 #H1 >H1 -L1
 elim (drops_fwd_fcla … HLK2) -HLK2 #n2 #Hn2 #H2 >H2 -L2
-<(fcla_mono … Hn2 … Hn1) -f //
+<(pr_fcla_mono … Hn2 … Hn1) -f //
 qed-.
 
-theorem drops_conf_div: â\88\80f1,f2,L1,L2. â¬\87*[â\93\89,f1] L1 â\89\98 L2 â\86\92 â¬\87*[Ⓣ,f2] L1 ≘ L2 →
-                        â\88\83â\88\83n. ð\9d\90\82â¦\83f1â¦\84 â\89\98 n & ð\9d\90\82â¦\83f2â¦\84 ≘ n.
+theorem drops_conf_div: â\88\80f1,f2,L1,L2. â\87©*[â\93\89,f1] L1 â\89\98 L2 â\86\92 â\87©*[Ⓣ,f2] L1 ≘ L2 →
+                        â\88\83â\88\83n. ð\9d\90\82â\9dªf1â\9d« â\89\98 n & ð\9d\90\82â\9dªf2â\9d« ≘ n.
 #f1 #f2 #L1 #L2 #H1 #H2
 elim (drops_fwd_fcla … H1) -H1 #n1 #Hf1 #H1
 elim (drops_fwd_fcla … H2) -H2 #n2 #Hf2 >H1 -L1 #H
-lapply (injective_plus_r … H) -L2 #H destruct /2 width=3 by ex2_intro/
+lapply (eq_inv_nplus_bi_sn … H) -L2 #H destruct /2 width=3 by ex2_intro/
 qed-.
 
 theorem drops_conf_div_fcla: ∀f1,f2,L1,L2,n1,n2.
-                             â¬\87*[â\93\89,f1] L1 â\89\98 L2 â\86\92 â¬\87*[â\93\89,f2] L1 â\89\98 L2 â\86\92 ð\9d\90\82â¦\83f1â¦\84 â\89\98 n1 â\86\92 ð\9d\90\82â¦\83f2â¦\84 ≘ n2 →
+                             â\87©*[â\93\89,f1] L1 â\89\98 L2 â\86\92 â\87©*[â\93\89,f2] L1 â\89\98 L2 â\86\92 ð\9d\90\82â\9dªf1â\9d« â\89\98 n1 â\86\92 ð\9d\90\82â\9dªf2â\9d« ≘ n2 →
                              n1 = n2.
 #f1 #f2 #L1 #L2 #n1 #n2 #Hf1 #Hf2 #Hn1 #Hn2
 lapply (drops_fcla_fwd … Hf1 Hn1) -f1 #H1
 lapply (drops_fcla_fwd … Hf2 Hn2) -f2 >H1 -L1
-/2 width=1 by injective_plus_r/
+/2 width=1 by eq_inv_nplus_bi_sn/
 qed-.