equal
deleted
inserted
replaced
1173 lemma of_nat_add [simp]: "of_nat (m + n) = of_nat m + of_nat n" |
1173 lemma of_nat_add [simp]: "of_nat (m + n) = of_nat m + of_nat n" |
1174 by (induct m) (simp_all add: add_ac) |
1174 by (induct m) (simp_all add: add_ac) |
1175 |
1175 |
1176 lemma of_nat_mult: "of_nat (m * n) = of_nat m * of_nat n" |
1176 lemma of_nat_mult: "of_nat (m * n) = of_nat m * of_nat n" |
1177 by (induct m) (simp_all add: add_ac left_distrib) |
1177 by (induct m) (simp_all add: add_ac left_distrib) |
|
1178 |
|
1179 definition |
|
1180 of_nat_aux :: "nat \<Rightarrow> 'a \<Rightarrow> 'a" |
|
1181 where |
|
1182 [code func del]: "of_nat_aux n i = of_nat n + i" |
|
1183 |
|
1184 lemma of_nat_aux_code [code]: |
|
1185 "of_nat_aux 0 i = i" |
|
1186 "of_nat_aux (Suc n) i = of_nat_aux n (i + 1)" -- {* tail recursive *} |
|
1187 by (simp_all add: of_nat_aux_def add_ac) |
|
1188 |
|
1189 lemma of_nat_code [code]: |
|
1190 "of_nat n = of_nat_aux n 0" |
|
1191 by (simp add: of_nat_aux_def) |
1178 |
1192 |
1179 end |
1193 end |
1180 |
1194 |
1181 context ordered_semidom |
1195 context ordered_semidom |
1182 begin |
1196 begin |