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) |