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