src/HOL/Library/Predicate_Compile_Alternative_Defs.thy
changeset 48640 053cc8dfde35
parent 47840 732ea1f08e3f
child 51143 0a2371e7ced3
equal deleted inserted replaced
48639:675988e64bf9 48640:053cc8dfde35
   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)"