15 assumes eucl_Sup: "Sup X = (\<Sum>i\<in>Basis. (SUP x:X. x \<bullet> i) *\<^sub>R i)" |
15 assumes eucl_Sup: "Sup X = (\<Sum>i\<in>Basis. (SUP x:X. x \<bullet> i) *\<^sub>R i)" |
16 assumes eucl_abs: "abs x = (\<Sum>i\<in>Basis. abs (x \<bullet> i) *\<^sub>R i)" |
16 assumes eucl_abs: "abs x = (\<Sum>i\<in>Basis. abs (x \<bullet> i) *\<^sub>R i)" |
17 begin |
17 begin |
18 |
18 |
19 subclass order |
19 subclass order |
20 by default |
20 by standard |
21 (auto simp: eucl_le eucl_less_le_not_le intro!: euclidean_eqI antisym intro: order.trans) |
21 (auto simp: eucl_le eucl_less_le_not_le intro!: euclidean_eqI antisym intro: order.trans) |
22 |
22 |
23 subclass ordered_ab_group_add_abs |
23 subclass ordered_ab_group_add_abs |
24 by default (auto simp: eucl_le inner_add_left eucl_abs abs_leI) |
24 by standard (auto simp: eucl_le inner_add_left eucl_abs abs_leI) |
25 |
25 |
26 subclass ordered_real_vector |
26 subclass ordered_real_vector |
27 by default (auto simp: eucl_le intro!: mult_left_mono mult_right_mono) |
27 by standard (auto simp: eucl_le intro!: mult_left_mono mult_right_mono) |
28 |
28 |
29 subclass lattice |
29 subclass lattice |
30 by default (auto simp: eucl_inf eucl_sup eucl_le) |
30 by standard (auto simp: eucl_inf eucl_sup eucl_le) |
31 |
31 |
32 subclass distrib_lattice |
32 subclass distrib_lattice |
33 by default (auto simp: eucl_inf eucl_sup sup_inf_distrib1 intro!: euclidean_eqI) |
33 by standard (auto simp: eucl_inf eucl_sup sup_inf_distrib1 intro!: euclidean_eqI) |
34 |
34 |
35 subclass conditionally_complete_lattice |
35 subclass conditionally_complete_lattice |
36 proof |
36 proof |
37 fix z::'a and X::"'a set" |
37 fix z::'a and X::"'a set" |
38 assume "X \<noteq> {}" |
38 assume "X \<noteq> {}" |
150 lemma (in order) atLeastatMost_empty'[simp]: |
150 lemma (in order) atLeastatMost_empty'[simp]: |
151 "(~ a <= b) \<Longrightarrow> {a..b} = {}" |
151 "(~ a <= b) \<Longrightarrow> {a..b} = {}" |
152 by (auto) |
152 by (auto) |
153 |
153 |
154 instance real :: ordered_euclidean_space |
154 instance real :: ordered_euclidean_space |
155 by default (auto simp: INF_def SUP_def) |
155 by standard (auto simp: INF_def SUP_def) |
156 |
156 |
157 lemma in_Basis_prod_iff: |
157 lemma in_Basis_prod_iff: |
158 fixes i::"'a::euclidean_space*'b::euclidean_space" |
158 fixes i::"'a::euclidean_space*'b::euclidean_space" |
159 shows "i \<in> Basis \<longleftrightarrow> fst i = 0 \<and> snd i \<in> Basis \<or> snd i = 0 \<and> fst i \<in> Basis" |
159 shows "i \<in> Basis \<longleftrightarrow> fst i = 0 \<and> snd i \<in> Basis \<or> snd i = 0 \<and> fst i \<in> Basis" |
160 by (cases i) (auto simp: Basis_prod_def) |
160 by (cases i) (auto simp: Basis_prod_def) |
166 |
166 |
167 instance proof qed |
167 instance proof qed |
168 end |
168 end |
169 |
169 |
170 instance prod :: (ordered_euclidean_space, ordered_euclidean_space) ordered_euclidean_space |
170 instance prod :: (ordered_euclidean_space, ordered_euclidean_space) ordered_euclidean_space |
171 by default |
171 by standard |
172 (auto intro!: add_mono simp add: euclidean_representation_setsum' Ball_def inner_prod_def |
172 (auto intro!: add_mono simp add: euclidean_representation_setsum' Ball_def inner_prod_def |
173 in_Basis_prod_iff inner_Basis_inf_left inner_Basis_sup_left inner_Basis_INF_left Inf_prod_def |
173 in_Basis_prod_iff inner_Basis_inf_left inner_Basis_sup_left inner_Basis_INF_left Inf_prod_def |
174 inner_Basis_SUP_left Sup_prod_def less_prod_def less_eq_prod_def eucl_le[where 'a='a] |
174 inner_Basis_SUP_left Sup_prod_def less_prod_def less_eq_prod_def eucl_le[where 'a='a] |
175 eucl_le[where 'a='b] abs_prod_def abs_inner) |
175 eucl_le[where 'a='b] abs_prod_def abs_inner) |
176 |
176 |
279 definition "Inf X = (\<chi> i. (INF x:X. x $ i))" |
279 definition "Inf X = (\<chi> i. (INF x:X. x $ i))" |
280 definition "Sup X = (\<chi> i. (SUP x:X. x $ i))" |
280 definition "Sup X = (\<chi> i. (SUP x:X. x $ i))" |
281 definition "abs x = (\<chi> i. abs (x $ i))" |
281 definition "abs x = (\<chi> i. abs (x $ i))" |
282 |
282 |
283 instance |
283 instance |
284 apply default |
284 apply standard |
285 unfolding euclidean_representation_setsum' |
285 unfolding euclidean_representation_setsum' |
286 apply (auto simp: less_eq_vec_def inf_vec_def sup_vec_def Inf_vec_def Sup_vec_def inner_axis |
286 apply (auto simp: less_eq_vec_def inf_vec_def sup_vec_def Inf_vec_def Sup_vec_def inner_axis |
287 Basis_vec_def inner_Basis_inf_left inner_Basis_sup_left inner_Basis_INF_left |
287 Basis_vec_def inner_Basis_inf_left inner_Basis_sup_left inner_Basis_INF_left |
288 inner_Basis_SUP_left eucl_le[where 'a='a] less_le_not_le abs_vec_def abs_inner) |
288 inner_Basis_SUP_left eucl_le[where 'a='a] less_le_not_le abs_vec_def abs_inner) |
289 done |
289 done |