src/HOL/Multivariate_Analysis/Cartesian_Euclidean_Space.thy
changeset 61169 4de9ff3ea29a
parent 61104 3c2d4636cebc
child 61711 21d7910d6816
equal deleted inserted replaced
61168:dcdfb6355a05 61169:4de9ff3ea29a
    71 qed
    71 qed
    72 
    72 
    73 end
    73 end
    74 
    74 
    75 instance vec:: (order, finite) order
    75 instance vec:: (order, finite) order
    76   by default (auto simp: less_eq_vec_def less_vec_def vec_eq_iff
    76   by standard (auto simp: less_eq_vec_def less_vec_def vec_eq_iff
    77       intro: order.trans order.antisym order.strict_implies_order)
    77       intro: order.trans order.antisym order.strict_implies_order)
    78 
    78 
    79 instance vec :: (linorder, cart_one) linorder
    79 instance vec :: (linorder, cart_one) linorder
    80 proof
    80 proof
    81   obtain a :: 'b where all: "\<And>P. (\<forall>i. P i) \<longleftrightarrow> P a"
    81   obtain a :: 'b where all: "\<And>P. (\<forall>i. P i) \<longleftrightarrow> P a"
   181 
   181 
   182 
   182 
   183 subsection \<open>Some frequently useful arithmetic lemmas over vectors.\<close>
   183 subsection \<open>Some frequently useful arithmetic lemmas over vectors.\<close>
   184 
   184 
   185 instance vec :: (semigroup_mult, finite) semigroup_mult
   185 instance vec :: (semigroup_mult, finite) semigroup_mult
   186   by default (vector mult.assoc)
   186   by standard (vector mult.assoc)
   187 
   187 
   188 instance vec :: (monoid_mult, finite) monoid_mult
   188 instance vec :: (monoid_mult, finite) monoid_mult
   189   by default vector+
   189   by standard vector+
   190 
   190 
   191 instance vec :: (ab_semigroup_mult, finite) ab_semigroup_mult
   191 instance vec :: (ab_semigroup_mult, finite) ab_semigroup_mult
   192   by default (vector mult.commute)
   192   by standard (vector mult.commute)
   193 
   193 
   194 instance vec :: (comm_monoid_mult, finite) comm_monoid_mult
   194 instance vec :: (comm_monoid_mult, finite) comm_monoid_mult
   195   by default vector
   195   by standard vector
   196 
   196 
   197 instance vec :: (semiring, finite) semiring
   197 instance vec :: (semiring, finite) semiring
   198   by default (vector field_simps)+
   198   by standard (vector field_simps)+
   199 
   199 
   200 instance vec :: (semiring_0, finite) semiring_0
   200 instance vec :: (semiring_0, finite) semiring_0
   201   by default (vector field_simps)+
   201   by standard (vector field_simps)+
   202 instance vec :: (semiring_1, finite) semiring_1
   202 instance vec :: (semiring_1, finite) semiring_1
   203   by default vector
   203   by standard vector
   204 instance vec :: (comm_semiring, finite) comm_semiring
   204 instance vec :: (comm_semiring, finite) comm_semiring
   205   by default (vector field_simps)+
   205   by standard (vector field_simps)+
   206 
   206 
   207 instance vec :: (comm_semiring_0, finite) comm_semiring_0 ..
   207 instance vec :: (comm_semiring_0, finite) comm_semiring_0 ..
   208 instance vec :: (cancel_comm_monoid_add, finite) cancel_comm_monoid_add ..
   208 instance vec :: (cancel_comm_monoid_add, finite) cancel_comm_monoid_add ..
   209 instance vec :: (semiring_0_cancel, finite) semiring_0_cancel ..
   209 instance vec :: (semiring_0_cancel, finite) semiring_0_cancel ..
   210 instance vec :: (comm_semiring_0_cancel, finite) comm_semiring_0_cancel ..
   210 instance vec :: (comm_semiring_0_cancel, finite) comm_semiring_0_cancel ..
   213 instance vec :: (comm_semiring_1, finite) comm_semiring_1 ..
   213 instance vec :: (comm_semiring_1, finite) comm_semiring_1 ..
   214 
   214 
   215 instance vec :: (ring_1, finite) ring_1 ..
   215 instance vec :: (ring_1, finite) ring_1 ..
   216 
   216 
   217 instance vec :: (real_algebra, finite) real_algebra
   217 instance vec :: (real_algebra, finite) real_algebra
   218   by default (simp_all add: vec_eq_iff)
   218   by standard (simp_all add: vec_eq_iff)
   219 
   219 
   220 instance vec :: (real_algebra_1, finite) real_algebra_1 ..
   220 instance vec :: (real_algebra_1, finite) real_algebra_1 ..
   221 
   221 
   222 lemma of_nat_index: "(of_nat n :: 'a::semiring_1 ^'n)$i = of_nat n"
   222 lemma of_nat_index: "(of_nat n :: 'a::semiring_1 ^'n)$i = of_nat n"
   223 proof (induct n)
   223 proof (induct n)