new simprule zero_less_abs_iff
authorpaulson
Tue, 19 Dec 2000 15:16:21 +0100
changeset 10702 9e6898befad4
parent 10701 16493f0cee9a
child 10703 ba98f00cec4f
new simprule zero_less_abs_iff
src/HOL/Integ/IntArith.ML
--- a/src/HOL/Integ/IntArith.ML	Tue Dec 19 15:15:43 2000 +0100
+++ b/src/HOL/Integ/IntArith.ML	Tue Dec 19 15:16:21 2000 +0100
@@ -32,7 +32,8 @@
 by(case_tac "k = f(n+1)" 1);
  by(Force_tac 1);
 by(etac impE 1);
- by(asm_full_simp_tac (simpset() addsimps [zabs_def] addsplits [split_if_asm]) 1);
+ by(asm_full_simp_tac (simpset() addsimps [zabs_def] 
+                                 addsplits [split_if_asm]) 1);
  by(arith_tac 1);
 by(blast_tac (claset() addIs [le_SucI]) 1);
 val lemma = result();
@@ -103,9 +104,9 @@
                                   linorder_not_less RS sym]));
 qed "zmult_le_0_iff";
 
-
 Goal "abs (x * y) = abs x * abs (y::int)";
-by (simp_tac (simpset () addsplits [zabs_split] addsimps [zmult_less_0_iff, zle_def]) 1);
+by (simp_tac (simpset () addsplits [zabs_split] 
+                         addsimps [zmult_less_0_iff, zle_def]) 1);
 qed "abs_mult";
 
 Goal "(abs x = #0) = (x = (#0::int))";
@@ -113,6 +114,12 @@
 qed "abs_eq_0";
 AddIffs [abs_eq_0];
 
+Goal "(#0 < abs x) = (x ~= (#0::int))";
+by (simp_tac (simpset () addsplits [zabs_split]) 1);
+by (arith_tac 1);
+qed "zero_less_abs_iff";
+AddIffs [zero_less_abs_iff];
+
 Goal "#0 <= x * (x::int)";
 by (subgoal_tac "(- x) * x <= #0" 1);
  by (Asm_full_simp_tac 1);