src/HOL/ex/Numeral_Representation.thy
changeset 49962 a8cc904a6820
parent 49690 a6814de45b69
child 51717 9e7d1c139569
equal deleted inserted replaced
49961:d3d2b78b1c19 49962:a8cc904a6820
   151   "Dig0 n * Dig1 m = Dig0 (n * Dig1 m)"
   151   "Dig0 n * Dig1 m = Dig0 (n * Dig1 m)"
   152   "Dig1 n * One = Dig1 n"
   152   "Dig1 n * One = Dig1 n"
   153   "Dig1 n * Dig0 m = Dig0 (n * Dig0 m + m)"
   153   "Dig1 n * Dig0 m = Dig0 (n * Dig0 m + m)"
   154   "Dig1 n * Dig1 m = Dig1 (n * Dig1 m + m)"
   154   "Dig1 n * Dig1 m = Dig1 (n * Dig1 m + m)"
   155   by (simp_all add: num_eq_iff nat_of_num_add nat_of_num_mult
   155   by (simp_all add: num_eq_iff nat_of_num_add nat_of_num_mult
   156                     left_distrib right_distrib)
   156                     distrib_right distrib_left)
   157 
   157 
   158 lemma less_eq_num_code [numeral, simp, code]:
   158 lemma less_eq_num_code [numeral, simp, code]:
   159   "One \<le> n \<longleftrightarrow> True"
   159   "One \<le> n \<longleftrightarrow> True"
   160   "Dig0 m \<le> One \<longleftrightarrow> False"
   160   "Dig0 m \<le> One \<longleftrightarrow> False"
   161   "Dig1 m \<le> One \<longleftrightarrow> False"
   161   "Dig1 m \<le> One \<longleftrightarrow> False"
   241 
   241 
   242 lemma of_num_add: "of_num (m + n) = of_num m + of_num n"
   242 lemma of_num_add: "of_num (m + n) = of_num m + of_num n"
   243   by (induct n rule: num_induct) (simp_all add: add_One add_inc of_num_inc add_ac)
   243   by (induct n rule: num_induct) (simp_all add: add_One add_inc of_num_inc add_ac)
   244 
   244 
   245 lemma of_num_mult: "of_num (m * n) = of_num m * of_num n"
   245 lemma of_num_mult: "of_num (m * n) = of_num m * of_num n"
   246   by (induct n rule: num_induct) (simp_all add: mult_One mult_inc of_num_add of_num_inc right_distrib)
   246   by (induct n rule: num_induct) (simp_all add: mult_One mult_inc of_num_add of_num_inc distrib_left)
   247 
   247 
   248 declare of_num.simps [simp del]
   248 declare of_num.simps [simp del]
   249 
   249 
   250 end
   250 end
   251 
   251 
   790 context semiring_numeral
   790 context semiring_numeral
   791 begin
   791 begin
   792 
   792 
   793 lemma mult_of_num_commute: "x * of_num n = of_num n * x"
   793 lemma mult_of_num_commute: "x * of_num n = of_num n * x"
   794 by (induct n)
   794 by (induct n)
   795   (simp_all only: of_num.simps left_distrib right_distrib mult_1_left mult_1_right)
   795   (simp_all only: of_num.simps distrib_right distrib_left mult_1_left mult_1_right)
   796 
   796 
   797 definition
   797 definition
   798   "commutes_with a b \<longleftrightarrow> a * b = b * a"
   798   "commutes_with a b \<longleftrightarrow> a * b = b * a"
   799 
   799 
   800 lemma commutes_with_commute: "commutes_with a b \<Longrightarrow> a * b = b * a"
   800 lemma commutes_with_commute: "commutes_with a b \<Longrightarrow> a * b = b * a"