equal
deleted
inserted
replaced
239 by (auto simp add: congruent_def * algebra_simps) |
239 by (auto simp add: congruent_def * algebra_simps) |
240 then show ?thesis |
240 then show ?thesis |
241 by (simp add: Fract_def inverse_fract_def UN_fractrel) |
241 by (simp add: Fract_def inverse_fract_def UN_fractrel) |
242 qed |
242 qed |
243 |
243 |
244 definition divide_fract_def: "divide q r = q * inverse (r:: 'a fract)" |
244 definition divide_fract_def: "q div r = q * inverse (r:: 'a fract)" |
245 |
245 |
246 lemma divide_fract [simp]: "divide (Fract a b) (Fract c d) = Fract (a * d) (b * c)" |
246 lemma divide_fract [simp]: "Fract a b div Fract c d = Fract (a * d) (b * c)" |
247 by (simp add: divide_fract_def) |
247 by (simp add: divide_fract_def) |
248 |
248 |
249 instance |
249 instance |
250 proof |
250 proof |
251 fix q :: "'a fract" |
251 fix q :: "'a fract" |
253 then show "inverse q * q = 1" |
253 then show "inverse q * q = 1" |
254 by (cases q rule: Fract_cases_nonzero) |
254 by (cases q rule: Fract_cases_nonzero) |
255 (simp_all add: fract_expand eq_fract mult.commute) |
255 (simp_all add: fract_expand eq_fract mult.commute) |
256 next |
256 next |
257 fix q r :: "'a fract" |
257 fix q r :: "'a fract" |
258 show "divide q r = q * inverse r" by (simp add: divide_fract_def) |
258 show "q div r = q * inverse r" by (simp add: divide_fract_def) |
259 next |
259 next |
260 show "inverse 0 = (0:: 'a fract)" |
260 show "inverse 0 = (0:: 'a fract)" |
261 by (simp add: fract_expand) (simp add: fract_collapse) |
261 by (simp add: fract_expand) (simp add: fract_collapse) |
262 qed |
262 qed |
263 |
263 |