src/HOL/Real/Hyperreal/HyperDef.ML
changeset 10715 c838477b5c18
parent 10712 351ba950d4d9
child 10720 1ce5a189f672
equal deleted inserted replaced
10714:07f75bf77a33 10715:c838477b5c18
   705 Goal "x*y = (0::hypreal) ==> x = 0 | y = 0";
   705 Goal "x*y = (0::hypreal) ==> x = 0 | y = 0";
   706 by (auto_tac (claset() addIs [ccontr] addDs [hypreal_mult_not_0],
   706 by (auto_tac (claset() addIs [ccontr] addDs [hypreal_mult_not_0],
   707               simpset()));
   707               simpset()));
   708 qed "hypreal_mult_zero_disj";
   708 qed "hypreal_mult_zero_disj";
   709 
   709 
   710 Goal "x ~= 0 ==> x * x ~= (0::hypreal)";
   710 Goal "inverse(x*y) = inverse(x)*inverse(y::hypreal)";
   711 by (blast_tac (claset() addDs [hypreal_mult_not_0]) 1);
   711 by (case_tac "x=0 | y=0" 1);
   712 qed "hypreal_mult_self_not_zero";
   712 by (force_tac (claset(), simpset() addsimps [HYPREAL_INVERSE_ZERO]) 1); 
   713 
       
   714 Goal "[| x ~= 0; y ~= 0 |] ==> inverse(x*y) = inverse(x)*inverse(y::hypreal)";
       
   715 by (res_inst_tac [("c1","x")] (hypreal_mult_left_cancel RS iffD1) 1);
   713 by (res_inst_tac [("c1","x")] (hypreal_mult_left_cancel RS iffD1) 1);
   716 by (auto_tac (claset(),
   714 by (auto_tac (claset(),
   717         simpset() addsimps [hypreal_mult_assoc RS sym, hypreal_mult_not_0]));
   715         simpset() addsimps [hypreal_mult_assoc RS sym, hypreal_mult_not_0]));
   718 by (res_inst_tac [("c1","y")] (hypreal_mult_right_cancel RS iffD1) 1);
   716 by (res_inst_tac [("c1","y")] (hypreal_mult_right_cancel RS iffD1) 1);
   719 by (auto_tac (claset(),
   717 by (auto_tac (claset(),
  1107 qed "hypreal_of_real_le_iff";
  1105 qed "hypreal_of_real_le_iff";
  1108 
  1106 
  1109 Goalw [hypreal_of_real_def] "hypreal_of_real (-r) = - hypreal_of_real  r";
  1107 Goalw [hypreal_of_real_def] "hypreal_of_real (-r) = - hypreal_of_real  r";
  1110 by (auto_tac (claset(),simpset() addsimps [hypreal_minus]));
  1108 by (auto_tac (claset(),simpset() addsimps [hypreal_minus]));
  1111 qed "hypreal_of_real_minus";
  1109 qed "hypreal_of_real_minus";
       
  1110 Addsimps [hypreal_of_real_minus];
  1112 
  1111 
  1113 (*DON'T insert this or the next one as default simprules.
  1112 (*DON'T insert this or the next one as default simprules.
  1114   They are used in both orientations and anyway aren't the ones we finally
  1113   They are used in both orientations and anyway aren't the ones we finally
  1115   need, which would use binary literals.*)
  1114   need, which would use binary literals.*)
  1116 Goalw [hypreal_of_real_def,hypreal_one_def] "hypreal_of_real  #1 = 1hr";
  1115 Goalw [hypreal_of_real_def,hypreal_one_def] "hypreal_of_real  #1 = 1hr";