equal
deleted
inserted
replaced
154 proof - |
154 proof - |
155 from assms have "Fract c c = Fract 1 1" by (simp add: Fract_def) |
155 from assms have "Fract c c = Fract 1 1" by (simp add: Fract_def) |
156 then show ?thesis by (simp add: mult_rat [symmetric]) |
156 then show ?thesis by (simp add: mult_rat [symmetric]) |
157 qed |
157 qed |
158 |
158 |
159 primrec power_rat |
|
160 where |
|
161 "q ^ 0 = (1\<Colon>rat)" |
|
162 | "q ^ Suc n = (q\<Colon>rat) * (q ^ n)" |
|
163 |
|
164 instance proof |
159 instance proof |
165 fix q r s :: rat show "(q * r) * s = q * (r * s)" |
160 fix q r s :: rat show "(q * r) * s = q * (r * s)" |
166 by (cases q, cases r, cases s) (simp add: eq_rat) |
161 by (cases q, cases r, cases s) (simp add: eq_rat) |
167 next |
162 next |
168 fix q r :: rat show "q * r = r * q" |
163 fix q r :: rat show "q * r = r * q" |
191 next |
186 next |
192 show "(0::rat) \<noteq> 1" by (simp add: Zero_rat_def One_rat_def eq_rat) |
187 show "(0::rat) \<noteq> 1" by (simp add: Zero_rat_def One_rat_def eq_rat) |
193 next |
188 next |
194 fix q :: rat show "q * 1 = q" |
189 fix q :: rat show "q * 1 = q" |
195 by (cases q) (simp add: One_rat_def eq_rat) |
190 by (cases q) (simp add: One_rat_def eq_rat) |
196 next |
191 qed |
197 fix q :: rat |
|
198 fix n :: nat |
|
199 show "q ^ 0 = 1" by simp |
|
200 show "q ^ (Suc n) = q * (q ^ n)" by simp |
|
201 qed |
|
202 |
|
203 declare power_rat.simps [simp del] |
|
204 |
192 |
205 end |
193 end |
206 |
194 |
207 lemma of_nat_rat: "of_nat k = Fract (of_nat k) 1" |
195 lemma of_nat_rat: "of_nat k = Fract (of_nat k) 1" |
208 by (induct k) (simp_all add: Zero_rat_def One_rat_def) |
196 by (induct k) (simp_all add: Zero_rat_def One_rat_def) |
220 begin |
208 begin |
221 |
209 |
222 definition |
210 definition |
223 rat_number_of_def [code del]: "number_of w = Fract w 1" |
211 rat_number_of_def [code del]: "number_of w = Fract w 1" |
224 |
212 |
225 instance by intro_classes (simp add: rat_number_of_def of_int_rat) |
213 instance proof |
|
214 qed (simp add: rat_number_of_def of_int_rat) |
226 |
215 |
227 end |
216 end |
228 |
217 |
229 lemma rat_number_collapse [code post]: |
218 lemma rat_number_collapse [code post]: |
230 "Fract 0 k = 0" |
219 "Fract 0 k = 0" |