src/HOL/Algebra/poly/LongDiv.ML
changeset 11093 62c2e0af1d30
parent 10962 cda180b1e2e0
child 11171 8aa53b4591a5
--- a/src/HOL/Algebra/poly/LongDiv.ML	Sat Feb 10 08:49:36 2001 +0100
+++ b/src/HOL/Algebra/poly/LongDiv.ML	Sat Feb 10 08:52:41 2001 +0100
@@ -39,7 +39,7 @@
 qed "deg_lcoeff_cancel2";
 
 Goal
-  "!!g::('a::ring up). g ~= <0> ==> \
+  "!!g::('a::ring up). g ~= 0 ==> \
 \    Ex (% (q, r, k). \
 \      (lcoeff g)^k *s f = q * g + r & (eucl_size r < eucl_size g))";
 by (res_inst_tac [("P", "%f. Ex (% (q, r, k). \
@@ -48,16 +48,16 @@
 (* TO DO: replace by measure_induct *)
 by (res_inst_tac [("f", "eucl_size")] wf_measure 1);
 by (case_tac "eucl_size x < eucl_size g" 1);
-by (res_inst_tac [("x", "(<0>, x, 0)")] exI 1);
+by (res_inst_tac [("x", "(0, x, 0)")] exI 1);
 by (Asm_simp_tac 1);
 (* case "eucl_size x >= eucl_size g" *)
 by (dres_inst_tac [("x", "lcoeff g *s x -- (lcoeff x *s monom (deg x - deg g)) * g")] spec 1);
 by (etac impE 1);
 by (full_simp_tac (simpset() addsimps [inv_image_def, measure_def, lcoeff_def]) 1);
-by (case_tac "x = <0>" 1);
+by (case_tac "x = 0" 1);
 by (rotate_tac ~1 1);
 by (asm_full_simp_tac (simpset() addsimps [eucl_size_def]) 1);
-(* case "x ~= <0> *)
+(* case "x ~= 0 *)
 by (rotate_tac ~1 1);
 by (asm_full_simp_tac (simpset() addsimps [eucl_size_def]) 1);
 by (Simp_tac 1);
@@ -73,7 +73,10 @@
   by (rtac le_trans 1);
   by (rtac add_le_mono1 1);
   by (rtac deg_smult_ring 1);
-  by (asm_simp_tac (simpset() addsimps [leI]) 1);
+(*  by (asm_simp_tac (simpset() addsimps [leI]) 1); *)
+  by (Asm_simp_tac 1);
+  by (cut_inst_tac [("m", "deg x - deg g"), ("'a", "'a")] deg_monom_ring 1);
+  by (arith_tac 1);
 by (Force_tac 1);
 by (Simp_tac 1);
 by (res_inst_tac [("m", "deg x - deg g"), ("n", "deg x")] SUM_extend 1);
@@ -97,22 +100,22 @@
 qed "long_div_eucl_size";
 
 Goal
-  "!!g::('a::ring up). g ~= <0> ==> \
+  "!!g::('a::ring up). g ~= 0 ==> \
 \    Ex (% (q, r, k). \
-\      (lcoeff g)^k *s f = q * g + r & (r = <0> | deg r < deg g))";
+\      (lcoeff g)^k *s f = q * g + r & (r = 0 | deg r < deg g))";
 by (forw_inst_tac [("f", "f")]
   (simplify (simpset() addsimps [eucl_size_def]) long_div_eucl_size) 1);
 by Auto_tac;
-by (case_tac "aa = <0>" 1);
+by (case_tac "aa = 0" 1);
 by (Blast_tac 1);
-(* case "aa ~= <0> *)
+(* case "aa ~= 0 *)
 by (rotate_tac ~1 1);
 by Auto_tac;
 qed "long_div_ring";
 
 Goal
-  "!!g::('a::ring up). [| g ~= <0>; (lcoeff g) dvd <1> |] ==> \
-\    Ex (% (q, r). f = q * g + r & (r = <0> | deg r < deg g))";
+  "!!g::('a::ring up). [| g ~= 0; (lcoeff g) dvd <1> |] ==> \
+\    Ex (% (q, r). f = q * g + r & (r = 0 | deg r < deg g))";
 by (forw_inst_tac [("f", "f")] long_div_ring 1);
 by (etac exE 1);
 by (res_inst_tac [("x", "((%(q,r,k). (inverse(lcoeff g ^k) *s q)) x, \
@@ -133,36 +136,36 @@
 qed "long_div_unit";
 
 Goal
-  "!!g::('a::field up). g ~= <0> ==> \
-\    Ex (% (q, r). f = q * g + r & (r = <0> | deg r < deg g))";
+  "!!g::('a::field up). g ~= 0 ==> \
+\    Ex (% (q, r). f = q * g + r & (r = 0 | deg r < deg g))";
 by (rtac long_div_unit 1);
 by (assume_tac 1);
 by (asm_simp_tac (simpset() addsimps [lcoeff_def, nonzero_lcoeff, field_ax]) 1);
 qed "long_div_theorem";
 
 Goal
-  "!!g::('a::field up). [| g ~= <0>; \
-\    f = q1 * g + r1; (r1 = <0> | deg r1 < deg g); \
-\    f = q2 * g + r2; (r2 = <0> | deg r2 < deg g) |] ==> q1 = q2";
+  "!!g::('a::field up). [| g ~= 0; \
+\    f = q1 * g + r1; (r1 = 0 | deg r1 < deg g); \
+\    f = q2 * g + r2; (r2 = 0 | deg r2 < deg g) |] ==> q1 = q2";
 by (subgoal_tac "(q1 -- q2) * g = r2 -- r1" 1); (* 1 *)
 by (thin_tac "f = ?x" 1);
 by (thin_tac "f = ?x" 1);
 by (rtac diff_zero_imp_eq 1);
 by (rtac classical 1);
 by (etac disjE 1);
-(* r1 = <0> *)
+(* r1 = 0 *)
 by (etac disjE 1);
-(* r2 = <0> *)
+(* r2 = 0 *)
 by (force_tac (claset() addDs [integral], simpset()) 1);
-(* r2 ~= <0> *)
+(* r2 ~= 0 *)
 by (dres_inst_tac [("f", "deg"), ("y", "r2 -- r1")] arg_cong 1);
 by (Force_tac 1);
-(* r1 ~=<0> *)
+(* r1 ~=0 *)
 by (etac disjE 1);
-(* r2 = <0> *)
+(* r2 = 0 *)
 by (dres_inst_tac [("f", "deg"), ("y", "r2 -- r1")] arg_cong 1);
 by (Force_tac 1);
-(* r2 ~= <0> *)
+(* r2 ~= 0 *)
 by (dres_inst_tac [("f", "deg"), ("y", "r2 -- r1")] arg_cong 1);
 by (Asm_full_simp_tac 1);
 by (dtac (order_eq_refl RS add_leD2) 1);
@@ -177,9 +180,9 @@
 qed "long_div_quo_unique";
 
 Goal
-  "!!g::('a::field up). [| g ~= <0>; \
-\    f = q1 * g + r1; (r1 = <0> | deg r1 < deg g); \
-\    f = q2 * g + r2; (r2 = <0> | deg r2 < deg g) |] ==> r1 = r2";
+  "!!g::('a::field up). [| g ~= 0; \
+\    f = q1 * g + r1; (r1 = 0 | deg r1 < deg g); \
+\    f = q2 * g + r2; (r2 = 0 | deg r2 < deg g) |] ==> r1 = r2";
 by (subgoal_tac "q1 = q2" 1);
 by (Clarify_tac 1);
 by (asm_full_simp_tac (simpset() addsimps [a_lcancel_eq]) 1);