src/HOL/Hyperreal/HyperDef.thy
changeset 14334 6137d24eef79
parent 14331 8dbbb7cf3637
child 14341 a09441bd4f1e
equal deleted inserted replaced
14333:14f29eb097a3 14334:6137d24eef79
   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