equal
deleted
inserted
replaced
294 have aux1: "\<And>k l::int. sgn k = sgn l \<longleftrightarrow> k = 0 \<and> l = 0 \<or> 0 < l \<and> 0 < k \<or> l < 0 \<and> k < 0" |
294 have aux1: "\<And>k l::int. sgn k = sgn l \<longleftrightarrow> k = 0 \<and> l = 0 \<or> 0 < l \<and> 0 < k \<or> l < 0 \<and> k < 0" |
295 by (auto simp add: sgn_if) |
295 by (auto simp add: sgn_if) |
296 have aux2: "\<And>q::int. - int_of k = int_of l * q \<longleftrightarrow> int_of k = int_of l * - q" by auto |
296 have aux2: "\<And>q::int. - int_of k = int_of l * q \<longleftrightarrow> int_of k = int_of l * - q" by auto |
297 show ?thesis |
297 show ?thesis |
298 by (simp add: prod_eq_iff Target_Numeral.int_eq_iff prod_case_beta aux1) |
298 by (simp add: prod_eq_iff Target_Numeral.int_eq_iff prod_case_beta aux1) |
299 (auto simp add: zdiv_zminus1_eq_if zmod_zminus1_eq_if zdiv_zminus2 zmod_zminus2 aux2) |
299 (auto simp add: zdiv_zminus1_eq_if zmod_zminus1_eq_if div_minus_right mod_minus_right aux2) |
300 qed |
300 qed |
301 |
301 |
302 lemma div_int_code [code]: |
302 lemma div_int_code [code]: |
303 "k div l = fst (divmod k l)" |
303 "k div l = fst (divmod k l)" |
304 by simp |
304 by simp |