1 (**************************************************************************)
4 (* ||A|| A project by Andrea Asperti *)
6 (* ||I|| Developers: *)
7 (* ||T|| The HELM team. *)
8 (* ||A|| http://helm.cs.unibo.it *)
10 (* \ / This file is distributed under the terms of the *)
11 (* v GNU General Public License Version 2 *)
13 (**************************************************************************)
15 notation "hvbox( T1 𝟙 break term 46 T2 )"
16 non associative with precedence 45
17 for @{ 'RTop $T1 $T2 }.
19 include "basic_2/grammar/lenv_px.ma".
21 (* POINTWISE EXTENSION OF TOP RELATION FOR TERMS ****************************)
23 definition ttop: relation term ≝ λT1,T2. True.
25 definition ltop: relation lenv ≝ lpx ttop.
28 "top reduction (environment)"
29 'RTop L1 L2 = (ltop L1 L2).
31 (* Basic properties *********************************************************)
33 lemma ltop_refl: reflexive … ltop.
36 lemma ltop_sym: symmetric … ltop.
39 lemma ltop_trans: transitive … ltop.
42 lemma ltop_append: ∀K1,K2. K1 𝟙 K2 → ∀L1,L2. L1 𝟙 L2 → L1 @@ K1 𝟙 L2 @@ K2.
45 (* Basic inversion lemmas ***************************************************)
47 lemma ltop_inv_atom1: ∀L2. ⋆ 𝟙 L2 → L2 = ⋆.
48 /2 width=2 by lpx_inv_atom1/ qed-.
50 lemma ltop_inv_pair1: ∀K1,I,V1,L2. K1. ⓑ{I} V1 𝟙 L2 →
51 ∃∃K2,V2. K1 𝟙 K2 & L2 = K2. ⓑ{I} V2.
53 elim (lpx_inv_pair1 … H) -H /2 width=4/
56 lemma ltop_inv_atom2: ∀L1. L1 𝟙 ⋆ → L1 = ⋆.
57 /2 width=2 by lpx_inv_atom2/ qed-.
59 lemma ltop_inv_pair2: ∀L1,K2,I,V2. L1 𝟙 K2. ⓑ{I} V2 →
60 ∃∃K1,V1. K1 𝟙 K2 & L1 = K1. ⓑ{I} V1.
62 elim (lpx_inv_pair2 … H) -H /2 width=4/
65 (* Basic forward lemmas *****************************************************)
67 lemma ltop_fwd_length: ∀L1,L2. L1 𝟙 L2 → |L1| = |L2|.
68 /2 width=2 by lpx_fwd_length/ qed-.