]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/basic_2/grammar/lenv_length.ma
- ground_2: some additions
[helm.git] / matita / matita / contribs / lambdadelta / basic_2 / grammar / lenv_length.ma
index faf6de02d1dfe6e55d1253c97718637c0e1fdb4f..29fee0ef19a566c53eba8bdfe69feef387d672b6 100644 (file)
@@ -18,35 +18,39 @@ include "basic_2/grammar/lenv.ma".
 
 let rec length L ≝ match L with
 [ LAtom       ⇒ 0
-| LPair L _ _ ⇒ length L + 1
+| LPair L _ _ ⇒ ⫯(length L)
 ].
 
 interpretation "length (local environment)" 'card L = (length L).
 
+(* Basic properties *********************************************************)
+
+lemma length_atom: |⋆| = 0.
+// qed.
+
+lemma length_pair: ∀I,L,V. |L.ⓑ{I}V| = ⫯|L|.
+// qed.
+
 (* Basic inversion lemmas ***************************************************)
 
 lemma length_inv_zero_dx: ∀L. |L| = 0 → L = ⋆.
-* // #L #I #V normalize <plus_n_Sm #H destruct
+* // #L #I #V >length_pair
+#H destruct
 qed-.
 
 lemma length_inv_zero_sn: ∀L. 0 = |L| → L = ⋆.
-* // #L #I #V normalize <plus_n_Sm #H destruct
-qed-.
+/2 width=1 by length_inv_zero_dx/ qed-.
 
-lemma length_inv_pos_dx: ∀d,L. |L| = d + 1 →
-                         ∃∃I,K,V. |K| = d & L = K. ⓑ{I}V.
-#d *
-[ normalize <plus_n_Sm #H destruct
-| #K #I #V #H
-  lapply (injective_plus_l … H) -H /2 width=5/
-]
+lemma length_inv_pos_dx: ∀n,L. |L| = ⫯n →
+                         ∃∃I,K,V. |K| = n & L = K. ⓑ{I}V.
+#n * /3 width=5 by injective_S, ex2_3_intro/
+>length_atom #H destruct
 qed-.
 
-lemma length_inv_pos_sn: ∀d,L. d + 1 = |L| →
-                         ∃∃I,K,V. d = |K| & L = K. ⓑ{I}V.
-#d *
-[ normalize <plus_n_Sm #H destruct
-| #K #I #V #H
-  lapply (injective_plus_l … H) -H /2 width=5/
-]
+lemma length_inv_pos_sn: ∀n,L. ⫯n = |L| →
+                         ∃∃I,K,V. n = |K| & L = K. ⓑ{I}V.
+#l #L #H lapply (sym_eq ??? H) -H 
+#H elim (length_inv_pos_dx … H) -H /2 width=5 by ex2_3_intro/
 qed-.
+
+(* Basic_2A1: removed theorems 1: length_inj *)