src/HOL/Library/Fraction_Field.thy
changeset 60429 d3d1e185cd63
parent 60352 d46de31a50c4
child 60500 903bb1495239
equal deleted inserted replaced
60428:5e9de4faef98 60429:d3d1e185cd63
   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