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"; |