src/HOL/Hyperreal/NSA.ML
changeset 13491 ddf6ae639f21
parent 13462 56610e2ba220
child 14268 5cf13e80be0e
equal deleted inserted replaced
13490:44bdc150211b 13491:ddf6ae639f21
   933 Addsimps [number_of_approx_iff];
   933 Addsimps [number_of_approx_iff];
   934 
   934 
   935 (*And also for 0 @= #nn and 1 @= #nn, #nn @= 0 and #nn @= 1.*)
   935 (*And also for 0 @= #nn and 1 @= #nn, #nn @= 0 and #nn @= 1.*)
   936 Addsimps
   936 Addsimps
   937  (map (simplify (simpset()))
   937  (map (simplify (simpset()))
   938       [inst "v" "Pls" number_of_approx_iff,
   938       [inst "v" "bin.Pls" number_of_approx_iff,
   939        inst "v" "Pls BIT True" number_of_approx_iff,
   939        inst "v" "bin.Pls BIT True" number_of_approx_iff,
   940        inst "w" "Pls" number_of_approx_iff,
   940        inst "w" "bin.Pls" number_of_approx_iff,
   941        inst "w" "Pls BIT True" number_of_approx_iff]);
   941        inst "w" "bin.Pls BIT True" number_of_approx_iff]);
   942 
   942 
   943 
   943 
   944 Goal "~ (0 @= 1)";
   944 Goal "~ (0 @= 1)";
   945 by (stac SReal_approx_iff 1);
   945 by (stac SReal_approx_iff 1);
   946 by Auto_tac;
   946 by Auto_tac;
   968 Addsimps [hypreal_of_real_approx_number_of_iff];
   968 Addsimps [hypreal_of_real_approx_number_of_iff];
   969 
   969 
   970 (*And also for 0 and 1.*)
   970 (*And also for 0 and 1.*)
   971 Addsimps
   971 Addsimps
   972  (map (simplify (simpset()))
   972  (map (simplify (simpset()))
   973       [inst "w" "Pls" hypreal_of_real_approx_number_of_iff,
   973       [inst "w" "bin.Pls" hypreal_of_real_approx_number_of_iff,
   974        inst "w" "Pls BIT True" hypreal_of_real_approx_number_of_iff]);
   974        inst "w" "bin.Pls BIT True" hypreal_of_real_approx_number_of_iff]);
   975 
   975 
   976 Goal "[| r: Reals; s: Reals; r @= x; s @= x|] ==> r = s";
   976 Goal "[| r: Reals; s: Reals; r @= x; s @= x|] ==> r = s";
   977 by (blast_tac (claset() addIs [(SReal_approx_iff RS iffD1),
   977 by (blast_tac (claset() addIs [(SReal_approx_iff RS iffD1),
   978                approx_trans2]) 1);
   978                approx_trans2]) 1);
   979 qed "approx_unique_real";
   979 qed "approx_unique_real";
  1735 Addsimps [st_number_of];
  1735 Addsimps [st_number_of];
  1736 
  1736 
  1737 (*the theorem above for the special cases of zero and one*)
  1737 (*the theorem above for the special cases of zero and one*)
  1738 Addsimps
  1738 Addsimps
  1739   (map (simplify (simpset()))
  1739   (map (simplify (simpset()))
  1740    [inst "w" "Pls" st_number_of, inst "w" "Pls BIT True" st_number_of]);
  1740    [inst "w" "bin.Pls" st_number_of, inst "w" "bin.Pls BIT True" st_number_of]);
  1741 
  1741 
  1742 Goal "y: HFinite ==> st(-y) = -st(y)";
  1742 Goal "y: HFinite ==> st(-y) = -st(y)";
  1743 by (forward_tac [HFinite_minus_iff RS iffD2] 1);
  1743 by (forward_tac [HFinite_minus_iff RS iffD2] 1);
  1744 by (rtac hypreal_add_minus_eq_minus 1);
  1744 by (rtac hypreal_add_minus_eq_minus 1);
  1745 by (dtac (st_add RS sym) 1 THEN assume_tac 1);
  1745 by (dtac (st_add RS sym) 1 THEN assume_tac 1);