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 "static_2/relocation/drops.ma".
16 include "static_2/s_computation/fqup.ma".
18 (* PLUS-ITERATED SUPCLOSURE *************************************************)
20 (* Properties with generic slicing for local environments *******************)
22 lemma fqup_drops_succ: ∀b,G,K,T,i,L,U. ⬇*[↑i] L ≘ K → ⬆*[↑i] T ≘ U →
23 ⦃G, L, U⦄ ⊐+[b] ⦃G, K, T⦄.
24 #b #G #K #T #i elim i -i
25 [ #L #U #HLK #HTU elim (drops_inv_succ … HLK) -HLK
26 #I #Y #HY #H destruct <(drops_fwd_isid … HY) -K //
27 /3 width=2 by fqu_fqup, fqu_drop/
28 | #l #IH #L #U #HLK #HTU elim (drops_inv_succ … HLK) -HLK
30 elim (lifts_split_trans … HTU … (𝐔❴↑l❵) (𝐔❴1❵)) -HTU
31 /4 width=5 by fqup_strap2, fqu_drop/
35 lemma fqup_drops_strap1: ∀b,G1,G2,L1,K1,K2,T1,T2,U1,i. ⬇*[i] L1 ≘ K1 → ⬆*[i] T1 ≘ U1 →
36 ⦃G1, K1, T1⦄ ⊐[b] ⦃G2, K2, T2⦄ → ⦃G1, L1, U1⦄ ⊐+[b] ⦃G2, K2, T2⦄.
37 #b #G1 #G2 #L1 #K1 #K2 #T1 #T2 #U1 *
39 >(drops_fwd_isid … HLK1) -L1 //
40 <(lifts_fwd_isid … HTU1) -U1 /2 width=1 by fqu_fqup/
41 | /3 width=5 by fqup_strap1, fqup_drops_succ/
45 lemma fqup_lref: ∀b,I,G,L,K,V,i. ⬇*[i] L ≘ K.ⓑ{I}V → ⦃G, L, #i⦄ ⊐+[b] ⦃G, K, V⦄.
46 /2 width=6 by fqup_drops_strap1/ qed.