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 Operation
from proveit import a, b, m, n, x, P
from proveit.logic import And, Equals, NotEquals, Forall, Implies, in_bool, InSet, ProperSubset, Set
from proveit.numbers import zero, one, num, frac
from proveit.numbers import ZeroSet, Natural, NaturalPos, Integer, Interval, Rational, Real, RealPos, Complex
from proveit.numbers import Add, subtract, greater, greater_eq, Less, LessEq
from proveit.numbers import Pzero, Pone, Pm, P_mAddOne, Pn
%begin theorems
zero_set_within_nat = ProperSubset(ZeroSet, Natural)
interval_is_nat = Forall((a, b), Forall(n, InSet(n, Natural),
domain=Interval(a, b)), domain=Natural)
natural_lower_bound = Forall(n, greater_eq(n, zero), domain=Natural)
natural_pos_lower_bound = Forall(n, greater_eq(n, one), domain=NaturalPos)
natural_pos_is_pos = Forall(n, greater(n, zero), domain=NaturalPos)
# proven
nonzero_if_is_nat_pos = Forall(
n,
NotEquals(n, zero),
domain=NaturalPos)
nat_pos_within_nat = ProperSubset(NaturalPos, Natural)
# In progress
# For Natural numbers
nat_membership_is_bool = Forall(x, in_bool(InSet(x, Natural)))
# For Positive Natural numbers (NaturalPos)
nat_pos_membership_is_bool = Forall(x, in_bool(InSet(x, NaturalPos)))
fold_forall_natural = Forall(P, Implies(And(Pzero,
Forall(m, P_mAddOne,
domain=Natural, condition=Pm)),
Forall(n, Pn, domain=Natural)))
fold_forall_natural_pos = Forall(P, Implies(And(Pone,
Forall(m, P_mAddOne, domain=NaturalPos,
condition=Pm)),
Forall(n, Pn, domain=NaturalPos)))
%end theorems