]> matita.cs.unibo.it Git - helm.git/blob - matita/dama/integration_algebras.ma
46bebc0e9da6745255d64691b99f5fe6a00eb7e2
[helm.git] / matita / dama / integration_algebras.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 set "baseuri" "cic:/matita/integration_algebras/".
16
17 include "vector_spaces.ma".
18
19 record is_lattice (C:Type) (join,meet:C→C→C) : Prop \def
20  { (* abelian semigroup properties *)
21    l_comm_j: symmetric ? join;
22    l_associative_j: associative ? join;
23    l_comm_m: symmetric ? meet;
24    l_associative_m: associative ? meet;
25    (* other properties *)
26    l_adsorb_j_m: ∀f,g. join f (meet f g) = f;
27    l_adsorb_m_j: ∀f,g. meet f (join f g) = f
28  }.
29
30 record lattice (C:Type) : Type \def
31  { join: C → C → C;
32    meet: C → C → C;
33    l_lattice_properties: is_lattice ? join meet
34  }.
35
36 definition le \def λC:Type.λL:lattice C.λf,g. meet ? L f g = f.
37
38 interpretation "Lattice le" 'leq a b =
39  (cic:/matita/integration_algebras/le.con _ _ a b).
40
41 definition lt \def λC:Type.λL:lattice C.λf,g. le ? L f g ∧ f ≠ g.
42
43 interpretation "Lattice lt" 'lt a b =
44  (cic:/matita/integration_algebras/lt.con _ _ a b).
45
46 definition carrier_of_lattice ≝
47  λC:Type.λL:lattice C.C.
48
49 record is_riesz_space (K:ordered_field_ch0) (V:vector_space K)
50  (L:lattice (Type_OF_vector_space ? V))
51 : Prop
52 \def
53  { rs_compat_le_plus: ∀f,g,h. le ? L f g → le ? L (f+h) (g+h);
54    rs_compat_le_times: ∀a:K.∀f. of_le ? 0 a → le ? L 0 f → le ? L 0 (a*f)
55  }.
56
57 record riesz_space (K:ordered_field_ch0) : Type \def
58  { rs_vector_space:> vector_space K;
59    rs_lattice:> lattice rs_vector_space;
60    rs_riesz_space_properties: is_riesz_space ? rs_vector_space rs_lattice
61  }.
62
63 definition absolute_value \def λK.λS:riesz_space K.λf.join ? S f (-f).   
64
65 (*CSC: qui la notazione non fa capire!!! *)
66 definition is_riesz_norm ≝
67  λR:real.λV:riesz_space R.λnorm:norm ? V.
68   ∀f,g:V. le ? V (absolute_value ? V f) (absolute_value ? V g) →
69    of_le R (norm f) (norm g).
70
71 record riesz_norm (R:real) (V:riesz_space R) : Type ≝
72  { rn_norm:> norm ? V;
73    rn_riesz_norm_property: is_riesz_norm ? ? rn_norm
74  }.
75
76 (*CSC: non fa la chiusura delle coercion verso funclass *)
77 definition rn_function ≝
78  λR:real.λV:riesz_space R.λnorm:riesz_norm ? V.
79   n_function ? ? (rn_norm ? ? norm).
80
81 coercion cic:/matita/integration_algebras/rn_function.con 1.
82
83 (************************** L-SPACES *************************************)
84
85 record is_l_space (R:real) (V:riesz_space R) (norm:riesz_norm ? V) : Prop ≝
86  { ls_banach: is_complete ? V (induced_distance ? ? norm);
87    ls_linear: ∀f,g:V. le ? V 0 f → le ? V 0 g → norm (f+g) = norm f + norm g
88  }.
89
90 (******************** ARCHIMEDEAN RIESZ SPACES ***************************)
91
92 record is_archimedean_riesz_space (K) (S:riesz_space K) : Prop
93 \def
94   { ars_archimedean: ∃u.∀n.∀a.∀p:n > O.
95      le ? S
96       (absolute_value ? S a)
97       ((inv ? (sum_field K n) (not_eq_sum_field_zero ? n p))* u) →
98      a = 0
99   }.
100
101 record archimedean_riesz_space (K:ordered_field_ch0) : Type \def
102  { ars_riesz_space:> riesz_space K;
103    ars_archimedean_property: is_archimedean_riesz_space ? ars_riesz_space
104  }.
105
106 record is_integral (K) (R:archimedean_riesz_space K) (I:R→K) : Prop
107 \def
108  { i_positive: ∀f:R. le ? R 0 f → of_le K 0 (I f);
109    i_linear1: ∀f,g:R. I (f + g) = I f + I g;
110    i_linear2: ∀f:R.∀k:K. I (k*f) = k*(I f)
111  }.
112
113 definition is_weak_unit ≝
114 (* This definition is by Spitters. He cites Fremlin 353P, but:
115    1. that theorem holds only in f-algebras (as in Spitters, but we are
116       defining it on Riesz spaces)
117    2. Fremlin proves |x|/\u=0 \to u=0. How do we remove the absolute value?
118  λR:real.λV:archimedean_riesz_space R.λunit: V.
119   ∀x:V. meet x unit = 0 → u = 0.
120   3. Fremlin proves u > 0 implies x /\ u > 0  > 0 for Archimedean spaces
121    only. We pick this definition for now.
122 *) λR:real.λV:archimedean_riesz_space R.λe:V.
123     ∀v:V. lt ? V 0 v → lt ? V 0 (meet ? V v e).
124
125 (* Here we are avoiding a construction (the quotient space to define
126    f=g iff I(|f-g|)=0 *)
127 record integration_riesz_space (R:real) : Type \def
128  { irs_archimedean_riesz_space:> archimedean_riesz_space R;
129    irs_unit: irs_archimedean_riesz_space;
130    irs_weak_unit: is_weak_unit ? ? irs_unit;
131    integral: irs_archimedean_riesz_space → R;
132    irs_integral_properties: is_integral ? ? integral;
133    irs_limit1:
134     ∀f:irs_archimedean_riesz_space.
135      tends_to ?
136       (λn.integral (meet ? irs_archimedean_riesz_space f
137        ((sum_field R n)*irs_unit)))
138        (integral f);
139    irs_limit2:
140     ∀f:irs_archimedean_riesz_space.
141      tends_to ?
142       (λn.
143         integral (meet ? irs_archimedean_riesz_space f
144          ((inv ? (sum_field R (S n))
145            (not_eq_sum_field_zero R (S n) (le_S_S O n (le_O_n n)))
146          ) * irs_unit))) 0;
147    irs_quotient_space1:
148     ∀f,g:irs_archimedean_riesz_space.
149      integral (absolute_value ? irs_archimedean_riesz_space (f - g)) = 0 → f=g
150  }.
151
152 definition induced_norm_fun ≝
153  λR:real.λV:integration_riesz_space R.λf:V.
154   integral ? ? (absolute_value ? ? f).
155
156 lemma induced_norm_is_norm:
157  ∀R:real.∀V:integration_riesz_space R.is_norm ? V (induced_norm_fun ? V).
158  intros;
159  apply mk_is_norm;
160   [ apply mk_is_semi_norm;
161      [ unfold induced_norm_fun;
162        intros;
163        apply i_positive;
164        [ apply (irs_integral_properties ? V)
165        | (* difficile *)
166          elim daemon
167        ]
168      | intros;
169        unfold induced_norm_fun;
170        (* facile *)
171        elim daemon
172      | intros;
173        unfold induced_norm_fun;
174        (* difficile *)
175        elim daemon
176      ]
177   | intros;
178     unfold induced_norm_fun in H;
179     apply irs_quotient_space1;
180     unfold minus;
181     rewrite < plus_comm;
182     rewrite < eq_zero_opp_zero;
183     rewrite > zero_neutral;
184     assumption
185   ].
186 qed.
187
188 definition induced_norm ≝
189  λR:real.λV:integration_riesz_space R.
190   mk_norm ? ? (induced_norm_fun ? V) (induced_norm_is_norm ? V).
191
192 lemma is_riesz_norm_induced_norm:
193  ∀R:real.∀V:integration_riesz_space R.
194   is_riesz_norm ? ? (induced_norm ? V).
195  intros;
196  unfold is_riesz_norm;
197  intros;
198  unfold induced_norm;
199  simplify;
200  unfold induced_norm_fun;
201  (* difficile *)
202  elim daemon.
203 qed.
204
205 definition induced_riesz_norm ≝
206  λR:real.λV:integration_riesz_space R.
207   mk_riesz_norm ? ? (induced_norm ? V) (is_riesz_norm_induced_norm ? V).
208
209 definition distance_induced_by_integral ≝
210  λR:real.λV:integration_riesz_space R.
211   induced_distance ? ? (induced_norm R V).
212
213 definition is_complete_integration_riesz_space ≝
214  λR:real.λV:integration_riesz_space R.
215   is_complete ? ? (distance_induced_by_integral ? V).
216
217 record complete_integration_riesz_space (R:real) : Type ≝
218  { cirz_integration_riesz_space:> integration_riesz_space R;
219    cirz_complete_integration_riesz_space_property:
220     is_complete_integration_riesz_space ? cirz_integration_riesz_space
221  }.
222
223 (* now we prove that any complete integration riesz space is an L-space *)
224
225 theorem is_l_space_l_space_induced_by_integral:
226  ∀R:real.∀V:complete_integration_riesz_space R.
227   is_l_space ? ? (induced_riesz_norm ? V).
228  intros;
229  constructor 1;
230   [ apply cirz_complete_integration_riesz_space_property
231   | intros;
232     unfold induced_riesz_norm;
233     simplify;
234     unfold induced_norm;
235     simplify;
236     unfold induced_norm_fun;
237     (* difficile *)
238     elim daemon
239   ].
240 qed.
241
242 (**************************** f-ALGEBRAS ********************************)
243
244 record is_algebra (K: field) (V:vector_space K) (mult:V→V→V) (one:V) : Prop
245
246  { (* ring properties *)
247    a_ring: is_ring V mult one;
248    (* algebra properties *)
249    a_associative_left: ∀a,f,g. a * (mult f g) = mult (a * f) g;
250    a_associative_right: ∀a,f,g. a * (mult f g) = mult f (a * g)
251  }.
252
253 record algebra (K: field) (V:vector_space K) (a_one:V) : Type \def
254  { a_mult: V → V → V;
255    a_algebra_properties: is_algebra ? ? a_mult a_one
256  }.
257
258 interpretation "Algebra product" 'times a b =
259  (cic:/matita/integration_algebras/a_mult.con _ _ _ a b).
260
261 definition ring_of_algebra ≝
262  λK.λV:vector_space K.λone:V.λA:algebra ? V one.
263   mk_ring V (a_mult ? ? ? A) one
264    (a_ring ? ? ? ? (a_algebra_properties ? ? ? A)).
265
266 coercion cic:/matita/integration_algebras/ring_of_algebra.con.
267
268 record is_f_algebra (K) (S:archimedean_riesz_space K) (one: S)
269  (A:algebra ? S one) : Prop
270 \def 
271 { compat_mult_le:
272    ∀f,g:S.
273     le ? S 0 f → le ? S 0 g → le ? S 0 (a_mult ? ? ? A f g);
274   compat_mult_meet:
275    ∀f,g,h:S.
276     meet ? S f g = 0 → meet ? S (a_mult ? ? ? A h f) g = 0
277 }.
278
279 record f_algebra (K:ordered_field_ch0) (R:archimedean_riesz_space K) (one:R) :
280 Type \def 
281 { fa_algebra:> algebra ? R one;
282   fa_f_algebra_properties: is_f_algebra ? ? ? fa_algebra
283 }.
284
285 (* to be proved; see footnote 2 in the paper by Spitters *)
286 axiom symmetric_a_mult:
287  ∀K,R,one.∀A:f_algebra K R one. symmetric ? (a_mult ? ? ? A).
288
289 record integration_f_algebra (R:real) : Type \def
290  { ifa_integration_riesz_space:> integration_riesz_space R;
291    ifa_f_algebra:>
292     f_algebra ? ifa_integration_riesz_space
293      (irs_unit ? ifa_integration_riesz_space)
294  }.