equal
deleted
inserted
replaced
124 |
124 |
125 instantiation inat :: comm_monoid_add |
125 instantiation inat :: comm_monoid_add |
126 begin |
126 begin |
127 |
127 |
128 definition |
128 definition |
129 [code del]: "m + n = (case m of \<infinity> \<Rightarrow> \<infinity> | Fin m \<Rightarrow> (case n of \<infinity> \<Rightarrow> \<infinity> | Fin n \<Rightarrow> Fin (m + n)))" |
129 "m + n = (case m of \<infinity> \<Rightarrow> \<infinity> | Fin m \<Rightarrow> (case n of \<infinity> \<Rightarrow> \<infinity> | Fin n \<Rightarrow> Fin (m + n)))" |
130 |
130 |
131 lemma plus_inat_simps [simp, code]: |
131 lemma plus_inat_simps [simp, code]: |
132 "Fin m + Fin n = Fin (m + n)" |
132 "Fin m + Fin n = Fin (m + n)" |
133 "\<infinity> + q = \<infinity>" |
133 "\<infinity> + q = \<infinity>" |
134 "q + \<infinity> = \<infinity>" |
134 "q + \<infinity> = \<infinity>" |
175 |
175 |
176 instantiation inat :: comm_semiring_1 |
176 instantiation inat :: comm_semiring_1 |
177 begin |
177 begin |
178 |
178 |
179 definition |
179 definition |
180 times_inat_def [code del]: |
180 times_inat_def: |
181 "m * n = (case m of \<infinity> \<Rightarrow> if n = 0 then 0 else \<infinity> | Fin m \<Rightarrow> |
181 "m * n = (case m of \<infinity> \<Rightarrow> if n = 0 then 0 else \<infinity> | Fin m \<Rightarrow> |
182 (case n of \<infinity> \<Rightarrow> if m = 0 then 0 else \<infinity> | Fin n \<Rightarrow> Fin (m * n)))" |
182 (case n of \<infinity> \<Rightarrow> if m = 0 then 0 else \<infinity> | Fin n \<Rightarrow> Fin (m * n)))" |
183 |
183 |
184 lemma times_inat_simps [simp, code]: |
184 lemma times_inat_simps [simp, code]: |
185 "Fin m * Fin n = Fin (m * n)" |
185 "Fin m * Fin n = Fin (m * n)" |
236 |
236 |
237 instantiation inat :: linordered_ab_semigroup_add |
237 instantiation inat :: linordered_ab_semigroup_add |
238 begin |
238 begin |
239 |
239 |
240 definition |
240 definition |
241 [code del]: "m \<le> n = (case n of Fin n1 \<Rightarrow> (case m of Fin m1 \<Rightarrow> m1 \<le> n1 | \<infinity> \<Rightarrow> False) |
241 "m \<le> n = (case n of Fin n1 \<Rightarrow> (case m of Fin m1 \<Rightarrow> m1 \<le> n1 | \<infinity> \<Rightarrow> False) |
242 | \<infinity> \<Rightarrow> True)" |
242 | \<infinity> \<Rightarrow> True)" |
243 |
243 |
244 definition |
244 definition |
245 [code del]: "m < n = (case m of Fin m1 \<Rightarrow> (case n of Fin n1 \<Rightarrow> m1 < n1 | \<infinity> \<Rightarrow> True) |
245 "m < n = (case m of Fin m1 \<Rightarrow> (case n of Fin n1 \<Rightarrow> m1 < n1 | \<infinity> \<Rightarrow> True) |
246 | \<infinity> \<Rightarrow> False)" |
246 | \<infinity> \<Rightarrow> False)" |
247 |
247 |
248 lemma inat_ord_simps [simp]: |
248 lemma inat_ord_simps [simp]: |
249 "Fin m \<le> Fin n \<longleftrightarrow> m \<le> n" |
249 "Fin m \<le> Fin n \<longleftrightarrow> m \<le> n" |
250 "Fin m < Fin n \<longleftrightarrow> m < n" |
250 "Fin m < Fin n \<longleftrightarrow> m < n" |