309 qed "hypreal_minus_zero"; |
309 qed "hypreal_minus_zero"; |
310 Addsimps [hypreal_minus_zero]; |
310 Addsimps [hypreal_minus_zero]; |
311 |
311 |
312 Goal "(-x = 0) = (x = (0::hypreal))"; |
312 Goal "(-x = 0) = (x = (0::hypreal))"; |
313 by (res_inst_tac [("z","x")] eq_Abs_hypreal 1); |
313 by (res_inst_tac [("z","x")] eq_Abs_hypreal 1); |
314 by (auto_tac (claset(), |
314 by (auto_tac (claset(), simpset() addsimps [hypreal_zero_def, hypreal_minus])); |
315 simpset() addsimps [hypreal_zero_def, hypreal_minus, eq_commute] @ |
|
316 real_add_ac)); |
|
317 qed "hypreal_minus_zero_iff"; |
315 qed "hypreal_minus_zero_iff"; |
318 |
|
319 Addsimps [hypreal_minus_zero_iff]; |
316 Addsimps [hypreal_minus_zero_iff]; |
320 |
317 |
321 |
318 |
322 (**** hyperreal addition: hypreal_add ****) |
319 (**** hyperreal addition: hypreal_add ****) |
323 |
320 |
428 |
425 |
429 Goal "-(y + -(x::hypreal)) = x + -y"; |
426 Goal "-(y + -(x::hypreal)) = x + -y"; |
430 by (simp_tac (simpset() addsimps [hypreal_add_commute]) 1); |
427 by (simp_tac (simpset() addsimps [hypreal_add_commute]) 1); |
431 qed "hypreal_minus_distrib1"; |
428 qed "hypreal_minus_distrib1"; |
432 |
429 |
433 Goal "(x + - (y::hypreal)) + (y + - z) = x + -z"; |
|
434 by (res_inst_tac [("w1","y")] (hypreal_add_commute RS subst) 1); |
|
435 by (simp_tac (simpset() addsimps [hypreal_add_left_commute, |
|
436 hypreal_add_assoc]) 1); |
|
437 by (simp_tac (simpset() addsimps [hypreal_add_commute]) 1); |
|
438 qed "hypreal_add_minus_cancel1"; |
|
439 |
|
440 Goal "((x::hypreal) + y = x + z) = (y = z)"; |
430 Goal "((x::hypreal) + y = x + z) = (y = z)"; |
441 by (Step_tac 1); |
431 by (Step_tac 1); |
442 by (dres_inst_tac [("f","%t.-x + t")] arg_cong 1); |
432 by (dres_inst_tac [("f","%t.-x + t")] arg_cong 1); |
443 by (asm_full_simp_tac (simpset() addsimps [hypreal_add_assoc RS sym]) 1); |
433 by (asm_full_simp_tac (simpset() addsimps [hypreal_add_assoc RS sym]) 1); |
444 qed "hypreal_add_left_cancel"; |
434 qed "hypreal_add_left_cancel"; |
445 |
435 |
446 Goal "z + (x + (y + -z)) = x + (y::hypreal)"; |
|
447 by (simp_tac (simpset() addsimps hypreal_add_ac) 1); |
|
448 qed "hypreal_add_minus_cancel2"; |
|
449 Addsimps [hypreal_add_minus_cancel2]; |
|
450 |
|
451 Goal "y + -(x + y) = -(x::hypreal)"; |
|
452 by (Full_simp_tac 1); |
|
453 by (rtac (hypreal_add_left_commute RS subst) 1); |
|
454 by (Full_simp_tac 1); |
|
455 qed "hypreal_add_minus_cancel"; |
|
456 Addsimps [hypreal_add_minus_cancel]; |
|
457 |
|
458 Goal "y + -(y + x) = -(x::hypreal)"; |
|
459 by (simp_tac (simpset() addsimps [hypreal_add_assoc RS sym]) 1); |
|
460 qed "hypreal_add_minus_cancelc"; |
|
461 Addsimps [hypreal_add_minus_cancelc]; |
|
462 |
|
463 Goal "(z + -x) + (y + -z) = (y + -(x::hypreal))"; |
|
464 by (full_simp_tac |
|
465 (simpset() addsimps [hypreal_minus_add_distrib RS sym, |
|
466 hypreal_add_left_cancel] @ hypreal_add_ac |
|
467 delsimps [hypreal_minus_add_distrib]) 1); |
|
468 qed "hypreal_add_minus_cancel3"; |
|
469 Addsimps [hypreal_add_minus_cancel3]; |
|
470 |
|
471 Goal "(y + (x::hypreal)= z + x) = (y = z)"; |
436 Goal "(y + (x::hypreal)= z + x) = (y = z)"; |
472 by (simp_tac (simpset() addsimps [hypreal_add_commute, |
437 by (simp_tac (simpset() addsimps [hypreal_add_commute, |
473 hypreal_add_left_cancel]) 1); |
438 hypreal_add_left_cancel]) 1); |
474 qed "hypreal_add_right_cancel"; |
439 qed "hypreal_add_right_cancel"; |
475 |
|
476 Goal "z + (y + -z) = (y::hypreal)"; |
|
477 by (simp_tac (simpset() addsimps hypreal_add_ac) 1); |
|
478 qed "hypreal_add_minus_cancel4"; |
|
479 Addsimps [hypreal_add_minus_cancel4]; |
|
480 |
|
481 Goal "z + (w + (x + (-z + y))) = w + x + (y::hypreal)"; |
|
482 by (simp_tac (simpset() addsimps hypreal_add_ac) 1); |
|
483 qed "hypreal_add_minus_cancel5"; |
|
484 Addsimps [hypreal_add_minus_cancel5]; |
|
485 |
440 |
486 Goal "z + ((- z) + w) = (w::hypreal)"; |
441 Goal "z + ((- z) + w) = (w::hypreal)"; |
487 by (simp_tac (simpset() addsimps [hypreal_add_assoc RS sym]) 1); |
442 by (simp_tac (simpset() addsimps [hypreal_add_assoc RS sym]) 1); |
488 qed "hypreal_add_minus_cancelA"; |
443 qed "hypreal_add_minus_cancelA"; |
489 |
444 |
533 |
488 |
534 Goalw [hypreal_one_def] "(1::hypreal) * z = z"; |
489 Goalw [hypreal_one_def] "(1::hypreal) * z = z"; |
535 by (res_inst_tac [("z","z")] eq_Abs_hypreal 1); |
490 by (res_inst_tac [("z","z")] eq_Abs_hypreal 1); |
536 by (asm_full_simp_tac (simpset() addsimps [hypreal_mult]) 1); |
491 by (asm_full_simp_tac (simpset() addsimps [hypreal_mult]) 1); |
537 qed "hypreal_mult_1"; |
492 qed "hypreal_mult_1"; |
|
493 Addsimps [hypreal_mult_1]; |
538 |
494 |
539 Goal "z * (1::hypreal) = z"; |
495 Goal "z * (1::hypreal) = z"; |
540 by (simp_tac (simpset() addsimps [hypreal_mult_commute, |
496 by (simp_tac (simpset() addsimps [hypreal_mult_commute, |
541 hypreal_mult_1]) 1); |
497 hypreal_mult_1]) 1); |
542 qed "hypreal_mult_1_right"; |
498 qed "hypreal_mult_1_right"; |
|
499 Addsimps [hypreal_mult_1_right]; |
543 |
500 |
544 Goalw [hypreal_zero_def] "0 * z = (0::hypreal)"; |
501 Goalw [hypreal_zero_def] "0 * z = (0::hypreal)"; |
545 by (res_inst_tac [("z","z")] eq_Abs_hypreal 1); |
502 by (res_inst_tac [("z","z")] eq_Abs_hypreal 1); |
546 by (asm_full_simp_tac (simpset() addsimps [hypreal_mult,real_mult_0]) 1); |
503 by (asm_full_simp_tac (simpset() addsimps [hypreal_mult]) 1); |
547 qed "hypreal_mult_0"; |
504 qed "hypreal_mult_0"; |
|
505 Addsimps [hypreal_mult_0]; |
548 |
506 |
549 Goal "z * 0 = (0::hypreal)"; |
507 Goal "z * 0 = (0::hypreal)"; |
550 by (simp_tac (simpset() addsimps [hypreal_mult_commute, hypreal_mult_0]) 1); |
508 by (simp_tac (simpset() addsimps [hypreal_mult_commute]) 1); |
551 qed "hypreal_mult_0_right"; |
509 qed "hypreal_mult_0_right"; |
552 |
510 Addsimps [hypreal_mult_0_right]; |
553 Addsimps [hypreal_mult_0,hypreal_mult_0_right]; |
|
554 |
511 |
555 Goal "-(x * y) = -x * (y::hypreal)"; |
512 Goal "-(x * y) = -x * (y::hypreal)"; |
556 by (res_inst_tac [("z","x")] eq_Abs_hypreal 1); |
513 by (res_inst_tac [("z","x")] eq_Abs_hypreal 1); |
557 by (res_inst_tac [("z","y")] eq_Abs_hypreal 1); |
514 by (res_inst_tac [("z","y")] eq_Abs_hypreal 1); |
558 by (auto_tac (claset(), |
515 by (auto_tac (claset(), |
568 qed "hypreal_minus_mult_eq2"; |
525 qed "hypreal_minus_mult_eq2"; |
569 |
526 |
570 (*Pull negations out*) |
527 (*Pull negations out*) |
571 Addsimps [hypreal_minus_mult_eq2 RS sym, hypreal_minus_mult_eq1 RS sym]; |
528 Addsimps [hypreal_minus_mult_eq2 RS sym, hypreal_minus_mult_eq1 RS sym]; |
572 |
529 |
573 Goal "-x*y = (x::hypreal)*-y"; |
530 Goal "(- (1::hypreal)) * z = -z"; |
|
531 by (Simp_tac 1); |
|
532 qed "hypreal_mult_minus_1"; |
|
533 Addsimps [hypreal_mult_minus_1]; |
|
534 |
|
535 Goal "z * (- (1::hypreal)) = -z"; |
|
536 by (stac hypreal_mult_commute 1); |
|
537 by (Simp_tac 1); |
|
538 qed "hypreal_mult_minus_1_right"; |
|
539 Addsimps [hypreal_mult_minus_1_right]; |
|
540 |
|
541 Goal "(-x) * y = (x::hypreal) * -y"; |
574 by Auto_tac; |
542 by Auto_tac; |
575 qed "hypreal_minus_mult_commute"; |
543 qed "hypreal_minus_mult_commute"; |
576 |
544 |
577 (*----------------------------------------------------------------------------- |
545 (*----------------------------------------------------------------------------- |
578 A few more theorems |
546 A few more theorems |
597 |
565 |
598 Goal "(w::hypreal) * (z1 + z2) = (w * z1) + (w * z2)"; |
566 Goal "(w::hypreal) * (z1 + z2) = (w * z1) + (w * z2)"; |
599 by (simp_tac (simpset() addsimps [hypreal_mult_commute',hypreal_add_mult_distrib]) 1); |
567 by (simp_tac (simpset() addsimps [hypreal_mult_commute',hypreal_add_mult_distrib]) 1); |
600 qed "hypreal_add_mult_distrib2"; |
568 qed "hypreal_add_mult_distrib2"; |
601 |
569 |
602 bind_thms ("hypreal_mult_simps", [hypreal_mult_1, hypreal_mult_1_right]); |
|
603 Addsimps hypreal_mult_simps; |
|
604 |
|
605 (* 07/00 *) |
|
606 |
570 |
607 Goalw [hypreal_diff_def] "((z1::hypreal) - z2) * w = (z1 * w) - (z2 * w)"; |
571 Goalw [hypreal_diff_def] "((z1::hypreal) - z2) * w = (z1 * w) - (z2 * w)"; |
608 by (simp_tac (simpset() addsimps [hypreal_add_mult_distrib]) 1); |
572 by (simp_tac (simpset() addsimps [hypreal_add_mult_distrib]) 1); |
609 qed "hypreal_diff_mult_distrib"; |
573 qed "hypreal_diff_mult_distrib"; |
610 |
574 |
620 |
584 |
621 |
585 |
622 (**** multiplicative inverse on hypreal ****) |
586 (**** multiplicative inverse on hypreal ****) |
623 |
587 |
624 Goalw [congruent_def] |
588 Goalw [congruent_def] |
625 "congruent hyprel (%X. hyprel``{%n. if X n = Numeral0 then Numeral0 else inverse(X n)})"; |
589 "congruent hyprel (%X. hyprel``{%n. if X n = 0 then 0 else inverse(X n)})"; |
626 by (Auto_tac THEN Ultra_tac 1); |
590 by (Auto_tac THEN Ultra_tac 1); |
627 qed "hypreal_inverse_congruent"; |
591 qed "hypreal_inverse_congruent"; |
628 |
592 |
629 Goalw [hypreal_inverse_def] |
593 Goalw [hypreal_inverse_def] |
630 "inverse (Abs_hypreal(hyprel``{%n. X n})) = \ |
594 "inverse (Abs_hypreal(hyprel``{%n. X n})) = \ |
631 \ Abs_hypreal(hyprel `` {%n. if X n = Numeral0 then Numeral0 else inverse(X n)})"; |
595 \ Abs_hypreal(hyprel `` {%n. if X n = 0 then 0 else inverse(X n)})"; |
632 by (res_inst_tac [("f","Abs_hypreal")] arg_cong 1); |
596 by (res_inst_tac [("f","Abs_hypreal")] arg_cong 1); |
633 by (simp_tac (simpset() addsimps |
597 by (simp_tac (simpset() addsimps |
634 [hyprel_in_hypreal RS Abs_hypreal_inverse, |
598 [hyprel_in_hypreal RS Abs_hypreal_inverse, |
635 [equiv_hyprel, hypreal_inverse_congruent] MRS UN_equiv_class]) 1); |
599 [equiv_hyprel, hypreal_inverse_congruent] MRS UN_equiv_class]) 1); |
636 qed "hypreal_inverse"; |
600 qed "hypreal_inverse"; |
805 \ ({n. X n < Y n} : FreeUltrafilterNat)"; |
769 \ ({n. X n < Y n} : FreeUltrafilterNat)"; |
806 by (auto_tac (claset() addSIs [lemma_hyprel_refl], simpset())); |
770 by (auto_tac (claset() addSIs [lemma_hyprel_refl], simpset())); |
807 by (Ultra_tac 1); |
771 by (Ultra_tac 1); |
808 qed "hypreal_less"; |
772 qed "hypreal_less"; |
809 |
773 |
810 (*--------------------------------------------------------------------------------- |
774 (*---------------------------------------------------------------------------- |
811 Hyperreals as a linearly ordered field |
775 Trichotomy: the hyperreals are linearly ordered |
812 ---------------------------------------------------------------------------------*) |
776 ---------------------------------------------------------------------------*) |
813 (*** sum order |
777 |
814 Goalw [hypreal_zero_def] |
778 Goalw [hyprel_def] "EX x. x: hyprel `` {%n. 0}"; |
815 "[| 0 < x; 0 < y |] ==> (0::hypreal) < x + y"; |
779 by (res_inst_tac [("x","%n. 0")] exI 1); |
816 by (res_inst_tac [("z","x")] eq_Abs_hypreal 1); |
|
817 by (res_inst_tac [("z","y")] eq_Abs_hypreal 1); |
|
818 by (auto_tac (claset(),simpset() addsimps |
|
819 [hypreal_less_def,hypreal_add])); |
|
820 by (auto_tac (claset() addSIs [exI],simpset() addsimps |
|
821 [hypreal_less_def,hypreal_add])); |
|
822 by (ultra_tac (claset() addIs [real_add_order],simpset()) 1); |
|
823 qed "hypreal_add_order"; |
|
824 ***) |
|
825 |
|
826 (*** mult order |
|
827 Goalw [hypreal_zero_def] |
|
828 "[| 0 < x; 0 < y |] ==> (0::hypreal) < x * y"; |
|
829 by (res_inst_tac [("z","x")] eq_Abs_hypreal 1); |
|
830 by (res_inst_tac [("z","y")] eq_Abs_hypreal 1); |
|
831 by (auto_tac (claset() addSIs [exI],simpset() addsimps |
|
832 [hypreal_less_def,hypreal_mult])); |
|
833 by (ultra_tac (claset() addIs [rename_numerals real_mult_order], |
|
834 simpset()) 1); |
|
835 qed "hypreal_mult_order"; |
|
836 ****) |
|
837 |
|
838 |
|
839 (*--------------------------------------------------------------------------------- |
|
840 Trichotomy of the hyperreals |
|
841 --------------------------------------------------------------------------------*) |
|
842 |
|
843 Goalw [hyprel_def] "EX x. x: hyprel `` {%n. Numeral0}"; |
|
844 by (res_inst_tac [("x","%n. Numeral0")] exI 1); |
|
845 by (Step_tac 1); |
780 by (Step_tac 1); |
846 by (auto_tac (claset() addSIs [FreeUltrafilterNat_Nat_set], simpset())); |
781 by (auto_tac (claset() addSIs [FreeUltrafilterNat_Nat_set], simpset())); |
847 qed "lemma_hyprel_0_mem"; |
782 qed "lemma_hyprel_0_mem"; |
848 |
783 |
849 Goalw [hypreal_zero_def]"0 < x | x = 0 | x < (0::hypreal)"; |
784 Goalw [hypreal_zero_def]"0 < x | x = 0 | x < (0::hypreal)"; |
922 Goal "(x ~= a) = (x + -a ~= (0::hypreal))"; |
857 Goal "(x ~= a) = (x + -a ~= (0::hypreal))"; |
923 by (auto_tac (claset() addDs [hypreal_eq_minus_iff RS iffD2], |
858 by (auto_tac (claset() addDs [hypreal_eq_minus_iff RS iffD2], |
924 simpset())); |
859 simpset())); |
925 qed "hypreal_not_eq_minus_iff"; |
860 qed "hypreal_not_eq_minus_iff"; |
926 |
861 |
927 Goal "(x+y = (0::hypreal)) = (x = -y)"; |
|
928 by (stac hypreal_eq_minus_iff 1); |
|
929 by Auto_tac; |
|
930 qed "hypreal_add_eq_0_iff"; |
|
931 AddIffs [hypreal_add_eq_0_iff]; |
|
932 |
|
933 |
862 |
934 (*** linearity ***) |
863 (*** linearity ***) |
935 |
864 |
936 Goal "(x::hypreal) < y | x = y | y < x"; |
865 Goal "(x::hypreal) < y | x = y | y < x"; |
937 by (stac hypreal_eq_minus_iff2 1); |
866 by (stac hypreal_eq_minus_iff2 1); |
1046 by (res_inst_tac [("z","R")] eq_Abs_hypreal 1); |
975 by (res_inst_tac [("z","R")] eq_Abs_hypreal 1); |
1047 by (auto_tac (claset(), |
976 by (auto_tac (claset(), |
1048 simpset() addsimps [hypreal_zero_def, hypreal_less,hypreal_minus])); |
977 simpset() addsimps [hypreal_zero_def, hypreal_less,hypreal_minus])); |
1049 by (ALLGOALS(Ultra_tac)); |
978 by (ALLGOALS(Ultra_tac)); |
1050 qed "hypreal_minus_zero_less_iff2"; |
979 qed "hypreal_minus_zero_less_iff2"; |
1051 |
980 Addsimps [hypreal_minus_zero_less_iff2]; |
1052 Goalw [hypreal_le_def] "((0::hypreal) <= -r) = (r <= (0::hypreal))"; |
981 |
|
982 Goalw [hypreal_le_def] "((0::hypreal) <= -r) = (r <= 0)"; |
1053 by (simp_tac (simpset() addsimps [hypreal_minus_zero_less_iff2]) 1); |
983 by (simp_tac (simpset() addsimps [hypreal_minus_zero_less_iff2]) 1); |
1054 qed "hypreal_minus_zero_le_iff"; |
984 qed "hypreal_minus_zero_le_iff"; |
1055 Addsimps [hypreal_minus_zero_le_iff]; |
985 Addsimps [hypreal_minus_zero_le_iff]; |
|
986 |
|
987 Goalw [hypreal_le_def] "(-r <= (0::hypreal)) = (0 <= r)"; |
|
988 by (simp_tac (simpset() addsimps [hypreal_minus_zero_less_iff2]) 1); |
|
989 qed "hypreal_minus_zero_le_iff2"; |
|
990 Addsimps [hypreal_minus_zero_le_iff2]; |
1056 |
991 |
1057 (*---------------------------------------------------------- |
992 (*---------------------------------------------------------- |
1058 hypreal_of_real preserves field and order properties |
993 hypreal_of_real preserves field and order properties |
1059 -----------------------------------------------------------*) |
994 -----------------------------------------------------------*) |
1060 Goalw [hypreal_of_real_def] |
995 Goalw [hypreal_of_real_def] |
1096 Goalw [hypreal_of_real_def] "hypreal_of_real (-r) = - hypreal_of_real r"; |
1031 Goalw [hypreal_of_real_def] "hypreal_of_real (-r) = - hypreal_of_real r"; |
1097 by (auto_tac (claset(),simpset() addsimps [hypreal_minus])); |
1032 by (auto_tac (claset(),simpset() addsimps [hypreal_minus])); |
1098 qed "hypreal_of_real_minus"; |
1033 qed "hypreal_of_real_minus"; |
1099 Addsimps [hypreal_of_real_minus]; |
1034 Addsimps [hypreal_of_real_minus]; |
1100 |
1035 |
1101 (*DON'T insert this or the next one as default simprules. |
1036 Goalw [hypreal_of_real_def,hypreal_one_def] "hypreal_of_real 1 = (1::hypreal)"; |
1102 They are used in both orientations and anyway aren't the ones we finally |
1037 by (Simp_tac 1); |
1103 need, which would use binary literals.*) |
|
1104 Goalw [hypreal_of_real_def,hypreal_one_def] "hypreal_of_real Numeral1 = (1::hypreal)"; |
|
1105 by (Step_tac 1); |
|
1106 qed "hypreal_of_real_one"; |
1038 qed "hypreal_of_real_one"; |
1107 |
1039 Addsimps [hypreal_of_real_one]; |
1108 Goalw [hypreal_of_real_def,hypreal_zero_def] "hypreal_of_real Numeral0 = 0"; |
1040 |
1109 by (Step_tac 1); |
1041 Goalw [hypreal_of_real_def,hypreal_zero_def] "hypreal_of_real 0 = 0"; |
|
1042 by (Simp_tac 1); |
1110 qed "hypreal_of_real_zero"; |
1043 qed "hypreal_of_real_zero"; |
1111 |
1044 Addsimps [hypreal_of_real_zero]; |
1112 Goal "(hypreal_of_real r = 0) = (r = Numeral0)"; |
1045 |
|
1046 Goal "(hypreal_of_real r = 0) = (r = 0)"; |
1113 by (auto_tac (claset() addIs [FreeUltrafilterNat_P], |
1047 by (auto_tac (claset() addIs [FreeUltrafilterNat_P], |
1114 simpset() addsimps [hypreal_of_real_def, |
1048 simpset() addsimps [hypreal_of_real_def, |
1115 hypreal_zero_def,FreeUltrafilterNat_Nat_set])); |
1049 hypreal_zero_def,FreeUltrafilterNat_Nat_set])); |
1116 qed "hypreal_of_real_zero_iff"; |
1050 qed "hypreal_of_real_zero_iff"; |
1117 |
1051 |
1118 Goal "hypreal_of_real (inverse r) = inverse (hypreal_of_real r)"; |
1052 Goal "hypreal_of_real (inverse r) = inverse (hypreal_of_real r)"; |
1119 by (case_tac "r=Numeral0" 1); |
1053 by (case_tac "r=0" 1); |
1120 by (asm_simp_tac (simpset() addsimps [REAL_DIVIDE_ZERO, INVERSE_ZERO, |
1054 by (asm_simp_tac (simpset() addsimps [REAL_DIVIDE_ZERO, INVERSE_ZERO, |
1121 HYPREAL_INVERSE_ZERO, hypreal_of_real_zero]) 1); |
1055 HYPREAL_INVERSE_ZERO]) 1); |
1122 by (res_inst_tac [("c1","hypreal_of_real r")] |
1056 by (res_inst_tac [("c1","hypreal_of_real r")] |
1123 (hypreal_mult_left_cancel RS iffD1) 1); |
1057 (hypreal_mult_left_cancel RS iffD1) 1); |
1124 by (stac (hypreal_of_real_mult RS sym) 2); |
1058 by (stac (hypreal_of_real_mult RS sym) 2); |
1125 by (auto_tac (claset(), |
1059 by (auto_tac (claset(), simpset() addsimps [hypreal_of_real_zero_iff])); |
1126 simpset() addsimps [hypreal_of_real_one, hypreal_of_real_zero_iff])); |
|
1127 qed "hypreal_of_real_inverse"; |
1060 qed "hypreal_of_real_inverse"; |
1128 Addsimps [hypreal_of_real_inverse]; |
1061 Addsimps [hypreal_of_real_inverse]; |
1129 |
1062 |
1130 Goal "hypreal_of_real (z1 / z2) = hypreal_of_real z1 / hypreal_of_real z2"; |
1063 Goal "hypreal_of_real (z1 / z2) = hypreal_of_real z1 / hypreal_of_real z2"; |
1131 by (simp_tac (simpset() addsimps [hypreal_divide_def, real_divide_def]) 1); |
1064 by (simp_tac (simpset() addsimps [hypreal_divide_def, real_divide_def]) 1); |