76 real_of_preal_not_minus_gt_zero RS notE]) 1); |
76 real_of_preal_not_minus_gt_zero RS notE]) 1); |
77 qed "real_gt_zero_preal_Ex"; |
77 qed "real_gt_zero_preal_Ex"; |
78 |
78 |
79 Goal "real_of_preal z < x ==> EX y. x = real_of_preal y"; |
79 Goal "real_of_preal z < x ==> EX y. x = real_of_preal y"; |
80 by (blast_tac (claset() addSDs [real_of_preal_zero_less RS real_less_trans] |
80 by (blast_tac (claset() addSDs [real_of_preal_zero_less RS real_less_trans] |
81 addIs [real_gt_zero_preal_Ex RS iffD1]) 1); |
81 addIs [real_gt_zero_preal_Ex RS iffD1]) 1); |
82 qed "real_gt_preal_preal_Ex"; |
82 qed "real_gt_preal_preal_Ex"; |
83 |
83 |
84 Goal "real_of_preal z <= x ==> EX y. x = real_of_preal y"; |
84 Goal "real_of_preal z <= x ==> EX y. x = real_of_preal y"; |
85 by (blast_tac (claset() addDs [real_le_imp_less_or_eq, |
85 by (blast_tac (claset() addDs [order_le_imp_less_or_eq, |
86 real_gt_preal_preal_Ex]) 1); |
86 real_gt_preal_preal_Ex]) 1); |
87 qed "real_ge_preal_preal_Ex"; |
87 qed "real_ge_preal_preal_Ex"; |
88 |
88 |
89 Goal "y <= 0 ==> ALL x. y < real_of_preal x"; |
89 Goal "y <= 0 ==> ALL x. y < real_of_preal x"; |
90 by (auto_tac (claset() addEs [real_le_imp_less_or_eq RS disjE] |
90 by (auto_tac (claset() addEs [order_le_imp_less_or_eq RS disjE] |
91 addIs [real_of_preal_zero_less RSN(2,real_less_trans)], |
91 addIs [real_of_preal_zero_less RSN(2,real_less_trans)], |
92 simpset() addsimps [real_of_preal_zero_less])); |
92 simpset() addsimps [real_of_preal_zero_less])); |
93 qed "real_less_all_preal"; |
93 qed "real_less_all_preal"; |
94 |
94 |
95 Goal "~ 0 < y ==> ALL x. y < real_of_preal x"; |
95 Goal "~ 0 < y ==> ALL x. y < real_of_preal x"; |
129 by (dtac real_mult_order 1 THEN assume_tac 1); |
129 by (dtac real_mult_order 1 THEN assume_tac 1); |
130 by (Asm_full_simp_tac 1); |
130 by (Asm_full_simp_tac 1); |
131 qed "real_mult_less_zero1"; |
131 qed "real_mult_less_zero1"; |
132 |
132 |
133 Goal "[| 0 <= x; 0 <= y |] ==> (0::real) <= x * y"; |
133 Goal "[| 0 <= x; 0 <= y |] ==> (0::real) <= x * y"; |
134 by (REPEAT(dtac real_le_imp_less_or_eq 1)); |
134 by (REPEAT(dtac order_le_imp_less_or_eq 1)); |
135 by (auto_tac (claset() addIs [real_mult_order, real_less_imp_le], |
135 by (auto_tac (claset() addIs [real_mult_order, order_less_imp_le], |
136 simpset())); |
136 simpset())); |
137 qed "real_le_mult_order"; |
137 qed "real_le_mult_order"; |
138 |
138 |
139 Goal "[| 0 < x; 0 <= y |] ==> (0::real) <= x * y"; |
139 Goal "[| 0 < x; 0 <= y |] ==> (0::real) <= x * y"; |
140 by (dtac real_le_imp_less_or_eq 1); |
140 by (dtac order_le_imp_less_or_eq 1); |
141 by (auto_tac (claset() addIs [real_mult_order, |
141 by (auto_tac (claset() addIs [real_mult_order, order_less_imp_le], |
142 real_less_imp_le],simpset())); |
142 simpset())); |
143 qed "real_less_le_mult_order"; |
143 qed "real_less_le_mult_order"; |
144 |
144 |
145 Goal "[| x <= 0; y <= 0 |] ==> (0::real) <= x * y"; |
145 Goal "[| x <= 0; y <= 0 |] ==> (0::real) <= x * y"; |
146 by (rtac real_less_or_eq_imp_le 1); |
146 by (rtac real_less_or_eq_imp_le 1); |
147 by (dtac real_le_imp_less_or_eq 1 THEN etac disjE 1); |
147 by (dtac order_le_imp_less_or_eq 1 THEN etac disjE 1); |
148 by Auto_tac; |
148 by Auto_tac; |
149 by (dtac real_le_imp_less_or_eq 1); |
149 by (dtac order_le_imp_less_or_eq 1); |
150 by (auto_tac (claset() addDs [real_mult_less_zero1],simpset())); |
150 by (auto_tac (claset() addDs [real_mult_less_zero1],simpset())); |
151 qed "real_mult_le_zero1"; |
151 qed "real_mult_le_zero1"; |
152 |
152 |
153 Goal "[| 0 <= x; y < 0 |] ==> x * y <= (0::real)"; |
153 Goal "[| 0 <= x; y < 0 |] ==> x * y <= (0::real)"; |
154 by (rtac real_less_or_eq_imp_le 1); |
154 by (rtac real_less_or_eq_imp_le 1); |
155 by (dtac real_le_imp_less_or_eq 1 THEN etac disjE 1); |
155 by (dtac order_le_imp_less_or_eq 1 THEN etac disjE 1); |
156 by Auto_tac; |
156 by Auto_tac; |
157 by (dtac (real_minus_zero_less_iff RS iffD2) 1); |
157 by (dtac (real_minus_zero_less_iff RS iffD2) 1); |
158 by (rtac (real_minus_zero_less_iff RS subst) 1); |
158 by (rtac (real_minus_zero_less_iff RS subst) 1); |
159 by (blast_tac (claset() addDs [real_mult_order] |
159 by (blast_tac (claset() addDs [real_mult_order] |
160 addIs [real_minus_mult_eq2 RS ssubst]) 1); |
160 addIs [real_minus_mult_eq2 RS ssubst]) 1); |
229 Goal "!!(A::real). C + A <= C + B ==> A <= B"; |
229 Goal "!!(A::real). C + A <= C + B ==> A <= B"; |
230 by (Full_simp_tac 1); |
230 by (Full_simp_tac 1); |
231 qed "real_le_add_left_cancel"; |
231 qed "real_le_add_left_cancel"; |
232 |
232 |
233 Goal "[| 0 < x; 0 < y |] ==> (0::real) < x + y"; |
233 Goal "[| 0 < x; 0 < y |] ==> (0::real) < x + y"; |
234 by (etac real_less_trans 1); |
234 by (etac order_less_trans 1); |
235 by (dtac real_add_less_mono2 1); |
235 by (dtac real_add_less_mono2 1); |
236 by (Full_simp_tac 1); |
236 by (Full_simp_tac 1); |
237 qed "real_add_order"; |
237 qed "real_add_order"; |
238 |
238 |
239 Goal "[| 0 <= x; 0 <= y |] ==> (0::real) <= x + y"; |
239 Goal "[| 0 <= x; 0 <= y |] ==> (0::real) <= x + y"; |
240 by (REPEAT(dtac real_le_imp_less_or_eq 1)); |
240 by (REPEAT(dtac order_le_imp_less_or_eq 1)); |
241 by (auto_tac (claset() addIs [real_add_order, real_less_imp_le], |
241 by (auto_tac (claset() addIs [real_add_order, order_less_imp_le], |
242 simpset())); |
242 simpset())); |
243 qed "real_le_add_order"; |
243 qed "real_le_add_order"; |
244 |
244 |
245 Goal "[| R1 < S1; R2 < S2 |] ==> R1 + R2 < S1 + (S2::real)"; |
245 Goal "[| R1 < S1; R2 < S2 |] ==> R1 + R2 < S1 + (S2::real)"; |
246 by (dtac real_add_less_mono1 1); |
246 by (dtac real_add_less_mono1 1); |
247 by (etac real_less_trans 1); |
247 by (etac order_less_trans 1); |
248 by (etac real_add_less_mono2 1); |
248 by (etac real_add_less_mono2 1); |
249 qed "real_add_less_mono"; |
249 qed "real_add_less_mono"; |
250 |
250 |
251 Goal "!!(q1::real). q1 <= q2 ==> x + q1 <= x + q2"; |
251 Goal "!!(q1::real). q1 <= q2 ==> x + q1 <= x + q2"; |
252 by (Simp_tac 1); |
252 by (Simp_tac 1); |
253 qed "real_add_left_le_mono1"; |
253 qed "real_add_left_le_mono1"; |
254 |
254 |
255 Goal "[|i<=j; k<=l |] ==> i + k <= j + (l::real)"; |
255 Goal "[|i<=j; k<=l |] ==> i + k <= j + (l::real)"; |
256 by (dtac real_add_le_mono1 1); |
256 by (dtac real_add_le_mono1 1); |
257 by (etac real_le_trans 1); |
257 by (etac order_trans 1); |
258 by (Simp_tac 1); |
258 by (Simp_tac 1); |
259 qed "real_add_le_mono"; |
259 qed "real_add_le_mono"; |
260 |
260 |
261 Goal "EX (x::real). x < y"; |
261 Goal "EX (x::real). x < y"; |
262 by (rtac (real_add_zero_right RS subst) 1); |
262 by (rtac (real_add_zero_right RS subst) 1); |
281 by (auto_tac (claset(), simpset() addsimps [real_add_assoc])); |
281 by (auto_tac (claset(), simpset() addsimps [real_add_assoc])); |
282 qed "real_le_minus_iff"; |
282 qed "real_le_minus_iff"; |
283 Addsimps [real_le_minus_iff]; |
283 Addsimps [real_le_minus_iff]; |
284 |
284 |
285 Goal "0 <= 1r"; |
285 Goal "0 <= 1r"; |
286 by (rtac (real_zero_less_one RS real_less_imp_le) 1); |
286 by (rtac (real_zero_less_one RS order_less_imp_le) 1); |
287 qed "real_zero_le_one"; |
287 qed "real_zero_le_one"; |
288 Addsimps [real_zero_le_one]; |
288 Addsimps [real_zero_le_one]; |
289 |
289 |
290 Goal "(0::real) <= x*x"; |
290 Goal "(0::real) <= x*x"; |
291 by (res_inst_tac [("R2.0","0"),("R1.0","x")] real_linear_less2 1); |
291 by (res_inst_tac [("R2.0","0"),("R1.0","x")] real_linear_less2 1); |
292 by (auto_tac (claset() addIs [real_mult_order, |
292 by (auto_tac (claset() addIs [real_mult_order, |
293 real_mult_less_zero1,real_less_imp_le], |
293 real_mult_less_zero1,order_less_imp_le], |
294 simpset())); |
294 simpset())); |
295 qed "real_le_square"; |
295 qed "real_le_square"; |
296 Addsimps [real_le_square]; |
296 Addsimps [real_le_square]; |
297 |
297 |
298 (*---------------------------------------------------------------------------- |
298 (*---------------------------------------------------------------------------- |
416 Goal "1r < 1r + 1r"; |
416 Goal "1r < 1r + 1r"; |
417 by (rtac real_self_less_add_one 1); |
417 by (rtac real_self_less_add_one 1); |
418 qed "real_one_less_two"; |
418 qed "real_one_less_two"; |
419 |
419 |
420 Goal "0 < 1r + 1r"; |
420 Goal "0 < 1r + 1r"; |
421 by (rtac ([real_zero_less_one, |
421 by (rtac ([real_zero_less_one, real_one_less_two] MRS order_less_trans) 1); |
422 real_one_less_two] MRS real_less_trans) 1); |
|
423 qed "real_zero_less_two"; |
422 qed "real_zero_less_two"; |
424 |
423 |
425 Goal "1r + 1r ~= 0"; |
424 Goal "1r + 1r ~= 0"; |
426 by (rtac (real_zero_less_two RS real_not_refl2 RS not_sym) 1); |
425 by (rtac (real_zero_less_two RS real_not_refl2 RS not_sym) 1); |
427 qed "real_two_not_zero"; |
426 qed "real_two_not_zero"; |
428 |
|
429 Addsimps [real_two_not_zero]; |
427 Addsimps [real_two_not_zero]; |
430 |
|
431 Goal "x * inverse (1r + 1r) + x * inverse(1r + 1r) = x"; |
|
432 by (stac real_add_self 1); |
|
433 by (full_simp_tac (simpset() addsimps [real_mult_assoc]) 1); |
|
434 qed "real_sum_of_halves"; |
|
435 |
428 |
436 Goal "[| (0::real) < z; x < y |] ==> x*z < y*z"; |
429 Goal "[| (0::real) < z; x < y |] ==> x*z < y*z"; |
437 by (rotate_tac 1 1); |
430 by (rotate_tac 1 1); |
438 by (dtac real_less_sum_gt_zero 1); |
431 by (dtac real_less_sum_gt_zero 1); |
439 by (rtac real_sum_gt_zero_less 1); |
432 by (rtac real_sum_gt_zero_less 1); |
440 by (dtac real_mult_order 1 THEN assume_tac 1); |
433 by (dtac real_mult_order 1 THEN assume_tac 1); |
441 by (asm_full_simp_tac (simpset() addsimps [real_add_mult_distrib2, |
434 by (asm_full_simp_tac |
442 real_mult_commute ]) 1); |
435 (simpset() addsimps [real_add_mult_distrib2, real_mult_commute ]) 1); |
443 qed "real_mult_less_mono1"; |
436 qed "real_mult_less_mono1"; |
444 |
437 |
445 Goal "[| (0::real) < z; x < y |] ==> z * x < z * y"; |
438 Goal "[| (0::real) < z; x < y |] ==> z * x < z * y"; |
446 by (asm_simp_tac (simpset() addsimps [real_mult_commute,real_mult_less_mono1]) 1); |
439 by (asm_simp_tac |
|
440 (simpset() addsimps [real_mult_commute,real_mult_less_mono1]) 1); |
447 qed "real_mult_less_mono2"; |
441 qed "real_mult_less_mono2"; |
448 |
442 |
449 Goal "[| (0::real) < z; x * z < y * z |] ==> x < y"; |
443 Goal "[| (0::real) < z; x * z < y * z |] ==> x < y"; |
450 by (forw_inst_tac [("x","x*z")] (real_inverse_gt_zero |
444 by (forw_inst_tac [("x","x*z")] |
451 RS real_mult_less_mono1) 1); |
445 (real_inverse_gt_zero RS real_mult_less_mono1) 1); |
452 by (auto_tac (claset(), |
446 by (auto_tac (claset(), |
453 simpset() addsimps |
447 simpset() addsimps [real_mult_assoc,real_not_refl2 RS not_sym])); |
454 [real_mult_assoc,real_not_refl2 RS not_sym])); |
|
455 qed "real_mult_less_cancel1"; |
448 qed "real_mult_less_cancel1"; |
456 |
449 |
457 Goal "[| (0::real) < z; z*x < z*y |] ==> x < y"; |
450 Goal "[| (0::real) < z; z*x < z*y |] ==> x < y"; |
458 by (etac real_mult_less_cancel1 1); |
451 by (etac real_mult_less_cancel1 1); |
459 by (asm_full_simp_tac (simpset() addsimps [real_mult_commute]) 1); |
452 by (asm_full_simp_tac (simpset() addsimps [real_mult_commute]) 1); |
460 qed "real_mult_less_cancel2"; |
453 qed "real_mult_less_cancel2"; |
461 |
454 |
462 Goal "(0::real) < z ==> (x*z < y*z) = (x < y)"; |
455 Goal "(0::real) < z ==> (x*z < y*z) = (x < y)"; |
463 by (blast_tac (claset() addIs [real_mult_less_mono1, |
456 by (blast_tac |
464 real_mult_less_cancel1]) 1); |
457 (claset() addIs [real_mult_less_mono1, real_mult_less_cancel1]) 1); |
465 qed "real_mult_less_iff1"; |
458 qed "real_mult_less_iff1"; |
466 |
459 |
467 Goal "(0::real) < z ==> (z*x < z*y) = (x < y)"; |
460 Goal "(0::real) < z ==> (z*x < z*y) = (x < y)"; |
468 by (blast_tac (claset() addIs [real_mult_less_mono2, |
461 by (blast_tac |
469 real_mult_less_cancel2]) 1); |
462 (claset() addIs [real_mult_less_mono2, real_mult_less_cancel2]) 1); |
470 qed "real_mult_less_iff2"; |
463 qed "real_mult_less_iff2"; |
471 |
464 |
472 Addsimps [real_mult_less_iff1,real_mult_less_iff2]; |
465 Addsimps [real_mult_less_iff1,real_mult_less_iff2]; |
473 |
466 |
474 (* 05/00 *) |
467 (* 05/00 *) |
482 |
475 |
483 Addsimps [real_mult_le_cancel_iff1,real_mult_le_cancel_iff2]; |
476 Addsimps [real_mult_le_cancel_iff1,real_mult_le_cancel_iff2]; |
484 |
477 |
485 |
478 |
486 Goal "[| (0::real) <= z; x < y |] ==> x*z <= y*z"; |
479 Goal "[| (0::real) <= z; x < y |] ==> x*z <= y*z"; |
487 by (EVERY1 [rtac real_less_or_eq_imp_le, dtac real_le_imp_less_or_eq]); |
480 by (EVERY1 [rtac real_less_or_eq_imp_le, dtac order_le_imp_less_or_eq]); |
488 by (auto_tac (claset() addIs [real_mult_less_mono1],simpset())); |
481 by (auto_tac (claset() addIs [real_mult_less_mono1],simpset())); |
489 qed "real_mult_le_less_mono1"; |
482 qed "real_mult_le_less_mono1"; |
490 |
483 |
491 Goal "[| (0::real) <= z; x < y |] ==> z*x <= z*y"; |
484 Goal "[| (0::real) <= z; x < y |] ==> z*x <= z*y"; |
492 by (asm_simp_tac (simpset() addsimps [real_mult_commute,real_mult_le_less_mono1]) 1); |
485 by (asm_simp_tac (simpset() addsimps [real_mult_commute,real_mult_le_less_mono1]) 1); |
493 qed "real_mult_le_less_mono2"; |
486 qed "real_mult_le_less_mono2"; |
494 |
487 |
495 Goal "[| (0::real) <= z; x <= y |] ==> z*x <= z*y"; |
488 Goal "[| (0::real) <= z; x <= y |] ==> z*x <= z*y"; |
496 by (dres_inst_tac [("x","x")] real_le_imp_less_or_eq 1); |
489 by (dres_inst_tac [("x","x")] order_le_imp_less_or_eq 1); |
497 by (auto_tac (claset() addIs [real_mult_le_less_mono2], simpset())); |
490 by (auto_tac (claset() addIs [real_mult_le_less_mono2], simpset())); |
498 qed "real_mult_le_le_mono1"; |
491 qed "real_mult_le_le_mono1"; |
499 |
492 |
500 Goal "[| (0::real) < r1; r1 < r2; 0 < x; x < y|] ==> r1 * x < r2 * y"; |
493 Goal "[| u<v; x<y; (0::real) < v; 0 < x |] ==> u*x < v* y"; |
501 by (dres_inst_tac [("x","x")] real_mult_less_mono2 1); |
494 by (etac (real_mult_less_mono1 RS order_less_trans) 1); |
502 by (dres_inst_tac [("R1.0","0")] real_less_trans 2); |
495 by (assume_tac 1); |
503 by (dres_inst_tac [("x","r1")] real_mult_less_mono1 3); |
496 by (etac real_mult_less_mono2 1); |
504 by Auto_tac; |
497 by (assume_tac 1); |
505 by (blast_tac (claset() addIs [real_less_trans]) 1); |
|
506 qed "real_mult_less_mono"; |
498 qed "real_mult_less_mono"; |
507 |
499 |
508 Goal "[| (0::real) < r1; r1 < r2; 0 < y|] ==> 0 < r2 * y"; |
500 Goal "[| x < y; r1 < r2; (0::real) <= r1; 0 <= x|] ==> r1 * x < r2 * y"; |
509 by (rtac real_mult_order 1); |
501 by (subgoal_tac "0<r2" 1); |
510 by (assume_tac 2); |
502 by (blast_tac (claset() addIs [order_le_less_trans]) 2); |
511 by (blast_tac (claset() addIs [real_less_trans]) 1); |
503 by (case_tac "x=0" 1); |
512 qed "real_mult_order_trans"; |
504 by (auto_tac (claset() addSDs [order_le_imp_less_or_eq] |
513 |
505 addIs [real_mult_less_mono, real_mult_order], |
514 Goal "[| (0::real) < r1; r1 < r2; 0 <= x; x < y|] ==> r1 * x < r2 * y"; |
|
515 by (auto_tac (claset() addSDs [real_le_imp_less_or_eq] |
|
516 addIs [real_mult_less_mono,real_mult_order_trans], |
|
517 simpset())); |
|
518 qed "real_mult_less_mono3"; |
|
519 |
|
520 Goal "[| (0::real) <= r1; r1 < r2; 0 <= x; x < y|] ==> r1 * x < r2 * y"; |
|
521 by (auto_tac (claset() addSDs [real_le_imp_less_or_eq] |
|
522 addIs [real_mult_less_mono,real_mult_order_trans, |
|
523 real_mult_order], |
|
524 simpset())); |
506 simpset())); |
525 by (dres_inst_tac [("R2.0","x")] real_less_trans 1); |
507 qed "real_mult_less_mono'"; |
526 by (assume_tac 1); |
508 |
527 by (blast_tac (claset() addIs [real_mult_order]) 1); |
509 Goal "[| r1 <= r2; x <= y; (0::real) < r1; 0 <= x |] ==> r1 * x <= r2 * y"; |
528 qed "real_mult_less_mono4"; |
510 by (subgoal_tac "0<r2" 1); |
529 |
511 by (blast_tac (claset() addIs [order_less_le_trans]) 2); |
530 Goal "[| (0::real) < r1; r1 <= r2; 0 <= x; x <= y |] ==> r1 * x <= r2 * y"; |
|
531 by (rtac real_less_or_eq_imp_le 1); |
512 by (rtac real_less_or_eq_imp_le 1); |
532 by (REPEAT(dtac real_le_imp_less_or_eq 1)); |
513 by (REPEAT(dtac order_le_imp_less_or_eq 1)); |
533 by (auto_tac (claset() addIs [real_mult_less_mono, |
514 by (auto_tac (claset() addIs [real_mult_less_mono, real_mult_order], |
534 real_mult_order_trans,real_mult_order], |
|
535 simpset())); |
515 simpset())); |
536 qed "real_mult_le_mono"; |
516 qed "real_mult_le_mono"; |
537 |
517 |
538 Goal "[| (0::real) < r1; r1 < r2; 0 <= x; x <= y |] ==> r1 * x <= r2 * y"; |
518 Goal "[| (0::real) < r1; r1 < r2; 0 <= x; x <= y |] ==> r1 * x <= r2 * y"; |
539 by (rtac real_less_or_eq_imp_le 1); |
519 by (blast_tac (claset() addIs [real_mult_le_mono, order_less_imp_le]) 1); |
540 by (REPEAT(dtac real_le_imp_less_or_eq 1)); |
|
541 by (auto_tac (claset() addIs [real_mult_less_mono, real_mult_order_trans, |
|
542 real_mult_order], |
|
543 simpset())); |
|
544 qed "real_mult_le_mono2"; |
520 qed "real_mult_le_mono2"; |
545 |
521 |
546 Goal "[| (0::real) <= r1; r1 < r2; 0 <= x; x <= y |] ==> r1 * x <= r2 * y"; |
522 Goal "[| (0::real) <= r1; r1 < r2; 0 <= x; x <= y |] ==> r1 * x <= r2 * y"; |
547 by (dtac real_le_imp_less_or_eq 1); |
523 by (dtac order_le_imp_less_or_eq 1); |
548 by (auto_tac (claset() addIs [real_mult_le_mono2],simpset())); |
524 by (auto_tac (claset() addIs [real_mult_le_mono2],simpset())); |
549 by (dtac real_le_trans 1 THEN assume_tac 1); |
525 by (dtac order_trans 1 THEN assume_tac 1); |
550 by (auto_tac (claset() addIs [real_less_le_mult_order], simpset())); |
526 by (auto_tac (claset() addIs [real_less_le_mult_order], simpset())); |
551 qed "real_mult_le_mono3"; |
527 qed "real_mult_le_mono3"; |
552 |
528 |
553 Goal "[| (0::real) <= r1; r1 <= r2; 0 <= x; x <= y |] ==> r1 * x <= r2 * y"; |
529 Goal "[| (0::real) <= r1; r1 <= r2; 0 <= x; x <= y |] ==> r1 * x <= r2 * y"; |
554 by (dres_inst_tac [("x","r1")] real_le_imp_less_or_eq 1); |
530 by (dres_inst_tac [("x","r1")] order_le_imp_less_or_eq 1); |
555 by (auto_tac (claset() addIs [real_mult_le_mono3, real_mult_le_le_mono1], |
531 by (auto_tac (claset() addIs [real_mult_le_mono3, real_mult_le_le_mono1], |
556 simpset())); |
532 simpset())); |
557 qed "real_mult_le_mono4"; |
533 qed "real_mult_le_mono4"; |
558 |
534 |
559 Goal "1r <= x ==> 0 < x"; |
535 Goal "1r <= x ==> 0 < x"; |
560 by (rtac ccontr 1 THEN dtac real_leI 1); |
536 by (rtac ccontr 1 THEN dtac real_leI 1); |
561 by (dtac real_le_trans 1 THEN assume_tac 1); |
537 by (dtac order_trans 1 THEN assume_tac 1); |
562 by (auto_tac (claset() addDs [real_zero_less_one RSN (2,real_le_less_trans)], |
538 by (auto_tac (claset() addDs [real_zero_less_one RSN (2,order_le_less_trans)], |
563 simpset() addsimps [real_less_not_refl])); |
539 simpset())); |
564 qed "real_gt_zero"; |
540 qed "real_gt_zero"; |
565 |
541 |
566 Goal "[| 1r < r; 1r <= x |] ==> x <= r * x"; |
542 Goal "[| 1r < r; 1r <= x |] ==> x <= r * x"; |
567 by (dtac (real_gt_zero RS real_less_imp_le) 1); |
543 by (dtac (real_gt_zero RS order_less_imp_le) 1); |
568 by (auto_tac (claset() addSDs [real_mult_le_less_mono1], |
544 by (auto_tac (claset() addSDs [real_mult_le_less_mono1], |
569 simpset())); |
545 simpset())); |
570 qed "real_mult_self_le"; |
546 qed "real_mult_self_le"; |
571 |
547 |
572 Goal "[| 1r <= r; 1r <= x |] ==> x <= r * x"; |
548 Goal "[| 1r <= r; 1r <= x |] ==> x <= r * x"; |
573 by (dtac real_le_imp_less_or_eq 1); |
549 by (dtac order_le_imp_less_or_eq 1); |
574 by (auto_tac (claset() addIs [real_mult_self_le], |
550 by (auto_tac (claset() addIs [real_mult_self_le], simpset())); |
575 simpset() addsimps [real_le_refl])); |
|
576 qed "real_mult_self_le2"; |
551 qed "real_mult_self_le2"; |
577 |
552 |
578 Goal "(EX n. inverse (real_of_posnat n) < r) = (EX n. 1r < r * real_of_posnat n)"; |
553 Goal "(EX n. inverse (real_of_posnat n) < r) = (EX n. 1r < r * real_of_posnat n)"; |
579 by (Step_tac 1); |
554 by (Step_tac 1); |
580 by (dres_inst_tac [("n1","n")] (real_of_posnat_gt_zero |
555 by (dres_inst_tac [("n1","n")] (real_of_posnat_gt_zero |