equal
deleted
inserted
replaced
170 apply (induct rule: less_eq_nat.induct) |
170 apply (induct rule: less_eq_nat.induct) |
171 apply auto done |
171 apply auto done |
172 |
172 |
173 section {* Alternative list definitions *} |
173 section {* Alternative list definitions *} |
174 |
174 |
175 subsection {* Alternative rules for length *} |
175 subsection {* Alternative rules for @{text length} *} |
176 |
176 |
177 definition size_list :: "'a list => nat" |
177 definition size_list :: "'a list => nat" |
178 where "size_list = size" |
178 where "size_list = size" |
179 |
179 |
180 lemma size_list_simps: |
180 lemma size_list_simps: |
184 |
184 |
185 declare size_list_simps[code_pred_def] |
185 declare size_list_simps[code_pred_def] |
186 declare size_list_def[symmetric, code_pred_inline] |
186 declare size_list_def[symmetric, code_pred_inline] |
187 |
187 |
188 |
188 |
189 subsection {* Alternative rules for list_all2 *} |
189 subsection {* Alternative rules for @{text list_all2} *} |
190 |
190 |
191 lemma list_all2_NilI [code_pred_intro]: "list_all2 P [] []" |
191 lemma list_all2_NilI [code_pred_intro]: "list_all2 P [] []" |
192 by auto |
192 by auto |
193 |
193 |
194 lemma list_all2_ConsI [code_pred_intro]: "list_all2 P xs ys ==> P x y ==> list_all2 P (x#xs) (y#ys)" |
194 lemma list_all2_ConsI [code_pred_intro]: "list_all2 P xs ys ==> P x y ==> list_all2 P (x#xs) (y#ys)" |