]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/basic_2/relocation/drops_lreq.ma
- minor corrections
[helm.git] / matita / matita / contribs / lambdadelta / basic_2 / relocation / drops_lreq.ma
1 (**************************************************************************)
2 (*       ___                                                              *)
3 (*      ||M||                                                             *)
4 (*      ||A||       A project by Andrea Asperti                           *)
5 (*      ||T||                                                             *)
6 (*      ||I||       Developers:                                           *)
7 (*      ||T||         The HELM team.                                      *)
8 (*      ||A||         http://helm.cs.unibo.it                             *)
9 (*      \   /                                                             *)
10 (*       \ /        This file is distributed under the terms of the       *)
11 (*        v         GNU General Public License Version 2                  *)
12 (*                                                                        *)
13 (**************************************************************************)
14
15 include "basic_2/relocation/drops_ceq.ma".
16 include "basic_2/relocation/drops_lexs.ma".
17
18 (* GENERIC SLICING FOR LOCAL ENVIRONMENTS ***********************************)
19
20 (* Properties with ranged equivalence for local environments ****************)
21
22 lemma lreq_dedropable: dedropable_sn lreq.
23 @lexs_liftable_dedropable
24 /2 width=6 by cfull_lift, ceq_lift, cfull_refl, ceq_refl/
25 qed-.
26
27 lemma lreq_dropable: ∀RN,RP. dropable_dx (lexs RN RP).
28 @lexs_dropable qed-.
29
30 (* Basic_2A1: includes: lreq_drop_trans_be *)
31 lemma lreq_drops_trans_next: ∀L1,L2,f2. L1 ≡[f2] L2 →
32                              ∀I,K2,V,c,f. ⬇*[c,f] L2 ≡ K2.ⓑ{I}V → 𝐔⦃f⦄ →
33                              ∀f1. f ⊚ ⫯f1 ≡ f2 →
34                              ∃∃K1. ⬇*[c,f] L1 ≡ K1.ⓑ{I}V & K1 ≡[f1] K2.
35 #L1 #L2 #f2 #HL12 #I #K1 #V #c #f #HLK1 #Hf #f1 #Hf2
36 elim (lexs_drops_trans_next … HL12 … HLK1 Hf … Hf2) -L2 -f2 -Hf
37 /2 width=3 by ex2_intro/
38 qed-.
39
40 (* Basic_2A1: includes: lreq_drop_conf_be *)
41 lemma lreq_drops_conf_next: ∀L1,L2,f2. L1 ≡[f2] L2 →
42                             ∀I,K1,V,c,f. ⬇*[c,f] L1 ≡ K1.ⓑ{I}V → 𝐔⦃f⦄ →
43                             ∀f1. f ⊚ ⫯f1 ≡ f2 →
44                             ∃∃K2. ⬇*[c,f] L2 ≡ K2.ⓑ{I}V & K1 ≡[f1] K2.
45 #L1 #L2 #f2 #HL12 #I #K1 #V #c #f #HLK1 #Hf #f1 #Hf2
46 elim (lreq_drops_trans_next … (lreq_sym … HL12) … HLK1 … Hf2) // -L1 -f2 -Hf
47 /3 width=3 by lreq_sym, ex2_intro/
48 qed-.
49
50 lemma drops_lreq_trans_next: ∀K1,K2,f1. K1 ≡[f1] K2 →
51                              ∀I,L1,V,c,f. ⬇*[c,f] L1.ⓑ{I}V ≡ K1 →
52                              ∀f2. f ⊚ f1 ≡ ⫯f2 →
53                              ∃∃L2. ⬇*[c,f] L2.ⓑ{I}V ≡ K2 & L1 ≡[f2] L2 & L1.ⓑ{I}V≡[f]L2.ⓑ{I}V.
54 #K1 #K2 #f1 #HK12 #I #L1 #V #c #f #HLK1 #f2 #Hf2
55 elim (drops_lexs_trans_next … HK12 … HLK1 … Hf2) -K1 -f1
56 /2 width=6 by cfull_lift, ceq_lift, cfull_refl, ceq_refl, ex3_intro/
57 qed-.