]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/basic_2/etc/frees/frees_drops2.etc
update in ground_2 and basic_2
[helm.git] / matita / matita / contribs / lambdadelta / basic_2 / etc / frees / frees_drops2.etc
1 include "basic_2/static/frees_drops.ma".
2
3 axiom frees_inv_drops_next_sle: āˆ€f1,L1,T1. L1 āŠ¢ š…*ā¦ƒT1ā¦„ ā‰” f1 ā†’ āˆ€f2. f1 āŠ† f2 ā†’
4                                 āˆ€I2,L2,V2,n. ā¬‡*[n] L1 ā‰” L2.ā“‘{I2}V2 ā†’
5                                 āˆ€g1. ā«Æg1 = ā«±*[n] f1 ā†’
6                                 āˆ€g2. L2 āŠ¢ š…*ā¦ƒV2ā¦„ ā‰” g2 ā†’ ā†‘*[n]ā«Æg2 āŠ† f2.
7
8 lemma frees_drops_next_sle: āˆ€f1,L1,T1. L1 āŠ¢ š…*ā¦ƒT1ā¦„ ā‰” f1 ā†’ āˆ€f2. (
9                                āˆ€n. ā¬‡*[ā’», š”ā“nāµ] L1 ā‰” ā‹† ā†’
10                                āˆ€g1. ā«Æg1 = ā«±*[n] f1 ā†’
11                                āˆ€g2. šˆā¦ƒg2ā¦„ ā†’ ā†‘*[n]ā«Æg2 āŠ† f2
12                             ) ā†’ (
13                                āˆ€I2,L2,V2,n. ā¬‡*[n] L1 ā‰” L2.ā“‘{I2}V2 ā†’
14                                āˆ€g1. ā«Æg1 = ā«±*[n] f1 ā†’
15                                āˆ€g2. L2 āŠ¢ š…*ā¦ƒV2ā¦„ ā‰” g2 ā†’ ā†‘*[n]ā«Æg2 āŠ† f2
16                             ) ā†’ (
17                                āˆ€I2,L2,n. ā¬‡*[n] L1 ā‰” L2.ā“¤{I2} ā†’
18                                āˆ€g1. ā«Æg1 = ā«±*[n] f1 ā†’
19                                āˆ€g2. šˆā¦ƒg2ā¦„ ā†’ ā†‘*[n]ā«Æg2 āŠ† f2
20                             ) ā†’ f1 āŠ† f2.
21 #f1 #L1 #T1 #H @(frees_ind_void ā€¦ H) -f1 -L1 -T1
22 [ /2 width=1 by sle_isid_sn/
23 | /2 width=2 by/
24 | /3 width=5 by drops_refl/
25 | /3 width=3 by drops_refl/
26 | /6 width=5 by drops_drop, sle_inv_tl_dx, sle_px_tl/
27 | /2 width=1 by sle_isid_sn/
28 | #f1a #f1b #f1 #p #I1 #L1 #V1 #T1 #_ #_ #Hf1 #IHa #IHb #f2 #H1 #H2 #H3
29   lapply (sor_tls ā€¦ Hf1) #Hn
30   @(sor_inv_sle ā€¦ Hf1) -Hf1
31   [ @IHa -IHa -IHb [| #I2 #L2 #V2 | #I2 #L2 ] #n #HL #g1a #Hg1a #g2 #Hg2
32     lapply (Hn n) -Hn <Hg1a -Hg1a #H
33     elim (sor_nxx_tl ā€¦ H) -H /2 width=5 by/
34   | @sle_xn_tl [2: |*: // ]
35     @IHb -IHa -IHb [| #I2 #L2 #V2 | #I2 #L2 ] * [1,3,5: |*: #n ] #HL #g1b #Hg1b #g2 #Hg2
36     [1,2,3:
37       lapply (drops_fwd_isid ā€¦ HL ?) -HL // #H destruct -H1 -H2 -H3
38       /3 width=5 by sle_isid_sn, sle_next/
39     |4,5,6:
40       lapply (drops_inv_drop1 ā€¦ HL) -HL #HL
41       lapply (Hn n) -Hn >tls_xn <Hg1b -Hg1b #H
42       elim (sor_xnx_tl ā€¦ H) -H /3 width=5 by sle_weak/
43     ]
44   ]
45 | #f1a #f1b #f1 #I1 #L1 #V1 #T1 #_ #_ #Hf1 #IHa #IHb #f2 #H1 #H2 #H3
46   lapply (sor_tls ā€¦ Hf1) #H
47   @(sor_inv_sle ā€¦ Hf1) -Hf1
48   [ @IHa -IHa -IHb [| #I2 #L2 #V2 | #I2 #L2 ] #n #HL #g1a #Hg1a #g2 #Hg2
49     lapply (H n) -H <Hg1a -Hg1a #H
50     elim (sor_nxx_tl ā€¦ H) -H /2 width=5 by/
51   | @IHb -IHa -IHb [| #I2 #L2 #V2 | #I2 #L2 ] #n #HL #g1b #Hg1b #g2 #Hg2
52     lapply (H n) -H <Hg1b -Hg1b #H
53     elim (sor_xnx_tl ā€¦ H) -H /2 width=5 by/
54   ]
55 ]
56 qed-.