equal
deleted
inserted
replaced
175 apply (induct rule: less_eq_nat.induct) |
175 apply (induct rule: less_eq_nat.induct) |
176 apply auto done |
176 apply auto done |
177 |
177 |
178 section \<open>Alternative list definitions\<close> |
178 section \<open>Alternative list definitions\<close> |
179 |
179 |
180 subsection \<open>Alternative rules for @{text length}\<close> |
180 subsection \<open>Alternative rules for \<open>length\<close>\<close> |
181 |
181 |
182 definition size_list' :: "'a list => nat" |
182 definition size_list' :: "'a list => nat" |
183 where "size_list' = size" |
183 where "size_list' = size" |
184 |
184 |
185 lemma size_list'_simps: |
185 lemma size_list'_simps: |
189 |
189 |
190 declare size_list'_simps[code_pred_def] |
190 declare size_list'_simps[code_pred_def] |
191 declare size_list'_def[symmetric, code_pred_inline] |
191 declare size_list'_def[symmetric, code_pred_inline] |
192 |
192 |
193 |
193 |
194 subsection \<open>Alternative rules for @{text list_all2}\<close> |
194 subsection \<open>Alternative rules for \<open>list_all2\<close>\<close> |
195 |
195 |
196 lemma list_all2_NilI [code_pred_intro]: "list_all2 P [] []" |
196 lemma list_all2_NilI [code_pred_intro]: "list_all2 P [] []" |
197 by auto |
197 by auto |
198 |
198 |
199 lemma list_all2_ConsI [code_pred_intro]: "list_all2 P xs ys ==> P x y ==> list_all2 P (x#xs) (y#ys)" |
199 lemma list_all2_ConsI [code_pred_intro]: "list_all2 P xs ys ==> P x y ==> list_all2 P (x#xs) (y#ys)" |