src/HOL/Integ/IntArith.ML
changeset 10476 dbc181a32702
parent 10228 e653cb933293
child 10490 0054c785f495
equal deleted inserted replaced
10475:77fafa07fc8f 10476:dbc181a32702
   102               simpset() addsimps [int_0_less_mult_iff, 
   102               simpset() addsimps [int_0_less_mult_iff, 
   103                                   linorder_not_less RS sym]));
   103                                   linorder_not_less RS sym]));
   104 qed "zmult_le_0_iff";
   104 qed "zmult_le_0_iff";
   105 
   105 
   106 
   106 
       
   107 Goal "abs (x * y) = abs x * abs (y::int)";
       
   108 by (simp_tac (simpset () addsplits [zabs_split] addsimps [zmult_less_0_iff, zle_def]) 1);
       
   109 qed "abs_mult";
       
   110 
       
   111 Goal "(abs x = 0) = (x = (0::int))";
       
   112 by (simp_tac (simpset () addsplits [zabs_split]) 1);
       
   113 qed "abs_eq_0";
       
   114 AddIffs [abs_eq_0];
       
   115 
       
   116 Goal "#0 <= x * (x::int)";
       
   117 by (subgoal_tac "(- x) * x <= #0" 1);
       
   118  by (Asm_full_simp_tac 1);
       
   119 by (simp_tac (HOL_basic_ss addsimps [zmult_le_0_iff]) 1);
       
   120 by Auto_tac;
       
   121 qed "square_nonzero";
       
   122 Addsimps [square_nonzero];
       
   123 AddIs [square_nonzero];
       
   124 
       
   125 
   107 (*** Products and 1, by T. M. Rasmussen ***)
   126 (*** Products and 1, by T. M. Rasmussen ***)
   108 
   127 
   109 Goal "(m = m*(n::int)) = (n = #1 | m = #0)";
   128 Goal "(m = m*(n::int)) = (n = #1 | m = #0)";
   110 by Auto_tac;
   129 by Auto_tac;
   111 by (subgoal_tac "m*#1 = m*n" 1);
   130 by (subgoal_tac "m*#1 = m*n" 1);