src/HOL/Real/RealOrd.ML
changeset 10677 36625483213f
parent 10660 a196b944569b
child 10699 f0c3da8477e9
equal deleted inserted replaced
10676:06f390008ceb 10677:36625483213f
   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);