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 include "basic_2A/substitution/drop_drop.ma".
16 include "basic_2A/multiple/drops.ma".
18 (* ITERATED LOCAL ENVIRONMENT SLICING ***************************************)
20 (* Properties concerning basic local environment slicing ********************)
22 lemma drops_drop_trans: ∀L1,L,cs. ⬇*[Ⓕ, cs] L1 ≡ L → ∀L2,i. ⬇[i] L ≡ L2 →
23 ∃∃L0,cs0,i0. ⬇[i0] L1 ≡ L0 & ⬇*[Ⓕ, cs0] L0 ≡ L2 &
24 @❪i, cs❫ ≘ i0 & cs ▭ i ≘ cs0.
25 #L1 #L #cs #H elim H -L1 -L -cs
26 [ /2 width=7 by drops_nil, minuss_nil, at_nil, ex4_3_intro/
27 | #L1 #L0 #L #cs #l #m #_ #HL0 #IHL0 #L2 #i #HL2
28 elim (lt_or_ge i l) #Hil
29 [ elim (drop_trans_le … HL0 … HL2) -L /2 width=2 by lt_to_le/
30 #L #HL0 #HL2 elim (IHL0 … HL0) -L0 /3 width=7 by drops_cons, minuss_lt, at_lt, ex4_3_intro/
31 | lapply (drop_trans_ge … HL0 … HL2 ?) -L // #HL02
32 elim (IHL0 … HL02) -L0 /3 width=7 by minuss_ge, at_ge, ex4_3_intro/