src/HOL/Multivariate_Analysis/Ordered_Euclidean_Space.thy
changeset 61169 4de9ff3ea29a
parent 61076 bdc1e2f0a86a
child 61694 6571c78c9667
equal deleted inserted replaced
61168:dcdfb6355a05 61169:4de9ff3ea29a
    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