import proveit
# Prepare this notebook for defining the theorems of a theory:
%theorems_notebook # Keep this at the top following 'import proveit'.
from proveit import r, x, theta
from proveit.logic import Forall, in_bool, Equals, NotEquals, InSet, Set, ProperSubset
from proveit.numbers import (
zero, two, e, i, pi,
ZeroSet, Natural, NaturalPos,
Integer, IntegerNonZero, IntegerNeg, IntegerNonPos,
Rational, RationalNonZero, RationalPos, RationalNeg, RationalNonNeg,
RationalNonPos,
Real, RealNonZero, RealNeg, RealPos, RealNonNeg, RealNonPos,
Complex, ComplexNonZero)
from proveit.numbers import Add, Exp, frac, Mod, Mult, Neg
%begin theorems
zero_is_complex = InSet(zero, Complex)
zero_set_within_complex = ProperSubset(ZeroSet, Complex)
i_is_complex = InSet(i, Complex)
i_is_complex_nonzero = InSet(i, ComplexNonZero)
nat_within_complex = ProperSubset(Natural, Complex)
int_within_complex = ProperSubset(Integer, Complex)
int_nonpos_within_complex = ProperSubset(IntegerNonPos, Complex)
int_neg_within_complex_nonzero = ProperSubset(IntegerNeg, ComplexNonZero)
nat_pos_within_complex_nonzero = ProperSubset(NaturalPos, ComplexNonZero)
int_nonzero_within_complex_nonzero = ProperSubset(IntegerNonZero, ComplexNonZero)
rational_within_complex = ProperSubset(Rational, Complex)
rational_nonneg_within_complex = ProperSubset(RationalNonNeg, Complex)
rational_nonpos_within_complex = ProperSubset(RationalNonPos, Complex)
rational_pos_within_complex_nonzero = ProperSubset(RationalNonPos, ComplexNonZero)
rational_neg_within_complex_nonzero = ProperSubset(RationalNonPos, ComplexNonZero)
rational_nonzero_within_complex_nonzero = ProperSubset(RationalNonZero, ComplexNonZero)
real_within_complex = ProperSubset(Real, Complex)
real_nonneg_within_complex = ProperSubset(RealNonNeg, Complex)
real_nonpos_within_complex = ProperSubset(RealNonPos, Complex)
real_pos_within_complex_nonzero = ProperSubset(RealNonPos, ComplexNonZero)
real_neg_within_complex_nonzero = ProperSubset(RealNonPos, ComplexNonZero)
real_nonzero_within_complex_nonzero = ProperSubset(RealNonZero, ComplexNonZero)
complex_nonzero_within_complex = ProperSubset(ComplexNonZero, Complex)
nonzero_if_in_complex_nonzero = Forall(
x,
NotEquals(x, zero),
domain=ComplexNonZero)
nonzero_complex_is_complex_nonzero = Forall(
x, InSet(x, ComplexNonZero), condition=NotEquals(x, zero),
domain=Complex)
An in_bool theorem, which is accessed by the respective ComplexSet NumberSet to implement its deduce_membership_in_bool() method:
complex_membership_is_bool = Forall(x, in_bool(InSet(x, Complex)))
complex_nonzero_membership_is_bool = Forall(x, in_bool(InSet(x, ComplexNonZero)))
unit_length_complex_polar_negation = Forall(
theta, Equals(Exp(e, Mult(i, Add(theta, pi))),
Neg(Exp(e, Mult(i, theta)))),
domain=Real)
complex_polar_negation = Forall(
(r, theta), Equals(Mult(r, Exp(e, Mult(i, Add(theta, pi)))),
Neg(Mult(r, Exp(e, Mult(i, theta))))),
domain=Real)
complex_polar_radius_negation = Forall(
(r, theta), Equals(Mult(Neg(r), Exp(e, Mult(i, Add(theta, pi)))),
Mult(r, Exp(e, Mult(i, theta)))),
domain=Real)
exp_2pi_i_x = Forall((x, r), Equals(Exp(e, frac(Mult(two, pi, i, Mod(x, r)), r)),
Exp(e, frac(Mult(two, pi, i, x), r))), domain=Real)
exp_neg2pi_i_x = Forall((x, r), Equals(Exp(e, frac(Neg(Mult(two, pi, i, Mod(x, r))), r)),
Exp(e, frac(Neg(Mult(two, pi, i, x)), r))), domain=Real)
%end theorems