132 apply (rule_tac z = y in eq_Abs_hypreal) |
132 apply (rule_tac z = y in eq_Abs_hypreal) |
133 apply (auto simp add: hypreal_less_def hypreal_add) |
133 apply (auto simp add: hypreal_less_def hypreal_add) |
134 apply (auto intro!: exI simp add: hypreal_less_def hypreal_add, ultra) |
134 apply (auto intro!: exI simp add: hypreal_less_def hypreal_add, ultra) |
135 done |
135 done |
136 |
136 |
137 lemma hypreal_add_order_le: "[| 0 < x; 0 <= y |] ==> (0::hypreal) < x + y" |
137 lemma hypreal_add_order_le: "[| 0 < x; 0 \<le> y |] ==> (0::hypreal) < x + y" |
138 by (auto dest: sym order_le_imp_less_or_eq intro: hypreal_add_order) |
138 by (auto dest: sym order_le_imp_less_or_eq intro: hypreal_add_order) |
139 |
139 |
140 lemma hypreal_mult_order: "[| 0 < x; 0 < y |] ==> (0::hypreal) < x * y" |
140 lemma hypreal_mult_order: "[| 0 < x; 0 < y |] ==> (0::hypreal) < x * y" |
141 apply (unfold hypreal_zero_def) |
141 apply (unfold hypreal_zero_def) |
142 apply (rule_tac z = x in eq_Abs_hypreal) |
142 apply (rule_tac z = x in eq_Abs_hypreal) |
199 apply (drule_tac C = "z1 + z2" in hypreal_add_less_mono1) |
199 apply (drule_tac C = "z1 + z2" in hypreal_add_less_mono1) |
200 apply (auto simp add: hypreal_minus_add_distrib [symmetric] |
200 apply (auto simp add: hypreal_minus_add_distrib [symmetric] |
201 hypreal_add_ac simp del: hypreal_minus_add_distrib) |
201 hypreal_add_ac simp del: hypreal_minus_add_distrib) |
202 done |
202 done |
203 |
203 |
204 lemma hypreal_add_left_le_mono1: "(q1::hypreal) <= q2 ==> x + q1 <= x + q2" |
204 lemma hypreal_add_left_le_mono1: "(q1::hypreal) \<le> q2 ==> x + q1 \<le> x + q2" |
205 apply (drule order_le_imp_less_or_eq) |
205 apply (drule order_le_imp_less_or_eq) |
206 apply (auto intro: order_less_imp_le hypreal_add_less_mono1 simp add: hypreal_add_commute) |
206 apply (auto intro: order_less_imp_le hypreal_add_less_mono1 simp add: hypreal_add_commute) |
207 done |
207 done |
208 |
208 |
209 lemma hypreal_add_le_mono1: "(q1::hypreal) <= q2 ==> q1 + x <= q2 + x" |
209 lemma hypreal_add_le_mono1: "(q1::hypreal) \<le> q2 ==> q1 + x \<le> q2 + x" |
210 by (auto dest: hypreal_add_left_le_mono1 simp add: hypreal_add_commute) |
210 by (auto dest: hypreal_add_left_le_mono1 simp add: hypreal_add_commute) |
211 |
211 |
212 lemma hypreal_add_le_mono: "[|(i::hypreal)<=j; k<=l |] ==> i + k <= j + l" |
212 lemma hypreal_add_le_mono: "[|(i::hypreal)\<le>j; k\<le>l |] ==> i + k \<le> j + l" |
213 apply (erule hypreal_add_le_mono1 [THEN order_trans]) |
213 apply (erule hypreal_add_le_mono1 [THEN order_trans]) |
214 apply (simp (no_asm)) |
214 apply (simp (no_asm)) |
215 done |
215 done |
216 |
216 |
217 lemma hypreal_add_less_le_mono: "[|(i::hypreal)<j; k<=l |] ==> i + k < j + l" |
217 lemma hypreal_add_less_le_mono: "[|(i::hypreal)<j; k\<le>l |] ==> i + k < j + l" |
218 by (auto dest!: order_le_imp_less_or_eq intro: hypreal_add_less_mono1 hypreal_add_less_mono) |
218 by (auto dest!: order_le_imp_less_or_eq intro: hypreal_add_less_mono1 hypreal_add_less_mono) |
219 |
219 |
220 lemma hypreal_add_le_less_mono: "[|(i::hypreal)<=j; k<l |] ==> i + k < j + l" |
220 lemma hypreal_add_le_less_mono: "[|(i::hypreal)\<le>j; k<l |] ==> i + k < j + l" |
221 by (auto dest!: order_le_imp_less_or_eq intro: hypreal_add_less_mono2 hypreal_add_less_mono) |
221 by (auto dest!: order_le_imp_less_or_eq intro: hypreal_add_less_mono2 hypreal_add_less_mono) |
222 |
222 |
223 lemma hypreal_less_add_right_cancel: "(A::hypreal) + C < B + C ==> A < B" |
223 lemma hypreal_less_add_right_cancel: "(A::hypreal) + C < B + C ==> A < B" |
224 apply (simp (no_asm_use)) |
224 apply (simp (no_asm_use)) |
225 done |
225 done |
226 |
226 |
227 lemma hypreal_less_add_left_cancel: "(C::hypreal) + A < C + B ==> A < B" |
227 lemma hypreal_less_add_left_cancel: "(C::hypreal) + A < C + B ==> A < B" |
228 apply (simp (no_asm_use)) |
228 apply (simp (no_asm_use)) |
229 done |
229 done |
230 |
230 |
231 lemma hypreal_add_zero_less_le_mono: "[|r < x; (0::hypreal) <= y|] ==> r < x + y" |
231 lemma hypreal_add_zero_less_le_mono: "[|r < x; (0::hypreal) \<le> y|] ==> r < x + y" |
232 by (auto dest: hypreal_add_less_le_mono) |
232 by (auto dest: hypreal_add_less_le_mono) |
233 |
233 |
234 lemma hypreal_le_add_right_cancel: "!!(A::hypreal). A + C <= B + C ==> A <= B" |
234 lemma hypreal_le_add_right_cancel: "!!(A::hypreal). A + C \<le> B + C ==> A \<le> B" |
235 apply (drule_tac x = "-C" in hypreal_add_le_mono1) |
235 apply (drule_tac x = "-C" in hypreal_add_le_mono1) |
236 apply (simp add: hypreal_add_assoc) |
236 apply (simp add: hypreal_add_assoc) |
237 done |
237 done |
238 |
238 |
239 lemma hypreal_le_add_left_cancel: "!!(A::hypreal). C + A <= C + B ==> A <= B" |
239 lemma hypreal_le_add_left_cancel: "!!(A::hypreal). C + A \<le> C + B ==> A \<le> B" |
240 apply (drule_tac x = "-C" in hypreal_add_left_le_mono1) |
240 apply (drule_tac x = "-C" in hypreal_add_left_le_mono1) |
241 apply (simp add: hypreal_add_assoc [symmetric]) |
241 apply (simp add: hypreal_add_assoc [symmetric]) |
242 done |
242 done |
243 |
243 |
244 lemma hypreal_le_square: "(0::hypreal) <= x*x" |
244 lemma hypreal_le_square: "(0::hypreal) \<le> x*x" |
245 apply (rule_tac x = 0 and y = x in hypreal_linear_less2) |
245 apply (rule_tac x = 0 and y = x in hypreal_linear_less2) |
246 apply (auto intro: hypreal_mult_order hypreal_mult_less_zero1 order_less_imp_le) |
246 apply (auto intro: hypreal_mult_order hypreal_mult_less_zero1 order_less_imp_le) |
247 done |
247 done |
248 declare hypreal_le_square [simp] |
248 declare hypreal_le_square [simp] |
249 |
249 |
250 lemma hypreal_less_minus_square: "- (x*x) <= (0::hypreal)" |
250 lemma hypreal_less_minus_square: "- (x*x) \<le> (0::hypreal)" |
251 apply (unfold hypreal_le_def) |
251 apply (unfold hypreal_le_def) |
252 apply (auto dest!: hypreal_le_square [THEN order_le_less_trans] |
252 apply (auto dest!: hypreal_le_square [THEN order_le_less_trans] |
253 simp add: hypreal_minus_zero_less_iff) |
253 simp add: hypreal_minus_zero_less_iff) |
254 done |
254 done |
255 declare hypreal_less_minus_square [simp] |
255 declare hypreal_less_minus_square [simp] |
268 |
268 |
269 lemma hypreal_mult_less_mono2: "[| (0::hypreal)<z; x<y |] ==> z*x<z*y" |
269 lemma hypreal_mult_less_mono2: "[| (0::hypreal)<z; x<y |] ==> z*x<z*y" |
270 apply (simp (no_asm_simp) add: hypreal_mult_commute hypreal_mult_less_mono1) |
270 apply (simp (no_asm_simp) add: hypreal_mult_commute hypreal_mult_less_mono1) |
271 done |
271 done |
272 |
272 |
273 lemma hypreal_mult_le_less_mono1: "[| (0::hypreal)<=z; x<y |] ==> x*z<=y*z" |
273 subsection{*The Hyperreals Form an Ordered Field*} |
274 apply (rule hypreal_less_or_eq_imp_le) |
274 |
275 apply (drule order_le_imp_less_or_eq) |
275 instance hypreal :: inverse .. |
276 apply (auto intro: hypreal_mult_less_mono1) |
276 |
277 done |
277 instance hypreal :: ordered_field |
278 |
278 proof |
279 lemma hypreal_mult_le_less_mono2: "[| (0::hypreal)<=z; x<y |] ==> z*x<=z*y" |
279 fix x y z :: hypreal |
280 apply (simp (no_asm_simp) add: hypreal_mult_commute hypreal_mult_le_less_mono1) |
280 show "(x + y) + z = x + (y + z)" by (rule hypreal_add_assoc) |
281 done |
281 show "x + y = y + x" by (rule hypreal_add_commute) |
282 |
282 show "0 + x = x" by simp |
283 lemma hypreal_mult_less_mono: "[| u<v; x<y; (0::hypreal) < v; 0 < x |] ==> u*x < v* y" |
283 show "- x + x = 0" by simp |
284 apply (erule hypreal_mult_less_mono1 [THEN order_less_trans], assumption) |
284 show "x - y = x + (-y)" by (simp add: hypreal_diff_def) |
285 apply (erule hypreal_mult_less_mono2, assumption) |
285 show "(x * y) * z = x * (y * z)" by (rule hypreal_mult_assoc) |
286 done |
286 show "x * y = y * x" by (rule hypreal_mult_commute) |
287 |
287 show "1 * x = x" by simp |
288 (*UNUSED at present but possibly more useful than hypreal_mult_less_mono*) |
288 show "(x + y) * z = x * z + y * z" by (simp add: hypreal_add_mult_distrib) |
289 lemma hypreal_mult_less_mono': "[| x < y; r1 < r2; (0::hypreal) <= r1; 0 <= x|] ==> r1 * x < r2 * y" |
289 show "0 \<noteq> (1::hypreal)" by (rule hypreal_zero_not_eq_one) |
290 apply (subgoal_tac "0<r2") |
290 show "x \<le> y ==> z + x \<le> z + y" by (rule hypreal_add_left_le_mono1) |
291 prefer 2 apply (blast intro: order_le_less_trans) |
291 show "x < y ==> 0 < z ==> z * x < z * y" by (simp add: hypreal_mult_less_mono2) |
292 apply (case_tac "x=0") |
292 show "\<bar>x\<bar> = (if x < 0 then -x else x)" |
293 apply (auto dest!: order_le_imp_less_or_eq intro: hypreal_mult_less_mono hypreal_mult_order) |
293 by (auto dest: order_le_less_trans simp add: hrabs_def linorder_not_le) |
294 done |
294 show "x \<noteq> 0 ==> inverse x * x = 1" by simp |
|
295 show "y \<noteq> 0 ==> x / y = x * inverse y" by (simp add: hypreal_divide_def) |
|
296 qed |
|
297 |
|
298 text{*The precondition could be weakened to @{term "0\<le>x"}*} |
|
299 lemma hypreal_mult_less_mono: |
|
300 "[| u<v; x<y; (0::hypreal) < v; 0 < x |] ==> u*x < v* y" |
|
301 by (simp add: Ring_and_Field.mult_strict_mono order_less_imp_le) |
295 |
302 |
296 lemma hypreal_inverse_gt_0: "0 < x ==> 0 < inverse (x::hypreal)" |
303 lemma hypreal_inverse_gt_0: "0 < x ==> 0 < inverse (x::hypreal)" |
297 apply (rule ccontr) |
304 by (rule Ring_and_Field.positive_imp_inverse_positive) |
298 apply (drule hypreal_leI) |
|
299 apply (frule hypreal_minus_zero_less_iff2 [THEN iffD2]) |
|
300 apply (frule hypreal_not_refl2 [THEN not_sym]) |
|
301 apply (drule hypreal_not_refl2 [THEN not_sym, THEN hypreal_inverse_not_zero]) |
|
302 apply (drule order_le_imp_less_or_eq, safe) |
|
303 apply (drule hypreal_mult_less_zero1, assumption) |
|
304 apply (auto intro: hypreal_zero_less_one [THEN hypreal_less_asym] |
|
305 simp add: hypreal_minus_zero_less_iff) |
|
306 done |
|
307 |
305 |
308 lemma hypreal_inverse_less_0: "x < 0 ==> inverse (x::hypreal) < 0" |
306 lemma hypreal_inverse_less_0: "x < 0 ==> inverse (x::hypreal) < 0" |
309 apply (frule hypreal_not_refl2) |
307 by (rule Ring_and_Field.negative_imp_inverse_negative) |
310 apply (drule hypreal_minus_zero_less_iff [THEN iffD2]) |
|
311 apply (rule hypreal_minus_zero_less_iff [THEN iffD1]) |
|
312 apply (subst hypreal_minus_inverse [symmetric]) |
|
313 apply (auto intro: hypreal_inverse_gt_0) |
|
314 done |
|
315 |
|
316 lemma hypreal_self_le_add_pos: "(x::hypreal)*x <= x*x + y*y" |
|
317 apply (rule_tac z = x in eq_Abs_hypreal) |
|
318 apply (rule_tac z = y in eq_Abs_hypreal) |
|
319 apply (auto simp add: hypreal_mult hypreal_add hypreal_le) |
|
320 done |
|
321 declare hypreal_self_le_add_pos [simp] |
|
322 |
|
323 (*lcp: new lemma unfortunately needed...*) |
|
324 lemma minus_square_le_square: "-(x*x) <= (y*y::real)" |
|
325 apply (rule order_trans) |
|
326 apply (rule_tac [2] real_le_square, auto) |
|
327 done |
|
328 |
|
329 lemma hypreal_self_le_add_pos2: "(x::hypreal)*x <= x*x + y*y + z*z" |
|
330 apply (rule_tac z = x in eq_Abs_hypreal) |
|
331 apply (rule_tac z = y in eq_Abs_hypreal) |
|
332 apply (rule_tac z = z in eq_Abs_hypreal) |
|
333 apply (auto simp add: hypreal_mult hypreal_add hypreal_le minus_square_le_square) |
|
334 done |
|
335 declare hypreal_self_le_add_pos2 [simp] |
|
336 |
308 |
337 |
309 |
338 (*---------------------------------------------------------------------------- |
310 (*---------------------------------------------------------------------------- |
339 Existence of infinite hyperreal number |
311 Existence of infinite hyperreal number |
340 ----------------------------------------------------------------------------*) |
312 ----------------------------------------------------------------------------*) |
392 |
364 |
393 lemma hypreal_epsilon_inverse_omega: "epsilon = inverse(omega)" |
365 lemma hypreal_epsilon_inverse_omega: "epsilon = inverse(omega)" |
394 by (simp add: hypreal_inverse omega_def epsilon_def) |
366 by (simp add: hypreal_inverse omega_def epsilon_def) |
395 |
367 |
396 |
368 |
|
369 subsection{*Routine Properties*} |
|
370 |
397 (* this proof is so much simpler than one for reals!! *) |
371 (* this proof is so much simpler than one for reals!! *) |
398 lemma hypreal_inverse_less_swap: "[| 0 < r; r < x |] ==> inverse x < inverse (r::hypreal)" |
372 lemma hypreal_inverse_less_swap: |
399 apply (rule_tac z = x in eq_Abs_hypreal) |
373 "[| 0 < r; r < x |] ==> inverse x < inverse (r::hypreal)" |
400 apply (rule_tac z = r in eq_Abs_hypreal) |
374 by (rule Ring_and_Field.less_imp_inverse_less) |
401 apply (auto simp add: hypreal_inverse hypreal_less hypreal_zero_def, ultra) |
375 |
402 done |
376 lemma hypreal_inverse_less_iff: |
403 |
377 "[| 0 < r; 0 < x|] ==> (inverse x < inverse (r::hypreal)) = (r < x)" |
404 lemma hypreal_inverse_less_iff: "[| 0 < r; 0 < x|] ==> (r < x) = (inverse x < inverse (r::hypreal))" |
378 by (rule Ring_and_Field.inverse_less_iff_less) |
405 apply (auto intro: hypreal_inverse_less_swap) |
379 |
406 apply (rule_tac t = r in hypreal_inverse_inverse [THEN subst]) |
380 lemma hypreal_inverse_le_iff: |
407 apply (rule_tac t = x in hypreal_inverse_inverse [THEN subst]) |
381 "[| 0 < r; 0 < x|] ==> (inverse x \<le> inverse r) = (r \<le> (x::hypreal))" |
408 apply (rule hypreal_inverse_less_swap) |
382 by (rule Ring_and_Field.inverse_le_iff_le) |
409 apply (auto simp add: hypreal_inverse_gt_0) |
383 |
410 done |
384 |
411 |
385 subsection{*Convenient Biconditionals for Products of Signs*} |
412 lemma hypreal_mult_inverse_less_mono1: "[| 0 < z; x < y |] ==> x * inverse z < y * inverse (z::hypreal)" |
386 |
413 by (blast intro!: hypreal_mult_less_mono1 hypreal_inverse_gt_0) |
387 lemma hypreal_0_less_mult_iff: |
414 |
388 "((0::hypreal) < x*y) = (0 < x & 0 < y | x < 0 & y < 0)" |
415 lemma hypreal_mult_inverse_less_mono2: "[| 0 < z; x < y |] ==> inverse z * x < inverse (z::hypreal) * y" |
389 by (rule Ring_and_Field.zero_less_mult_iff) |
416 by (blast intro!: hypreal_mult_less_mono2 hypreal_inverse_gt_0) |
390 |
417 |
391 lemma hypreal_0_le_mult_iff: "((0::hypreal) \<le> x*y) = (0 \<le> x & 0 \<le> y | x \<le> 0 & y \<le> 0)" |
418 lemma hypreal_less_mult_right_cancel: "[| (0::hypreal) < z; x*z < y*z |] ==> x < y" |
392 by (rule Ring_and_Field.zero_le_mult_iff) |
419 apply (frule_tac x = "x*z" in hypreal_mult_inverse_less_mono1) |
|
420 apply (drule_tac [2] hypreal_not_refl2 [THEN not_sym]) |
|
421 apply (auto dest!: hypreal_mult_inverse simp add: hypreal_mult_ac) |
|
422 done |
|
423 |
|
424 lemma hypreal_less_mult_left_cancel: "[| (0::hypreal) < z; z*x < z*y |] ==> x < y" |
|
425 by (auto intro: hypreal_less_mult_right_cancel simp add: hypreal_mult_commute) |
|
426 |
|
427 lemma hypreal_mult_less_gt_zero: "[| 0 < r; (0::hypreal) < ra; r < x; ra < y |] ==> r*ra < x*y" |
|
428 apply (frule_tac y = r in order_less_trans) |
|
429 apply (drule_tac [2] z = ra and x = r in hypreal_mult_less_mono1) |
|
430 apply (drule_tac [3] z = x and x = ra in hypreal_mult_less_mono2) |
|
431 apply (auto intro: order_less_trans) |
|
432 done |
|
433 |
|
434 lemma hypreal_mult_le_ge_zero: "[| 0 < r; (0::hypreal) < ra; r <= x; ra <= y |] ==> r*ra <= x*y" |
|
435 apply (drule order_le_imp_less_or_eq)+ |
|
436 apply (rule hypreal_less_or_eq_imp_le) |
|
437 apply (auto intro: hypreal_mult_less_mono1 hypreal_mult_less_mono2 hypreal_mult_less_gt_zero) |
|
438 done |
|
439 |
|
440 (*---------------------------------------------------------------------------- |
|
441 Some convenient biconditionals for products of signs |
|
442 ----------------------------------------------------------------------------*) |
|
443 |
|
444 lemma hypreal_0_less_mult_iff: "((0::hypreal) < x*y) = (0 < x & 0 < y | x < 0 & y < 0)" |
|
445 apply (auto simp add: order_le_less linorder_not_less hypreal_mult_order hypreal_mult_less_zero1) |
|
446 apply (rule_tac [!] ccontr) |
|
447 apply (auto simp add: order_le_less linorder_not_less) |
|
448 apply (erule_tac [!] rev_mp) |
|
449 apply (drule_tac [!] hypreal_mult_less_zero) |
|
450 apply (auto dest: order_less_not_sym simp add: hypreal_mult_commute) |
|
451 done |
|
452 |
|
453 lemma hypreal_0_le_mult_iff: "((0::hypreal) <= x*y) = (0 <= x & 0 <= y | x <= 0 & y <= 0)" |
|
454 by (auto dest: hypreal_mult_zero_disj simp add: order_le_less linorder_not_less hypreal_0_less_mult_iff) |
|
455 |
393 |
456 lemma hypreal_mult_less_0_iff: "(x*y < (0::hypreal)) = (0 < x & y < 0 | x < 0 & 0 < y)" |
394 lemma hypreal_mult_less_0_iff: "(x*y < (0::hypreal)) = (0 < x & y < 0 | x < 0 & 0 < y)" |
457 apply (auto simp add: hypreal_0_le_mult_iff linorder_not_le [symmetric]) |
395 by (rule Ring_and_Field.mult_less_0_iff) |
458 apply (auto dest: order_less_not_sym simp add: linorder_not_le) |
396 |
459 done |
397 lemma hypreal_mult_le_0_iff: "(x*y \<le> (0::hypreal)) = (0 \<le> x & y \<le> 0 | x \<le> 0 & 0 \<le> y)" |
460 |
398 by (rule Ring_and_Field.mult_le_0_iff) |
461 lemma hypreal_mult_le_0_iff: "(x*y <= (0::hypreal)) = (0 <= x & y <= 0 | x <= 0 & 0 <= y)" |
399 |
462 by (auto dest: order_less_not_sym simp add: hypreal_0_less_mult_iff linorder_not_less [symmetric]) |
400 |
463 |
401 lemma hypreal_mult_self_sum_ge_zero: "(0::hypreal) \<le> x*x + y*y" |
464 lemma hypreal_mult_less_zero2: "[| (0::hypreal) < x; y < 0 |] ==> y*x < 0" |
402 proof - |
465 by (auto simp add: hypreal_mult_commute hypreal_mult_less_zero) |
403 have "0 + 0 \<le> x*x + y*y" by (blast intro: add_mono zero_le_square) |
|
404 thus ?thesis by simp |
|
405 qed |
466 |
406 |
467 (*TO BE DELETED*) |
407 (*TO BE DELETED*) |
468 ML |
408 ML |
469 {* |
409 {* |
470 val hypreal_add_ac = thms"hypreal_add_ac"; |
410 val hypreal_add_ac = thms"hypreal_add_ac"; |
511 val hypreal_le_square = thm"hypreal_le_square"; |
451 val hypreal_le_square = thm"hypreal_le_square"; |
512 val hypreal_less_minus_square = thm"hypreal_less_minus_square"; |
452 val hypreal_less_minus_square = thm"hypreal_less_minus_square"; |
513 val hypreal_mult_0_less = thm"hypreal_mult_0_less"; |
453 val hypreal_mult_0_less = thm"hypreal_mult_0_less"; |
514 val hypreal_mult_less_mono1 = thm"hypreal_mult_less_mono1"; |
454 val hypreal_mult_less_mono1 = thm"hypreal_mult_less_mono1"; |
515 val hypreal_mult_less_mono2 = thm"hypreal_mult_less_mono2"; |
455 val hypreal_mult_less_mono2 = thm"hypreal_mult_less_mono2"; |
516 val hypreal_mult_le_less_mono1 = thm"hypreal_mult_le_less_mono1"; |
|
517 val hypreal_mult_le_less_mono2 = thm"hypreal_mult_le_less_mono2"; |
|
518 val hypreal_mult_less_mono = thm"hypreal_mult_less_mono"; |
456 val hypreal_mult_less_mono = thm"hypreal_mult_less_mono"; |
519 val hypreal_mult_less_mono' = thm"hypreal_mult_less_mono'"; |
|
520 val hypreal_inverse_gt_0 = thm"hypreal_inverse_gt_0"; |
457 val hypreal_inverse_gt_0 = thm"hypreal_inverse_gt_0"; |
521 val hypreal_inverse_less_0 = thm"hypreal_inverse_less_0"; |
458 val hypreal_inverse_less_0 = thm"hypreal_inverse_less_0"; |
522 val hypreal_self_le_add_pos = thm"hypreal_self_le_add_pos"; |
|
523 val minus_square_le_square = thm"minus_square_le_square"; |
|
524 val hypreal_self_le_add_pos2 = thm"hypreal_self_le_add_pos2"; |
|
525 val Rep_hypreal_omega = thm"Rep_hypreal_omega"; |
459 val Rep_hypreal_omega = thm"Rep_hypreal_omega"; |
526 val lemma_omega_empty_singleton_disj = thm"lemma_omega_empty_singleton_disj"; |
460 val lemma_omega_empty_singleton_disj = thm"lemma_omega_empty_singleton_disj"; |
527 val lemma_finite_omega_set = thm"lemma_finite_omega_set"; |
461 val lemma_finite_omega_set = thm"lemma_finite_omega_set"; |
528 val not_ex_hypreal_of_real_eq_omega = thm"not_ex_hypreal_of_real_eq_omega"; |
462 val not_ex_hypreal_of_real_eq_omega = thm"not_ex_hypreal_of_real_eq_omega"; |
529 val hypreal_of_real_not_eq_omega = thm"hypreal_of_real_not_eq_omega"; |
463 val hypreal_of_real_not_eq_omega = thm"hypreal_of_real_not_eq_omega"; |
534 val hypreal_of_real_not_eq_epsilon = thm"hypreal_of_real_not_eq_epsilon"; |
468 val hypreal_of_real_not_eq_epsilon = thm"hypreal_of_real_not_eq_epsilon"; |
535 val hypreal_epsilon_not_zero = thm"hypreal_epsilon_not_zero"; |
469 val hypreal_epsilon_not_zero = thm"hypreal_epsilon_not_zero"; |
536 val hypreal_epsilon_inverse_omega = thm"hypreal_epsilon_inverse_omega"; |
470 val hypreal_epsilon_inverse_omega = thm"hypreal_epsilon_inverse_omega"; |
537 val hypreal_inverse_less_swap = thm"hypreal_inverse_less_swap"; |
471 val hypreal_inverse_less_swap = thm"hypreal_inverse_less_swap"; |
538 val hypreal_inverse_less_iff = thm"hypreal_inverse_less_iff"; |
472 val hypreal_inverse_less_iff = thm"hypreal_inverse_less_iff"; |
539 val hypreal_mult_inverse_less_mono1 = thm"hypreal_mult_inverse_less_mono1"; |
473 val hypreal_inverse_le_iff = thm"hypreal_inverse_le_iff"; |
540 val hypreal_mult_inverse_less_mono2 = thm"hypreal_mult_inverse_less_mono2"; |
|
541 val hypreal_less_mult_right_cancel = thm"hypreal_less_mult_right_cancel"; |
|
542 val hypreal_less_mult_left_cancel = thm"hypreal_less_mult_left_cancel"; |
|
543 val hypreal_mult_less_gt_zero = thm"hypreal_mult_less_gt_zero"; |
|
544 val hypreal_mult_le_ge_zero = thm"hypreal_mult_le_ge_zero"; |
|
545 val hypreal_0_less_mult_iff = thm"hypreal_0_less_mult_iff"; |
474 val hypreal_0_less_mult_iff = thm"hypreal_0_less_mult_iff"; |
546 val hypreal_0_le_mult_iff = thm"hypreal_0_le_mult_iff"; |
475 val hypreal_0_le_mult_iff = thm"hypreal_0_le_mult_iff"; |
547 val hypreal_mult_less_0_iff = thm"hypreal_mult_less_0_iff"; |
476 val hypreal_mult_less_0_iff = thm"hypreal_mult_less_0_iff"; |
548 val hypreal_mult_le_0_iff = thm"hypreal_mult_le_0_iff"; |
477 val hypreal_mult_le_0_iff = thm"hypreal_mult_le_0_iff"; |
549 val hypreal_mult_less_zero2 = thm"hypreal_mult_less_zero2"; |
478 val hypreal_mult_self_sum_ge_zero = thm "hypreal_mult_self_sum_ge_zero"; |
550 *} |
479 *} |
551 |
480 |
552 end |
481 end |