571 Goal "[| 1r <= r; 1r <= x |] ==> x <= r * x"; |
571 Goal "[| 1r <= r; 1r <= x |] ==> x <= r * x"; |
572 by (dtac real_le_imp_less_or_eq 1); |
572 by (dtac real_le_imp_less_or_eq 1); |
573 by (auto_tac (claset() addIs [real_mult_self_le], |
573 by (auto_tac (claset() addIs [real_mult_self_le], |
574 simpset() addsimps [real_le_refl])); |
574 simpset() addsimps [real_le_refl])); |
575 qed "real_mult_self_le2"; |
575 qed "real_mult_self_le2"; |
576 |
|
577 Goal "x < y ==> x < (x + y) * inverse (1r + 1r)"; |
|
578 by (dres_inst_tac [("C","x")] real_add_less_mono2 1); |
|
579 by (dtac (real_add_self RS subst) 1); |
|
580 by (dtac (real_zero_less_two RS real_inverse_gt_zero RS |
|
581 real_mult_less_mono1) 1); |
|
582 by (asm_full_simp_tac (simpset() addsimps [real_mult_assoc]) 1); |
|
583 qed "real_less_half_sum"; |
|
584 |
|
585 Goal "x < y ==> (x + y) * inverse (1r + 1r) < y"; |
|
586 by (dtac real_add_less_mono1 1); |
|
587 by (dtac (real_add_self RS subst) 1); |
|
588 by (dtac (real_zero_less_two RS real_inverse_gt_zero RS |
|
589 real_mult_less_mono1) 1); |
|
590 by (asm_full_simp_tac (simpset() addsimps [real_mult_assoc]) 1); |
|
591 qed "real_gt_half_sum"; |
|
592 |
|
593 Goal "x < y ==> EX r::real. x < r & r < y"; |
|
594 by (blast_tac (claset() addSIs [real_less_half_sum, real_gt_half_sum]) 1); |
|
595 qed "real_dense"; |
|
596 |
576 |
597 Goal "(EX n. inverse (real_of_posnat n) < r) = (EX n. 1r < r * real_of_posnat n)"; |
577 Goal "(EX n. inverse (real_of_posnat n) < r) = (EX n. 1r < r * real_of_posnat n)"; |
598 by (Step_tac 1); |
578 by (Step_tac 1); |
599 by (dres_inst_tac [("n1","n")] (real_of_posnat_gt_zero |
579 by (dres_inst_tac [("n1","n")] (real_of_posnat_gt_zero |
600 RS real_mult_less_mono1) 1); |
580 RS real_mult_less_mono1) 1); |