src/HOL/ex/Formal_Power_Series_Examples.thy
changeset 30748 fe67d729a61c
parent 29698 91feea8e41e4
child 31021 53642251a04f
equal deleted inserted replaced
30747:b8ca7e450de3 30748:fe67d729a61c
   189 lemma fps_cos_neg[simp]: "fps_cos (- c) = fps_cos c"
   189 lemma fps_cos_neg[simp]: "fps_cos (- c) = fps_cos c"
   190   by (simp add: fps_eq_iff fps_cos_def)
   190   by (simp add: fps_eq_iff fps_cos_def)
   191 lemma E_minus_ii_sin_cos: "E (- (ii * c)) = fps_cos c - fps_const ii * fps_sin c "
   191 lemma E_minus_ii_sin_cos: "E (- (ii * c)) = fps_cos c - fps_const ii * fps_sin c "
   192   unfolding minus_mult_right Eii_sin_cos by simp
   192   unfolding minus_mult_right Eii_sin_cos by simp
   193 
   193 
       
   194 lemma fps_const_minus: "fps_const (c::'a::group_add) - fps_const d = fps_const (c - d)  "by (simp add: fps_eq_iff fps_const_def)
       
   195 
       
   196 lemma fps_number_of_fps_const: "number_of i = fps_const (number_of i :: 'a:: {comm_ring_1, number_ring})"
       
   197   apply (subst (2) number_of_eq)
       
   198 apply(rule int_induct[of _ 0])
       
   199 apply (simp_all add: number_of_fps_def)
       
   200 by (simp_all add: fps_const_add[symmetric] fps_const_minus[symmetric])
       
   201 
   194 lemma fps_cos_Eii:
   202 lemma fps_cos_Eii:
   195   "fps_cos c = (E (ii * c) + E (- ii * c)) / fps_const 2"
   203   "fps_cos c = (E (ii * c) + E (- ii * c)) / fps_const 2"
   196 proof-
   204 proof-
   197   have th: "fps_cos c + fps_cos c = fps_cos c * fps_const 2" 
   205   have th: "fps_cos c + fps_cos c = fps_cos c * fps_const 2" 
   198     by (simp add: fps_eq_iff)
   206     by (simp add: fps_eq_iff fps_number_of_fps_const complex_number_of_def[symmetric])
       
   207   show ?thesis
       
   208   unfolding Eii_sin_cos minus_mult_commute
       
   209   by (simp add: fps_number_of_fps_const fps_divide_def fps_const_inverse th complex_number_of_def[symmetric])
       
   210 qed
       
   211 
       
   212 lemma fps_sin_Eii:
       
   213   "fps_sin c = (E (ii * c) - E (- ii * c)) / fps_const (2*ii)"
       
   214 proof-
       
   215   have th: "fps_const \<i> * fps_sin c + fps_const \<i> * fps_sin c = fps_sin c * fps_const (2 * ii)" 
       
   216     by (simp add: fps_eq_iff fps_number_of_fps_const complex_number_of_def[symmetric])
   199   show ?thesis
   217   show ?thesis
   200   unfolding Eii_sin_cos minus_mult_commute
   218   unfolding Eii_sin_cos minus_mult_commute
   201   by (simp add: fps_divide_def fps_const_inverse th)
   219   by (simp add: fps_divide_def fps_const_inverse th)
   202 qed
   220 qed
   203 
   221 
   204 lemma fps_sin_Eii:
       
   205   "fps_sin c = (E (ii * c) - E (- ii * c)) / fps_const (2*ii)"
       
   206 proof-
       
   207   have th: "fps_const \<i> * fps_sin c + fps_const \<i> * fps_sin c = fps_sin c * fps_const (2 * ii)" 
       
   208     by (simp add: fps_eq_iff)
       
   209   show ?thesis
       
   210   unfolding Eii_sin_cos minus_mult_commute
       
   211   by (simp add: fps_divide_def fps_const_inverse th)
       
   212 qed
       
   213 
       
   214 lemma fps_const_mult_2: "fps_const (2::'a::number_ring) * a = a +a"
   222 lemma fps_const_mult_2: "fps_const (2::'a::number_ring) * a = a +a"
   215   by (simp add: fps_eq_iff)
   223   by (simp add: fps_eq_iff fps_number_of_fps_const)
   216 
   224 
   217 lemma fps_const_mult_2_right: "a * fps_const (2::'a::number_ring) = a +a"
   225 lemma fps_const_mult_2_right: "a * fps_const (2::'a::number_ring) = a +a"
   218   by (simp add: fps_eq_iff)
   226   by (simp add: fps_eq_iff fps_number_of_fps_const)
   219 
   227 
   220 lemma fps_tan_Eii:
   228 lemma fps_tan_Eii:
   221   "fps_tan c = (E (ii * c) - E (- ii * c)) / (fps_const ii * (E (ii * c) + E (- ii * c)))"
   229   "fps_tan c = (E (ii * c) - E (- ii * c)) / (fps_const ii * (E (ii * c) + E (- ii * c)))"
   222   unfolding fps_tan_def fps_sin_Eii fps_cos_Eii mult_minus_left E_neg
   230   unfolding fps_tan_def fps_sin_Eii fps_cos_Eii mult_minus_left E_neg
   223   apply (simp add: fps_divide_def fps_inverse_mult fps_const_mult[symmetric] fps_const_inverse del: fps_const_mult)
   231   apply (simp add: fps_divide_def fps_inverse_mult fps_const_mult[symmetric] fps_const_inverse del: fps_const_mult)