(* LENGTH OF A LOCAL ENVIRONMENT ********************************************)
rec definition length L ≝ match L with
-[ LAtom ⇒ 0
-| LPair L _ _ ⇒ ⫯(length L)
+[ LAtom ⇒ 0
+| LBind L _ ⇒ ⫯(length L)
].
interpretation "length (local environment)" 'card L = (length L).
+definition length2 (L1) (L2): nat ≝ |L1| + |L2|.
+
(* Basic properties *********************************************************)
lemma length_atom: |⋆| = 0.
// qed.
-lemma length_pair: ∀I,L,V. |L.ⓑ{I}V| = ⫯|L|.
+(* Basic_2A1: uses: length_pair *)
+lemma length_bind: ∀I,L. |L.ⓘ{I}| = ⫯|L|.
// qed.
(* Basic inversion lemmas ***************************************************)
lemma length_inv_zero_dx: ∀L. |L| = 0 → L = ⋆.
-* // #L #I #V >length_pair
+* // #L #I >length_bind
#H destruct
qed-.
(* Basic_2A1: was: length_inv_pos_dx *)
lemma length_inv_succ_dx: ∀n,L. |L| = ⫯n →
- ∃∃I,K,V. |K| = n & L = K. ⓑ{I}V.
-#n * [ >length_atom #H destruct ]
-#L #I #V >length_pair /3 width=5 by ex2_3_intro, injective_S/
+ ∃∃I,K. |K| = n & L = K. ⓘ{I}.
+#n *
+[ >length_atom #H destruct
+| #L #I >length_bind /3 width=4 by ex2_2_intro, injective_S/
+]
qed-.
(* Basic_2A1: was: length_inv_pos_sn *)
lemma length_inv_succ_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_succ_dx … H) -H /2 width=5 by ex2_3_intro/
+ ∃∃I,K. n = |K| & L = K. ⓘ{I}.
+#n #L #H lapply (sym_eq ??? H) -H
+#H elim (length_inv_succ_dx … H) -H /2 width=4 by ex2_2_intro/
qed-.
(* Basic_2A1: removed theorems 1: length_inj *)