equal
deleted
inserted
replaced
324 done |
324 done |
325 |
325 |
326 lemma hypreal_add_commute: "(z::hypreal) + w = w + z" |
326 lemma hypreal_add_commute: "(z::hypreal) + w = w + z" |
327 apply (rule_tac z = z in eq_Abs_hypreal) |
327 apply (rule_tac z = z in eq_Abs_hypreal) |
328 apply (rule_tac z = w in eq_Abs_hypreal) |
328 apply (rule_tac z = w in eq_Abs_hypreal) |
329 apply (simp add: real_add_ac hypreal_add) |
329 apply (simp add: add_ac hypreal_add) |
330 done |
330 done |
331 |
331 |
332 lemma hypreal_add_assoc: "((z1::hypreal) + z2) + z3 = z1 + (z2 + z3)" |
332 lemma hypreal_add_assoc: "((z1::hypreal) + z2) + z3 = z1 + (z2 + z3)" |
333 apply (rule_tac z = z1 in eq_Abs_hypreal) |
333 apply (rule_tac z = z1 in eq_Abs_hypreal) |
334 apply (rule_tac z = z2 in eq_Abs_hypreal) |
334 apply (rule_tac z = z2 in eq_Abs_hypreal) |
417 lemma hypreal_add_mult_distrib: |
417 lemma hypreal_add_mult_distrib: |
418 "((z1::hypreal) + z2) * w = (z1 * w) + (z2 * w)" |
418 "((z1::hypreal) + z2) * w = (z1 * w) + (z2 * w)" |
419 apply (rule_tac z = z1 in eq_Abs_hypreal) |
419 apply (rule_tac z = z1 in eq_Abs_hypreal) |
420 apply (rule_tac z = z2 in eq_Abs_hypreal) |
420 apply (rule_tac z = z2 in eq_Abs_hypreal) |
421 apply (rule_tac z = w in eq_Abs_hypreal) |
421 apply (rule_tac z = w in eq_Abs_hypreal) |
422 apply (simp add: hypreal_mult hypreal_add real_add_mult_distrib) |
422 apply (simp add: hypreal_mult hypreal_add left_distrib) |
423 done |
423 done |
424 |
424 |
425 text{*one and zero are distinct*} |
425 text{*one and zero are distinct*} |
426 lemma hypreal_zero_not_eq_one: "0 \<noteq> (1::hypreal)" |
426 lemma hypreal_zero_not_eq_one: "0 \<noteq> (1::hypreal)" |
427 apply (unfold hypreal_zero_def hypreal_one_def) |
427 apply (unfold hypreal_zero_def hypreal_one_def) |
450 "x \<noteq> 0 ==> x*inverse(x) = (1::hypreal)" |
450 "x \<noteq> 0 ==> x*inverse(x) = (1::hypreal)" |
451 apply (unfold hypreal_one_def hypreal_zero_def) |
451 apply (unfold hypreal_one_def hypreal_zero_def) |
452 apply (rule_tac z = x in eq_Abs_hypreal) |
452 apply (rule_tac z = x in eq_Abs_hypreal) |
453 apply (simp add: hypreal_inverse hypreal_mult) |
453 apply (simp add: hypreal_inverse hypreal_mult) |
454 apply (drule FreeUltrafilterNat_Compl_mem) |
454 apply (drule FreeUltrafilterNat_Compl_mem) |
455 apply (blast intro!: real_mult_inv_right FreeUltrafilterNat_subset) |
455 apply (blast intro!: right_inverse FreeUltrafilterNat_subset) |
456 done |
456 done |
457 |
457 |
458 lemma hypreal_mult_inverse_left: |
458 lemma hypreal_mult_inverse_left: |
459 "x \<noteq> 0 ==> inverse(x)*x = (1::hypreal)" |
459 "x \<noteq> 0 ==> inverse(x)*x = (1::hypreal)" |
460 by (simp add: hypreal_mult_inverse hypreal_mult_commute) |
460 by (simp add: hypreal_mult_inverse hypreal_mult_commute) |
473 show "(x + y) * z = x * z + y * z" by (simp add: hypreal_add_mult_distrib) |
473 show "(x + y) * z = x * z + y * z" by (simp add: hypreal_add_mult_distrib) |
474 show "0 \<noteq> (1::hypreal)" by (rule hypreal_zero_not_eq_one) |
474 show "0 \<noteq> (1::hypreal)" by (rule hypreal_zero_not_eq_one) |
475 show "x \<noteq> 0 ==> inverse x * x = 1" by (simp add: hypreal_mult_inverse_left) |
475 show "x \<noteq> 0 ==> inverse x * x = 1" by (simp add: hypreal_mult_inverse_left) |
476 show "y \<noteq> 0 ==> x / y = x * inverse y" by (simp add: hypreal_divide_def) |
476 show "y \<noteq> 0 ==> x / y = x * inverse y" by (simp add: hypreal_divide_def) |
477 qed |
477 qed |
478 |
|
479 (*Pull negations out*) |
|
480 declare minus_mult_right [symmetric, simp] |
|
481 minus_mult_left [symmetric, simp] |
|
482 |
478 |
483 |
479 |
484 lemma HYPREAL_INVERSE_ZERO: "inverse 0 = (0::hypreal)" |
480 lemma HYPREAL_INVERSE_ZERO: "inverse 0 = (0::hypreal)" |
485 by (simp add: hypreal_inverse hypreal_zero_def) |
481 by (simp add: hypreal_inverse hypreal_zero_def) |
486 |
482 |