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 (* manca un pezzo del pullback, se inverto poi non tipa *)
16 include "sandwich.ma".
17 include "property_exhaustivity.ma".
19 lemma order_converges_bigger_lowsegment:
21 ∀a:sequence C.∀l,u:C.∀H:∀i:nat.a i ∈ [l,u].
22 ∀x:C.∀p:a order_converges x.
24 intros; cases p; clear p; simplify; cases H1; clear H1; cases H2; clear H2;
25 cases (H3 j); clear H3; cases H2; cases H7; clear H2 H7;
26 intro H2; cases (H8 ? H2);
27 cases (H (w1+j)); apply (H12 H7);
30 lemma order_converges_smaller_upsegment:
32 ∀a:sequence C.∀l,u:C.∀H:∀i:nat.a i ∈ [l,u].
33 ∀x:C.∀p:a order_converges x.
35 intros; cases p; clear p; simplify; cases H1; clear H1; cases H2; clear H2;
36 cases (H3 j); clear H3; cases H2; cases H7; clear H2 H7;
37 intro H2; cases (H10 ? H2);
38 cases (H (w1+j)); apply (H11 H7);
43 ∀C:ordered_uniform_space.
44 (∀l,u:C.order_continuity {[l,u]}) →
45 ∀a:sequence C.∀l,u:C.∀H:∀i:nat.a i ∈ [l,u].
46 ∀x:C.a order_converges x →
48 ∀h:x ∈ [l,u]. (* manca il pullback? *)
50 (uniform_space_OF_ordered_uniform_space
51 (segment_ordered_uniform_space C l u))
52 (λn.sig_in C (λx.x∈[l,u]) (a n) (H n))
55 generalize in match (order_converges_bigger_lowsegment ???? H1 ? H2);
56 generalize in match (order_converges_smaller_upsegment ???? H1 ? H2);
57 cases H2 (xi yi Hx Hy Hxy); clear H2; simplify in ⊢ (% → % → ?); intros;
58 cut (∀i.xi i ∈ [l,u]) as Hxi; [2:
59 intros; split; [2:apply H3] cases (Hxy i) (H5 _); cases H5 (H7 _);
60 apply (le_transitive ???? (H7 0)); simplify;
61 cases (H1 i); assumption;] clear H3;
62 cut (∀i.yi i ∈ [l,u]) as Hyi; [2:
63 intros; split; [apply H2] cases (Hxy i) (_ H5); cases H5 (H7 _);
64 apply (le_transitive ????? (H7 0)); simplify;
65 cases (H1 i); assumption;] clear H2;
67 [1: cases Hx; cases H3; cases Hy; cases H7; split;
68 [1: apply (le_transitive ???? (H8 0)); cases (Hyi 0); assumption
69 |2: apply (le_transitive ????? (H4 0)); cases (Hxi 0); assumption]
71 letin X ≝ (sig_in ?? x h);
72 letin Xi ≝ (λn.sig_in ?? (xi n) (Hxi n));
73 letin Yi ≝ (λn.sig_in ?? (yi n) (Hyi n));
74 letin Ai ≝ (λn:nat.sig_in ?? (a n) (H1 n));
75 apply (sandwich {[l,u]} X Xi Yi Ai); try assumption;
76 [1: intro j; cases (Hxy j); cases H3; cases H4; split;
77 [apply (H5 0);|apply (H7 0)]
78 |2: cases (H l u Xi X) (Ux Uy); apply Ux; cases Hx; split; [apply H3;]
79 cases H4; split; [apply H5] intros (y Hy);cases (H6 (fst y));[2:apply Hy];
80 exists [apply w] apply H7;
81 |3: cases (H l u Yi X) (Ux Uy); apply Uy; cases Hy; split; [apply H3;]
82 cases H4; split; [apply H5] intros (y Hy);cases (H6 (fst y));[2:apply Hy];
83 exists [apply w] apply H7;]]
89 ∀C:ordered_uniform_space.property_sigma C →
90 (∀l,u:C.exhaustive {[l,u]}) →
91 ∀a:sequence C.∀l,u:C.∀H:∀i:nat.a i ∈ [l,u].
92 ∀x:C.a order_converges x →
94 ∀h:x ∈ [l,u]. (* manca il pullback? *)
96 (uniform_space_OF_ordered_uniform_space
97 (segment_ordered_uniform_space C l u))
98 (λn.sig_in C (λx.x∈[l,u]) (a n) (H n))
101 generalize in match (order_converges_bigger_lowsegment ???? H1 ? H2);
102 generalize in match (order_converges_smaller_upsegment ???? H1 ? H2);
103 cases H2 (xi yi Hx Hy Hxy); clear H2; simplify in ⊢ (% → % → ?); intros;
104 cut (∀i.xi i ∈ [l,u]) as Hxi; [2:
105 intros; split; [2:apply H3] cases (Hxy i) (H5 _); cases H5 (H7 _);
106 apply (le_transitive ???? (H7 0)); simplify;
107 cases (H1 i); assumption;] clear H3;
108 cut (∀i.yi i ∈ [l,u]) as Hyi; [2:
109 intros; split; [apply H2] cases (Hxy i) (_ H5); cases H5 (H7 _);
110 apply (le_transitive ????? (H7 0)); simplify;
111 cases (H1 i); assumption;] clear H2;
113 [1: cases Hx; cases H3; cases Hy; cases H7; split;
114 [1: apply (le_transitive ???? (H8 0)); cases (Hyi 0); assumption
115 |2: apply (le_transitive ????? (H4 0)); cases (Hxi 0); assumption]
117 lapply (uparrow_upperlocated ? xi x Hx)as Ux;
118 lapply (downarrow_lowerlocated ? yi x Hy)as Uy;
119 letin X ≝ (sig_in ?? x h);
120 letin Xi ≝ (λn.sig_in ?? (xi n) (Hxi n));
121 letin Yi ≝ (λn.sig_in ?? (yi n) (Hyi n));
122 letin Ai ≝ (λn:nat.sig_in ?? (a n) (H1 n));
123 apply (sandwich {[l,u]} X Xi Yi Ai); try assumption;
124 [1: intro j; cases (Hxy j); cases H3; cases H4; split;
125 [apply (H5 0);|apply (H7 0)]
126 |2: cases (restrict_uniform_convergence_uparrow ? S ?? (H l u) Xi x Hx);
128 |3: cases (restrict_uniform_convergence_downarrow ? S ?? (H l u) Yi x Hy);