src/HOL/Complex/Complex.thy
changeset 15003 6145dd7538d7
parent 14691 e1eedc8cad37
child 15013 34264f5e4691
equal deleted inserted replaced
15002:bc050f23c3f8 15003:6145dd7538d7
   453 lemma complex_mod_minus [simp]: "cmod (-x) = cmod(x)"
   453 lemma complex_mod_minus [simp]: "cmod (-x) = cmod(x)"
   454 by (induct x, simp add: complex_mod complex_minus power2_eq_square)
   454 by (induct x, simp add: complex_mod complex_minus power2_eq_square)
   455 
   455 
   456 lemma complex_mod_mult_cnj: "cmod(z * cnj(z)) = cmod(z) ^ 2"
   456 lemma complex_mod_mult_cnj: "cmod(z * cnj(z)) = cmod(z) ^ 2"
   457 apply (induct z, simp add: complex_mod complex_cnj complex_mult)
   457 apply (induct z, simp add: complex_mod complex_cnj complex_mult)
   458 apply (simp add: power2_eq_square real_abs_def)
   458 apply (simp add: power2_eq_square abs_if linorder_not_less)
   459 done
   459 done
   460 
   460 
   461 lemma complex_mod_squared: "cmod(Complex x y) ^ 2 = x ^ 2 + y ^ 2"
   461 lemma complex_mod_squared: "cmod(Complex x y) ^ 2 = x ^ 2 + y ^ 2"
   462 by (simp add: cmod_def)
   462 by (simp add: cmod_def)
   463 
   463 
   569 primrec
   569 primrec
   570      complexpow_0:   "z ^ 0       = 1"
   570      complexpow_0:   "z ^ 0       = 1"
   571      complexpow_Suc: "z ^ (Suc n) = (z::complex) * (z ^ n)"
   571      complexpow_Suc: "z ^ (Suc n) = (z::complex) * (z ^ n)"
   572 
   572 
   573 
   573 
   574 instance complex :: ringpower
   574 instance complex :: recpower
   575 proof
   575 proof
   576   fix z :: complex
   576   fix z :: complex
   577   fix n :: nat
   577   fix n :: nat
   578   show "z^0 = 1" by simp
   578   show "z^0 = 1" by simp
   579   show "z^(Suc n) = z * (z^n)" by simp
   579   show "z^(Suc n) = z * (z^n)" by simp
   945 test "(x*k) / (k*(y::complex)) = (uu::complex)";
   945 test "(x*k) / (k*(y::complex)) = (uu::complex)";
   946 test "(k) / (k*(y::complex)) = (uu::complex)"; 
   946 test "(k) / (k*(y::complex)) = (uu::complex)"; 
   947 test "(a*(b*c)) / ((b::complex)) = (uu::complex)";
   947 test "(a*(b*c)) / ((b::complex)) = (uu::complex)";
   948 test "(a*(b*c)) / (d*(b::complex)*(x*a)) = (uu::complex)";
   948 test "(a*(b*c)) / (d*(b::complex)*(x*a)) = (uu::complex)";
   949 
   949 
   950 (*FIXME: what do we do about this?*)
   950 FIXME: what do we do about this?
   951 test "a*(b*c)/(y*z) = d*(b::complex)*(x*a)/z";
   951 test "a*(b*c)/(y*z) = d*(b::complex)*(x*a)/z";
   952 *)
   952 *)
   953 
   953 
   954 
   954 
   955 ML
   955 ML