]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/basic_2/dynamic/nv_fqus.ma
update in basic_2
[helm.git] / matita / matita / contribs / lambdadelta / basic_2 / dynamic / nv_fqus.ma
1 (* Properties on subclosure *************************************************)
2
3 lemma snv_fqu_conf: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐ ⦃G2, L2, T2⦄ →
4                     ⦃G1, L1⦄ ⊢ T1 ¡[h, o] → ⦃G2, L2⦄ ⊢ T2 ¡[h, o].
5 #h #o #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2
6 [ #I1 #G1 #L1 #V1 #H
7   elim (snv_inv_lref … H) -H #I2 #L2 #V2 #H #HV2
8   lapply (drop_inv_O2 … H) -H #H destruct //
9 |2: *
10 |5,6: /3 width=8 by snv_inv_lift/
11 ]
12 [1,3: #a #I #G1 #L1 #V1 #T1 #H elim (snv_inv_bind … H) -H //
13 |2,4: * #G1 #L1 #V1 #T1 #H
14   [1,3: elim (snv_inv_appl … H) -H //
15   |2,4: elim (snv_inv_cast … H) -H //
16   ]
17 ]
18 qed-.
19
20 lemma snv_fquq_conf: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐⸮ ⦃G2, L2, T2⦄ →
21                      ⦃G1, L1⦄ ⊢ T1 ¡[h, o] → ⦃G2, L2⦄ ⊢ T2 ¡[h, o].
22 #h #o #G1 #G2 #L1 #L2 #T1 #T2 #H elim (fquq_inv_gen … H) -H [|*]
23 /2 width=5 by snv_fqu_conf/
24 qed-.
25
26 lemma snv_fqup_conf: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐+ ⦃G2, L2, T2⦄ →
27                      ⦃G1, L1⦄ ⊢ T1 ¡[h, o] → ⦃G2, L2⦄ ⊢ T2 ¡[h, o].
28 #h #o #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind … H) -G2 -L2 -T2
29 /3 width=5 by fqup_strap1, snv_fqu_conf/
30 qed-.
31
32 lemma snv_fqus_conf: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐* ⦃G2, L2, T2⦄ →
33                      ⦃G1, L1⦄ ⊢ T1 ¡[h, o] → ⦃G2, L2⦄ ⊢ T2 ¡[h, o].
34 #h #o #G1 #G2 #L1 #L2 #T1 #T2 #H elim (fqus_inv_gen … H) -H [|*]
35 /2 width=5 by snv_fqup_conf/
36 qed-.