Structure complexTheory
signature complexTheory =
sig
type thm = Thm.thm
(* Definitions *)
val IM : thm
val RE : thm
val arg : thm
val complex_add : thm
val complex_div : thm
val complex_exp : thm
val complex_inv : thm
val complex_mul : thm
val complex_neg : thm
val complex_of_num : thm
val complex_of_real : thm
val complex_pow_def : thm
val complex_scalar_lmul : thm
val complex_scalar_rmul : thm
val complex_sub : thm
val conj : thm
val i : thm
val modu : thm
(* Theorems *)
val ARG_COS : thm
val ARG_SIN : thm
val COMPLEX : thm
val COMPLEX_0 : thm
val COMPLEX_0_THM : thm
val COMPLEX_1 : thm
val COMPLEX_10 : thm
val COMPLEX_ADD2_SUB2 : thm
val COMPLEX_ADD_ASSOC : thm
val COMPLEX_ADD_COMM : thm
val COMPLEX_ADD_LDISTRIB : thm
val COMPLEX_ADD_LID : thm
val COMPLEX_ADD_LID_UNIQ : thm
val COMPLEX_ADD_LINV : thm
val COMPLEX_ADD_RAT : thm
val COMPLEX_ADD_RDISTRIB : thm
val COMPLEX_ADD_RID : thm
val COMPLEX_ADD_RID_UNIQ : thm
val COMPLEX_ADD_RINV : thm
val COMPLEX_ADD_RSCALAR_RMUL : thm
val COMPLEX_ADD_SCALAR_LMUL : thm
val COMPLEX_ADD_SUB : thm
val COMPLEX_ADD_SUB2 : thm
val COMPLEX_DIFFSQ : thm
val COMPLEX_DIV1 : thm
val COMPLEX_DIV_ADD : thm
val COMPLEX_DIV_ARG : thm
val COMPLEX_DIV_DENOM_CANCEL : thm
val COMPLEX_DIV_INNER_CANCEL : thm
val COMPLEX_DIV_LMUL_CANCEL : thm
val COMPLEX_DIV_LZERO : thm
val COMPLEX_DIV_MUL2 : thm
val COMPLEX_DIV_OUTER_CANCEL : thm
val COMPLEX_DIV_REFL : thm
val COMPLEX_DIV_RMUL_CANCEL : thm
val COMPLEX_DIV_SUB : thm
val COMPLEX_DOUBLE : thm
val COMPLEX_ENTIRE : thm
val COMPLEX_EQ_LADD : thm
val COMPLEX_EQ_LDIV_EQ : thm
val COMPLEX_EQ_LMUL : thm
val COMPLEX_EQ_LMUL2 : thm
val COMPLEX_EQ_LMUL_IMP : thm
val COMPLEX_EQ_NEG : thm
val COMPLEX_EQ_RADD : thm
val COMPLEX_EQ_RDIV_EQ : thm
val COMPLEX_EQ_RMUL : thm
val COMPLEX_EQ_RMUL_IMP : thm
val COMPLEX_EQ_SCALAR_LMUL : thm
val COMPLEX_EQ_SUB_LADD : thm
val COMPLEX_EQ_SUB_RADD : thm
val COMPLEX_EXP_0 : thm
val COMPLEX_EXP_ADD : thm
val COMPLEX_EXP_ADD_MUL : thm
val COMPLEX_EXP_N : thm
val COMPLEX_EXP_N2 : thm
val COMPLEX_EXP_NEG : thm
val COMPLEX_EXP_NEG_MUL : thm
val COMPLEX_EXP_NEG_MUL2 : thm
val COMPLEX_EXP_NZ : thm
val COMPLEX_EXP_SUB : thm
val COMPLEX_INV1 : thm
val COMPLEX_INVINV : thm
val COMPLEX_INV_0 : thm
val COMPLEX_INV_1OVER : thm
val COMPLEX_INV_ARG : thm
val COMPLEX_INV_EQ_0 : thm
val COMPLEX_INV_INJ : thm
val COMPLEX_INV_INV : thm
val COMPLEX_INV_MUL : thm
val COMPLEX_INV_NEG : thm
val COMPLEX_INV_NZ : thm
val COMPLEX_INV_SCALAR_LMUL : thm
val COMPLEX_LEMMA1 : thm
val COMPLEX_LEMMA2 : thm
val COMPLEX_LINV_UNIQ : thm
val COMPLEX_LMUL_SCALAR_LMUL : thm
val COMPLEX_LNEG_UNIQ : thm
val COMPLEX_MODU_ARG_EQ : thm
val COMPLEX_MUL_ARG : thm
val COMPLEX_MUL_ASSOC : thm
val COMPLEX_MUL_COMM : thm
val COMPLEX_MUL_LCONJ1 : thm
val COMPLEX_MUL_LID : thm
val COMPLEX_MUL_LINV : thm
val COMPLEX_MUL_LNEG : thm
val COMPLEX_MUL_LZERO : thm
val COMPLEX_MUL_RCONJ : thm
val COMPLEX_MUL_RCONJ1 : thm
val COMPLEX_MUL_RID : thm
val COMPLEX_MUL_RINV : thm
val COMPLEX_MUL_RNEG : thm
val COMPLEX_MUL_RZERO : thm
val COMPLEX_MUL_SCALAR_LMUL2 : thm
val COMPLEX_NEGNEG : thm
val COMPLEX_NEG_0 : thm
val COMPLEX_NEG_ADD : thm
val COMPLEX_NEG_DIV2 : thm
val COMPLEX_NEG_EQ : thm
val COMPLEX_NEG_EQ0 : thm
val COMPLEX_NEG_INV : thm
val COMPLEX_NEG_LDIV : thm
val COMPLEX_NEG_LMUL : thm
val COMPLEX_NEG_MUL2 : thm
val COMPLEX_NEG_RDIV : thm
val COMPLEX_NEG_RMUL : thm
val COMPLEX_NEG_SCALAR_LMUL : thm
val COMPLEX_NEG_SCALAR_RMUL : thm
val COMPLEX_NEG_SUB : thm
val COMPLEX_OF_NUM_ADD : thm
val COMPLEX_OF_NUM_EQ : thm
val COMPLEX_OF_NUM_MUL : thm
val COMPLEX_OF_REAL_ADD : thm
val COMPLEX_OF_REAL_DIV : thm
val COMPLEX_OF_REAL_EQ : thm
val COMPLEX_OF_REAL_INV : thm
val COMPLEX_OF_REAL_MUL : thm
val COMPLEX_OF_REAL_NEG : thm
val COMPLEX_OF_REAL_SUB : thm
val COMPLEX_POWINV : thm
val COMPLEX_POW_0 : thm
val COMPLEX_POW_1 : thm
val COMPLEX_POW_2 : thm
val COMPLEX_POW_ADD : thm
val COMPLEX_POW_DIV : thm
val COMPLEX_POW_INV : thm
val COMPLEX_POW_L : thm
val COMPLEX_POW_MUL : thm
val COMPLEX_POW_NZ : thm
val COMPLEX_POW_ONE : thm
val COMPLEX_POW_POW : thm
val COMPLEX_POW_ZERO : thm
val COMPLEX_POW_ZERO_EQ : thm
val COMPLEX_RE_IM_EQ : thm
val COMPLEX_RINV_UNIQ : thm
val COMPLEX_RMUL_SCALAR_LMUL : thm
val COMPLEX_RNEG_UNIQ : thm
val COMPLEX_RSCALAR_RMUL_SUB : thm
val COMPLEX_SCALAR_LMUL : thm
val COMPLEX_SCALAR_LMUL_ADD : thm
val COMPLEX_SCALAR_LMUL_DIV2 : thm
val COMPLEX_SCALAR_LMUL_ENTIRE : thm
val COMPLEX_SCALAR_LMUL_EQ : thm
val COMPLEX_SCALAR_LMUL_EQ1 : thm
val COMPLEX_SCALAR_LMUL_NEG : thm
val COMPLEX_SCALAR_LMUL_NEG1 : thm
val COMPLEX_SCALAR_LMUL_ONE : thm
val COMPLEX_SCALAR_LMUL_SUB : thm
val COMPLEX_SCALAR_LMUL_ZERO : thm
val COMPLEX_SCALAR_MUL_COMM : thm
val COMPLEX_SCALAR_RMUL : thm
val COMPLEX_SCALAR_RMUL_ADD : thm
val COMPLEX_SCALAR_RMUL_NEG : thm
val COMPLEX_SCALAR_RMUL_NEG1 : thm
val COMPLEX_SCALAR_RMUL_ONE : thm
val COMPLEX_SCALAR_RMUL_ZERO : thm
val COMPLEX_SUB_0 : thm
val COMPLEX_SUB_ADD : thm
val COMPLEX_SUB_ADD2 : thm
val COMPLEX_SUB_INV2 : thm
val COMPLEX_SUB_LDISTRIB : thm
val COMPLEX_SUB_LNEG : thm
val COMPLEX_SUB_LZERO : thm
val COMPLEX_SUB_NEG2 : thm
val COMPLEX_SUB_RAT : thm
val COMPLEX_SUB_RDISTRIB : thm
val COMPLEX_SUB_REFL : thm
val COMPLEX_SUB_RNEG : thm
val COMPLEX_SUB_RZERO : thm
val COMPLEX_SUB_SCALAR_LMUL : thm
val COMPLEX_SUB_SCALAR_RMUL : thm
val COMPLEX_SUB_SUB : thm
val COMPLEX_SUB_SUB2 : thm
val COMPLEX_SUB_TRIANGLE : thm
val COMPLEX_TRIANGLE : thm
val COMPLEX_ZERO_SCALAR_LMUL : thm
val COMPLEX_ZERO_SCALAR_RMUL : thm
val CONJ_ADD : thm
val CONJ_CONJ : thm
val CONJ_DIV : thm
val CONJ_EQ : thm
val CONJ_EQ2 : thm
val CONJ_INV : thm
val CONJ_MUL : thm
val CONJ_NEG : thm
val CONJ_NUM_REFL : thm
val CONJ_REAL_REFL : thm
val CONJ_SCALAR_LMUL : thm
val CONJ_SUB : thm
val CONJ_ZERO : thm
val DE_MOIVRE_LEMMA : thm
val DE_MOIVRE_THM : thm
val EULER_FORMULE : thm
val EXP_IMAGINARY : thm
val IM_COMPLEX_OF_REAL : thm
val IM_DIV_MODU_ASN_BOUNDS : thm
val IM_DIV_MODU_ASN_SIN : thm
val IM_DIV_MODU_BOUNDS : thm
val IM_MODU_ARG : thm
val MODU_0 : thm
val MODU_1 : thm
val MODU_CASES : thm
val MODU_COMPLEX_INV : thm
val MODU_COMPLEX_POW : thm
val MODU_CONJ : thm
val MODU_DIV : thm
val MODU_MUL : thm
val MODU_NEG : thm
val MODU_NUM : thm
val MODU_NZ : thm
val MODU_POS : thm
val MODU_POW2 : thm
val MODU_REAL : thm
val MODU_SCALAR_LMUL : thm
val MODU_SUB : thm
val MODU_UNIT : thm
val MODU_ZERO : thm
val RE_COMPLEX_OF_REAL : thm
val RE_DIV_MODU_ACS_BOUNDS : thm
val RE_DIV_MODU_ACS_COS : thm
val RE_DIV_MODU_BOUNDS : thm
val RE_IM_LE_MODU : thm
val RE_MODU_ARG : thm
val complex_pow_def_compute : thm
val complex_grammars : type_grammar.grammar * term_grammar.grammar
(*
[transc] Parent theory of "complex"
[IM] Definition
|- ∀z. IM z = SND z
[RE] Definition
|- ∀z. RE z = FST z
[arg] Definition
|- ∀z.
arg z =
if 0 ≤ IM z then acs (RE z / modu z)
else -acs (RE z / modu z) + 2 * pi
[complex_add] Definition
|- ∀z w. z + w = (RE z + RE w,IM z + IM w)
[complex_div] Definition
|- ∀z w. z / w = z * inv w
[complex_exp] Definition
|- ∀z. exp z = exp (RE z) * (cos (IM z),sin (IM z))
[complex_inv] Definition
|- ∀z.
inv z =
(RE z / (RE z pow 2 + IM z pow 2),
-IM z / (RE z pow 2 + IM z pow 2))
[complex_mul] Definition
|- ∀z w.
z * w = (RE z * RE w − IM z * IM w,RE z * IM w + IM z * RE w)
[complex_neg] Definition
|- ∀z. -z = (-RE z,-IM z)
[complex_of_num] Definition
|- ∀n. &n = complex_of_real (&n)
[complex_of_real] Definition
|- ∀x. complex_of_real x = (x,0)
[complex_pow_def] Definition
|- (∀z. z pow 0 = 1) ∧ ∀z n. z pow SUC n = z * z pow n
[complex_scalar_lmul] Definition
|- ∀k z. k * z = (k * RE z,k * IM z)
[complex_scalar_rmul] Definition
|- ∀z k. z * k = (RE z * k,IM z * k)
[complex_sub] Definition
|- ∀z w. z − w = z + -w
[conj] Definition
|- ∀z. conj z = (RE z,-IM z)
[i] Definition
|- i = (0,1)
[modu] Definition
|- ∀z. modu z = sqrt (RE z pow 2 + IM z pow 2)
[ARG_COS] Theorem
|- ∀z. z ≠ 0 ⇒ (cos (arg z) = RE z / modu z)
[ARG_SIN] Theorem
|- ∀z. z ≠ 0 ⇒ (sin (arg z) = IM z / modu z)
[COMPLEX] Theorem
|- ∀z. (RE z,IM z) = z
[COMPLEX_0] Theorem
|- 0 = complex_of_real 0
[COMPLEX_0_THM] Theorem
|- ∀z. (z = 0) ⇔ (RE z pow 2 + IM z pow 2 = 0)
[COMPLEX_1] Theorem
|- 1 = complex_of_real 1
[COMPLEX_10] Theorem
|- 1 ≠ 0
[COMPLEX_ADD2_SUB2] Theorem
|- ∀z w u v. z + w − (u + v) = z − u + (w − v)
[COMPLEX_ADD_ASSOC] Theorem
|- ∀z w v. z + (w + v) = z + w + v
[COMPLEX_ADD_COMM] Theorem
|- ∀z w. z + w = w + z
[COMPLEX_ADD_LDISTRIB] Theorem
|- ∀z w v. z * (w + v) = z * w + z * v
[COMPLEX_ADD_LID] Theorem
|- ∀z. 0 + z = z
[COMPLEX_ADD_LID_UNIQ] Theorem
|- ∀z w. (z + w = w) ⇔ (z = 0)
[COMPLEX_ADD_LINV] Theorem
|- ∀z. -z + z = 0
[COMPLEX_ADD_RAT] Theorem
|- ∀z w u v.
w ≠ 0 ∧ v ≠ 0 ⇒ (z / w + u / v = (z * v + w * u) / (w * v))
[COMPLEX_ADD_RDISTRIB] Theorem
|- ∀z w v. (z + w) * v = z * v + w * v
[COMPLEX_ADD_RID] Theorem
|- ∀z. z + 0 = z
[COMPLEX_ADD_RID_UNIQ] Theorem
|- ∀z w. (z + w = z) ⇔ (w = 0)
[COMPLEX_ADD_RINV] Theorem
|- ∀z. z + -z = 0
[COMPLEX_ADD_RSCALAR_RMUL] Theorem
|- ∀k z w. (z + w) * k = z * k + w * k
[COMPLEX_ADD_SCALAR_LMUL] Theorem
|- ∀k z w. k * (z + w) = k * z + k * w
[COMPLEX_ADD_SUB] Theorem
|- ∀z w. z + w − z = w
[COMPLEX_ADD_SUB2] Theorem
|- ∀z w. z − (z + w) = -w
[COMPLEX_DIFFSQ] Theorem
|- ∀z w. (z + w) * (z − w) = z * z − w * w
[COMPLEX_DIV1] Theorem
|- ∀z. z / 1 = z
[COMPLEX_DIV_ADD] Theorem
|- ∀z w v. z / v + w / v = (z + w) / v
[COMPLEX_DIV_ARG] Theorem
|- ∀x y. (cos x,sin x) / (cos y,sin y) = (cos (x − y),sin (x − y))
[COMPLEX_DIV_DENOM_CANCEL] Theorem
|- ∀z w v. z ≠ 0 ⇒ (w / z / (v / z) = w / v)
[COMPLEX_DIV_INNER_CANCEL] Theorem
|- ∀z w v. z ≠ 0 ⇒ (w / z * (z / v) = w / v)
[COMPLEX_DIV_LMUL_CANCEL] Theorem
|- ∀v z w. v ≠ 0 ⇒ (v * z / (v * w) = z / w)
[COMPLEX_DIV_LZERO] Theorem
|- ∀z. 0 / z = 0
[COMPLEX_DIV_MUL2] Theorem
|- ∀z w. z ≠ 0 ∧ w ≠ 0 ⇒ ∀v. v / w = z * v / (z * w)
[COMPLEX_DIV_OUTER_CANCEL] Theorem
|- ∀z w v. z ≠ 0 ⇒ (z / w * (v / z) = v / w)
[COMPLEX_DIV_REFL] Theorem
|- ∀z. z ≠ 0 ⇒ (z / z = 1)
[COMPLEX_DIV_RMUL_CANCEL] Theorem
|- ∀v z w. v ≠ 0 ⇒ (z * v / (w * v) = z / w)
[COMPLEX_DIV_SUB] Theorem
|- ∀z w v. z / v − w / v = (z − w) / v
[COMPLEX_DOUBLE] Theorem
|- ∀z. z + z = 2 * z
[COMPLEX_ENTIRE] Theorem
|- ∀z w. (z * w = 0) ⇔ (z = 0) ∨ (w = 0)
[COMPLEX_EQ_LADD] Theorem
|- ∀z w v. (z + w = z + v) ⇔ (w = v)
[COMPLEX_EQ_LDIV_EQ] Theorem
|- ∀z w v. v ≠ 0 ⇒ ((z / v = w) ⇔ (z = w * v))
[COMPLEX_EQ_LMUL] Theorem
|- ∀z w v. (z * w = z * v) ⇔ (z = 0) ∨ (w = v)
[COMPLEX_EQ_LMUL2] Theorem
|- ∀z w v. z ≠ 0 ⇒ ((w = v) ⇔ (z * w = z * v))
[COMPLEX_EQ_LMUL_IMP] Theorem
|- ∀z w v. z ≠ 0 ∧ (z * w = z * v) ⇒ (w = v)
[COMPLEX_EQ_NEG] Theorem
|- ∀z w. (-z = -w) ⇔ (z = w)
[COMPLEX_EQ_RADD] Theorem
|- ∀z w v. (z + v = w + v) ⇔ (z = w)
[COMPLEX_EQ_RDIV_EQ] Theorem
|- ∀z w v. v ≠ 0 ⇒ ((z = w / v) ⇔ (z * v = w))
[COMPLEX_EQ_RMUL] Theorem
|- ∀z w v. (z * v = w * v) ⇔ (v = 0) ∨ (z = w)
[COMPLEX_EQ_RMUL_IMP] Theorem
|- ∀z w v. z ≠ 0 ∧ (w * z = v * z) ⇒ (w = v)
[COMPLEX_EQ_SCALAR_LMUL] Theorem
|- ∀k z w. (k * z = k * w) ⇔ (k = 0) ∨ (z = w)
[COMPLEX_EQ_SUB_LADD] Theorem
|- ∀z w v. (z = w − v) ⇔ (z + v = w)
[COMPLEX_EQ_SUB_RADD] Theorem
|- ∀z w v. (z − w = v) ⇔ (z = v + w)
[COMPLEX_EXP_0] Theorem
|- exp 0 = 1
[COMPLEX_EXP_ADD] Theorem
|- ∀z w. exp (z + w) = exp z * exp w
[COMPLEX_EXP_ADD_MUL] Theorem
|- ∀z w. exp (z + w) * exp (-z) = exp w
[COMPLEX_EXP_N] Theorem
|- ∀z n. exp (&n * z) = exp z pow n
[COMPLEX_EXP_N2] Theorem
|- ∀z n. exp (&n * z) = exp z pow n
[COMPLEX_EXP_NEG] Theorem
|- ∀z. exp (-z) = inv (exp z)
[COMPLEX_EXP_NEG_MUL] Theorem
|- ∀z. exp z * exp (-z) = 1
[COMPLEX_EXP_NEG_MUL2] Theorem
|- ∀z. exp (-z) * exp z = 1
[COMPLEX_EXP_NZ] Theorem
|- ∀z. exp z ≠ 0
[COMPLEX_EXP_SUB] Theorem
|- ∀z w. exp (z − w) = exp z / exp w
[COMPLEX_INV1] Theorem
|- inv 1 = 1
[COMPLEX_INVINV] Theorem
|- ∀z. z ≠ 0 ⇒ (inv (inv z) = z)
[COMPLEX_INV_0] Theorem
|- inv 0 = 0
[COMPLEX_INV_1OVER] Theorem
|- ∀z. inv z = 1 / z
[COMPLEX_INV_ARG] Theorem
|- ∀x. inv (cos x,sin x) = (cos (-x),sin (-x))
[COMPLEX_INV_EQ_0] Theorem
|- ∀z. (inv z = 0) ⇔ (z = 0)
[COMPLEX_INV_INJ] Theorem
|- ∀z w. (inv z = inv w) ⇔ (z = w)
[COMPLEX_INV_INV] Theorem
|- ∀z. inv (inv z) = z
[COMPLEX_INV_MUL] Theorem
|- ∀z w. z ≠ 0 ∧ w ≠ 0 ⇒ (inv (z * w) = inv z * inv w)
[COMPLEX_INV_NEG] Theorem
|- ∀z. inv (-z) = -inv z
[COMPLEX_INV_NZ] Theorem
|- ∀z. z ≠ 0 ⇒ inv z ≠ 0
[COMPLEX_INV_SCALAR_LMUL] Theorem
|- ∀k z. k ≠ 0 ∧ z ≠ 0 ⇒ (inv (k * z) = inv k * inv z)
[COMPLEX_LEMMA1] Theorem
|- ∀a b c d.
(a * c − b * d) pow 2 + (a * d + b * c) pow 2 =
(a pow 2 + b pow 2) * (c pow 2 + d pow 2)
[COMPLEX_LEMMA2] Theorem
|- ∀x y. abs x ≤ sqrt (x pow 2 + y pow 2)
[COMPLEX_LINV_UNIQ] Theorem
|- ∀z w. (z * w = 1) ⇒ (z = inv w)
[COMPLEX_LMUL_SCALAR_LMUL] Theorem
|- ∀k z w. k * z * w = k * (z * w)
[COMPLEX_LNEG_UNIQ] Theorem
|- ∀z w. (z + w = 0) ⇔ (z = -w)
[COMPLEX_MODU_ARG_EQ] Theorem
|- ∀z w. (z = w) ⇔ (modu z = modu w) ∧ (arg z = arg w)
[COMPLEX_MUL_ARG] Theorem
|- ∀x y. (cos x,sin x) * (cos y,sin y) = (cos (x + y),sin (x + y))
[COMPLEX_MUL_ASSOC] Theorem
|- ∀z w v. z * (w * v) = z * w * v
[COMPLEX_MUL_COMM] Theorem
|- ∀z w. z * w = w * z
[COMPLEX_MUL_LCONJ1] Theorem
|- ∀z. conj z * z = complex_of_real (modu z pow 2)
[COMPLEX_MUL_LID] Theorem
|- ∀z. 1 * z = z
[COMPLEX_MUL_LINV] Theorem
|- ∀z. z ≠ 0 ⇒ (inv z * z = 1)
[COMPLEX_MUL_LNEG] Theorem
|- ∀z w. -z * w = -(z * w)
[COMPLEX_MUL_LZERO] Theorem
|- ∀z. 0 * z = 0
[COMPLEX_MUL_RCONJ] Theorem
|- ∀z. conj z * z = complex_of_real (RE z pow 2 + IM z pow 2)
[COMPLEX_MUL_RCONJ1] Theorem
|- ∀z. z * conj z = complex_of_real (modu z pow 2)
[COMPLEX_MUL_RID] Theorem
|- ∀z. z * 1 = z
[COMPLEX_MUL_RINV] Theorem
|- ∀z. z ≠ 0 ⇒ (z * inv z = 1)
[COMPLEX_MUL_RNEG] Theorem
|- ∀z w. z * -w = -(z * w)
[COMPLEX_MUL_RZERO] Theorem
|- ∀z. z * 0 = 0
[COMPLEX_MUL_SCALAR_LMUL2] Theorem
|- ∀k l z w. k * z * (l * w) = k * l * (z * w)
[COMPLEX_NEGNEG] Theorem
|- ∀z. --z = z
[COMPLEX_NEG_0] Theorem
|- -0 = 0
[COMPLEX_NEG_ADD] Theorem
|- ∀z w. -(z + w) = -z + -w
[COMPLEX_NEG_DIV2] Theorem
|- ∀z w. -z / -w = z / w
[COMPLEX_NEG_EQ] Theorem
|- ∀z w. (-z = w) ⇔ (z = -w)
[COMPLEX_NEG_EQ0] Theorem
|- ∀z. (-z = 0) ⇔ (z = 0)
[COMPLEX_NEG_INV] Theorem
|- ∀z. z ≠ 0 ⇒ (inv (-z) = -inv z)
[COMPLEX_NEG_LDIV] Theorem
|- ∀z w. -(z / w) = -z / w
[COMPLEX_NEG_LMUL] Theorem
|- ∀z w. -(z * w) = -z * w
[COMPLEX_NEG_MUL2] Theorem
|- ∀z w. -z * -w = z * w
[COMPLEX_NEG_RDIV] Theorem
|- ∀z w. -(z / w) = z / -w
[COMPLEX_NEG_RMUL] Theorem
|- ∀z w. -(z * w) = z * -w
[COMPLEX_NEG_SCALAR_LMUL] Theorem
|- ∀k z. k * -z = -k * z
[COMPLEX_NEG_SCALAR_RMUL] Theorem
|- ∀k z. -z * k = z * -k
[COMPLEX_NEG_SUB] Theorem
|- ∀z w. -(z − w) = w − z
[COMPLEX_OF_NUM_ADD] Theorem
|- ∀m n. &m + &n = &(m + n)
[COMPLEX_OF_NUM_EQ] Theorem
|- ∀m n. (&m = &n) ⇔ (m = n)
[COMPLEX_OF_NUM_MUL] Theorem
|- ∀m n. &m * &n = &(m * n)
[COMPLEX_OF_REAL_ADD] Theorem
|- ∀x y.
complex_of_real x + complex_of_real y = complex_of_real (x + y)
[COMPLEX_OF_REAL_DIV] Theorem
|- ∀x y.
complex_of_real x / complex_of_real y = complex_of_real (x / y)
[COMPLEX_OF_REAL_EQ] Theorem
|- ∀x y. (complex_of_real x = complex_of_real y) ⇔ (x = y)
[COMPLEX_OF_REAL_INV] Theorem
|- ∀x. inv (complex_of_real x) = complex_of_real (inv x)
[COMPLEX_OF_REAL_MUL] Theorem
|- ∀x y.
complex_of_real x * complex_of_real y = complex_of_real (x * y)
[COMPLEX_OF_REAL_NEG] Theorem
|- ∀x. -complex_of_real x = complex_of_real (-x)
[COMPLEX_OF_REAL_SUB] Theorem
|- ∀x y.
complex_of_real x − complex_of_real y = complex_of_real (x − y)
[COMPLEX_POWINV] Theorem
|- ∀z. z ≠ 0 ⇒ ∀n. inv (z pow n) = inv z pow n
[COMPLEX_POW_0] Theorem
|- ∀n. 0 pow SUC n = 0
[COMPLEX_POW_1] Theorem
|- ∀z. z pow 1 = z
[COMPLEX_POW_2] Theorem
|- ∀z. z pow 2 = z * z
[COMPLEX_POW_ADD] Theorem
|- ∀z m n. z pow (m + n) = z pow m * z pow n
[COMPLEX_POW_DIV] Theorem
|- ∀z w n. (z / w) pow n = z pow n / w pow n
[COMPLEX_POW_INV] Theorem
|- ∀z n. inv z pow n = inv (z pow n)
[COMPLEX_POW_L] Theorem
|- ∀n k z. (k * z) pow n = k pow n * z pow n
[COMPLEX_POW_MUL] Theorem
|- ∀n z w. (z * w) pow n = z pow n * w pow n
[COMPLEX_POW_NZ] Theorem
|- ∀z n. z ≠ 0 ⇒ z pow n ≠ 0
[COMPLEX_POW_ONE] Theorem
|- ∀n. 1 pow n = 1
[COMPLEX_POW_POW] Theorem
|- ∀z m n. (z pow m) pow n = z pow (m * n)
[COMPLEX_POW_ZERO] Theorem
|- ∀n z. (z pow n = 0) ⇒ (z = 0)
[COMPLEX_POW_ZERO_EQ] Theorem
|- ∀n z. (z pow SUC n = 0) ⇔ (z = 0)
[COMPLEX_RE_IM_EQ] Theorem
|- ∀z w. (z = w) ⇔ (RE z = RE w) ∧ (IM z = IM w)
[COMPLEX_RINV_UNIQ] Theorem
|- ∀z w. (z * w = 1) ⇒ (w = inv z)
[COMPLEX_RMUL_SCALAR_LMUL] Theorem
|- ∀k z w. z * (k * w) = k * (z * w)
[COMPLEX_RNEG_UNIQ] Theorem
|- ∀z w. (z + w = 0) ⇔ (w = -z)
[COMPLEX_RSCALAR_RMUL_SUB] Theorem
|- ∀k l z. z * (k − l) = z * k − z * l
[COMPLEX_SCALAR_LMUL] Theorem
|- ∀k l z. k * (l * z) = k * l * z
[COMPLEX_SCALAR_LMUL_ADD] Theorem
|- ∀k l z. (k + l) * z = k * z + l * z
[COMPLEX_SCALAR_LMUL_DIV2] Theorem
|- ∀k l z w. l ≠ 0 ∧ w ≠ 0 ⇒ (k * z / (l * w) = k / l * (z / w))
[COMPLEX_SCALAR_LMUL_ENTIRE] Theorem
|- ∀k z. (k * z = 0) ⇔ (k = 0) ∨ (z = 0)
[COMPLEX_SCALAR_LMUL_EQ] Theorem
|- ∀k l z. (k * z = l * z) ⇔ (k = l) ∨ (z = 0)
[COMPLEX_SCALAR_LMUL_EQ1] Theorem
|- ∀k z. (k * z = z) ⇔ (k = 1) ∨ (z = 0)
[COMPLEX_SCALAR_LMUL_NEG] Theorem
|- ∀k z. -(k * z) = -k * z
[COMPLEX_SCALAR_LMUL_NEG1] Theorem
|- ∀z. -1 * z = -z
[COMPLEX_SCALAR_LMUL_ONE] Theorem
|- ∀z. 1 * z = z
[COMPLEX_SCALAR_LMUL_SUB] Theorem
|- ∀k l z. (k − l) * z = k * z − l * z
[COMPLEX_SCALAR_LMUL_ZERO] Theorem
|- ∀z. 0 * z = 0
[COMPLEX_SCALAR_MUL_COMM] Theorem
|- ∀k z. k * z = z * k
[COMPLEX_SCALAR_RMUL] Theorem
|- ∀k l z. z * k * l = z * (k * l)
[COMPLEX_SCALAR_RMUL_ADD] Theorem
|- ∀k l z. z * (k + l) = z * k + z * l
[COMPLEX_SCALAR_RMUL_NEG] Theorem
|- ∀k z. -(z * k) = z * -k
[COMPLEX_SCALAR_RMUL_NEG1] Theorem
|- ∀z. z * -1 = -z
[COMPLEX_SCALAR_RMUL_ONE] Theorem
|- ∀z. z * 1 = z
[COMPLEX_SCALAR_RMUL_ZERO] Theorem
|- ∀z. z * 0 = 0
[COMPLEX_SUB_0] Theorem
|- ∀z w. (z − w = 0) ⇔ (z = w)
[COMPLEX_SUB_ADD] Theorem
|- ∀z w. z − w + w = z
[COMPLEX_SUB_ADD2] Theorem
|- ∀z w. w + (z − w) = z
[COMPLEX_SUB_INV2] Theorem
|- ∀z w. z ≠ 0 ∧ w ≠ 0 ⇒ (inv z − inv w = (w − z) / (z * w))
[COMPLEX_SUB_LDISTRIB] Theorem
|- ∀z w v. z * (w − v) = z * w − z * v
[COMPLEX_SUB_LNEG] Theorem
|- ∀z w. -z − w = -(z + w)
[COMPLEX_SUB_LZERO] Theorem
|- ∀z. 0 − z = -z
[COMPLEX_SUB_NEG2] Theorem
|- ∀z w. -z − -w = w − z
[COMPLEX_SUB_RAT] Theorem
|- ∀z w u v.
w ≠ 0 ∧ v ≠ 0 ⇒ (z / w − u / v = (z * v − w * u) / (w * v))
[COMPLEX_SUB_RDISTRIB] Theorem
|- ∀z w v. (z − w) * v = z * v − w * v
[COMPLEX_SUB_REFL] Theorem
|- ∀z. z − z = 0
[COMPLEX_SUB_RNEG] Theorem
|- ∀z w. z − -w = z + w
[COMPLEX_SUB_RZERO] Theorem
|- ∀z. z − 0 = z
[COMPLEX_SUB_SCALAR_LMUL] Theorem
|- ∀k z w. k * (z − w) = k * z − k * w
[COMPLEX_SUB_SCALAR_RMUL] Theorem
|- ∀k z w. (z − w) * k = z * k − w * k
[COMPLEX_SUB_SUB] Theorem
|- ∀z w. z − w − z = -w
[COMPLEX_SUB_SUB2] Theorem
|- ∀z w. z − (z − w) = w
[COMPLEX_SUB_TRIANGLE] Theorem
|- ∀z w v. z − w + (w − v) = z − v
[COMPLEX_TRIANGLE] Theorem
|- ∀z. modu z * (cos (arg z),sin (arg z)) = z
[COMPLEX_ZERO_SCALAR_LMUL] Theorem
|- ∀k. k * 0 = 0
[COMPLEX_ZERO_SCALAR_RMUL] Theorem
|- ∀k. 0 * k = 0
[CONJ_ADD] Theorem
|- ∀z w. conj (z + w) = conj z + conj w
[CONJ_CONJ] Theorem
|- ∀z. conj (conj z) = z
[CONJ_DIV] Theorem
|- ∀z w. conj (z / w) = conj z / conj w
[CONJ_EQ] Theorem
|- ∀z w. (conj z = w) ⇔ (z = conj w)
[CONJ_EQ2] Theorem
|- ∀z w. (conj z = conj w) ⇔ (z = w)
[CONJ_INV] Theorem
|- ∀z. conj (inv z) = inv (conj z)
[CONJ_MUL] Theorem
|- ∀z w. conj (z * w) = conj z * conj w
[CONJ_NEG] Theorem
|- ∀z. conj (-z) = -conj z
[CONJ_NUM_REFL] Theorem
|- ∀n. conj (&n) = &n
[CONJ_REAL_REFL] Theorem
|- ∀x. conj (complex_of_real x) = complex_of_real x
[CONJ_SCALAR_LMUL] Theorem
|- ∀k z. conj (k * z) = k * conj z
[CONJ_SUB] Theorem
|- ∀z w. conj (z − w) = conj z − conj w
[CONJ_ZERO] Theorem
|- conj 0 = 0
[DE_MOIVRE_LEMMA] Theorem
|- ∀x n. (cos x,sin x) pow n = (cos (&n * x),sin (&n * x))
[DE_MOIVRE_THM] Theorem
|- ∀z n.
(modu z * (cos (arg z),sin (arg z))) pow n =
modu z pow n * (cos (&n * arg z),sin (&n * arg z))
[EULER_FORMULE] Theorem
|- ∀z. modu z * exp (i * arg z) = z
[EXP_IMAGINARY] Theorem
|- ∀x. exp (i * x) = (cos x,sin x)
[IM_COMPLEX_OF_REAL] Theorem
|- ∀x. IM (complex_of_real x) = 0
[IM_DIV_MODU_ASN_BOUNDS] Theorem
|- ∀z.
z ≠ 0 ⇒
-(pi / 2) ≤ asn (IM z / modu z) ∧ asn (IM z / modu z) ≤ pi / 2
[IM_DIV_MODU_ASN_SIN] Theorem
|- ∀z. z ≠ 0 ⇒ (sin (asn (IM z / modu z)) = IM z / modu z)
[IM_DIV_MODU_BOUNDS] Theorem
|- ∀z. z ≠ 0 ⇒ -1 ≤ IM z / modu z ∧ IM z / modu z ≤ 1
[IM_MODU_ARG] Theorem
|- ∀z. IM z = modu z * sin (arg z)
[MODU_0] Theorem
|- modu 0 = 0
[MODU_1] Theorem
|- modu 1 = 1
[MODU_CASES] Theorem
|- ∀z. (z = 0) ∨ 0 < modu z
[MODU_COMPLEX_INV] Theorem
|- ∀z. z ≠ 0 ⇒ (modu (inv z) = inv (modu z))
[MODU_COMPLEX_POW] Theorem
|- ∀z n. modu (z pow n) = modu z pow n
[MODU_CONJ] Theorem
|- ∀z. modu (conj z) = modu z
[MODU_DIV] Theorem
|- ∀z w. w ≠ 0 ⇒ (modu (z / w) = modu z / modu w)
[MODU_MUL] Theorem
|- ∀z w. modu (z * w) = modu z * modu w
[MODU_NEG] Theorem
|- ∀z. modu (-z) = modu z
[MODU_NUM] Theorem
|- ∀n. modu (&n) = &n
[MODU_NZ] Theorem
|- ∀z. z ≠ 0 ⇔ 0 < modu z
[MODU_POS] Theorem
|- ∀z. 0 ≤ modu z
[MODU_POW2] Theorem
|- ∀z. modu z pow 2 = RE z pow 2 + IM z pow 2
[MODU_REAL] Theorem
|- ∀x. modu (complex_of_real x) = abs x
[MODU_SCALAR_LMUL] Theorem
|- ∀k z. modu (k * z) = abs k * modu z
[MODU_SUB] Theorem
|- ∀z w. modu (z − w) = modu (w − z)
[MODU_UNIT] Theorem
|- ∀x y. modu (cos x,sin x) = 1
[MODU_ZERO] Theorem
|- ∀z. (z = 0) ⇔ (modu z = 0)
[RE_COMPLEX_OF_REAL] Theorem
|- ∀x. RE (complex_of_real x) = x
[RE_DIV_MODU_ACS_BOUNDS] Theorem
|- ∀z. z ≠ 0 ⇒ 0 ≤ acs (RE z / modu z) ∧ acs (RE z / modu z) ≤ pi
[RE_DIV_MODU_ACS_COS] Theorem
|- ∀z. z ≠ 0 ⇒ (cos (acs (RE z / modu z)) = RE z / modu z)
[RE_DIV_MODU_BOUNDS] Theorem
|- ∀z. z ≠ 0 ⇒ -1 ≤ RE z / modu z ∧ RE z / modu z ≤ 1
[RE_IM_LE_MODU] Theorem
|- ∀z. abs (RE z) ≤ modu z ∧ abs (IM z) ≤ modu z
[RE_MODU_ARG] Theorem
|- ∀z. RE z = modu z * cos (arg z)
[complex_pow_def_compute] Theorem
|- (∀z. z pow 0 = 1) ∧
(∀z n.
z pow NUMERAL (BIT1 n) = z * z pow (NUMERAL (BIT1 n) − 1)) ∧
∀z n. z pow NUMERAL (BIT2 n) = z * z pow NUMERAL (BIT1 n)
*)
end
HOL 4, Kananaskis-10