# List of theorems

List of theorems in peano/peano_thms.gh:

## Pure predicate calculus

a4i # <title> Axiom 4 Inference </title>
(A. x ph)ph
mpg # <title> Modus Ponus & Generalization </title> # <table> # (-> (A. x [ ph ] ) [ ps) # [ ph ] ] # [ [ [ ps # </table>
(-> (A. x ph) ps) , phps
19.3 # <title> Quantified Non-free Variable </title> # <suggest> right('Simplify', '∀') </suggest>
(<-> (A. x ph) ph)
notnotbi # <title> Double Negative </title>
(<-> (-. (-. ph)) ph)
BiReplaceImp1Bi0 # <title> Substitution </title> # <table> # (-> ph (<-> [ ps ] ] ] th)) # (<-> [ ps ] [ ch ] ) # (-> ph (<-> [ [ [ ch ] th)) # </table>
(-> ph (<-> ps th)) , (<-> ps ch)(-> ph (<-> ch th))
BiReplaceImp1Bi1 # <title> Substitution </title> # <table> # (-> ph (<-> ps [ ch ] ] ] )) # (<-> [ ch ] [ th ] ) # (-> ph (<-> ps [ [ [ th ] )) # </table>
(-> ph (<-> ps ch)) , (<-> ch th)(-> ph (<-> ps th))
con4biir Reverse the hypothesis and conclusion of con4bii. # <title> Equivalence over Negation </title> # <table> # (<-> [ ph ] [ ps ] ) # (<-> (-. [ ph ] ) (-. [ ps ] )) # </table>
(<-> ph ps)(<-> (-. ph) (-. ps))
sylbi2 Reorder sylbi a bit. # <title> Syllogism </title> # <table> # (-> ps ] ] ] ch) # (<-> ps ] [ ph ] ) # (-> [ [ ph ] ch) # </table>
(-> ps ch) , (<-> ps ph)(-> ph ch)
(-> ph ps)(-> (<-> ch ph) (-> ch ps))
biim1i The Order reverses which may be a little unexpected.
(-> ph ps)(-> (<-> ph ch) (-> ch ps))
bitr3icom Commute the conclusion of bitr3i. # <title> Transitive Property </title> # <table> # (<-> ps [ [ [ ph ] ) # (<-> ps [ ch ] ] ] ) # [ (<-> ch ] [ ph ] ) # </table>
(<-> ps ph) , (<-> ps ch)(<-> ch ph)
orbi1ii # <title> Equivalence over Disjunction </title> # <table> # (\/ ph ] ] ] ps) # (<-> ph ] [ ch ] ) # (\/ [ [ ch ] ps) # </table>
(\/ ph ps) , (<-> ph ch)(\/ ch ps)
orbi2ii # <title> Equivalence over Disjunction </title> # <table> # (\/ ph [ ps ] ] ] ) # (<-> [ ps ] [ ch ] ) # (\/ ph [ [ [ ch ] ) # </table>
(\/ ph ps) , (<-> ps ch)(\/ ph ch)
anbi1ii # <title> Equivalence over Conjunction </title> # <table> # (/\ ph ] ] ] ps) # (<-> ph ] [ ch ] ) # (\/ [ [ ch ] ps) # </table>
(/\ ph ps) , (<-> ph ch)(/\ ch ps)
anbi2ii # <title> Equivalence over Conjunction </title> # <table> # (/\ ph [ ps ] ] ] ) # (<-> [ ps ] [ ch ] ) # (/\ ph [ [ [ ch ] ) # </table>
(/\ ph ps) , (<-> ps ch)(/\ ph ch)
orassi # <title> Associative Property </title>
(\/ (\/ ph ps) ch)(\/ ph (\/ ps ch))
orassli # <title> Associative Property </title>
(\/ ph (\/ ps ch))(\/ (\/ ph ps) ch)
anassi # <title> Associative Property </title>
(/\ (/\ ph ps) ch)(/\ ph (/\ ps ch))
anassli # <title> Associative Property </title>
(/\ ph (/\ ps ch))(/\ (/\ ph ps) ch)
biassi # <title> Associative Property </title>
(<-> (<-> ph ps) ch)(<-> ph (<-> ps ch))
biassli # <title> Associative Property </title>
(<-> ph (<-> ps ch))(<-> (<-> ph ps) ch)
(-> (/\ ph (-. ps)) (-. (<-> ps ph)))
(-> (/\ ps (-. ph)) (-. (<-> ps ph)))
df-ex # <title> Definition of ∃ </title> # <suggest> right('Equivalence', '∀') </suggest>
(<-> (E. x ph) (-. (A. x (-. ph))))
alnex aka 19.7 # <title> Convert between ∃ and ∀ </title>
(<-> (A. x (-. ph)) (-. (E. x ph)))
19.8a # <title> Add existential quantifier </title>
(-> ph (E. x ph))
19.8ai # <title> Add Existential Quantifier </title>
ph(E. x ph)
19.2 # <title> Universal quantifier implies existential quantifier </title>
(-> (A. x ph) (E. x ph))
19.9 # <title> Quantified Non-free Variable </title> # <suggest> right('Simplify', '∃') </suggest>
(<-> (E. x ph) ph)
19.9d # <title> Remove Existence Quantifier </title> # <table> # (-> ph [ (E. x [ ps)) # (-> ph [ [ ps) # </table>
(-> ph (E. x ps))(-> ph ps)
19.15 # <title> Distribute ∀ over biconditional </title> # <suggest> right('Distribute', '∀') </suggest>
(-> (A. x (<-> ph ps)) (<-> (A. x ph) (A. x ps)))
19.15i # <title> Distribute ∀ over biconditional </title>
(A. x (<-> ph ps))(<-> (A. x ph) (A. x ps))
19.15d # <title> Distribute ∀ over biconditional </title>
(-> ph (A. x (<-> ps ch)))(-> ph (<-> (A. x ps) (A. x ch)))
albii # <title> Equivalence over Quantification </title> # <table> # (<-> [ ph ] [ ps ] ) # (<-> (A. x [ ph ] ) (A. x [ ps ] )) # </table>
(<-> ph ps)(<-> (A. x ph) (A. x ps))
albiii # <title> Equivalence over Quantification </title> # <table> # (A. x [ ph ] ) # (<-> [ ph ] [ ps ] ) # (A. x [ [ [ ps ] ) # </table>
(A. x ph) , (<-> ph ps)(A. x ps)
alex aka 19.6 # <title> Definition of ∃ </title> # <suggest> right('Equivalence', '∃') </suggest>
(<-> (A. x ph) (-. (E. x (-. ph))))
19.20i # <title> Generalize Over Conditional </title> # <table> # (-> [ ph ] [ ps ] ) # (-> (A. x [ ph ]) (A. x [ ps ] )) # </table>
(-> ph ps)(-> (A. x ph) (A. x ps))
19.21 # <title> Quantifier Moved Around Non-free Variable </title> # <suggest> right('Equivalence', '→∀') left('Equivalence', '∀→') </suggest>
(<-> (A. x (-> ph ps)) (-> ph (A. x ps)))
19.21ai # <title> Add Quantifier to consequent </title>
(-> ph ps)(-> ph (A. x ps))
(-> ph (<-> ps ch))(-> ph (<-> (A. x ps) (A. x ch)))
19.5 # <title> Commute universal quantifiers </title> # <suggest> right('Commute', '∀') </suggest>
(<-> (A. x (A. y ph)) (A. y (A. x ph)))
19.22 # <title> Add Existential Quantifier to both sides </title>
(-> (A. x (-> ph ps)) (-> (E. x ph) (E. x ps)))
19.22i # <title> Add Existential Quantifier to both sides </title> # <table> # (-> [ ph ] [ ps ] ) # (-> (E. x [ ph ]) (E. x [ ps ] )) # </table>
(-> ph ps)(-> (E. x ph) (E. x ps))
19.22d # <title> Add Existential Quantifier to both sides </title>
(-> ph (-> ps ch))(-> ph (-> (E. x ps) (E. x ch)))
(-> (A. x (<-> ph ps)) (<-> (E. x ph) (E. x ps)))
exbii # <title> Equivalence over Quantification </title> # <table> # (<-> [ ph ] [ ps ] ) # (<-> (E. x [ ph ] ) (E. x [ ps ] )) # </table>
(<-> ph ps)(<-> (E. x ph) (E. x ps))
exbiii # <title> Equivalence over Quantification </title> # <table> # (E. x [ ph ] ] ] ) # (<-> [ ph ] [ ps ] ) # (E. x [ [ [ ps ] ) # </table>
(E. x ph) , (<-> ph ps)(E. x ps)
exbid # <title> Add Existential Quantifiers </title>
(-> ph (<-> ps ch))(-> ph (<-> (E. x ps) (E. x ch)))
19.26 # <title> Distributive Property </title> # <suggest> right('Distribute', 'R') left('Distribute', '-R') </suggest>
(<-> (A. x (/\ ph ps)) (/\ (A. x ph) (A. x ps)))
alan12 19.26 with reversed # <title> Distributive Property </title>
(-> (/\ (A. x ph) (A. x ps)) (A. x (/\ ph ps)))
BiReplaceBi0Not0 # <title> Substitution </title> # <table> # (<-> (-. [ ph ] ] ] ) ch) # (<-> [ ph ] [ ps ] ) # (<-> (-. [ [ [ ps ] ) ch) # </table>
(<-> (-. ph) ch) , (<-> ph ps)(<-> (-. ps) ch)
BiReplaceBi0Not0Ex1 # <title> Substitution </title> # <table> # (<-> (-. (E. x [ ph ] ] ] )) ch) # (<-> [ ph ] [ ps ] ) # (<-> (-. (E. x [ [ [ ps ] )) ch) # </table>
(<-> (-. (E. x ph)) ch) , (<-> ph ps)(<-> (-. (E. x ps)) ch)
BiReplaceBi0Not0Ex1Not0 # <title> Substitution </title> # <table> # (<-> (-. (E. x (-. [ ph ] ] ] ))) ch) # (<-> [ ph ] [ ps ] ) # (<-> (-. (E. x (-. [ [ [ ps ] ))) ch) # </table>
(<-> (-. (E. x (-. ph))) ch) , (<-> ph ps)(<-> (-. (E. x (-. ps))) ch)
BiReplaceBi1Not0Ex1 # <title> Substitution </title> # <table> # (<-> ph (-. (E. x [ ps ] ] ] ))) # (<-> [ ps ] [ ch ] ) # (<-> ph (-. (E. x [ [ [ ch ] ))) # </table>
(<-> ph (-. (E. x ps))) , (<-> ps ch)(<-> ph (-. (E. x ch)))
BiReplaceBi1An0 # <title> Substitution </title> # <table> # (<-> ph (/\ [ ps ] ] ] th)) # (<-> [ ps ] [ ch ] ) # (<-> ph (/\ [ [ [ ch ] th)) # </table>
(<-> ph (/\ ps th)) , (<-> ps ch)(<-> ph (/\ ch th))
BiReplaceBi1An1 # <title> Substitution </title> # <table> # (<-> ph (/\ ps [ ch ] ] ] )) # (<-> [ ch ] [ th ] ) # (<-> ph (/\ ps [ [ [ th ] )) # </table>
(<-> ph (/\ ps ch)) , (<-> ch th)(<-> ph (/\ ps th))
BiReplaceBi1Not0 # <title> Substitution </title> # <table> # (<-> ph (-. [ ps ] ] ] )) # (<-> [ ps ] [ ch ] ) # (<-> ph (-. [ [ [ ch ] )) # </table>
(<-> ph (-. ps)) , (<-> ps ch)(<-> ph (-. ch))
BiReplaceBi1Not0Or1 # <title> Substitution </title> # <table> # (<-> ph (-. (\/ ps [ ch ] ] ] ))) # (<-> [ ch ] [ th ] ) # (<-> ph (-. (\/ ps [ [ [ th ] ))) # </table>
(<-> ph (-. (\/ ps ch))) , (<-> ch th)(<-> ph (-. (\/ ps th)))
BiReplaceBi1Not0Or0 # <title> Substitution </title> # <table> # (<-> ph (-. (\/ [ ps ] ] ] th))) # (<-> [ ps ] [ ch ] ) # (<-> ph (-. (\/ [ [ [ ch ] th))) # </table>
(<-> ph (-. (\/ ps th))) , (<-> ps ch)(<-> ph (-. (\/ ch th)))
exdi # <title> Distributive ∃ Over Disjunction </title> # <suggest> right('Distribute', 'R') left('Distribute', '-R') </suggest>
(<-> (E. x (\/ ph ps)) (\/ (E. x ph) (E. x ps)))
19.29 # <title> Combine universal and Existence Quantifiers </title> # <suggest> right('Simplify', '∃') </suggest>
(-> (/\ (A. x ph) (E. x ps)) (E. x (/\ ph ps)))
19.29r # <title> Combine universal and Existence Quantifiers </title> # <suggest> right('Simplify', '∃') </suggest>
(-> (/\ (E. x ph) (A. x ps)) (E. x (/\ ph ps)))
19.32 # <title> Quantifier Moved Around Non-free Variable </title> # <suggest> right('Equivalence', '∀∨') left('Equivalence', '∨∀') </suggest>
(<-> (A. x (\/ ph ps)) (\/ ph (A. x ps)))
19.31 # <title> Quantifier Moved Around Non-free Variable </title> # <suggest> right('Equivalence', '∀∨') left('Equivalence', '∨∀') </suggest>
(<-> (A. x (\/ ph ps)) (\/ (A. x ph) ps))
19.23 # <title> Change Quantifiers </title> # <suggest> right('Equivalence', '→∃') left('Equivalence', '∀→') </suggest>
(<-> (A. x (-> ph ps)) (-> (E. x ph) ps))
19.23ai # <title> Add existence quantifier </title> # <table> # (-> [ ph ] ps) # (-> (E. x [ ph) ] ps) # </table>
(-> ph ps)(-> (E. x ph) ps)
19.41 # <title> Quantifiers Moved Around Non-free Variable </title> # <suggest> right('Equivalence', '→∃') left('Equivalence', '∃→') </suggest>
(<-> (E. x (/\ ph ps)) (/\ (E. x ph) ps))
19.41l # <title> Quantifiers Moved Around Non-free Variable </title> # <suggest> right('Equivalence', '∧∃') left('Equivalence', '∃∧') </suggest>
(<-> (E. x (/\ ph ps)) (/\ ph (E. x ps)))
19.41r # <title> Quantifiers Moved Around Non-free Variable </title> # <suggest> right('Equivalence', '∧∃') left('Equivalence', '∃∧') </suggest>
(<-> (E. x (/\ ph ps)) (/\ ph (E. x ps)))
albiim # <title> Exchange biconditional with two conditionals </title>
(<-> (A. x (<-> ph ps)) (/\ (A. x (-> ph ps)) (A. x (-> ps ph))))
alan1 19.28 # <title> Quantifiers Moved Around Non-free Variable </title> # <suggest> right('Equivalence', '∧∀') left('Equivalence', '∀∧') </suggest>
(<-> (A. x (/\ ph ps)) (/\ ph (A. x ps)))
alan2 19.27 # <title> Quantifiers Moved Around Non-free Variable </title>
(<-> (A. x (/\ ph ps)) (/\ (A. x ph) ps))
exor2 # <title> Quantifiers Moved Around Non-free Variable </title>
(<-> (E. x (\/ ph ps)) (\/ (E. x ph) ps))
aaan # <title> Quantifiers Moved Around Non-free Variable </title>
(<-> (A. x (A. y (/\ ph ps))) (/\ (A. x ph) (A. y ps)))
ex6 # <title> Add Universal Quantifier </title>
(-> (E. x ph) (A. x (E. x ph)))
axex # <title> Remove Universal Quantifier </title>
(<-> (A. x (E. x ph)) (E. x ph))
exax1 # <title> Remove Existential Quantifier </title>
(-> (E. x (A. x ph)) (A. x ph))
exax # <title> Remove Existential Quantifier </title>
(<-> (E. x (A. x ph)) (A. x ph))
exax1d # <title> Remove Existential Quantifier </title>
(-> ph (E. x (A. x ps)))(-> ph (A. x ps))
eximp1 # <title> Move Existential Quantifier </title>
(-> (E. x (-> ph ps)) (-> (A. x ph) (E. x ps)))
eximp1d # <title> Move Existential Quantifier </title>
(-> ph (E. x (-> ps ch)))(-> ph (-> (A. x ps) (E. x ch)))
(-> (E. x ph) (-> (A. x (-> ph ps)) (E. x ps)))
(-> (E. x ph) (-> (A. x (-> ph ps)) (E. x (/\ ph ps))))
excom # <title> Commutativity of existential quantifiers </title> # <suggest> right('Commute', '∃') </suggest>
(<-> (E. x (E. y ph)) (E. y (E. x ph)))
imex A variant of 19.37 # <title> Quantifier Moved Around Non-free Variable </title> # <suggest> right('Equivalence', '→∃') left('Equivalence', '∃→') </suggest>
(<-> (-> ph (E. x ps)) (E. x (-> ph ps)))
ImpReplaceImp1Ex1 # <title> Substitution </title> # <table> # (-> ph (E. x [ ps ] ] ] )) # (-> [ ps ] [ ch ] ) # (-> ph (E. x [ [ [ ch ] )) # </table>
(-> ph (E. x ps)) , (-> ps ch)(-> ph (E. x ch))
doubleex # <title> Combine Existence Quantifiers </title> # <suggest> right('Infer', '∃∃') </suggest>
(-> (/\ (E. x ph) (E. y ps)) (E. x (E. y (/\ ph ps))))

## Predicate calculus with equality

tyex # <title> There is a number equal to any expression </title>
(E. x (= x A))
vtocle # <title> A number exists that proves the antecedent </title> # <table> # (-> <r> (= x A) [ ph) # [ ph # </table>
(-> (= x A) ph)ph
eqid # <title> Reflexive Property </title>
(= A A)
ancomi # <title> Commute Conjunction </title> # <table> # (/\ <r> ph <g> ps) # (/\ <g> ps <r> ph) # </table>
(/\ ph ps)(/\ ps ph)
orcomi # <title> Commute Disjunction </title> # <table> # (\/ <r> ph <g> ps) # (\/ <g> ps <r> ph) # </table>
(\/ ph ps)(\/ ps ph)
df-tru # <title> Definition of True </title> # <summary> # It is odd that the definition of true uses the number 0 and therefore depends # on the peano axioms. (ph -> ph) <-> T seems like a better definition, but I # have not been able to get this to work. I think the problem is that while Ghilbert # numbers that are binding variables, it has not wffs that are binding variables. # </summary>
(<-> (T) (= (0) (0)))
df-fal # <title> Definition of False </title> # <suggest> auto-left('Simplify', 'F') </suggest>
(<-> (F) (-. (T)))
tru # <title> T is true </title>
(T)
notfal # <title> F is false </title>
(-. (F))
ax-mpRemove # <title> Modus Ponens </title> # <summary> ax-mp with the order of the first and second hypotheses reversed. </summary> # <table> # (-> ph ] [ ps) # ph ] ] # [ [ ps # </table>
(-> ph ps) , phps
impRemove1 # <title> Remove Implies </title> # <table> # [ ph ] # (<-> (-> [ ph ] ps) ps) # </table>
ph(<-> (-> ph ps) ps)
impRemove2 # <title> Remove Implies </title> # <table> # [ ph ] # (<-> (-> ps [ ph ] ) (T)) # </table>
ph(<-> (-> ps ph) (T))
impNotRemove1 # <title> Remove Implies </title> # <table> # [ (-. [ ph ] ) # (<-> (-> [ [ ph ] ps) (T)) # </table>
(-. ph)(<-> (-> ph ps) (T))
impNotRemove2 # <title> Remove Equivalence </title> # <table> # [ (-. [ ph ] ) # (<-> (-> ps [ [ ph ] ) (-. ps)) # </table>
(-. ph)(<-> (-> ps ph) (-. ps))
biRemove1 # <title> Remove Equivalence </title> # <table> # [ ph ] # (<-> (<-> [ ph ] ps) ps) # </table>
ph(<-> (<-> ph ps) ps)
biRemove2 # <title> Remove Equivalence </title> # <table> # [ ph ] # (<-> (<-> ps [ ph ] ) ps) # </table>
ph(<-> (<-> ps ph) ps)
biNotRemove2 # <title> Remove Equivalence </title> # <table> # [ (-. [ ph ] ) # (<-> (<-> ps [ [ ph ] ) (-. ps)) # </table>
(-. ph)(<-> (<-> ps ph) (-. ps))
biNotRemove1 # <title> Remove Equivalence </title> # <table> # [ (-. [ ph ] ) # (<-> (<-> [ [ ph ] ps) ps) # </table>
(-. ph)(<-> (<-> ph ps) (-. ps))
anRemove1 # <title> Remove AND </title> # <table> # [ ph ] # (<-> (/\ [ ph ] ps) ps) # </table>
ph(<-> (/\ ph ps) ps)
anRemove2 # <title> Remove AND </title> # <table> # [ ph ] # (<-> (/\ ps [ ph ] ) ps) # </table>
ph(<-> (/\ ps ph) ps)
anNotRemove1 # <title> Remove AND </title> # <table> # [ (-. [ ph ] ) # (<-> (/\ [ [ ph ] ps) (F)) # </table>
(-. ph)(<-> (/\ ph ps) (F))
anNotRemove2 # <title> Remove AND </title> # <table> # [ (-. [ ph ] ) # (<-> (/\ ps [ [ ph ] ) (F)) # </table>
(-. ph)(<-> (/\ ps ph) (F))
orRemove1 # <title> Remove OR </title> # <table> # [ ph ] # (<-> (\/ [ ph ] ps) (T)) # </table>
ph(<-> (\/ ph ps) (T))
orRemove2 # <title> Remove OR </title> # <table> # [ ph ] # (<-> (\/ ps [ ph ] ) (T)) # </table>
ph(<-> (\/ ps ph) (T))
orNotRemove1 # <title> Remove OR </title> # <table> # [ (-. [ ph ] ) # (<-> (\/ [ [ ph ] ps) ps) # </table>
(-. ph)(<-> (\/ ph ps) ps)
orNotRemove2 # <title> Remove OR </title> # <table> # [ (-. [ ph ] ) # (<-> (\/ ps [ [ ph ] ) ps) # </table>
(-. ph)(<-> (\/ ps ph) ps)
alRemove2 # <title> Remove For All </title> # <table> # [ ph ] # (<-> (A. x [ ph ] ) (T)) # </table>
ph(<-> (A. x ph) (T))
alNotRemove2 # <title> Remove For All </title> # <table> # [ (-. [ ph ] ) # (<-> (A. x [ [ ph ] ) (F)) # </table>
(-. ph)(<-> (A. x ph) (F))
exRemove2 # <title> Remove There Exists </title> # <table> # [ ph ] # (<-> (E. x [ ph ] ) (T)) # </table>
ph(<-> (E. x ph) (T))
exNotRemove2 # <title> Remove There Exists </title> # <table> # [ (-. [ ph ] ) # (<-> (E. x [ [ ph ] ) (F)) # </table>
(-. ph)(<-> (E. x ph) (F))
impRemoveT1 # <title> A true antecedent proves the consequent </title>
(<-> (-> (T) ps) ps)
impRemoveT2 # <title> A true consequent, proves the conditional </title>
(<-> (-> ps (T)) (T))
impRemoveF1 # <title> A false antecedent, proves the conditional </title>
(<-> (-> (F) ps) (T))
impRemoveF2 # <title> A false consequent, disproves the antecedent </title>
(<-> (-> ps (F)) (-. ps))
biRemoveT1 # <title> A truth affirms the biconditional </title>
(<-> (<-> (T) ps) ps)
biRemoveT2 # <title> A truth affirms the biconditional </title>
(<-> (<-> ps (T)) ps)
biRemoveF1 # <title> A falsehood negates the biconditional </title>
(<-> (<-> (F) ps) (-. ps))
biRemoveF2 # <title> A falsehood negates the biconditional </title>
(<-> (<-> ps (F)) (-. ps))
anRemoveT1 # <title> Remove truth from conjunction </title>
(<-> (/\ (T) ps) ps)
anRemoveT2 # <title> Remove truth from conjunction </title>
(<-> (/\ ps (T)) ps)
anRemoveF1 # <title> One falsehood makes a conjunction false </title>
(<-> (/\ (F) ps) (F))
anRemoveF2 # <title> One falsehood makes a conjunction false </title>
(<-> (/\ ps (F)) (F))
orRemoveT1 # <title> One truth makes a disjunction true </title>
(<-> (\/ (T) ps) (T))
orRemoveT2 # <title> One truth makes a disjunction true </title>
(<-> (\/ ps (T)) (T))
orRemoveF1 # <title> Remove falsehood from disjunction </title>
(<-> (\/ (F) ps) ps)
orRemoveF2 # <title> Remove falsehood from disjunction </title>
(<-> (\/ ps (F)) ps)
BiReplaceBi1Not0Imp1 # <title> Substitution </title> # <table> # (<-> ph (-. (-> ps [ ch ] ] ] ))) # (<-> [ ch ] [ th ] ) # (<-> ph (-. (-> ps [ [ [ th ] ))) # </table>
(<-> ph (-. (-> ps ch))) , (<-> ch th)(<-> ph (-. (-> ps th)))
BiReplaceBi1Imp0 # <title> Substitution </title> # <table> # (<-> ph (-> [ ps ] ] ] th)) # (<-> [ ps ] [ ch ] ) # (<-> ph (-> [ [ [ ch ] th)) # </table>
(<-> ph (-> ps th)) , (<-> ps ch)(<-> ph (-> ch th))
mtoRemove mto with the order of the first and second hypotheses reversed. # <title> Modus Tollens </title> # <table> # (-> [ ph ] [ [ ps) # [ [ [ (-. [ ps) # (-. [ ph ] ) ] ] # </table>
(-> ph ps) , (-. ps)(-. ph)
mpbiRemove mpbi with the order of the first and second hypotheses reversed. # <title> Modus Ponens </title> # <table> # (<-> ph ] [ ps ] ) # ph ] ] ] # [ [ ps ] # </table>
(<-> ph ps) , phps
mpbirRemove mpbir with the order of the first and second hypotheses reversed. # <title> Modus Ponens </title> # <table> # (<-> ph ] [ ps ] ) # [ [ ps ] # ph ] ] ] # </table>
(<-> ph ps) , psph
mtbiRemove mtbi with the order of the first and second hypotheses reversed. # <title> Modus Tollens </title> # <table> # (<-> [ ph ] [ [ ps) # [ [ [ (-. [ ps) # (-. [ ph ] ) ] ] # </table>
(<-> ph ps) , (-. ph)(-. ps)
mtbirRemove mtbir with the order of the first and second hypotheses reversed. # <title> Modus Tollens </title> # <table> # (<-> [ ph ] [ [ ps) # [ [ [ (-. [ ps) # (-. [ ph) ] ] ] # </table>
(<-> ph ps) , (-. ps)(-. ph)
biTrue # <title> A theorem is equivalent to True </title>
ps(<-> ps (T))
biFalse # <title> A falsehood is equivalent to False </title>
(-. ph)(<-> ph (F))
notT # <title> Truth Table for Negation </title>
(<-> (-. (T)) (F))
notF # <title> Truth Table for Negation </title>
(<-> (-. (F)) (T))
imTT # <title> Truth Table </title>
(<-> (-> (T) (T)) (T))
imFT # <title> Truth Table </title>
(<-> (-> (F) (T)) (T))
imTF # <title> Truth Table </title>
(<-> (-> (T) (F)) (F))
imFF # <title> Truth Table </title>
(<-> (-> (F) (F)) (T))
biTT # <title> Truth Table </title>
(<-> (<-> (T) (T)) (T))
biTF # <title> Truth Table </title>
(<-> (<-> (T) (F)) (F))
biFT # <title> Truth Table </title>
(<-> (<-> (F) (T)) (F))
biFF # <title> Truth Table </title>
(<-> (<-> (F) (F)) (T))
anTT # <title> Truth Table </title>
(<-> (/\ (T) (T)) (T))
anFF # <title> Truth Table </title>
(<-> (/\ (F) (F)) (F))
anTF # <title> Truth Table </title>
(<-> (/\ (T) (F)) (F))
anFT # <title> Truth Table </title>
(<-> (/\ (F) (T)) (F))
orTT # <title> Truth Table </title>
(<-> (\/ (T) (T)) (T))
orFF # <title> Truth Table </title>
(<-> (\/ (F) (F)) (F))
orTF # <title> Truth Table </title>
(<-> (\/ (T) (F)) (T))
orFT # <title> Truth Table </title>
(<-> (\/ (F) (T)) (T))
eqcom # <title> Symmetric Property </title> # <suggest> right('Commute', '=') </suggest>
(<-> (= A B) (= B A))
eqcomi # <title> Symmetric Property </title> # <table> # (= <r> A <g> B) # (= <g> B <r> A) # </table>
(= A B)(= B A)
eqcomd # <title> Symmetric Property </title> # <table> # (-> ph (= <r> A <g> B)) # (-> ph (= <g> B <r> A)) # </table>
(-> ph (= A B))(-> ph (= B A))
eqcoms # <title> Symmetric Property </title>
(-> (= A B) ph)(-> (= B A) ph)
eqeq1 # <title> Equivalence over Equality </title>
(-> (= A B) (<-> (= A C) (= B C)))
eqeq2 # <title> Equivalence over Equality </title>
(-> (= A B) (<-> (= C A) (= C B)))
eqeq1i # <title> Equivalence over Equality </title> # <table> # (= A ] ] [ B ] ) # (<-> (= A ] C) ] [ (= B ] C)) # </table>
(= A B)(<-> (= A C) (= B C))
eqeq1d # <title> Equivalence over Equality </title> # <table> # (-> ph (= A ] ] [ B ] )) # (-> ph (<-> (= A ] C) ] [ (= B ] C))) # </table>
(-> ph (= A B))(-> ph (<-> (= A C) (= B C)))
eqeq2i # <title> Equivalence over Equality </title> # <table> # (= [ A ] [ [ B) # (<-> (= C [ A) ] [ (= C [ B)) # </table>
(= A B)(<-> (= C A) (= C B))
eqeq2d # <title> Equivalence over Equality </title> # <table> # (-> ph (= [ A ] [ [ B)) # (-> ph (<-> (= C [ A) ] [ (= C [ B))) # </table>
(-> ph (= A B))(-> ph (<-> (= C A) (= C B)))
eqeq12i # <title> Equivalence over Equality </title> # <table> # (= A ] ] ] [ B ] ) # [ (= [ C ] [ [ D) # (<-> (= A ] [ C ] ) (= [ B [ D)) # </table>
(= A B) , (= C D)(<-> (= A C) (= B D))
eqeq12d # <title> Transitive Property </title>
(-> ph (= A B)) , (-> ph (= C D))(-> ph (<-> (= A C) (= B D)))
eqeq12 # <title> Transitive Property </title>
(-> (/\ (= A B) (= C D)) (<-> (= A C) (= B D)))
EqReplaceEq1 # <title> Substitution </title> # <table> # (= A [ B ] ] ] ) # (= [ B ] [ C ] ) # (= A [ [ [ C ] ) # </table>
(= A B) , (= B C)(= A C)
BiReplaceImp0An0 # <title> Substitution </title> # <table> # (-> (/\ [ ph ] ] ] ch) th) # (<-> [ ph ] [ ps ] ) # (-> (/\ [ [ [ ps ] ch) th) # </table>
(-> (/\ ph ch) th) , (<-> ph ps)(-> (/\ ps ch) th)
eqtr1 # <title> Transitive Property </title> # <suggest> right('Transitive', '=') </suggest>
(-> (/\ (= B A) (= A C)) (= B C))
eqtr3 # <title> Transitive Property </title> # <table> # (= A [ B ] ] ) # (= A [ [ [ C) # [ (= B ] [ C) # </table>
(= A B) , (= A C)(= B C)
eqtr # <title> Transitive Property </title> # <table> # (= A [ B ] ] ) # [ (= B ] [ C) # (= A [ [ [ C) # </table>
(= A B) , (= B C)(= A C)
eqtr4 # <title> Transitive Property </title> # <table> # (= A [ [ B) # (= [ C [ B ) # (= A [ C ] ) # </table>
(= A B) , (= C B)(= A C)
eqtr5 # <title> Transitive Property </title> # <table> # (= A [ [ [ B) # (= A [ C ] ] ) # [ (= C ] [B ) # </table>
(= A B) , (= A C)(= C B)
eqtrd # <title> Transitive Property </title> # <table> # (-> ph (= A [ B ] ] )) # (-> ph [ (= B ] [ C)) # (-> ph (= A [ [ [ C)) # </table>
(-> ph (= A B)) , (-> ph (= B C))(-> ph (= A C))
syl5eq # <title> Syllogism </title>
(-> ph (= A B)) , (= C A)(-> ph (= C B))
syl5eqr # <title> Syllogism </title>
(-> ph (= A B)) , (= A C)(-> ph (= C B))
syl6eq # <title> Syllogism </title> # <table> # (-> ph (= A [ B ] ] )) # [ (= B ] [ C) # (-> ph (= A [ [ [ C)) # </table>
(-> ph (= A B)) , (= B C)(-> ph (= A C))
syl6eqr # <title> Syllogism </title>
(-> ph (= A B)) , (= C B)(-> ph (= A C))
sylan9eq # <title> Syllogism </title>
(-> ph (= A B)) , (-> ps (= B C))(-> (/\ ph ps) (= A C))
3eqtr4g # <title> Transitive Property </title>
(-> ph (= A B)) , (= C A) , (= D B)(-> ph (= C D))
(-> (= x A) (<-> ph ps)) , phps
ceqsal # <title> Make Implicit Substitution Explicit </title> # <summary> # A representation of explicit substitution, inferred from an implicit substitution hypothesis. # </summary>
(-> (= x A) (<-> ph ps))(<-> (A. x (-> (= x A) ph)) ps)
ceqsex # <title> Make Implicit Substitution Explicit </title> # <summary> # A representation of explicit substitution, inferred from an implicit substitution hypothesis. # </summary>
(-> (= x A) (<-> ph ps))(<-> (E. x (/\ (= x A) ph)) ps)
ceqsexim # <title> Make Implicit Substitution Explicit </title> # <summary> # A representation of explicit substitution, inferred from an implicit substitution hypothesis. # </summary>
(-> (= x A) (<-> ph ps))(-> ps (E. x ph))
(-> (/\ ph (/\ (= y A) ps)) ch)(-> (/\ ph (E. x ps)) (E. y ch))
sbaxex Version of ax-11 using E. thm (ex11 () () (-> (= x y) (-> (E. x (/\ (= x y) ph)) (E. y ph))) x y (-. ph) ax-11 y ph alnex biimpri syl5 x (-> (= x y) (-. ph)) alex biimpi syl6 con4d (= x y) ph df-an x exbii biimpi syl5)
(-> (A. x (-> (= x y) ph)) (E. x (/\ (= x y) ph)))
(-> ph (A. x (-> (= x y) ps)))(-> ph (E. x (/\ (= x y) ps)))
exlem1 # <title> Add Equality to Existential Statement </title>
(-> (E. x ph) (E. x (/\ (= x y) ph)))
exalpha1 # <title> Quantifier variable exchange </title>
(-> (= x y) (-> ph ps))(-> (E. x ph) (E. y ps))
exalpha # <title> Quantifier variable exchange </title>
(-> (= x y) (<-> ph ps))(<-> (E. x ph) (E. y ps))
alpha1 # <title> Quantifier Variable Exchange </title>
(-> (= x y) (-> ph ps))(-> (A. x ph) (A. y ps))
alpha # <title> Quantifier Variable Exchange </title>
(-> (= x y) (<-> ph ps))(<-> (A. x ph) (A. y ps))

## Substitution thms

df-subst-just # <title> Def. Proper Substitution Justification </title>
(<-> (E. y (/\ (= y A) (E. x (/\ (= x y) ph)))) (E. z (/\ (= z A) (E. x (/\ (= x z) ph)))))
df-subst # <title> Definition of Proper Substitution </title>
(<-> ([/] A x ph) (E. z (/\ (= z A) (E. x (/\ (= x z) ph)))))
df-rwff # <title> Relatively Well-Formed Formula Definition </title>
(<-> (rwff x ph) (A. x (<-> ph ([/] x x ph))))
dfsbcq # <title> Equality over substitution </title> # <summary> # If A = B, then substituting A into an expression is the same as # substituting B. # </summary>
(-> (= A B) (<-> ([/] A x ph) ([/] B x ph)))
a4sbc # <title> Substitute any number into a universal statement </title>
(-> (A. x ph) ([/] A x ph))
sbc5 # <title> Substitution as Existence </title> # <suggest> right('Equivalence', '∃') left('Equivalence', '[/]') </suggest>
(<-> ([/] A x ph) (E. x (/\ (= x A) ph)))
sbcco # <title> Double Substitution </title>
(<-> ([/] A y ([/] y x ph)) ([/] A x ph))
sbcie # <title> Make an implicit substitution explicit </title>
(-> (= x A) (<-> ph ps))(<-> ([/] A x ph) ps)
ImpReplaceBi0 # <title> Substitution </title> # <table> # (<-> [ ph ] ] ] ch) # (-> [ ph ] [ ps ] ) # (<-> [ [ [ ps ] ch) # </table>
(<-> ph ch) , (-> ph ps)(-> ch ps)
ImpReplaceBi0An1 # <title> Substitution </title> # <table> # (<-> (/\ ph [ ps ] ] ] ) th) # (-> [ ps ] [ ch ] ) # (<-> (/\ ph [ [ [ ch ] ) th) # </table>
(<-> (/\ ph ps) th) , (-> ps ch)(-> th (/\ ph ch))
cla4g # <title> Convert Arbitrary Substitution into Universal Quantifier </title>
(-> (= x A) (<-> ph ps))(-> (A. x ph) ps)
sbcbid # <title> Add Substitutions to both sides </title>
(-> ph (<-> ps ch))(-> ph (<-> ([/] A x ps) ([/] A x ch)))
sbcbii # <title> Add Substitutions to both sides </title>
(<-> ph ps)(<-> ([/] A x ph) ([/] A x ps))
(rwff x ph)(-> (= x A) (<-> ph ([/] A x ph)))
sb6rf # <title> Proposition is true if its true for every possible substitution </title>
(rwff x ph)(<-> ph (A. y (-> (= y x) ([/] y x ph))))
ImpReplaceEx1 # <title> Substitution </title> # <table> # (E. x [ ph ] ] ] ) # (-> [ ph ] [ ps ] ) # (E. x [ [ [ ps ] ) # </table>
(E. x ph) , (-> ph ps)(E. x ps)
sbcadd # <title> Existence when sum is used in substitution </title>
(-> ([/] (+ x A) y ph) (E. z ([/] z y ph)))
sbcex # <title> Existence when number is used in substitution </title>
(-> ([/] A y ph) (E. x ([/] x y ph)))
rwffi # <title> Relatively Well-Formed Formula Infernece </title>
(-> (= x y) (<-> ph ps))(rwff x ph)
rwffbii # <title> Equivalence of Relatively Well-Formed-ness </title>
(<-> ph ps)(<-> (rwff x ph) (rwff x ps))
sbcid # <title> Substitute a variable into itself </title>
(rwff x ph)(<-> ph ([/] x x ph))
BiReplaceBi1Bi0 # <title> Substitution </title> # <table> # (<-> ph (<-> [ ps ] ] ] th)) # (<-> [ ps ] [ ch ] ) # (<-> ph (<-> [ [ [ ch ] th)) # </table>
(<-> ph (<-> ps th)) , (<-> ps ch)(<-> ph (<-> ch th))
not-rwff.1 # <title> Negation Preserves Relatively Well-Formed-ness </title>
(rwff x (-. ph))(rwff x ph)
BiReplaceRwff1 # <title> Substitution </title> # <table> # (rwff x [ ph ] ] ] ) # (<-> [ ph ] [ ps ] ) # (rwff x [ [ [ ps ] ) # </table>
(rwff x ph) , (<-> ph ps)(rwff x ps)
not-rwff # <title> Negation Preserves Relatively Well-Formed-ness </title>
(rwff x ph)(rwff x (-. ph))

## Existential uniqueness

df-eu # <title> Definition of existential uniqueness </title>
(<-> (E! x ph) (E. y (A. x (<-> ph (= x y)))))
(-> ph (<-> ps ch))(-> ph (<-> (E! x ps) (E! x ch)))
(<-> ph ps)(<-> (E! x ph) (E! x ps))
eualpha # <title> Quantifier variable exchange </title>
(-> (= x y) (<-> ph ps))(<-> (E! x ph) (E! y ps))
euex # <title> Unique Existence Implies Existence </title> # <suggest> right('Infer', '∃') </suggest>
(-> (E! x ph) (E. x ph))
(-> (E! x ph) (E. y (A. x (-> ph (= x y)))))
(rwff x ph)(<-> (E! x ph) (E! y ([/] y x ph)))
(rwff x ph)(<-> (E. y (A. x (-> ph (= x y)))) (A. x (A. y (-> (/\ ph ([/] y x ph)) (= x y)))))
(rwff x ph)(<-> (E! x ph) (E. x (/\ ph (A. y (-> ([/] y x ph) (= x y))))))
(rwff x ph)(<-> (E! x ph) (/\ (E. x ph) (A. x (A. y (-> (/\ ph ([/] y x ph)) (= x y))))))
(rwff x ph)(<-> (E! x ph) (/\ (E. x ph) (E. y (A. x (-> ph (= x y))))))
tyeu # <summary> There is exactly one number equal to a given number. </summary>
(E! x (= x A))
df-mo Exists at most one
(<-> (E* x ph) (-> (E. x ph) (E! x ph)))
moalpha # <title> Quantifier variable exchange </title>
(-> (= x y) (<-> ph ps))(<-> (E* x ph) (E* y ps))
(-> ph (<-> ps ch))(-> ph (<-> (E* x ps) (E* x ch)))
(rwff x ph)(<-> (E* x ph) (E. y (A. x (-> ph (= x y)))))
(-> (= x y) (<-> ph ps))(<-> (E* x ph) (A. x (A. y (-> (/\ ph ps) (= x y)))))
(rwff x ph)(<-> (E! x ph) (/\ (E. x ph) (E* x ph)))
(-> (= x y) (<-> ph ps))(<-> (E! x ph) (/\ (E. x ph) (A. x (A. y (-> (/\ ph ps) (= x y))))))

## Basic Peano arithmetic

df-1 # <title> Definition of 1 </title>
(= (1) (S (0)))
addeq1 # <title> Add a number to both sides of an equation </title> # <table> # (-> (= <g> A <b> B) (= (+ <g> A <r> C) (+ <b> B <r> C))) # </table>
(-> (= A B) (= (+ A C) (+ B C)))
addeq2 # <title> Add a number to both sides of an equation </title>
(-> (= A B) (= (+ C A) (+ C B)))
addeq12i # <title> Equality over Addition </title> # <table> # (= A ] ] ] [ B ] ] ) # (= [ [ C ] [ [ [ D) # (= (+ A ] [ C ] ) (+ [ B ] [ D)) # </table>
(= A B) , (= C D)(= (+ A C) (+ B D))
(-> ph (= A B))(-> ph (= (+ A C) (+ B C)))
(-> ph (= A B))(-> ph (= (+ C A) (+ C B)))
(-> ph (= A B)) , (-> ph (= C D))(-> ph (= (+ A C) (+ B D)))
pa_ax2i # <title> Equality over Succession </title> # <table> # (= A ] [ B) # (= (S A) ] [ (S B) # </table>
(= A B)(= (S A) (S B))
addeq1i # <title> Add a number to both sides </title> # <table> # (= A ] ] [ B ] ) # (= (+ A ] <g> C) ] (+ [ B ] <g> C)) # </table>
(= A B)(= (+ A C) (+ B C))
addeq2i # <title> Add a number to both sides </title> # <table> # (= [ A ] [ [ B ) # (= (+ <g> C [ A ] ) [ (+ <g> C [ B)) # </table>
(= A B)(= (+ C A) (+ C B))
muleq1 # <title> Equality over Multiplication </title> # <table> # (-> (= A B) (= (* A <r> C) (* B <r> C))) # </table>
(-> (= A B) (= (* A C) (* B C)))
muleq2 # <title> Equality over Multiplication </title> # <table> # (-> (= A B) (= (* <r> C A) (* <r> C B))) # </table>
(-> (= A B) (= (* C A) (* C B)))
muleq12i # <title> Equality over Multiplication </title>
(= A B) , (= C D)(= (* A C) (* B D))
muleq1d # <title> Equality over Multiplication </title>
(-> ph (= A B))(-> ph (= (* A C) (* B C)))
muleq1i # <title> Multiply both sides by a number </title> # <table> # (= A ] [ B ] ) # (= (* A ] C) (* [ B ] C)) # </table>
(= A B)(= (* A C) (* B C))
muleq2i # <title> Multiply both sides by a number </title> # <table> # (= [ A ] [ B ) # (= (* C [ A ] ) (* C [ B)) # </table>
(= A B)(= (* C A) (* C B))
(-> ph (= A B))(-> ph (= (* C A) (* C B)))
(-> ph (= A B))(-> ph (= (S A) (S B)))
finds # <title> Proof by Induction </title>
(-> (= x (0)) (<-> ph ps)) , (-> (= x y) (<-> ph ch)) , (-> (= x (S y)) (<-> ph th)) , (-> (= x A) (<-> ph ta)) , ps , (-> ch th)ta
inductionsuc # <title> Induction </title> # <table> # ([/] (0) z ph) ] ] ] # (-> ([/] y z ph) ] [ ([/] (S y) z [ ph)) # [ [ ([/] A z [ ph) # </table> # <summary> # Induction using substitution and the successor operation. Using substitution, # we can simplify the 6 hypotheses of <a href="finds">finds</a> into just two # the basis case and the inductive step. For a similar proof, using +1 instead of # the successor see <a href="induction">induction</a>. # </summary>
([/] (0) z ph) , (-> ([/] y z ph) ([/] (S y) z ph))([/] A z ph)
pa_ax3r # <title> Additive Identity </title> # <table> # (= (+ <r> (0) A) A) # </table> # <suggest> auto-right('Simplify', '0') </suggest>
(= (+ (0) A) A)
pa_ax4r # <title> Peano Axiom 4: Addition </title> # <suggest> left('Equivalence', 'L') </suggest>
(= (+ (S A) B) (S (+ A B)))
EqReplaceImp1Eq0 # <title> Substitution </title> # <table> # (-> ph (= [ A ] ] ] C)) # (= [ A ] [ B ] ) # (-> ph (= [ [ [ B ] C)) # </table>
(-> ph (= A C)) , (= A B)(-> ph (= B C))
EqReplaceImp1Eq1 # <title> Substitution </title> # <table> # (-> ph (= A [ B ] ] ] )) # (= [ B ] [ C ] ) # (-> ph (= A [ [ [ C ] )) # </table>
(-> ph (= A B)) , (= B C)(-> ph (= A C))
(= (+ A (0)) A)
(= (+ (0) A) A)
sbc-addcom # <title> Perform a substitution </title> # <summary> # Substitute A in for y in an expression describing the # <a href="addcom">commutative property of addition</a>. # </summary>
(<-> ([/] A y (= (+ y B) (+ B y))) (= (+ A B) (+ B A)))
addcom # <title> Commutative Property of Addition </title> # <table> (= (+ <r> A <g> B) (+ <g> B <r> A)) </table> # <suggest> right('Commute', '+') </suggest>
(= (+ A B) (+ B A))
EqReplaceImp1Eq1Add1 # <title> Substitution </title> # <table> # (-> ph (= A (+ B [ C ] ] ] ))) # (= [ C ] [ D ] ) # (-> ph (= A (+ B [ [ [ D ] ))) # </table>
(-> ph (= A (+ B C))) , (= C D)(-> ph (= A (+ B D)))
EqReplaceImp1Eq0Add0 # <title> Substitution </title> # <table> # (-> ph (= (+ [ A ] ] ] C) D)) # (= [ A ] [ B ] ) # (-> ph (= (+ [ [ [ B ] C) D)) # </table>
(-> ph (= (+ A C) D)) , (= A B)(-> ph (= (+ B C) D))
sbc-addass # <title> Perform a substitution </title> # <summary> # Substitute A in for y in an expression describing the # <a href="addass">associative property of addition</a>. # </summary>
(<-> ([/] A y (= (+ (+ y B) C) (+ y (+ B C)))) (= (+ (+ A B) C) (+ A (+ B C))))
addass # <title> Associative Property </title> # <suggest> right('Associate', 'R') left('Associate', 'L') </suggest>
(= (+ (+ A B) C) (+ A (+ B C)))
pa_ax5r # <title> Multiply by 0 </title> # <suggest> auto-right('Simplify','0') </suggest>
(= (* (0) A) (0))
pa_ax6r # <title> Peano Axiom 6 Reversed </title>
(= (* (S A) B) (+ (* A B) B))
sbc-mulcom # <title> Perform a substitution </title> # <summary> # Substitute A in for y in an expression describing the # <a href="mulcom">commutative property of multiplication</a>. # </summary>
(<-> ([/] A y (= (* y B) (* B y))) (= (* A B) (* B A)))
mulcom # <title> Commutative Property </title> # <table> # (= (* <r> A <g> B) (* <g> B <r> A)) # </table> # <suggest> right('Commute', '*') </suggest>
(= (* A B) (* B A))
EqReplaceEq0 # <title> Substitution </title> # <table> # (= [ A ] ] ] C) # (= [ A ] [ B ] ) # (= [ [ [ B ] C) # </table>
(= A C) , (= A B)(= B C)
EqReplaceEq0Mul1 # <title> Substitution </title> # <table> # (= (* A [ B ] ] ] ) D) # (= [ B ] [ C ] ) # (= (* A [ [ [ C ] ) D) # </table>
(= (* A B) D) , (= B C)(= (* A C) D)
EqReplaceEq1Add0 # <title> Substitution </title> # <table> # (= A (+ [ B ] ] ] D)) # (= [ B ] [ C ] ) # (= A (+ [ [ [ C ] D)) # </table>
(= A (+ B D)) , (= B C)(= A (+ C D))
mulid # <title> Multiplicative Identity </title> # <summary> # One is the identity of multiplication. Proved from the # <a href="/peano/peano_min.ghi">peano axioms</a>. </summary> # <suggest> right('Simplify', '1') </suggest> # <table> # (= (* A <r> (1)) A) # </table> # <suggest> auto-right('Simplify') </suggest>
(= (* A (1)) A)
mulidr # <title> Multiplicative Identity </title> # <suggest> auto-right('Simplify', '1') </suggest>
(= (* (1) A) A)
(= (+ (+ A B) C) (+ (+ A C) B))
add4 # <title> Rearrange Addition Terms </title> # <table> # (= (+ (+ A <g> B) (+ <r> C D)) (+ (+ A <r> C) (+ <g> B D))) # </table>
(= (+ (+ A B) (+ C D)) (+ (+ A C) (+ B D)))
EqReplaceEq1Add1 # <title> Substitution </title> # <table> # (= A (+ B [ C ] ] ] )) # (= [ C ] [ D ] ) # (= A (+ B [ [ [ D ] )) # </table>
(= A (+ B C)) , (= C D)(= A (+ B D))
EqReplaceEq1Add1Add1 # <title> Substitution </title> # <table> # (= A (+ B (+ C [ D ] ] ] ))) # (= [ D ] [ A' ] ) # (= A (+ B (+ C [ [ [ A' ] ))) # </table>
(= A (+ B (+ C D))) , (= D A')(= A (+ B (+ C A')))
add24 # <title> Rearrange the second and fourth terms </title>
(= (+ (+ A B) (+ C D)) (+ (+ A D) (+ C B)))
(= (+ (+ A B) (+ C D)) (+ (+ A D) (+ B C)))
sbc-distr # <title> Perform a substitution </title> # <summary> # Substitute A in for y in an expression describing the # <a href="distr">distributive property</a>. # </summary>
(<-> ([/] A y (= (* y (+ B C)) (+ (* y B) (* y C)))) (= (* A (+ B C)) (+ (* A B) (* A C))))
distr # <title> Distributive Property </title> # <summary> # Distribution of addition through multiplication. See <a href="distl">distl</a> # for distribution in the opposite direction. # </summary> # <table> # (= (* <c> A (+ B C)) (+ (* <c> A B) (* <c> A C))) # </table> # <suggest> right('Distribute', 'R') left('Distribute', '-R') </suggest>
(= (* A (+ B C)) (+ (* A B) (* A C)))
distl # <title> Distributive Property </title> # <summary> # Distribution of addition through multiplication. See <a href="distr">distr</a> # for distribution in the opposite direction. # </summary> # <table> # (= (* (+ A B) <c> C) (+ (* A <c> C) (* B <c> C))) # </table> # <suggest> right('Distribute', 'L') left('Distribute', '-L') </suggest>
(= (* (+ A B) C) (+ (* A C) (* B C)))
distrl # <title> Distributive Property </title> # <table> # (= (* (+ <m> A <b> B) (+ <c> C <g> D)) (+ (+ (* <m> A <c> C) (* <b> B <c> C)) (+ (* <m> A <g> D) (* <b> B <g> D)))) # </table> # <summary> Distribution of addition through multiplication, both arguments </summary> # <suggest> right('Distribute', 'RL') left('Distribute', 'RL') </suggest>
(= (* (+ A B) (+ C D)) (+ (+ (* A C) (* B C)) (+ (* A D) (* B D))))
sbc-mulass # <title> Perform a substitution </title> # <summary> # Substitute A in for y in an expression describing the # <a href="mulass">associate property of multiplication</a>. # </summary>
(<-> ([/] A y (= (* (* y B) C) (* y (* B C)))) (= (* (* A B) C) (* A (* B C))))
EqReplaceEq1Mul0 # <title> Substitution </title> # <table> # (= A (* [ B ] ] ] D)) # (= [ B ] [ C ] ) # (= A (* [ [ [ C ] D)) # </table>
(= A (* B D)) , (= B C)(= A (* C D))
mulass # <title> Associative Property </title> # <summary> Multiplication is associative </summary> # <suggest> right('Associate', 'R') left('Associate', 'L') </suggest>
(= (* (* A B) C) (* A (* B C)))
addcan # <title> Cancellation of addition </title> # <suggest> right('Cancel', '+') </suggest>
(<-> (= (+ B A) (+ C A)) (= B C))
addcan2 # <title> Cancellation of addition </title> # <suggest> right('Cancel', '+') </suggest>
(<-> (= (+ A B) (+ A C)) (= B C))
addneq1i # <title> Inequality over Addition </title> # <table> # (-. (= [ A ] ] [ B ] )) # (-. (= (+ [ A ] C ] ) (+ [ B ] C))) # </table>
(-. (= A B))(-. (= (+ A C) (+ B C)))
addneq2i # <title> Inequality over Addition </title> # <table> # (-. (= [ A ] [ [ B )) # (-. (= (+ C [ A ] ) (+ [ C [ B))) # </table>
(-. (= A B))(-. (= (+ C A) (+ C B)))
EqReplaceEq1Suc0 # <title> Substitution </title> # <table> # (= A (S [ B ] ] ] )) # (= [ B ] [ C ] ) # (= A (S [ [ [ C ] )) # </table>
(= A (S B)) , (= B C)(= A (S C))
a1suc # <title> Successor Adds One </title> # <summary> Successor is equivalent to adding one </summary> # <suggest> right('Equivalence', '+1') </suggest>
(= (S A) (+ A (1)))
EqReplaceImp0Eq1 # <title> Substitution </title> # <table> # (-> (= A [ B ] ] ] ) ph) # (= [ B ] [ C ] ) # (-> (= A [ [ [ C ] ) ph) # </table>
(-> (= A B) ph) , (= B C)(-> (= A C) ph)
findplus1 # <title> Proof by Induction </title> # <summary> # Same as <a href="finds">finds</a> except uses +1 instead of successor. # </summary>
(-> (= x (0)) (<-> ph ps)) , (-> (= x y) (<-> ph ch)) , (-> (= x (+ y (1))) (<-> ph th)) , (-> (= x A) (<-> ph ta)) , ps , (-> ch th)ta
BiReplaceImp0An1 # <title> Substitution </title> # <table> # (-> (/\ ph [ ps ] ] ] ) th) # (<-> [ ps ] [ ch ] ) # (-> (/\ ph [ [ [ ch ] ) th) # </table>
(-> (/\ ph ps) th) , (<-> ps ch)(-> (/\ ph ch) th)
induction # <title> Proof by Induction </title> # <table> # ([/] (0) z ph) ] ] ] # (-> ([/] y z ph) ] [ ([/] (+ y (1)) z [ ph)) # [ [ ([/] A z [ ph) # </table> # <summary> # Using substitution, we simplify the 6 hypotheses of <a href="findplus1">findplus1</a> # into just two the basis case and the inductive step. For a similar proof, using the successor # instead of +1 see <a href="inductionsuc">inductionsuc</a>. # </summary>
([/] (0) z ph) , (-> ([/] y z ph) ([/] (+ y (1)) z ph))([/] A z ph)
BiReplaceImp0An1Al1 # <title> Substitution </title> # <table> # (-> (/\ ph (A. x [ ps ] ] ] )) th) # (<-> [ ps ] [ ch ] ) # (-> (/\ ph (A. x [ [ [ ch ] )) th) # </table>
(-> (/\ ph (A. x ps)) th) , (<-> ps ch)(-> (/\ ph (A. x ch)) th)
BiReplaceImp0An1Al1Imp0 # <title> Substitution </title> # <table> # (-> (/\ ph (A. x (-> [ ps ] ] ] th))) ta) # (<-> [ ps ] [ ch ] ) # (-> (/\ ph (A. x (-> [ [ [ ch ] th))) ta) # </table>
(-> (/\ ph (A. x (-> ps th))) ta) , (<-> ps ch)(-> (/\ ph (A. x (-> ch th))) ta)
BiReplaceImp0An1Al1Imp1 # <title> Substitution </title> # <table> # (-> (/\ ph (A. x (-> ps [ ch ] ] ] ))) ta) # (<-> [ ch ] [ th ] ) # (-> (/\ ph (A. x (-> ps [ [ [ th ] ))) ta) # </table>
(-> (/\ ph (A. x (-> ps ch))) ta) , (<-> ch th)(-> (/\ ph (A. x (-> ps th))) ta)
BiReplaceImp0An1Al1Imp1Al1 # <title> Substitution </title> # <table> # (-> (/\ ph (A. x (-> ps (A. y [ ch ] ] ] )))) ta) # (<-> [ ch ] [ th ] ) # (-> (/\ ph (A. x (-> ps (A. y [ [ [ th ] )))) ta) # </table>
(-> (/\ ph (A. x (-> ps (A. y ch)))) ta) , (<-> ch th)(-> (/\ ph (A. x (-> ps (A. y th)))) ta)
BiReplaceImp0An1Al1Imp1Al1Imp0 # <title> Substitution </title> # <table> # (-> (/\ ph (A. x (-> ps (A. y (-> [ ch ] ] ] ta))))) et) # (<-> [ ch ] [ th ] ) # (-> (/\ ph (A. x (-> ps (A. y (-> [ [ [ th ] ta))))) et) # </table>
(-> (/\ ph (A. x (-> ps (A. y (-> ch ta))))) et) , (<-> ch th)(-> (/\ ph (A. x (-> ps (A. y (-> th ta))))) et)
EqReplaceImp0An1Al1Imp1Al1Imp0Eq1 # <title> Substitution </title> # <table> # (-> (/\ ph (A. x (-> ps (A. y (-> (= A [ B ] ] ] ) ch))))) th) # (= [ B ] [ C ] ) # (-> (/\ ph (A. x (-> ps (A. y (-> (= A [ [ [ C ] ) ch))))) th) # </table>
(-> (/\ ph (A. x (-> ps (A. y (-> (= A B) ch))))) th) , (= B C)(-> (/\ ph (A. x (-> ps (A. y (-> (= A C) ch))))) th)
inductiond # <title> Induction </title> # <table> # (-> ph ([/] (0) z ph) ] ] ] ) # (-> ph (-> ([/] y z ph) ] [ ([/] (+ y (1)) z [ ph))) # (-> ph [ [ ([/] A z [ ph)) # </table>
(-> ps ([/] (0) z ph)) , (-> ps (-> ([/] y z ph) ([/] (+ y (1)) z ph)))(-> ps ([/] A z ph))
ImpReplaceImp1Al1 # <title> Substitution </title> # <table> # (-> ph (A. x [ ps ] ] ] )) # (-> [ ps ] [ ch ] ) # (-> ph (A. x [ [ [ ch ] )) # </table>
(-> ph (A. x ps)) , (-> ps ch)(-> ph (A. x ch))
EqReplaceEq1Mul1 # <title> Substitution </title> # <table> # (= A (* B [ C ] ] ] )) # (= [ C ] [ D ] ) # (= A (* B [ [ [ D ] )) # </table>
(= A (* B C)) , (= C D)(= A (* B D))
ImpReplaceBi1 # <title> Substitution </title> # <table> # (<-> ph [ ps ] ] ] ) # (-> [ ps ] [ ch ] ) # (<-> ph [ [ [ ch ] ) # </table>
(<-> ph ps) , (-> ps ch)(-> ph ch)
mpbi-inline # <suggest> right('Simplify', '↔') </suggest>
(-> (/\ ph (<-> ph ps)) ps)
EqReplaceNot0Eq1 # <title> Substitution </title> # <table> # (-. (= A [ B ] ] ] )) # (= [ B ] [ C ] ) # (-. (= A [ [ [ C ] )) # </table>
(-. (= A B)) , (= B C)(-. (= A C))
BiReplaceBi1Not0Ex1An1 # <title> Substitution </title> # <table> # (<-> ph (-. (E. x (/\ ps [ ch ] ] ] )))) # (<-> [ ch ] [ th ] ) # (<-> ph (-. (E. x (/\ ps [ [ [ th ] )))) # </table>
(<-> ph (-. (E. x (/\ ps ch)))) , (<-> ch th)(<-> ph (-. (E. x (/\ ps th))))
ImpReplaceEx1An1An0 # <title> Substitution </title> # <table> # (E. x (/\ ph (/\ [ ps ] ] ] th))) # (-> [ ps ] [ ch ] ) # (E. x (/\ ph (/\ [ [ [ ch ] th))) # </table>
(E. x (/\ ph (/\ ps th))) , (-> ps ch)(E. x (/\ ph (/\ ch th)))
ImpReplaceEx1An1An1 # <title> Substitution </title> # <table> # (E. x (/\ ph (/\ ps [ ch ] ] ] ))) # (-> [ ch ] [ th ] ) # (E. x (/\ ph (/\ ps [ [ [ th ] ))) # </table>
(E. x (/\ ph (/\ ps ch))) , (-> ch th)(E. x (/\ ph (/\ ps th)))
BiReplaceEx1An1An0Not0 # <title> Substitution </title> # <table> # (E. x (/\ ph (/\ (-. [ ps ] ] ] ) th))) # (<-> [ ps ] [ ch ] ) # (E. x (/\ ph (/\ (-. [ [ [ ch ] ) th))) # </table>
(E. x (/\ ph (/\ (-. ps) th))) , (<-> ps ch)(E. x (/\ ph (/\ (-. ch) th)))
(-. (= (0) (+ A (1))))
anReplaceEq # <summary> Replace an equal statement in the second part of an AND statement using the first part of the AND. </summary>
(<-> (/\ (= A B) (= B C)) (/\ (= A B) (= A C)))
(<-> (/\ (= A B) (= A C)) (/\ (= A B) (= B C)))
(-> (/\ (= A B) (-. (= B C))) (/\ (= A B) (-. (= A C))))
(<-> (/\ (= A B) (-. (= B C))) (/\ (= A B) (-. (= A C))))
(<-> (E. x (= (+ A x) B)) (E. y (= (+ A y) B)))
df-le # <title> Definition of Less Than or Equal to </title> # <suggest> right('Define', '≤') left('Simplify', '≤') </suggest>
(<-> (<= A B) (E. x (= (+ A x) B)))
df-lt # <title> Definition of Less Than </title>
(<-> (< A B) (/\ (<= A B) (-. (= A B))))
ltle # <title> Inequality Conversion </title> # <suggest> right('Infer', '≤') </suggest>
(-> (< A B) (<= A B))
ltlei # <title> Inequality Conversion </title>
(< A B)(<= A B)
ltneq # <title> Operator Conversion </title> # <suggest> right('Infer', '≠') </suggest>
(-> (< A B) (-. (= A B)))
ltneqi # <title> Inequality Conversion </title>
(< A B)(-. (= A B))
(= A B) , (-. (= B C))(-. (= A C))
(<-> (< A B) (E. x (/\ (= (+ A x) B) (-. (= x (0))))))
leeq1d # <title> Inequality Equivalence </title> # <summary> Equality deduction for less than or equal relation </summary>
(-> ph (= A B))(-> ph (<-> (<= A C) (<= B C)))
leeq2d # <title> Inequality Equivalence </title> # <summary> Equality deduction for less than or equal relation </summary> # <table> # (-> ph (= [ A ] [ [ B ] )) # (-> ph (<-> (<= C [ A ] ) (<= [ C [ B ] ))) # </table>
(-> ph (= A B))(-> ph (<-> (<= C A) (<= C B)))
leeq1 # <title> Inequality Equivalence </title>
(-> (= A B) (<-> (<= A C) (<= B C)))
leeq2 # <title> Inequality Equivalence </title>
(-> (= A B) (<-> (<= C A) (<= C B)))
leeq12 # <title> Equivalence for ≤ </title> ##
(-> (/\ (= A B) (= C D)) (<-> (<= A C) (<= B D)))
(-> ph (= A B)) , (-> ph (= C D))(-> ph (<-> (<= A C) (<= B D)))
leeq1i # <title> Equivalence over Inequality </title> # <summary> Equality inference for less than or equal relation </summary> # <table> # (= A ] ] [ B ] ) # (<-> (<= A ] C ] ) (<= [ B ] C)) # </table>
(= A B)(<-> (<= A C) (<= B C))
leeq2i # <title> Equivalence over Inequality </title> # <summary> Equality inference for less than or equal relation </summary> # <table> # (= [ A ] [ [ B ] ) # (<-> (<= C [ A ] ) (<= [ C [ B ] )) # </table>
(= A B)(<-> (<= C A) (<= C B))
leeq1ii # <title> Equivalence over Inequality </title> # <summary> Equality inference for less than or equal relation </summary> # <table> # (<= A ] ] ] [ C) # (= A ] [ B ] ] ) # (<= [ [ B ] [ C) # </table>
(<= A C) , (= A B)(<= B C)
leeq2ii # <title> Equivalence over Inequality </title> # <summary> Equality inference for less than or equal relation </summary> # <table> # (<= C [ A ] ] ) # (= [ A ] [ B) # (<= C [ [ [ B) # </table>
(<= C A) , (= A B)(<= C B)
(rwff x (<= x A))
(rwff x (<= A x))
leadd1 # <title> Addition is Monotonic </title> # <summary> Addition is strictly monotonic in the first addend </summary> # <suggest> left('Cancel', '+') </suggest>
(<-> (<= A B) (<= (+ A C) (+ B C)))
leadd2 # <title> Addition is Monotonic </title> # <summary> Addition is strictly monotonic in the second addend </summary> # <suggest> left('Cancel', '+') </suggest> # <table> # (<-> (<= A B) (<= (+ <g> C A) (+ <g> C B))) # </table>
(<-> (<= A B) (<= (+ C A) (+ C B)))
leadd1i # <title> Addition Over Inequality </title> # <table> # (<= A ] ] [ B ] ) # (<= (+ A ] C) ] (+ [ B ] C)) # </table>
(<= A B)(<= (+ A C) (+ B C))
leadd2i # <title> Addition Over Inequality </title> # <table> # (<= [ A ] [ B ) # (<= (+ C [ A ] ) (+ C [ B )) # </table>
(<= A B)(<= (+ C A) (+ C B))
leadd12 # <title> Inequality relation for two equal sums </title>
(-> (= (+ A B) (+ C D)) (<-> (<= A C) (<= D B)))
ltadd1 # <title> Addition is Monotonic </title> # <suggest> left('Cancel', '+') </suggest>
(<-> (< A B) (< (+ A C) (+ B C)))
ltadd2 # <title> Addition is Monotonic </title> # <suggest> left('Cancel', '+') </suggest>
(<-> (< A B) (< (+ C A) (+ C B)))
lteq1 # <title> Equivalence for < </title> ##
(-> (= A C) (<-> (< A B) (< C B)))
(= A C)(<-> (< A B) (< C B))
lteq2 # <title> Equivalence for < </title> ##
(-> (= B C) (<-> (< A B) (< A C)))
(-> ph (= A C))(-> ph (<-> (< A B) (< C B)))
(= B C)(<-> (< A B) (< A C))
(-> ph (= B C))(-> ph (<-> (< A B) (< A C)))
lteq2ii # <title> Equivalence over Inequality </title> # <table> # (< C [ A ] ] ) # (= [ A ] [ B) # (< C [ [ [ B) # </table>
(< C A) , (= A B)(< C B)
lteq1ii # <title> Equivalence over Inequality </title> # <summary> Equality deduction for less than relation </summary> # <table> # (< A ] ] ] [ C) # (= A ] [ B ] ] ) # (< [ [ B ] [ C) # </table>
(< A C) , (= A B)(< B C)
lteq12 # <title> Equivalence for < </title> ##
(-> (/\ (= A B) (= C D)) (<-> (< A C) (< B D)))
(-> ph (= A B)) , (-> ph (= C D))(-> ph (<-> (< A C) (< B D)))
EqReplaceLt1 # <title> Substitution </title> # <table> # (< A [ B ] ] ] ) # (= [ B ] [ C ] ) # (< A [ [ [ C ] ) # </table>
(< A B) , (= B C)(< A C)
EqReplaceLt0 # <title> Substitution </title> # <table> # (< [ A ] ] ] C) # (= [ A ] [ B ] ) # (< [ [ [ B ] C) # </table>
(< A C) , (= A B)(< B C)
EqReplaceImp1Imp1Lt1 # <title> Substitution </title> # <table> # (-> ph (-> ps (< A [ B ] ] ] ))) # (= [ B ] [ C ] ) # (-> ph (-> ps (< A [ [ [ C ] ))) # </table>
(-> ph (-> ps (< A B))) , (= B C)(-> ph (-> ps (< A C)))
EqReplaceImp1Lt1 # <title> Substitution </title> # <table> # (-> ph (< A [ B ] ] ] )) # (= [ B ] [ C ] ) # (-> ph (< A [ [ [ C ] )) # </table>
(-> ph (< A B)) , (= B C)(-> ph (< A C))
df-ge # <title> Def. Greater Than or Equal to </title> # <suggest> right('Define', '≤') left('Simplify', '≥') </suggest>
(<-> (>= A B) (-. (< A B)))
df-gt # <title> Def. Greater Than </title> # <suggest> right('Define', '<') left('Simplify', '>') </suggest>
(<-> (> A B) (-. (<= A B)))
gteq1 # <title> Equivalence for > </title> ##
(-> (= A C) (<-> (> A B) (> C B)))
(= A C)(<-> (> A B) (> C B))
gteq2 # <title> Equivalence for > </title> ##
(-> (= B C) (<-> (> A B) (> A C)))
(-> ph (= A C))(-> ph (<-> (> A B) (> C B)))
(= B C)(<-> (> A B) (> A C))
gteq12 # <title> Equivalence for > </title> ##
(-> (/\ (= A B) (= C D)) (<-> (> A C) (> B D)))
(-> ph (= B C))(-> ph (<-> (> A B) (> A C)))
(-> ph (= A B)) , (-> ph (= C D))(-> ph (<-> (> A C) (> B D)))
geeq1 # <title> Equivalence for >= </title> ##
(-> (= A C) (<-> (>= A B) (>= C B)))
(= A C)(<-> (>= A B) (>= C B))
geeq2 # <title> Equivalence for >= </title> ##
(-> (= B C) (<-> (>= A B) (>= A C)))
(-> ph (= A C))(-> ph (<-> (>= A B) (>= C B)))
(= B C)(<-> (>= A B) (>= A C))
geeq12 # <title> Equivalence for >= </title> ##
(-> (/\ (= A B) (= C D)) (<-> (>= A C) (>= B D)))
(-> ph (= B C))(-> ph (<-> (>= A B) (>= A C)))
(-> ph (= A B)) , (-> ph (= C D))(-> ph (<-> (>= A C) (>= B D)))
gtadd1i # <title> Addition Over Inequality </title> # <table> # (> A ] [ B ] ) # (> (+ A ] C) (+ [ B ] C)) # </table>
(> A B)(> (+ A C) (+ B C))
gtadd2i # <title> Addition Over Inequality </title> # <table> # (> A ] [ B ] ) # (> (+ A ] C) (+ [ B ] C)) # </table>
(> A B)(> (+ C A) (+ C B))
geadd1i # <title> Addition Over Inequality </title> # <table> # (>= A ] [ B ] ) # (>= (+ A ] C) (+ [ B ] C)) # </table>
(>= A B)(>= (+ A C) (+ B C))
geadd2i # <title> Addition Over Inequality </title> # <table> # (>= [ A ] [ B ) # (>= (+ C [ A ] ) (+ C [ B )) # </table>
(>= A B)(>= (+ C A) (+ C B))
1nle0 # <title> Basic Inequality </title>
(> (1) (0))
(<= A (+ A B))
(<= A (+ B A))
notgt # <suggest> right('Simplify', '≤') </suggest>
(<-> (-. (> A B)) (<= A B))
notge # <suggest> right('Simplify', '<') </suggest>
(<-> (-. (>= A B)) (< A B))
leid # <title> Reflexive Property </title> # <summary> Less than or equal is a reflexive relation </summary>
(<= A A)
EqReplaceGt1 # <title> Substitution </title> # <table> # (> A [ B ] ] ] ) # (= [ B ] [ C ] ) # (> A [ [ [ C ] ) # </table>
(> A B) , (= B C)(> A C)
(> (+ A (1)) A)
provele # <title> Addition implies ≤ </title>
(-> (= (+ A B) C) (<= A C))
ImpReplaceImp1Ex1Ex1 # <title> Substitution </title> # <table> # (-> ph (E. x (E. y [ ps ] ] ] ))) # (-> [ ps ] [ ch ] ) # (-> ph (E. x (E. y [ [ [ ch ] ))) # </table>
(-> ph (E. x (E. y ps))) , (-> ps ch)(-> ph (E. x (E. y ch)))
ImpReplaceImp1Ex1Ex1An0 # <title> Substitution </title> # <table> # (-> ph (E. x (E. y (/\ [ ps ] ] ] th)))) # (-> [ ps ] [ ch ] ) # (-> ph (E. x (E. y (/\ [ [ [ ch ] th)))) # </table>
(-> ph (E. x (E. y (/\ ps th)))) , (-> ps ch)(-> ph (E. x (E. y (/\ ch th))))
EqReplaceImp0Eq0 # <title> Substitution </title> # <table> # (-> (= [ A ] ] ] C) ph) # (= [ A ] [ B ] ) # (-> (= [ [ [ B ] C) ph) # </table>
(-> (= A C) ph) , (= A B)(-> (= B C) ph)
ex-nf # <title> Remove Existence Quantifier </title>
(-> (E. x ph) ph)
letr # <title> Transitive Property </title> # <suggest> right('Simplify', '≤ ≤') </suggest>
(-> (/\ (<= A B) (<= B C)) (<= A C))
(\/ (= A (0)) (E. z (= (+ (1) z) A)))
(<-> (<= A B) (\/ (= A B) (<= (+ A (1)) B)))
eqle # <title> Equality Conversion </title> # <suggest> right('Infer', '≤') </suggest>
(-> (= A B) (<= A B))
(<-> (< A B) (<= (+ A (1)) B))
(>= A (0))
lecon # <title> Converse of ≤ </title> # <suggest> right('Commute', '≤') left('Commute', '≥') </suggest>
(<-> (<= A B) (>= B A))
(<-> (<= A B) (-. (< B A)))
0le # <title> No Natural Numbers Below Zero </title>
(<= (0) A)
ltadd12 # <title> Inequality relation for two equal sums </title>
(-> (= (+ A B) (+ C D)) (<-> (< A C) (< D B)))
(rwff x (= x A))
(rwff x (= A x))
(rwff x (< x A))
(rwff x (< A x))
0ne1 # <title> Basic Inequality </title>
(-. (= (0) (1)))
lelttr # <title> Transitive law </title> # <suggest> right('Simplify', '<') </suggest>
(-> (/\ (<= A B) (< B C)) (< A C))
lelttr2 # <title> Transitive law </title> # <suggest> right('Simplify', '<') </suggest>
(-> (/\ (< A B) (<= B C)) (< A C))
(< A B)(< A (+ B C))
axlttri # <title> Inequality Conversion </title> # <suggest> left('Simplify', '<') </suggest>
(<-> (< A B) (-. (\/ (= A B) (< B A))))
leleo # <title> ≤ means < OR = </title> # <summary> Less than or equal to expressed in terms of less than or equals </summary> # <suggest> right('Equivalence', '∨') left('Simplify', '≤') </suggest>
(<-> (<= A B) (\/ (< A B) (= A B)))
ltcon # <title> Converse of < </title> # <suggest> right('Commute', '<') left('Commute', '>') </suggest>
(<-> (< A B) (> B A))
ltconi # <title> Commute Inequality </title>
(< A B)(> B A)
leconi # <title> Commute Inequality </title>
(<= A B)(>= B A)
BiReplaceBi1Or0 # <title> Substitution </title> # <table> # (<-> ph (\/ [ ps ] ] ] th)) # (<-> [ ps ] [ ch ] ) # (<-> ph (\/ [ [ [ ch ] th)) # </table>
(<-> ph (\/ ps th)) , (<-> ps ch)(<-> ph (\/ ch th))
BiReplaceBi1Or1 # <title> Substitution </title> # <table> # (<-> ph (\/ ps [ ch ] ] ] )) # (<-> [ ch ] [ th ] ) # (<-> ph (\/ ps [ [ [ th ] )) # </table>
(<-> ph (\/ ps ch)) , (<-> ch th)(<-> ph (\/ ps th))
gegeo # <title> ≥ means > OR = </title> # <summary> Greater than or equal to expressed in terms of greater than or equals </summary> # <suggest> right('Equivalence', '∨') left('Simplify', '≥') </suggest>
(<-> (>= A B) (\/ (> A B) (= A B)))
(<-> (> B A) (> (+ B C) (+ A C)))
(<-> (> B A) (> (+ C B) (+ C A)))
(<-> (>= A B) (>= (+ A C) (+ B C)))
(<-> (>= A B) (>= (+ C A) (+ C B)))
(< A B) , (< B C)(< A C)
(-. (= A (0)))(> A (0))
replaceBi1An1 # <title> Substitution </title> # <table> # (<-> ph (/\ ps [ ch ] ] ] )) # (<-> [ ch ] [ th ] ) # (<-> ph (/\ ps [ [ [ th ] )) # </table>
(<-> ph (/\ ps ch)) , (<-> ch th)(<-> ph (/\ ps th))
BiReplaceBi1Or1Not0 # <title> Substitution </title> # <table> # (<-> ph (\/ ps (-. [ ch ] ] ] ))) # (<-> [ ch ] [ th ] ) # (<-> ph (\/ ps (-. [ [ [ th ] ))) # </table>
(<-> ph (\/ ps (-. ch))) , (<-> ch th)(<-> ph (\/ ps (-. th)))
BiReplaceBi1Or1Ex1Not0 # <title> Substitution </title> # <table> # (<-> ph (\/ ps (E. x (-. [ ch ] ] ] )))) # (<-> [ ch ] [ th ] ) # (<-> ph (\/ ps (E. x (-. [ [ [ th ] )))) # </table>
(<-> ph (\/ ps (E. x (-. ch)))) , (<-> ch th)(<-> ph (\/ ps (E. x (-. th))))
BiReplaceBi1Or1Ex1 # <title> Substitution </title> # <table> # (<-> ph (\/ ps (E. x [ ch ] ] ] ))) # (<-> [ ch ] [ th ] ) # (<-> ph (\/ ps (E. x [ [ [ th ] ))) # </table>
(<-> ph (\/ ps (E. x ch))) , (<-> ch th)(<-> ph (\/ ps (E. x th)))
0notEqual1 # <title> One-Digit Inequality </title>
(-. (= (0) (1)))
ImpReplaceImp1Imp1An1 # <title> Substitution </title> # <table> # (-> ph (-> ps (/\ ch [ th ] ] ] ))) # (-> [ th ] [ ta ] ) # (-> ph (-> ps (/\ ch [ [ [ ta ] ))) # </table>
(-> ph (-> ps (/\ ch th))) , (-> th ta)(-> ph (-> ps (/\ ch ta)))
ImpReplaceImp1Imp1 # <title> Substitution </title> # <table> # (-> ph (-> ps [ ch ] ] ] )) # (-> [ ch ] [ th ] ) # (-> ph (-> ps [ [ [ th ] )) # </table>
(-> ph (-> ps ch)) , (-> ch th)(-> ph (-> ps th))
BiReplaceImp1Imp1Ex1 # <title> Substitution </title> # <table> # (-> ph (-> ps (E. x [ ch ] ] ] ))) # (<-> [ ch ] [ th ] ) # (-> ph (-> ps (E. x [ [ [ th ] ))) # </table>
(-> ph (-> ps (E. x ch))) , (<-> ch th)(-> ph (-> ps (E. x th)))
BiReplaceImp1Imp1Ex1An1 # <title> Substitution </title> # <table> # (-> ph (-> ps (E. x (/\ ch [ th ] ] ] )))) # (<-> [ th ] [ ta ] ) # (-> ph (-> ps (E. x (/\ ch [ [ [ ta ] )))) # </table>
(-> ph (-> ps (E. x (/\ ch th)))) , (<-> th ta)(-> ph (-> ps (E. x (/\ ch ta))))
axlttri2 # <title> Inequality Conversion </title> # <suggest> left('Simplify', '<') </suggest>
(<-> (< A B) (/\ (-. (= A B)) (<= A B)))
axlttri2i # <title> Convert between inequalities </title>
(-. (= A B)) , (<= A B)(< A B)
eqge # <title> Equality Conversion </title> # <suggest> right('Infer', '≥') </suggest>
(-> (= A B) (>= A B))
eqnlt # <title> Equality Conversion </title> # <suggest> right('Infer', '¬<') </suggest>
(-> (= A B) (-. (< A B)))
gtnlt # <title> Inequality Conversion </title> # <suggest> right('Infer', '¬<') </suggest>
(-> (> A B) (-. (< A B)))
gtnle # <title> Inequality Conversion </title> # <suggest> right('Infer', '¬≤') </suggest>
(-> (> A B) (-. (<= A B)))
0less1 # <title> One-Digit Inequality </title>
(< (0) (1))
replaceBi1An0Not0 # <title> Substitution </title> # <table> # (<-> ph (/\ (-. [ ps ] ] ] ) th)) # (<-> [ ps ] [ ch ] ) # (<-> ph (/\ (-. [ [ [ ch ] ) th)) # </table>
(<-> ph (/\ (-. ps) th)) , (<-> ps ch)(<-> ph (/\ (-. ch) th))
BiReplaceBi0An0 # <title> Substitution </title> # <table> # (<-> (/\ [ ph ] ] ] ch) th) # (<-> [ ph ] [ ps ] ) # (<-> (/\ [ [ [ ps ] ch) th) # </table>
(<-> (/\ ph ch) th) , (<-> ph ps)(<-> (/\ ps ch) th)
axgrtri # <title> Inequality Conversion </title> # <suggest> left('Simplify', '>') </suggest>
(<-> (> A B) (/\ (-. (= A B)) (>= A B)))
axgrtrii # <title> Inequality Conversion </title>
(-. (= A B)) , (>= A B)(> A B)
gtneq # <title> Inequality Conversion </title> # <suggest> right('Infer', '≠') </suggest>
(-> (> A B) (-. (= A B)))
BiReplaceImp1Not0 # <title> Substitution </title> # <table> # (-> ph (-. [ ps ] ] ] )) # (<-> [ ps ] [ ch ] ) # (-> ph (-. [ [ [ ch ] )) # </table>
(-> ph (-. ps)) , (<-> ps ch)(-> ph (-. ch))
ltngt # <title> Inequality Conversion </title> # <suggest> right('Infer', '¬>') </suggest>
(-> (< A B) (-. (> A B)))
ltnge # <title> Inequality Conversion </title> # <suggest> right('Infer', '¬≥') </suggest>
(-> (< A B) (-. (>= A B)))
eqngt # <title> Inequality Conversion </title> # <suggest> right('Infer', '¬>') </suggest>
(-> (= A B) (-. (> A B)))
gtge # <title> Inequality Conversion </title> # <suggest> right('Infer', '≥') </suggest>
(-> (> A B) (>= A B))
gtneqi # <title> Inequality Conversion </title>
(> A B)(-. (= A B))
gtgei # <title> Inequality Conversion </title>
(> A B)(>= A B)
ltadd1i # <title> Inequality Over Addition </title> # <table> # (< A ] [ B ] ) # (< (+ A ] C) (+ [ B ] C)) # </table>
(< A B)(< (+ A C) (+ B C))
ltadd2i # <title> Inequality Over Addition </title> # <table> # (< [ A ] [ B ) # (< (+ C [ A ] ) (+ C [ B )) # </table>
(< A B)(< (+ C A) (+ C B))
EqReplaceBi0Lt1 # <title> Substitution </title> # <table> # (<-> (< A [ B ] ] ] ) ph) # (= [ B ] [ C ] ) # (<-> (< A [ [ [ C ] ) ph) # </table>
(<-> (< A B) ph) , (= B C)(<-> (< A C) ph)
EqReplaceBi1Le0 # <title> Substitution </title> # <table> # (<-> ph (<= [ A ] ] ] C)) # (= [ A ] [ B ] ) # (<-> ph (<= [ [ [ B ] C)) # </table>
(<-> ph (<= A C)) , (= A B)(<-> ph (<= B C))
EqReplaceBi1Ex1Eq0 # <title> Substitution </title> # <table> # (<-> ph (E. x (= [ A ] ] ] C))) # (= [ A ] [ B ] ) # (<-> ph (E. x (= [ [ [ B ] C))) # </table>
(<-> ph (E. x (= A C))) , (= A B)(<-> ph (E. x (= B C)))
lemul2 # <title> Multiply Both Sides </title> # <summary> Multiplication is monotonic in its second argument </summary>
(-> (<= A B) (<= (* C A) (* C B)))
EqReplaceImp1Le0 # <title> Substitution </title> # <table> # (-> ph (<= [ A ] ] ] C)) # (= [ A ] [ B ] ) # (-> ph (<= [ [ [ B ] C)) # </table>
(-> ph (<= A C)) , (= A B)(-> ph (<= B C))
EqReplaceImp1Le1 # <title> Substitution </title> # <table> # (-> ph (<= A [ B ] ] ] )) # (= [ B ] [ C ] ) # (-> ph (<= A [ [ [ C ] )) # </table>
(-> ph (<= A B)) , (= B C)(-> ph (<= A C))
(-> (<= A B) (<= (* A C) (* B C)))
(-> (/\ (<= A B) (<= C D)) (<= (* A C) (* B D)))
(-> (<= (* A (S C)) (* B (S C))) (<= A B))
ltmul1 # <summary> Multiplication is strictly monotonic when the other multiplicand is nonzero </summary>
(-> (< (0) A) (-> (< B C) (< (* A B) (* A C))))
EqReplaceImp1Imp1Lt0 # <title> Substitution </title> # <table> # (-> ph (-> ps (< [ A ] ] ] C))) # (= [ A ] [ B ] ) # (-> ph (-> ps (< [ [ [ B ] C))) # </table>
(-> ph (-> ps (< A C))) , (= A B)(-> ph (-> ps (< B C)))
ltmul2i # <title> Multiplication is Monotonic </title> # <table> # (< B ] ] ] [ C ] ] ) # (< [ [ (0) ] [ [ [ A ) # (< (* B ] [ A ] ) (* [ C ] [ A )) # </table>
(< B C) , (< (0) A)(< (* B A) (* C A))
BiReplaceImp1Imp0 # <title> Substitution </title> # <table> # (-> ph (-> [ ps ] ] ] th)) # (<-> [ ps ] [ ch ] ) # (-> ph (-> [ [ [ ch ] th)) # </table>
(-> ph (-> ps th)) , (<-> ps ch)(-> ph (-> ch th))
BiReplaceImp1Imp1 # <title> Substitution </title> # <table> # (-> ph (-> ps [ ch ] ] ] )) # (<-> [ ch ] [ th ] ) # (-> ph (-> ps [ [ [ th ] )) # </table>
(-> ph (-> ps ch)) , (<-> ch th)(-> ph (-> ps th))
EqReplaceImp1Imp1Not0Le0 # <title> Substitution </title> # <table> # (-> ph (-> ps (-. (<= [ A ] ] ] C)))) # (= [ A ] [ B ] ) # (-> ph (-> ps (-. (<= [ [ [ B ] C)))) # </table>
(-> ph (-> ps (-. (<= A C)))) , (= A B)(-> ph (-> ps (-. (<= B C))))
EqReplaceImp1Imp1Not0Le1 # <title> Substitution </title> # <table> # (-> ph (-> ps (-. (<= A [ B ] ] ] )))) # (= [ B ] [ C ] ) # (-> ph (-> ps (-. (<= A [ [ [ C ] )))) # </table>
(-> ph (-> ps (-. (<= A B)))) , (= B C)(-> ph (-> ps (-. (<= A C))))
EqReplaceImp1Imp1Gt0 # <title> Substitution </title> # <table> # (-> ph (-> ps (> [ A ] ] ] C))) # (= [ A ] [ B ] ) # (-> ph (-> ps (> [ [ [ B ] C))) # </table>
(-> ph (-> ps (> A C))) , (= A B)(-> ph (-> ps (> B C)))
EqReplaceImp1Imp1Gt1 # <title> Substitution </title> # <table> # (-> ph (-> ps (> A [ B ] ] ] ))) # (= [ B ] [ C ] ) # (-> ph (-> ps (> A [ [ [ C ] ))) # </table>
(-> ph (-> ps (> A B))) , (= B C)(-> ph (-> ps (> A C)))
(-> (> A (0)) (-> (> C B) (> (* C A) (* B A))))
gtmul2i # <title> Multiplication is Monotonic </title> # <table> # (> B ] ] ] [ C ] ] ) # (> [ [ A ] [ [ [ (0) ) # (> (+ B ] [ A ] ) (+ [ C ] [ A )) # </table>
(> B C) , (> A (0))(> (* B A) (* C A))
lemul5 # <summary> Multiplication is strictly monotonic with nonzero multiplicand </summary>
(<-> (<= (* A (S C)) (* B (S C))) (<= A B))
lesym # <title> Same upper and lower bound implies equality </title> # <summary> Trichotomy law (may be a poor choice of name) </summary> # <suggest> left('Simplify', '=') </suggest>
(<-> (= A B) (/\ (<= A B) (<= B A)))
eqle0 # <suggest> right('Simplify', '=') </suggest>
(<-> (<= A (0)) (= A (0)))
eq0le0 # <summary> For naturals, equal to zero is equivalent to less than or equal to zero </summary>
(<-> (= A (0)) (<= A (0)))
letot # <title> Total Relationship </title> # <summary> Less than or equal is a total relationship </summary>
(\/ (<= A B) (<= B A))
BiReplaceOr1Or0 # <title> Substitution </title> # <table> # (\/ ph (\/ [ ps ] ] ] th)) # (<-> [ ps ] [ ch ] ) # (\/ ph (\/ [ [ [ ch ] th)) # </table>
(\/ ph (\/ ps th)) , (<-> ps ch)(\/ ph (\/ ch th))
BiReplaceOr1Or1 # <title> Substitution </title> # <table> # (\/ ph (\/ ps [ ch ] ] ] )) # (<-> [ ch ] [ th ] ) # (\/ ph (\/ ps [ [ [ th ] )) # </table>
(\/ ph (\/ ps ch)) , (<-> ch th)(\/ ph (\/ ps th))
inequalities # <title> A number is less, equal, or greater </title>
(\/ (< A B) (\/ (= A B) (> A B)))
neqLtGt # <title> A nonequal number is smaller or larger </title> # <suggest> left('Simplify', '≠') </suggest>
(<-> (-. (= A B)) (\/ (< A B) (> A B)))
neqLtGt2 # <title> A nonequal number is smaller or larger </title> # <suggest> left('Simplify', '≠') </suggest>
(<-> (-. (= A B)) (\/ (< A B) (< B A)))
(-> (-. (= A B)) (\/ (< A B) (> A B)))
mul0 # <summary> If a product of a nonzero number and some other number is zero, that number is zero </summary>
(-> (= (* (S A) B) (0)) (= B (0)))
mulcan # <summary> Multiplication cancellation with nonzero multiplicand </summary>
(<-> (= (* A (S C)) (* B (S C))) (= A B))
mulcan2.1 # <summary> Cancellation for multiplication (over nonzero multiplicand) </summary>
(-> (<= A B) (-> (= (* (S C) A) (* (S C) B)) (= A B)))
mulcan2 number 127.5
(-> (= (* (S A) B) (* (S A) C)) (= B C))
mulcant # <title> Cancel Multiplication </title>
(-> (< (0) C) (<-> (= (* A C) (* B C)) (= A B)))
mulcant2 # <title> Cancel Multiplication </title>
(-> (< (0) C) (<-> (= (* C A) (* C B)) (= A B)))
(<-> (e. x S) (e. x T))(=_ S T)
seqid Set equality is reflexive # <title> Reflexive Property </title>
(=_ S S)
seqcom # <title> Commutative Property of Set Equality </title> # <table> # (<-> (=_ <r> S <g> T) (=_ <g> T <r> S)) # </table> # <suggest> right('Commute', '=') </suggest>
(<-> (=_ S T) (=_ T S))
seqcomi # <title> Commutative Property of Set Equality </title> # <table> # (=_ <r> S <g> T) # (=_ <g> T <r> S) # </table>
(=_ S T)(=_ T S)
ImpReplaceBi1Al1 # <title> Substitution </title> # <table> # (<-> ph (A. x [ ps ] ] ] )) # (-> [ ps ] [ ch ] ) # (<-> ph (A. x [ [ [ ch ] )) # </table>
(<-> ph (A. x ps)) , (-> ps ch)(-> ph (A. x ch))
seqtr # <title> Transitive Property </title> # <suggest> right('Transitive', '=') </suggest>
(-> (/\ (=_ S T) (=_ T U)) (=_ S U))
eleq1i # <title> Equivalence over Element Of </title> # <table> # (= A ] ] [ B ] ) # (<-> (e. A ] S) ] [ (e. B ] S)) # </table>
(= A B)(<-> (e. A S) (e. B S))
(-> ph (= A B))(-> ph (<-> (e. A S) (e. B S)))
(-> (=_ S T) (<-> (e. A S) (e. A T)))
elseq2i # <title> Equivalence over Element Of </title> # <table> # (=_ [ S ] [ [ T ) # (<-> (e. A [ S) ] [ (e. A [ T )) # </table>
(=_ S T)(<-> (e. A S) (e. A T))
(-> ph (=_ S T))(-> ph (<-> (e. A S) (e. A T)))
BiReplaceImp1Imp1Ex1An1An0 # <title> Substitution </title> # <table> # (-> ph (-> ps (E. x (/\ ch (/\ [ th ] ] ] et))))) # (<-> [ th ] [ ta ] ) # (-> ph (-> ps (E. x (/\ ch (/\ [ [ [ ta ] et))))) # </table>
(-> ph (-> ps (E. x (/\ ch (/\ th et))))) , (<-> th ta)(-> ph (-> ps (E. x (/\ ch (/\ ta et)))))
BiReplaceImp1Imp1Ex1An0 # <title> Substitution </title> # <table> # (-> ph (-> ps (E. x (/\ [ ch ] ] ] ta)))) # (<-> [ ch ] [ th ] ) # (-> ph (-> ps (E. x (/\ [ [ [ th ] ta)))) # </table>
(-> ph (-> ps (E. x (/\ ch ta)))) , (<-> ch th)(-> ph (-> ps (E. x (/\ th ta))))
BiReplaceImp1Imp1Ex1An1An0Not0 # <title> Substitution </title> # <table> # (-> ph (-> ps (E. x (/\ ch (/\ (-. [ th ] ] ] ) et))))) # (<-> [ th ] [ ta ] ) # (-> ph (-> ps (E. x (/\ ch (/\ (-. [ [ [ ta ] ) et))))) # </table>
(-> ph (-> ps (E. x (/\ ch (/\ (-. th) et))))) , (<-> th ta)(-> ph (-> ps (E. x (/\ ch (/\ (-. ta) et)))))
BiReplaceImp1Imp1Ex1An1An1 # <title> Substitution </title> # <table> # (-> ph (-> ps (E. x (/\ ch (/\ th [ ta ] ] ] ))))) # (<-> [ ta ] [ et ] ) # (-> ph (-> ps (E. x (/\ ch (/\ th [ [ [ et ] ))))) # </table>
(-> ph (-> ps (E. x (/\ ch (/\ th ta))))) , (<-> ta et)(-> ph (-> ps (E. x (/\ ch (/\ th et)))))
ImpReplaceBi1Ex1 # <title> Substitution </title> # <table> # (<-> ph (E. x [ ps ] ] ] )) # (-> [ ps ] [ ch ] ) # (<-> ph (E. x [ [ [ ch ] )) # </table>
(<-> ph (E. x ps)) , (-> ps ch)(-> ph (E. x ch))
(rwff x ph)(<-> (e. x ({|} x ph)) ph)
(-> (= x A) (<-> ph ps))(<-> (e. A ({|} x ph)) ps)
(-> (= x A) (<-> ph ps)) , (=_ S ({|} x ph))(<-> (e. A S) ps)
elabid # <title> Remove Set Abstraction </title> # <suggest> left('Simplify', '{|}') </suggest>
(<-> (e. x ({|} x (e. x S))) (e. x S))
removeab # <suggest> right('Simplify', '{|}') </suggest>
(=_ ({|} x (e. x S)) S)
elin # <title> Element in intersection is in both sets </title> # <suggest> right('Distribute', 'R') left('Distribute', '-R') </suggest>
(<-> (e. A (i^i S T)) (/\ (e. A S) (e. A T)))
elun # <title> An element of a union is in one of the sets </title> # <suggest> right('Distribute, 'R') left('Distribute', '-R') </suggest>
(<-> (e. A (u. S T)) (\/ (e. A S) (e. A T)))
(-> (e. A S) (e. A (u. S T)))
dfss2 Problem: this theorem verified, but is not true, without constraints (S x) (T x). Consider S = {x + 1}, T = {x + 2}. The problem was that df-seq lacked these constraints, but needs them. Fixed.
(<-> (C_ S T) (A. x (-> (e. x S) (e. x T))))
BiReplaceBi1Al1 # <title> Substitution </title> # <table> # (<-> ph (A. x [ ps ] ] ] )) # (<-> [ ps ] [ ch ] ) # (<-> ph (A. x [ [ [ ch ] )) # </table>
(<-> ph (A. x ps)) , (<-> ps ch)(<-> ph (A. x ch))
BiReplaceBi1Al1Imp0 # <title> Substitution </title> # <table> # (<-> ph (A. x (-> [ ps ] ] ] th))) # (<-> [ ps ] [ ch ] ) # (<-> ph (A. x (-> [ [ [ ch ] th))) # </table>
(<-> ph (A. x (-> ps th))) , (<-> ps ch)(<-> ph (A. x (-> ch th)))
BiReplaceBi1Al1Imp1 # <title> Substitution </title> # <table> # (<-> ph (A. x (-> ps [ ch ] ] ] ))) # (<-> [ ch ] [ th ] ) # (<-> ph (A. x (-> ps [ [ [ th ] ))) # </table>
(<-> ph (A. x (-> ps ch))) , (<-> ch th)(<-> ph (A. x (-> ps th)))
(rwff x ph) , (rwff x ps)(<-> (C_ ({|} x ph) ({|} x ps)) (A. x (-> ph ps)))
BiReplaceBi1Al1Bi1 # <title> Substitution </title> # <table> # (<-> ph (A. x (<-> ps [ ch ] ] ] ))) # (<-> [ ch ] [ th ] ) # (<-> ph (A. x (<-> ps [ [ [ th ] ))) # </table>
(<-> ph (A. x (<-> ps ch))) , (<-> ch th)(<-> ph (A. x (<-> ps th)))
BiReplaceBi1Al1Bi0 # <title> Substitution </title> # <table> # (<-> ph (A. x (<-> [ ps ] ] ] th))) # (<-> [ ps ] [ ch ] ) # (<-> ph (A. x (<-> [ [ [ ch ] th))) # </table>
(<-> ph (A. x (<-> ps th))) , (<-> ps ch)(<-> ph (A. x (<-> ch th)))
abeq # <title> Alpha conversion for set abstraction </title>
(-> (= x y) (<-> ph ps))(=_ ({|} x ph) ({|} y ps))
abbi2 # <title> Equality theorem for set abstraction </title> # <suggest> right('Infer', '{|}') </suggest>
(-> (A. x (<-> ph ps)) (=_ ({|} x ph) ({|} x ps)))
abbi2i # <title> Equivalence over set abstraction </title> # <table> # (<-> [ ph ] [ [ ps ) # (=_ ({|} x [ ph) ] [ ({|} x [ ps )) # </table>
(<-> ph ps)(=_ ({|} x ph) ({|} x ps))
seqseq1 # <title> Equivalence for =_ </title> ##
(-> (=_ S U) (<-> (=_ S T) (=_ U T)))
seqseq2 # <title> Equivalence for =_ </title> ##
(-> (=_ T U) (<-> (=_ S T) (=_ S U)))
(-> ph (=_ S U))(-> ph (<-> (=_ S T) (=_ U T)))
seqseq12 # <title> Equivalence for =_ </title> ##
(-> (/\ (=_ S T) (=_ U V)) (<-> (=_ S U) (=_ T V)))
(-> ph (=_ T U))(-> ph (<-> (=_ S T) (=_ S U)))
(-> ph (=_ S T)) , (-> ph (=_ U V))(-> ph (<-> (=_ S U) (=_ T V)))
(=_ S T)(<-> (=_ S U) (=_ T U))
(=_ S T)(<-> (=_ U S) (=_ U T))
BiReplaceSeq1Ab1 # <title> Substitution </title> # <table> # (=_ S ({|} x [ ph ] ] ] )) # (<-> [ ph ] [ ps ] ) # (=_ S ({|} x [ [ [ ps ] )) # </table>
(=_ S ({|} x ph)) , (<-> ph ps)(=_ S ({|} x ps))
df-emptysetF # <title> Definition of Empty Set </suggest> # <suggest> left('Simplify', '∅') right('Define', '∅') </suggest>
(=_ ({/}) ({|} x (F)))
noel # <title> Empty Set Contains No Elements </title>
(-. (e. A ({/})))
elsnc # <title> Singleton has One Element </title> # <suggest> right('Simplify', '=') </suggest>
(<-> (e. A ({} B)) (= A B))
snid # <title> Singleton has One Element </title>
(e. A ({} A))
elSubset # <title> Subset and Element Of Equivalence <title> # <suggest> left('Simplify', '∈') right('Infer', '⊆') </suggest>
(<-> (e. A S) (C_ ({} A) S))
elSubseti # <title> Subset and Element Of Equivalence <title>
(e. A S)(C_ ({} A) S)
abbi2d # <title> Equality deduction for set abstraction </title>
(-> ph (<-> ps ch))(-> ph (=_ ({|} x ps) ({|} x ch)))
SeqReplaceSeq0 # <title> Substitution </title> # <table> # (=_ [ S ] ] ] U) # (=_ [ S ] [ T ] ) # (=_ [ [ [ T ] U) # </table>
(=_ S U) , (=_ S T)(=_ T U)
SeqReplaceImp1Seq0 # <title> Substitution </title> # <table> # (-> ph (=_ [ S ] ] ] U)) # (=_ [ S ] [ T ] ) # (-> ph (=_ [ [ [ T ] U)) # </table>
(-> ph (=_ S U)) , (=_ S T)(-> ph (=_ T U))
SeqReplaceImp1Seq1 # <title> Substitution </title> # <table> # (-> ph (=_ S [ T ] ] ] )) # (=_ [ T ] [ U ] ) # (-> ph (=_ S [ [ [ U ] )) # </table>
(-> ph (=_ S T)) , (=_ T U)(-> ph (=_ S U))
(-> (= A B) (=_ ({} A) ({} B)))
(= A B)(=_ ({} A) ({} B))
SeqReplaceSeq1 # <title> Substitution </title> # <table> # (=_ S [ T ] ] ] ) # (=_ [ T ] [ U ] ) # (=_ S [ [ [ U ] ) # </table>
(=_ S T) , (=_ T U)(=_ S U)
SeqReplacerSeq0Ab1Or0El0 # <title> Substitution </title> # <table> # (=_ U ({|} x (\/ (e. A [ S ] ] ] ) ph))) # (=_ [ S ] [ T ] ) # (=_ U ({|} x (\/ (e. A [ [ [ T ] ) ph))) # </table>
(=_ U ({|} x (\/ (e. A S) ph))) , (=_ S T)(=_ U ({|} x (\/ (e. A T) ph)))
(-. ph)(=_ ({|} x ph) ({/}))
unseq1 # <title> Equivalence for u. </title> ##
(-> (=_ S U) (=_ (u. S T) (u. U T)))
(=_ S U)(=_ (u. S T) (u. U T))
unseq2 # <title> Equivalence for u. </title> ##
(-> (=_ T U) (=_ (u. S T) (u. S U)))
(-> ph (=_ S U))(-> ph (=_ (u. S T) (u. U T)))
(=_ T U)(=_ (u. S T) (u. S U))
unseq12 # <title> Equivalence for u. </title> ##
(-> (/\ (=_ S T) (=_ U V)) (=_ (u. S U) (u. T V)))
(-> ph (=_ T U))(-> ph (=_ (u. S T) (u. S U)))
(-> ph (=_ S T)) , (-> ph (=_ U V))(-> ph (=_ (u. S U) (u. T V)))
SeqReplaceSeq0Ab1Or1El0 # <title> Substitution </title> # <table> # (=_ U ({|} x (\/ ph (e. A [ S ] ] ] )))) # (=_ [ S ] [ T ] ) # (=_ U ({|} x (\/ ph (e. A [ [ [ T ] )))) # </table>
(=_ U ({|} x (\/ ph (e. A S)))) , (=_ S T)(=_ U ({|} x (\/ ph (e. A T))))
uneq2i # <title> Equivalence over Union </title> # <table> # (=_ [ S ] [ [ T) # (=_ (u. U [ S) ] [ (u. U [ T)) # </table>
(=_ S T)(=_ (u. U S) (u. U T))
SeqReplaceSeq0Ab1An0El0 # <title> Substitution </title> # <table> # (=_ U ({|} x (/\ (e. A [ S ] ] ] ) ph))) # (=_ [ S ] [ T ] ) # (=_ U ({|} x (/\ (e. A [ [ [ T ] ) ph))) # </table>
(=_ U ({|} x (/\ (e. A S) ph))) , (=_ S T)(=_ U ({|} x (/\ (e. A T) ph)))
inseq1 # <title> Equivalence over Intersection </title>
(-> (=_ S T) (=_ (i^i S U) (i^i T U)))
(=_ S T)(=_ (i^i S U) (i^i T U))
inseq2 # <title> Equivalence for ∩ </title> ##
(-> (=_ T U) (=_ (i^i S T) (i^i S U)))
(-> ph (=_ S T))(-> ph (=_ (i^i S U) (i^i T U)))
(=_ T U)(=_ (i^i S T) (i^i S U))
(-> ph (=_ T U))(-> ph (=_ (i^i S T) (i^i S U)))
SeqReplaceSeq0Ab1An1El0 # <title> Substitution </title> # <table> # (=_ U ({|} x (/\ ph (e. A [ S ] ] ] )))) # (=_ [ S ] [ T ] ) # (=_ U ({|} x (/\ ph (e. A [ [ [ T ] )))) # </table>
(=_ U ({|} x (/\ ph (e. A S)))) , (=_ S T)(=_ U ({|} x (/\ ph (e. A T))))
SeqReplaceBi0Seq0In0 # <title> Substitution </title> # <table> # (<-> (=_ (i^i [ S ] ] ] U) V) ph) # (=_ [ S ] [ T ] ) # (<-> (=_ (i^i [ [ [ T ] U) V) ph) # </table>
(<-> (=_ (i^i S U) V) ph) , (=_ S T)(<-> (=_ (i^i T U) V) ph)
SeqReplaceBi0Seq1 # <title> Substitution </title> # <table> # (<-> (=_ S [ T ] ] ] ) ph) # (=_ [ T ] [ U ] ) # (<-> (=_ S [ [ [ U ] ) ph) # </table>
(<-> (=_ S T) ph) , (=_ T U)(<-> (=_ S U) ph)
(-> (=_ S U) (<-> (C_ S T) (C_ U T)))
(=_ S U)(<-> (C_ S T) (C_ U T))
ssseq2 # <title> Equivalence for C_ </title> ##
(-> (=_ T U) (<-> (C_ S T) (C_ S U)))
(-> ph (=_ S U))(-> ph (<-> (C_ S T) (C_ U T)))
(=_ T U)(<-> (C_ S T) (C_ S U))
ssseq12 # <title> Equivalence for C_ </title> ##
(-> (/\ (=_ S T) (=_ U V)) (<-> (C_ S U) (C_ T V)))
(-> ph (=_ T U))(-> ph (<-> (C_ S T) (C_ S U)))
(-> ph (=_ S T)) , (-> ph (=_ U V))(-> ph (<-> (C_ S U) (C_ T V)))
sseq1i # <title> Equivalence over Subset </title> # <table> # (=_ S ] ] [ T ] ) # (=_ (C_ S ] U) ] [ (C_ T ] U)) # </table>
(=_ S T)(<-> (C_ S U) (C_ T U))
SeqReplaceBi0Seq0In1 # <title> Substitution </title> # <table> # (<-> (=_ (i^i S [ T ] ] ] ) V) ph) # (=_ [ T ] [ U ] ) # (<-> (=_ (i^i S [ [ [ U ] ) V) ph) # </table>
(<-> (=_ (i^i S T) V) ph) , (=_ T U)(<-> (=_ (i^i S U) V) ph)
(=_ S T)(<-> (C_ U S) (C_ U T))
uncom # <title> Commutative Property of Union </title> # <suggest> right('Commute', '∪') </suggest>
(=_ (u. S T) (u. T S))
incom # <title> Commutative Property of Intersection </title> # <suggest> right('Commute', '∩') </suggest>
(=_ (i^i S T) (i^i T S))
inass # <title> Associative Property </title> # <suggest> right('Associate', 'R') left('Associate', 'L') </suggest>
(=_ (i^i (i^i S T) U) (i^i S (i^i T U)))
BiReplaceBi1 # <title> Substitution </title> # <table> # (<-> ph [ ps ] ] ] ) # (<-> [ ps ] [ ch ] ) # (<-> ph [ [ [ ch ] ) # </table>
(<-> ph ps) , (<-> ps ch)(<-> ph ch)
unass # <title> Associative Property </title> # <suggest> right('Associate', 'R') left('Associate', 'L') </suggest>
(=_ (u. (u. S T) U) (u. S (u. T U)))
undi # <title> Distributive Property </title> # <suggest> right('Distribute', 'L') left('Distribute', '-L') </suggest>
(=_ (u. S (i^i T U)) (i^i (u. S T) (u. S U)))
undir # <title> Distributive Property </title> # <suggest> right('Distribute', 'R') left('Distribute', '-R') </suggest>
(=_ (u. (i^i T U) S) (i^i (u. T S) (u. U S)))
indir # <title> Distributive Property </title> # <suggest> right('Distribute', 'R') left('Distribute', '-R') </suggest>
(=_ (i^i (u. T U) S) (u. (i^i T S) (i^i U S)))
indi # <title> Distributive Property </title> # <suggest> right('Distribute', 'L') left('Distribute', '-L') </suggest>
(=_ (i^i S (u. T U)) (u. (i^i S T) (i^i S U)))
unionAttach1 # <summary> If an element is in a set, it is also in the set unioned with anything. </summary> # <table> # (e. A [ S ] ) # (e. A (u. [ S ] <g> U)) # </table>
(e. A S)(e. A (u. S U))
unionAttach2 # <summary> If an element is in a set, it is also in the set unioned with anything. </summary> # <table> # (e. A ] [ S) # (e. A ] (u. <g> U [ S)) # </table>
(e. A S)(e. A (u. U S))
SeqReplaceBi1Seq0 # <title> Substitution </title> # <table> # (<-> ph (=_ [ S ] ] ] U)) # (=_ [ S ] [ T ] ) # (<-> ph (=_ [ [ [ T ] U)) # </table>
(<-> ph (=_ S U)) , (=_ S T)(<-> ph (=_ T U))
SeqReplaceBi1Seq0Un0 # <title> Substitution </title> # <table> # (<-> ph (=_ (u. [ S ] ] ] U) V)) # (=_ [ S ] [ T ] ) # (<-> ph (=_ (u. [ [ [ T ] U) V)) # </table>
(<-> ph (=_ (u. S U) V)) , (=_ S T)(<-> ph (=_ (u. T U) V))
SeqReplaceBi0Ss0 # <title> Substitution </title> # <table> # (<-> (C_ [ S ] ] ] U) ph) # (=_ [ S ] [ T ] ) # (<-> (C_ [ [ [ T ] U) ph) # </table>
(<-> (C_ S U) ph) , (=_ S T)(<-> (C_ T U) ph)
SeqReplaceBi1Seq0Un1 # <title> Substitution </title> # <table> # (<-> ph (=_ (u. S [ T ] ] ] ) V)) # (=_ [ T ] [ U ] ) # (<-> ph (=_ (u. S [ [ [ U ] ) V)) # </table>
(<-> ph (=_ (u. S T) V)) , (=_ T U)(<-> ph (=_ (u. S U) V))
unSubset # <summary> If a set is a subset of two sets, it is a subset of their union. </summary>
(C_ S U) , (C_ T U)(C_ (u. S T) U)
notInUnion # <summary> If an element is not in two sets, it is not in the union of the sets. </summary>
(-. (e. A S)) , (-. (e. A T))(-. (e. A (u. S T)))
notInSingleton # <summary> Proof that an element is not in a singleton. </summary>
(-. (= A B))(-. (e. A ({} B)))
notInSingletonUnion # <summary> Proof that an element is not in the union of singleton and another set. </summary>
(-. (= A B)) , (-. (e. A S))(-. (e. A (u. ({} B) S)))
notInSingletonUnion2 # <summary> Proof that an element is not in the union of singleton and another set. </summary>
(-. (e. A S)) , (-. (= A B))(-. (e. A (u. S ({} B))))
BiReplaceImp0Not0Not0 # <title> Substitution </title> # <table> # (-> (-. (-. [ ph ] ] ] )) ch) # (<-> [ ph ] [ ps ] ) # (-> (-. (-. [ [ [ ps ] )) ch) # </table>
(-> (-. (-. ph)) ch) , (<-> ph ps)(-> (-. (-. ps)) ch)
emptyIn1 # <title> Empty Set Intersection </title> # <suggest> auto-right('Simplify', '∅') </suggest>
(=_ (i^i ({/}) S) ({/}))
(=_ (i^i S ({/})) ({/}))
emptyss # <title> Empty Set is a Subset </title> # <suggest> full('Simplify', 'T') </suggest>
(C_ ({/}) S)
(-. (e. A S))(=_ (i^i ({} A) S) ({/}))
(-. (e. A S))(=_ (i^i S ({} A)) ({/}))
inidm # <title> Intersection is Idempotent </title> # <suggest> right('Simplify', '∩') </suggest>
(=_ (i^i S S) S)
unidm # <title> Union is Idempotent </title> # <suggest> right('Simplify', '∪') </suggest>
(=_ (u. S S) S)
(=_ (i^i S ({/})) ({/}))
(=_ (i^i ({/}) S) ({/}))
unid # <title> Union Identity </title>
(=_ (u. S ({/})) S)
unidr # <title> Union Identity </title>
(=_ (u. ({/}) S) S)
0inequalities # <title> All nonzero natural numbers are positive </title> # <suggest> right('Equivalence', '<') </suggest>
(<-> (-. (= (0) A)) (< (0) A))
0inequalities2 # <title> All nonzero natural numbers are positive </title> # <suggest> right('Equivalence', '<') </suggest>
(<-> (-. (= A (0))) (> A (0)))
BiReplaceBi1Ex1 # <title> Substitution </title> # <table> # (<-> ph (E. x [ ps ] ] ] )) # (<-> [ ps ] [ ch ] ) # (<-> ph (E. x [ [ [ ch ] )) # </table>
(<-> ph (E. x ps)) , (<-> ps ch)(<-> ph (E. x ch))
BiReplaceBi1Ex1An1 # <title> Substitution </title> # <table> # (<-> ph (E. x (/\ ps [ ch ] ] ] ))) # (<-> [ ch ] [ th ] ) # (<-> ph (E. x (/\ ps [ [ [ th ] ))) # </table>
(<-> ph (E. x (/\ ps ch))) , (<-> ch th)(<-> ph (E. x (/\ ps th)))
(<-> (< A B) (E. x (/\ (= (+ A x) B) (> x (0)))))
(=_ ({|} x (/\ (<= A x) (<= x B))) ({|} y (/\ (<= A y) (<= y B))))
df-interval # <title> Natural Number Interval Definition </title> # <suggest> right('Define', '{...}') left('Simplify', '{...}') </suggest>
(=_ ({...} A B) ({|} x (/\ (<= A x) (<= x B))))
(-> (= A C) (=_ ({...} A B) ({...} C B)))
intervaleq1i # <title> Equivalence over Interval </title> # <table> # (= A ] ] [ B ] ) # (=_ ({...} A ] C ] ) ({...} [ B ] C)) # </table>
(= A C)(=_ ({...} A B) ({...} C B))
(-> (= B C) (=_ ({...} A B) ({...} A C)))
intervaleq2i # <title> Equality over Interval </title> # <table> # (= A ] ] [ B ] ) # (<-> ({...} A ] C ] ) ({...} [ B ] C)) # </table>
(= B C)(=_ ({...} A B) ({...} A C))
(-> (/\ (= A B) (= C D)) (=_ ({...} A C) ({...} B D)))
BiReplaceBi1An0Or0 # <title> Substitution </title> # <table> # (<-> ph (/\ (\/ [ ps ] ] ] th) ta)) # (<-> [ ps ] [ ch ] ) # (<-> ph (/\ (\/ [ [ [ ch ] th) ta)) # </table>
(<-> ph (/\ (\/ ps th) ta)) , (<-> ps ch)(<-> ph (/\ (\/ ch th) ta))
BiReplaceBi1An0Or1 # <title> Substitution </title> # <table> # (<-> ph (/\ (\/ ps [ ch ] ] ] ) ta)) # (<-> [ ch ] [ th ] ) # (<-> ph (/\ (\/ ps [ [ [ th ] ) ta)) # </table>
(<-> ph (/\ (\/ ps ch) ta)) , (<-> ch th)(<-> ph (/\ (\/ ps th) ta))
BiReplaceBi1Or1Or1 # <title> Substitution </title> # <table> # (<-> ph (\/ ps (\/ ch [ th ] ] ] ))) # (<-> [ th ] [ ta ] ) # (<-> ph (\/ ps (\/ ch [ [ [ ta ] ))) # </table>
(<-> ph (\/ ps (\/ ch th))) , (<-> th ta)(<-> ph (\/ ps (\/ ch ta)))
ImpReplaceBi1Or1Or0An1 # <title> Substitution </title> # <table> # (<-> ph (\/ ps (\/ (/\ ch [ th ] ] ] ) et))) # (-> [ th ] [ ta ] ) # (<-> ph (\/ ps (\/ (/\ ch [ [ [ ta ] ) et))) # </table>
(<-> ph (\/ ps (\/ (/\ ch th) et))) , (-> th ta)(-> ph (\/ ps (\/ (/\ ch ta) et)))
BiReplaceImp1Or0 # <title> Substitution </title> # <table> # (-> ph (\/ [ ps ] ] ] th)) # (<-> [ ps ] [ ch ] ) # (-> ph (\/ [ [ [ ch ] th)) # </table>
(-> ph (\/ ps th)) , (<-> ps ch)(-> ph (\/ ch th))
ImpReplaceImp1Or0Or1An0 # <title> Substitution </title> # <table> # (-> ph (\/ (\/ ps (/\ [ ch ] ] ] ta)) et)) # (-> [ ch ] [ th ] ) # (-> ph (\/ (\/ ps (/\ [ [ [ th ] ta)) et)) # </table>
(-> ph (\/ (\/ ps (/\ ch ta)) et)) , (-> ch th)(-> ph (\/ (\/ ps (/\ th ta)) et))
BiReplaceImp1Or0Or1 # <title> Substitution </title> # <table> # (-> ph (\/ (\/ ps [ ch ] ] ] ) ta)) # (<-> [ ch ] [ th ] ) # (-> ph (\/ (\/ ps [ [ [ th ] ) ta)) # </table>
(-> ph (\/ (\/ ps ch) ta)) , (<-> ch th)(-> ph (\/ (\/ ps th) ta))
ImpReplaceImp1Or0An1 # <title> Substitution </title> # <table> # (-> ph (\/ (/\ ps [ ch ] ] ] ) ta)) # (-> [ ch ] [ th ] ) # (-> ph (\/ (/\ ps [ [ [ th ] ) ta)) # </table>
(-> ph (\/ (/\ ps ch) ta)) , (-> ch th)(-> ph (\/ (/\ ps th) ta))
BiReplaceBi0Imp1 # <title> Substitution </title> # <table> # (<-> (-> ph [ ps ] ] ] ) th) # (<-> [ ps ] [ ch ] ) # (<-> (-> ph [ [ [ ch ] ) th) # </table>
(<-> (-> ph ps) th) , (<-> ps ch)(<-> (-> ph ch) th)
BiReplaceBi0Imp1Or0 # <title> Substitution </title> # <table> # (<-> (-> ph (\/ [ ps ] ] ] th)) ta) # (<-> [ ps ] [ ch ] ) # (<-> (-> ph (\/ [ [ [ ch ] th)) ta) # </table>
(<-> (-> ph (\/ ps th)) ta) , (<-> ps ch)(<-> (-> ph (\/ ch th)) ta)
BiReplaceBi0Imp1Or0An1 # <title> Substitution </title> # <table> # (<-> (-> ph (\/ (/\ ps [ ch ] ] ] ) ta)) et) # (<-> [ ch ] [ th ] ) # (<-> (-> ph (\/ (/\ ps [ [ [ th ] ) ta)) et) # </table>
(<-> (-> ph (\/ (/\ ps ch) ta)) et) , (<-> ch th)(<-> (-> ph (\/ (/\ ps th) ta)) et)
(-> (/\ (<= A x) (<= x A)) (= x A))
BiReplaceImp1An0Not0 # <title> Substitution </title> # <table> # (-> ph (/\ (-. [ ps ] ] ] ) th)) # (<-> [ ps ] [ ch ] ) # (-> ph (/\ (-. [ [ [ ch ] ) th)) # </table>
(-> ph (/\ (-. ps) th)) , (<-> ps ch)(-> ph (/\ (-. ch) th))
BiReplaceImp1An0 # <title> Substitution </title> # <table> # (-> ph (/\ [ ps ] ] ] th)) # (<-> [ ps ] [ ch ] ) # (-> ph (/\ [ [ [ ch ] th)) # </table>
(-> ph (/\ ps th)) , (<-> ps ch)(-> ph (/\ ch th))
(<-> (= x A) (/\ (<= A x) (<= x A)))
intervalSn # <title> Interval with One Element </title> # <suggest> right('Simplify', '{}') </suggest>
(=_ ({...} A A) ({} A))
SeqReplaceSeq0Ab1Or0El1 # <title> Substitution </title> # <table> # (=_ ({|} x (\/ (e. A [ S ] ] ] ) ph)) U) # (=_ [ S ] [ T ] ) # (=_ ({|} x (\/ (e. A [ [ [ T ] ) ph)) U) # </table>
(=_ ({|} x (\/ (e. A S) ph)) U) , (=_ S T)(=_ ({|} x (\/ (e. A T) ph)) U)
BiReplaceSeq0Ab1Or0 # <title> Substitution </title> # <table> # (=_ ({|} x (\/ [ ph ] ] ] ch)) S) # (<-> [ ph ] [ ps ] ) # (=_ ({|} x (\/ [ [ [ ps ] ch)) S) # </table>
(=_ ({|} x (\/ ph ch)) S) , (<-> ph ps)(=_ ({|} x (\/ ps ch)) S)
SeqReplaceSeq0Ab1Or1El1 # <title> Substitution </title> # <table> # (=_ ({|} x (\/ ph (e. A [ S ] ] ] ))) U) # (=_ [ S ] [ T ] ) # (=_ ({|} x (\/ ph (e. A [ [ [ T ] ))) U) # </table>
(=_ ({|} x (\/ ph (e. A S))) U) , (=_ S T)(=_ ({|} x (\/ ph (e. A T))) U)
BiReplaceSeq0Ab1Or1 # <title> Substitution </title> # <table> # (=_ ({|} x (\/ ph [ ps ] ] ] )) S) # (<-> [ ps ] [ ch ] ) # (=_ ({|} x (\/ ph [ [ [ ch ] )) S) # </table>
(=_ ({|} x (\/ ph ps)) S) , (<-> ps ch)(=_ ({|} x (\/ ph ch)) S)
BiReplaceSeq1Ab1Or0An1 # <title> Substitution </title> # <table> # (=_ S ({|} x (\/ (/\ ph [ ps ] ] ] ) th))) # (<-> [ ps ] [ ch ] ) # (=_ S ({|} x (\/ (/\ ph [ [ [ ch ] ) th))) # </table>
(=_ S ({|} x (\/ (/\ ph ps) th))) , (<-> ps ch)(=_ S ({|} x (\/ (/\ ph ch) th)))
BiReplaceSeq1Ab1An1 # <title> Substitution </title> # <table> # (=_ S ({|} x (/\ ph [ ps ] ] ] ))) # (<-> [ ps ] [ ch ] ) # (=_ S ({|} x (/\ ph [ [ [ ch ] ))) # </table>
(=_ S ({|} x (/\ ph ps))) , (<-> ps ch)(=_ S ({|} x (/\ ph ch)))
BiReplaceSeq1Ab1Or1An1 # <title> Substitution </title> # <table> # (=_ S ({|} x (\/ ph (/\ ps [ ch ] ] ] )))) # (<-> [ ch ] [ th ] ) # (=_ S ({|} x (\/ ph (/\ ps [ [ [ th ] )))) # </table>
(=_ S ({|} x (\/ ph (/\ ps ch)))) , (<-> ch th)(=_ S ({|} x (\/ ph (/\ ps th))))
BiReplaceSeq1Ab1Or1 # <title> Substitution </title> # <table> # (=_ S ({|} x (\/ ph [ ps ] ] ] ))) # (<-> [ ps ] [ ch ] ) # (=_ S ({|} x (\/ ph [ [ [ ch ] ))) # </table>
(=_ S ({|} x (\/ ph ps))) , (<-> ps ch)(=_ S ({|} x (\/ ph ch)))
BiReplaceSeq1Ab1Or1Or1 # <title> Substitution </title> # <table> # (=_ S ({|} x (\/ ph (\/ ps [ ch ] ] ] )))) # (<-> [ ch ] [ th ] ) # (=_ S ({|} x (\/ ph (\/ ps [ [ [ th ] )))) # </table>
(=_ S ({|} x (\/ ph (\/ ps ch)))) , (<-> ch th)(=_ S ({|} x (\/ ph (\/ ps th))))
BiReplaceNot0An1 # <title> Substitution </title> # <table> # (-. (/\ ph [ ps ] ] ] )) # (<-> [ ps ] [ ch ] ) # (-. (/\ ph [ [ [ ch ] )) # </table>
(-. (/\ ph ps)) , (<-> ps ch)(-. (/\ ph ch))
BiReplaceSeq1Ab1An1Or0 # <title> Substitution </title> # <table> # (=_ S ({|} x (/\ ph (\/ [ ps ] ] ] th)))) # (<-> [ ps ] [ ch ] ) # (=_ S ({|} x (/\ ph (\/ [ [ [ ch ] th)))) # </table>
(=_ S ({|} x (/\ ph (\/ ps th)))) , (<-> ps ch)(=_ S ({|} x (/\ ph (\/ ch th))))
BiReplaceSeq1Ab1An1Or1 # <title> Substitution </title> # <table> # (=_ S ({|} x (/\ ph (\/ ps [ ch ] ] ] )))) # (<-> [ ch ] [ th ] ) # (=_ S ({|} x (/\ ph (\/ ps [ [ [ th ] )))) # </table>
(=_ S ({|} x (/\ ph (\/ ps ch)))) , (<-> ch th)(=_ S ({|} x (/\ ph (\/ ps th))))
BiReplaceNot0Not0 # <title> Substitution </title> # <table> # (-. (-. [ ph ] ] ] )) # (<-> [ ph ] [ ps ] ) # (-. (-. [ [ [ ps ] )) # </table>
(-. (-. ph)) , (<-> ph ps)(-. (-. ps))
BiReplaceSeq1Ab1An0 # <title> Substitution </title> # <table> # (=_ S ({|} x (/\ [ ph ] ] ] ch))) # (<-> [ ph ] [ ps ] ) # (=_ S ({|} x (/\ [ [ [ ps ] ch))) # </table>
(=_ S ({|} x (/\ ph ch))) , (<-> ph ps)(=_ S ({|} x (/\ ps ch)))
(-. (<= A B))(=_ ({...} A B) ({/}))

## Ordered pair

nalexi number 2.5
(-. (A. x (-. ph)))(E. x ph)
impexpi number 4.0
(-> (/\ ph ps) ch)(-> ps (-> ph ch))
impexpi2 # <title> Import-Export Theorem </title> # <table> # (-> (/\ ph [ ps ] ) [ ch) # (-> ph (-> [ ps ] [ ch)) # </table>
(-> (/\ ph ps) ch)(-> ph (-> ps ch))
lemul3lem1 number 7.0
(-> ph (= (+ A B) C))(-> ph (<= A C))
lemul3lem2 number 8.0
(-> ph (<= (+ A B) C))(-> ph (<= A C))
exani number 9.0
(-> ph ps)(-> (E. x ph) ps)
lemul3 number 10.0 # <title> Inequality & Multiplication </title>
(-> (/\ (<= A B) (<= C D)) (<= (* A C) (* B D)))
lttr number 11.0 # <title> Transitive Property </title> # <suggest> right('Simplify', '< <') </suggest>
(-> (/\ (< A B) (< B C)) (< A C))
letradd # <title> Combine Inequalities </title>
(-> (/\ (<= A B) (<= C D)) (<= (+ A C) (+ B D)))
lttradd # <title> Combine Inequalities </title>
(-> (/\ (< A B) (< C D)) (< (+ A C) (+ B D)))
lelttradd # <title> Combine Inequalities </title>
(-> (/\ (<= A B) (< C D)) (< (+ A C) (+ B D)))
(= A (+ B (+ C D)))(= A (+ (+ B C) D))
(-> (/\ (< A B) (< C D)) (< (* A C) (* B D)))
(-> (/\ (> A B) (> C D)) (> (* A C) (* B D)))
sqle # <summary> Squaring (of nonnegative numbers) is monotonic </summary>
(<-> (<= A B) (<= (* A A) (* B B)))
ltTrlti # <title> Transitive Inequality </title>
(< A B)(-> (< B C) (< A C))
leTreti # <title> Transitive Inequality </title>
(<= A B)(-> (<= B C) (<= A C))
getr # <title> Transitive Inequality </title> # <suggest> right('Transitive', '≥') </suggest>
(-> (/\ (>= A B) (>= B C)) (>= A C))
gttr # <title> Transitive Inequality </title> # <suggest> right('Transitive', '>') </suggest>
(-> (/\ (> A B) (> B C)) (> A C))
gtgetr # <title> Transitive Inequality </title> # <suggest> right('Transitive', '>') </suggest>
(-> (/\ (> C B) (>= B A)) (> C A))
gegttr # <title> Transitive Inequality </title> # <suggest> right('Transitive', '>') </suggest>
(-> (/\ (>= C B) (> B A)) (> C A))
ltTrlt # <title> Transitive Inequality </title> # <table> # (< [ B ] [ [ C ] ) # (-> (< A [ B ] ) (< [ A [ C ] )) # </table>
(< B C)(-> (< A B) (< A C))
ltTrle # <title> Transitive Inequality </title> # <table> # (< [ B ] [ [ C ] ) # (-> (<= A [ B ] ) (< [ A [ C ] )) # </table>
(< B C)(-> (<= A B) (< A C))
ltTreq # <title> Transitive Inequality </title> # <table> # (< [ B ] [ [ C ] ) # (-> (= A [ B ] ) (< [ A [ C ] )) # </table>
(< B C)(-> (= A B) (< A C))
leTreq # <title> Transitive Inequality </title> # <table> # (<= [ B ] [ [ C ] ) # (-> (= A [ B ] ) (<= [ A [ C ] )) # </table>
(<= B C)(-> (= A B) (<= A C))
leTrlt # <title> Transitive Inequality </title> # <table> # (<= [ B ] [ [ C ] ) # (-> (= A [ B ] ) (<= [ A [ C ] )) # </table>
(<= B C)(-> (< A B) (< A C))
leTrle # <title> Transitive Inequality </title> # <table> # (<= [ B ] [ [ C ] ) # (-> (<= A [ B ] ) (<= [ A [ C ] )) # </table>
(<= B C)(-> (<= A B) (<= A C))
gtTrgt # <title> Transitive Inequality </title> # <table> # (-. (> [ B ] [ [ C ] )) # (-> (> A [ B ] ) (> [ A [ C ] )) # </table>
(> B C)(-> (> A B) (> A C))
geTrgt # <title> Transitive Inequality </title> # <table> # (>= [ B ] [ [ C ] ) # (-> (> A [ B ] ) (> [ A [ C ] )) # </table>
(>= B C)(-> (> A B) (> A C))
geTreq # <title> Transitive Inequality </title> # <table> # (>= [ B ] [ [ C ] ) # (-> (= A [ B ] ) (>= [ A [ C ] )) # </table>
(>= B C)(-> (= A B) (>= A C))
gtTreq # <title> Transitive Inequality </title> # <table> # (> [ B ] [ [ C ] ) # (-> (= A [ B ] ) (> [ A [ C ] )) # </table>
(> B C)(-> (= A B) (> A C))
gtTrge # <title> Transitive Inequality </title> # <table> # (> [ B ] [ [ C ] ) # (-> (>= A [ B ] )) (> [ A [ C ] )) # </table>
(> B C)(-> (>= C A) (> B A))
geTrge # <title> Transitive Inequality </title> # <table> # (>= [ B ] [ [ C ] ) # (-> (>= A [ B ] ) (>= [ A [ C ] )) # </table>
(>= B C)(-> (>= A B) (>= A C))
ImpReplaceBi0Ex1 # <title> Substitution </title>
(<-> (E. x ph) ch) , (-> ph ps)(-> ch (E. x ps))
ImpReplaceBi0Ex1An0 # <title> Substitution </title>
(<-> (E. x (/\ ph ch)) th) , (-> ph ps)(-> th (E. x (/\ ps ch)))
GtReplaceBi0Ex1An0Eq1 # <title> Substitution </title>
(<-> (E. x (/\ (= A B) ph)) ps) , (> B C)(-> ps (E. x (/\ (> A C) ph)))
1notEqual0 # <title> One-Digit Inequality </title>
(-. (= (1) (0)))
1greater0 # <title> One-Digit Inequality </title>
(> (1) (0))
(-> (= (+ A (+ C (1))) B) (< A B))
BiReplaceBi1Ex1Ex1 # <title> Substitution </title> # <table> # (<-> ph (E. x (E. y [ ps ] ] ] ))) # (<-> [ ps ] [ ch ] ) # (<-> ph (E. x (E. y [ [ [ ch ] ))) # </table>
(<-> ph (E. x (E. y ps))) , (<-> ps ch)(<-> ph (E. x (E. y ch)))
BiReplaceBi1Ex1Ex1An1 # <title> Substitution </title> # <table> # (<-> ph (E. x (E. y (/\ ps [ ch ] ] ] )))) # (<-> [ ch ] [ th ] ) # (<-> ph (E. x (E. y (/\ ps [ [ [ th ] )))) # </table>
(<-> ph (E. x (E. y (/\ ps ch)))) , (<-> ch th)(<-> ph (E. x (E. y (/\ ps th))))
BiReplaceBi1Ex1Ex1An0 # <title> Substitution </title> # <table> # (<-> ph (E. x (E. y (/\ [ ps ] ] ] th)))) # (<-> [ ps ] [ ch ] ) # (<-> ph (E. x (E. y (/\ [ [ [ ch ] th)))) # </table>
(<-> ph (E. x (E. y (/\ ps th)))) , (<-> ps ch)(<-> ph (E. x (E. y (/\ ch th))))
ImpReplaceBi1Ex1Ex1 # <title> Substitution </title> # <table> # (<-> ph (E. x (E. y [ ps ] ] ] ))) # (-> [ ps ] [ ch ] ) # (<-> ph (E. x (E. y [ [ [ ch ] ))) # </table>
(<-> ph (E. x (E. y ps))) , (-> ps ch)(-> ph (E. x (E. y ch)))
(-> (E. x (/\ (e. x S) (-. (e. x T)))) (-. (=_ S T)))
(<-> ([/] A x (/\ (e. x S) (-. (e. x T)))) (/\ (e. A S) (-. (e. A T))))
BiReplaceImp1Ex1 # <title> Substitution </title> # <table> # (-> ph (E. x [ ps ] ] ] )) # (<-> [ ps ] [ ch ] ) # (-> ph (E. x [ [ [ ch ] )) # </table>
(-> ph (E. x ps)) , (<-> ps ch)(-> ph (E. x ch))
elnotseq # <title> Sets are not equal </title> # <suggest> right('Infer', '≠') </suggest>
(-> (/\ (e. A S) (-. (e. A T))) (-. (=_ S T)))
elnotseqcom # <title> Sets are not equal </title>
(-> (/\ (e. A S) (-. (e. A T))) (-. (=_ T S)))
(e. A S) , (-. (e. A T))(E. x (/\ (e. x S) (-. (e. x T))))
notSeq # <title> Sets are not equal </title>
(e. A S) , (-. (e. A T))(-. (=_ S T))
(-> (E. x (/\ (e. x T) (-. (e. x S)))) (-. (=_ S T)))
notSeq2 # <title> Sets are not equal </title>
(-. (e. A S)) , (e. A T)(-. (=_ S T))
BiReplaceBi1Not0Al1 # <title> Substitution </title> # <table> # (<-> ph (-. (A. x [ ps ] ] ] ))) # (<-> [ ps ] [ ch ] ) # (<-> ph (-. (A. x [ [ [ ch ] ))) # </table>
(<-> ph (-. (A. x ps))) , (<-> ps ch)(<-> ph (-. (A. x ch)))
(-> (E. x (/\ (e. x S) (-. (e. x T)))) (-. (C_ S T)))
BiReplaceImp1Al1 # <title> Substitution </title> # <table> # (-> ph (A. x [ ps ] ] ] )) # (<-> [ ps ] [ ch ] ) # (-> ph (A. x [ [ [ ch ] )) # </table>
(-> ph (A. x ps)) , (<-> ps ch)(-> ph (A. x ch))
BiReplaceImp1Al1Not0 # <title> Substitution </title> # <table> # (-> ph (A. x (-. [ ps ] ] ] ))) # (<-> [ ps ] [ ch ] ) # (-> ph (A. x (-. [ [ [ ch ] ))) # </table>
(-> ph (A. x (-. ps))) , (<-> ps ch)(-> ph (A. x (-. ch)))
subsetnoextra # <title> Subsets cannot have additional elements </title>
(-> (/\ (C_ S T) (-. (e. A T))) (-. (e. A S)))
(C_ S S)
(=_ (i^i S (u. S T)) S)
ssUnion # <title> Subset of a Union </title>
(C_ S (u. S T))
notSs # <title> Not a Subset </title>
(e. A S) , (-. (e. A T))(-. (C_ S T))
dfpssi # <title> Combine Set Inclusions </title>
(C_ S T) , (-. (=_ S T))(C. S T)
pssSs # <title> Proper Subset Implies Subset </title> # <suggest> right('Infer', '⊆') </suggest>
(-> (C. S T) (C_ S T))
pssNeq # <title> Proper Subset Implies Inequality </title> # <suggest> right('Infer', '≠') </suggest>
(-> (C. S T) (-. (=_ S T)))
nssNpss # <title> Not Subset Implies Not Proper Subset </title> # <suggest> right('Infer', '⊄') </suggest>
(-> (-. (C_ S T)) (-. (C. S T)))
seqNpss # <title> Equality Implies Not Proper Subset </title> # <suggest> right('Infer', '⊄') </suggest>
(-> (=_ S T) (-. (C. S T)))
seqss # <title> Two equal set are also subsets </title>
(-> (=_ S T) (C_ S T))
muleq12d number 17.0
(-> ph (= A B)) , (-> ph (= C D))(-> ph (= (* A C) (* B D)))
sqrtlem5 number 18.0
(E. x (/\ (<= (* x x) (0)) (< (0) (* (S x) (S x)))))
sqrtlem1 number 19.0
(-> (= y A) (<-> (E. x (/\ (<= (* x x) y) (< y (* (S x) (S x))))) (E. x (/\ (<= (* x x) A) (< A (* (S x) (S x)))))))
ancomd # <title> Commutation of conjuncts in consequent </title>
(-> ph (/\ ps ch))(-> ph (/\ ch ps))
sqrtlem6 number 24.0
(-> (E. x (/\ (<= (* x x) y) (< y (* (S x) (S x))))) (E. x (/\ (<= (* x x) (S y)) (< (S y) (* (S x) (S x))))))
sqrt # <title> Square root </title>
(E. x (/\ (<= (* x x) A) (< A (* (S x) (S x)))))
sqlt # <title> Square root is monotonic </title>
(<-> (< A B) (< (* A A) (* B B)))
lesuc number 28.0
(<-> (< A (S B)) (<= A B))
lePlus1 # <title> Convert between ≤ and < </title> # <suggest> right('Equivalence', '≤-1') left('Equivalence', '<') </suggest>
(<-> (< A (+ B (1))) (<= A B))
gePlus1 # <suggest> right('Equivalence', '≥-1') left('Equivalence', '>') </suggest>
(<-> (> (+ B (1)) A) (>= B A))
ltle2 # <title> Convert between ≤ and < </title> # <suggest> right('Equivalence', '≤+1') left('Equivalence', '<-1') </suggest>
(<-> (< A B) (<= (+ A (1)) B))
gtge2 # <title> Convert between ≥ and > </title> # <suggest> right('Equivalence', '≥') </suggest>
(<-> (> A B) (>= A (+ B (1))))
EqReplaceBi1Ge1 # <title> Substitution </title> # <table> # (<-> ph (>= A [ B ] ] ] )) # (= [ B ] [ C ] ) # (<-> ph (>= A [ [ [ C ] )) # </table>
(<-> ph (>= A B)) , (= B C)(<-> ph (>= A C))
EqReplaceImp1Ex1Eq0 # <title> Substitution </title> # <table> # (-> ph (E. x (= [ A ] ] ] C))) # (= [ A ] [ B ] ) # (-> ph (E. x (= [ [ [ B ] C))) # </table>
(-> ph (E. x (= A C))) , (= A B)(-> ph (E. x (= B C)))
(-> (< A B) (E. y (= (+ (+ A y) (1)) B)))
hasPredecessor # <title> Numbers above 0 have predecessors </title>
(<-> (< (0) B) (E. x (= (S x) B)))
sqrtuniq # <title> Square root is unique </title>
(-> (/\ (/\ (<= (* A A) B) (< B (* (S A) (S A)))) (/\ (<= (* C C) B) (< B (* (S C) (S C))))) (= A C))

## Iota

(=_ S T)(= (iota S) (iota T))
(-> ph (=_ S T))(-> ph (= (iota S) (iota T)))
SeqReplaceEq1Iota0 # <title> Substitution </title> # <table> # (= A (iota [ S ] ] ] )) # (=_ [ S ] [ T ] ) # (= A (iota [ [ [ T ] )) # </table>
(= A (iota S)) , (=_ S T)(= A (iota T))
BiReplaceEq1Iota0Ab1 # <title> Substitution </title> # <table> # (= A (iota ({|} x [ ph ] ] ] ))) # (<-> [ ph ] [ ps ] ) # (= A (iota ({|} x [ [ [ ps ] ))) # </table>
(= A (iota ({|} x ph))) , (<-> ph ps)(= A (iota ({|} x ps)))
iotacl # <summary> Existential uniqueness implies iota is a member </summary>
(-> (E! x (e. x S)) (e. (iota S) S))
iotacl2 # <summary> Another iota utility theorem. Asserts that if exactly one x has the property ph, then that x can be found using iota. </summary>
(-> (E! x ph) (e. (iota ({|} x ph)) ({|} x ph)))
iotaeq # <title> Basic identity for iota </title>
(= (iota ({|} x (= x A))) A)

## Ternary conditional for naturals

df-ifn-just Ternary expressions for naturals: (ph ? A : B)
(= (iota ({|} x (\/ (/\ ph (= x A)) (/\ (-. ph) (= x B))))) (iota ({|} y (\/ (/\ ph (= y A)) (/\ (-. ph) (= y B))))))
(= (ifn ph A B) (iota ({|} x (\/ (/\ ph (= x A)) (/\ (-. ph) (= x B))))))
ifn1 # <title> First branch of ternary expression </title>
(-> ph (= (ifn ph A B) A))
ifn2 # <title> Second branch of ternary expression </title>
(-> (-. ph) (= (ifn ph A B) B))
ifnbi1 # <title> Equivalence of predicate in ifn </title>
(-> (<-> ph ps) (= (ifn ph A B) (ifn ps A B)))
(<-> ph ps)(= (ifn ph A B) (ifn ps A B))
(-> ch (<-> ph ps))(-> ch (= (ifn ph A B) (ifn ps A B)))
ifneq2 # <title> Equality of first term for ifn </title>
(-> (= A B) (= (ifn ph A C) (ifn ph B C)))
(= A B)(= (ifn ph A C) (ifn ph B C))
(-> ps (= A B))(-> ps (= (ifn ph A C) (ifn ph B C)))
ifneq3 # <title> Equality of second term for ifn </title>
(-> (= A B) (= (ifn ph C A) (ifn ph C B)))
(= A B)(= (ifn ph C A) (ifn ph C B))
(-> ps (= A B))(-> ps (= (ifn ph C A) (ifn ph C B)))
(-> (/\ (<-> ph ps) (= A B)) (= (ifn ph C A) (ifn ps C B)))
EqReplaceBi1Lt0 # <title> Substitution </title> # <table> # (<-> ph (< [ A ] ] ] C)) # (= [ A ] [ B ] ) # (<-> ph (< [ [ [ B ] C)) # </table>
(<-> ph (< A C)) , (= A B)(<-> ph (< B C))
(-> (> B (0)) (<= A (* A B)))

## Subtraction over natural numbers

df-halfminus-just Justification for definition of halfminus
(= (ifn (< A B) (0) (iota ({|} x (= A (+ B x))))) (ifn (< A B) (0) (iota ({|} y (= A (+ B y))))))
df-halfminus Definition of "half minus"
(= (.- A B) (ifn (< A B) (0) (iota ({|} x (= A (+ B x))))))
(-> (= A C) (= (.- A B) (.- C B)))
(= A B)(= (.- A C) (.- B C))
(-> ph (= A B))(-> ph (= (.- A C) (.- B C)))
halfminuseq2 # <title> Equivalence for - </title>
(-> (= B C) (= (.- A B) (.- A C)))
(= B C)(= (.- A B) (.- A C))
(-> ph (= B C))(-> ph (= (.- A B) (.- A C)))
(-> (/\ (= A B) (= C D)) (= (.- A C) (.- B D)))
halfminus # <title> Minus is the inverse of addition </title>
(-> (<= B A) (= (+ (.- A B) B) A))
halfminuszero # <title> A number minus zero is itself </title>
(= (.- A (0)) A)
halfminusid # <title> A number minus itself is zero </title> # <suggest> right('Cancel', '-') </suggest> # <table> # (= (.- <r> A <r> A) (0)) # </table>
(= (.- A A) (0))
EqReplaceLe0 # <title> Substitution </title> # <table> # (<= [ A ] ] ] C) # (= [ A ] [ B ] ) # (<= [ [ [ B ] C) # </table>
(<= A C) , (= A B)(<= B C)
halfminuscan # <title> Half minus cancellation </title> # <suggest> right('Simplify', '-') </suggest> # <table> # (= (.- (+ A <r> B) <r> B) A) # </table>
(= (.- (+ A B) B) A)
addhalfminus # <suggest> right('Equivalence', '-') left('Equivalence', '+') </suggest>
(-> (= (+ A C) B) (= A (.- B C)))
(= C (+ A B))(= (.- C A) B)
EqReplaceEq0Add1 # <title> Substitution </title> # <table> # (= (+ A [ B ] ] ] ) D) # (= [ B ] [ C ] ) # (= (+ A [ [ [ C ] ) D) # </table>
(= (+ A B) D) , (= B C)(= (+ A C) D)
EqReplaceImp1Eq0Add1 # <title> Substitution </title> # <table> # (-> ph (= (+ A [ B ] ] ] ) D)) # (= [ B ] [ C ] ) # (-> ph (= (+ A [ [ [ C ] ) D)) # </table>
(-> ph (= (+ A B) D)) , (= B C)(-> ph (= (+ A C) D))
halfminusaddcom # <title> Commute Half Minus </title> # <table> # (-> (<= <r> B <g> A) (= (+ (.- <g> A <r> B) <b> C) (.- (+ <g> A <b> C) <r> B))) # </table>
(-> (<= B A) (= (+ (.- A B) C) (.- (+ A C) B)))
halfminuscan2 # <title> Cancel same numbers with subtraction </title> # <suggest> right('Simplify', '-') </suggest> # <table> # (= (.- (+ <r> A B) <r> A) B) # </table>
(= (.- (+ A B) A) B)
ImpReplaceImp1An1 # <title> Substitution </title> # <table> # (-> ph (/\ ps [ ch ] ] ] )) # (-> [ ch ] [ th ] ) # (-> ph (/\ ps [ [ [ th ] )) # </table>
(-> ph (/\ ps ch)) , (-> ch th)(-> ph (/\ ps th))
(-> (< A B) (< (0) (.- B A)))
(-> (> B A) (> (.- B A) (0)))
halfminus-neg # <title> Half-minus Never Goes Negative </suggest>
(-> (<= A B) (= (.- A B) (0)))
halfminus-negi # <title> Half-minus Never Goes Negative </suggest>
(<= A B)(= (.- A B) (0))
halfminusdist.1 # <title> Distributive Property </title>
(-> (<= C B) (= (* A (.- B C)) (.- (* A B) (* A C))))
halfminusdist # <title> Distributive Property </title> # <suggest> right('Distribute', 'R') left('Distribute', '-R') </suggest>
(= (* A (.- B C)) (.- (* A B) (* A C)))
EqReplaceEq1HM0 # <title> Substitution </title> # <table> # (= A (.- [ B ] ] ] D)) # (= [ B ] [ C ] ) # (= A (.- [ [ [ C ] D)) # </table>
(= A (.- B D)) , (= B C)(= A (.- C D))
EqReplaceEq1HM1 # <title> Substitution </title> # <table> # (= A (.- B [ C ] ] ] )) # (= [ C ] [ D ] ) # (= A (.- B [ [ [ D ] )) # </table>
(= A (.- B C)) , (= C D)(= A (.- B D))
halfminusdist2 # <title> Distributive Property </title> # <suggest> right('Distribute', 'L') left('Distribute', '-L') </suggest>
(= (* (.- B C) A) (.- (* B A) (* C A)))
LeReplaceImp1Eq1 # <title> Substitution </title> # <table> # (-> ph (= A [ B ] ] ] )) # (<= [ B ] [ C ] ) # (-> ph (<= A [ [ [ C ] )) # </table>
(-> ph (= A B)) , (<= B C)(-> ph (<= A C))
(<= (.- A B) A)
BiReplaceBi0Or1 # <title> Substitution </title> # <table> # (<-> (\/ ph [ ps ] ] ] ) th) # (<-> [ ps ] [ ch ] ) # (<-> (\/ ph [ [ [ ch ] ) th) # </table>
(<-> (\/ ph ps) th) , (<-> ps ch)(<-> (\/ ph ch) th)
(-> (<= A B) (<= (.- A C) (.- B C)))
lehalfminus1i # <title> Halfminus Over Inequality </title> # <table> # (<= A ] ] [ B ] ) # (<= (.- A ] C) ] (.- [ B ] C)) # </table>
(<= A B)(<= (.- A C) (.- B C))
(= (.- A (+ B C)) (.- (.- A B) C))
EqReplaceEq0HM1 # <title> Substitution </title> # <table> # (= (.- A [ B ] ] ] ) D) # (= [ B ] [ C ] ) # (= (.- A [ [ [ C ] ) D) # </table>
(= (.- A B) D) , (= B C)(= (.- A C) D)
halfminuscom # <table> # (= (.- (.- A <r> B) <g> C) (.- (.- A <g> C) <r> B)) # </table>
(= (.- (.- A B) C) (.- (.- A C) B))
EqReplaceImp1Lt1Add1 # <title> Substitution </title> # <table> # (-> ph (< A (+ B [ C ] ] ] ))) # (= [ C ] [ D ] ) # (-> ph (< A (+ B [ [ [ D ] ))) # </table>
(-> ph (< A (+ B C))) , (= C D)(-> ph (< A (+ B D)))
(-> (/\ (< A B) (< C D)) (< (+ (* B C) (* A D)) (+ (* B D) (* A C))))
(-> (/\ (> B A) (> D C)) (> (+ (* B D) (* A C)) (+ (* B C) (* A D))))

## Division, primality

df-divides-just number 36.5
(<-> (E. x (= (* A x) B)) (E. y (= (* A y) B)))
df-divides # <title> Divides Definition </title> # <suggest> left('Simplify', '|') right('Define', '|') </suggest>
(<-> (| A B) (E. x (= (* A x) B)))
divideseq1 # <title> Equivalence for | </title>
(-> (= A C) (<-> (| A B) (| C B)))
divideseq1i Equality inference for the divides relation. # <title> Equivalence over Divides </title> # <table> # (= A ] ] [ B ] ) # (<-> (| A ] C ] ) (| [ B ] C)) # </table>
(= A B)(<-> (| A C) (| B C))
divideseq1ii Equality inference for the Divides relation. # <title> Equivalence over divides </title> # <table> # (| A ] ] ] [ C) # (= A ] [ B ] ] ) # (| [ [ B ] [ C) # </table>
(| A C) , (= A B)(| B C)
divideseq2 # <title> Equivalence for | </title> ##
(-> (= B C) (<-> (| A B) (| A C)))
divideseq2i # <title> Equivalence over Divides </title> # <table> # (= [ A ] [ [ B ] ) # (<-> (| C [ A ] ) (| [ C [ B ] )) # </table>
(= A B)(<-> (| C A) (| C B))
divideseq2ii # <title> Equivalence over Divides </title> # <table> # (| C [ A ] ] ) # (= [ A ] [ B) # (| C [ [ [ B) # </table>
(| C A) , (= A B)(| C B)
(-> ph (= A B))(-> ph (<-> (| A C) (| B C)))
(-> ph (= A B))(-> ph (<-> (| C A) (| C B)))
EqReplaceEx1Eq1 # <title> Substitution </title> # <table> # (E. x (= A [ B ] ] ] )) # (= [ B ] [ C ] ) # (E. x (= A [ [ [ C ] )) # </table>
(E. x (= A B)) , (= B C)(E. x (= A C))
(= (* A B) C)(| A C)
(-> ph (= (* A B) C))(-> ph (| A C))
BiReplaceImp1Al1An0 # <title> Substitution </title> # <table> # (-> ph (A. x (/\ [ ps ] ] ] th))) # (<-> [ ps ] [ ch ] ) # (-> ph (A. x (/\ [ [ [ ch ] th))) # </table>
(-> ph (A. x (/\ ps th))) , (<-> ps ch)(-> ph (A. x (/\ ch th)))
BiReplaceImp1Al1An0Or1 # <title> Substitution </title> # <table> # (-> ph (A. x (/\ (\/ ps [ ch ] ] ] ) ta))) # (<-> [ ch ] [ th ] ) # (-> ph (A. x (/\ (\/ ps [ [ [ th ] ) ta))) # </table>
(-> ph (A. x (/\ (\/ ps ch) ta))) , (<-> ch th)(-> ph (A. x (/\ (\/ ps th) ta)))
(-> (/\ (< (* A C) B) (< B (* A (+ C (1))))) (-. (| A B)))
EqReplaceImp1Lt0 # <title> Substitution </title> # <table> # (-> ph (< [ A ] ] ] C)) # (= [ A ] [ B ] ) # (-> ph (< [ [ [ B ] C)) # </table>
(-> ph (< A C)) , (= A B)(-> ph (< B C))
EqReplaceBi1Lt1 # <title> Substitution </title> # <table> # (<-> ph (< A [ B ] ] ] )) # (= [ B ] [ C ] ) # (<-> ph (< A [ [ [ C ] )) # </table>
(<-> ph (< A B)) , (= B C)(<-> ph (< A C))
EqReplaceImp1Bi0Eq1 # <title> Substitution </title> # <table> # (-> ph (<-> (= A [ B ] ] ] ) ps)) # (= [ B ] [ C ] ) # (-> ph (<-> (= A [ [ [ C ] ) ps)) # </table>
(-> ph (<-> (= A B) ps)) , (= B C)(-> ph (<-> (= A C) ps))
BiReplaceImp0Not0 # <title> Substitution </title> # <table> # (-> (-. [ ph ] ] ] ) ch) # (<-> [ ph ] [ ps ] ) # (-> (-. [ [ [ ps ] ) ch) # </table>
(-> (-. ph) ch) , (<-> ph ps)(-> (-. ps) ch)
(-> (-. (= A (0))) (<-> (= (* B A) (0)) (= B (0))))
BiReplaceImp1Imp1Not0 # <title> Substitution </title> # <table> # (-> ph (-> ps (-. [ ch ] ] ] ))) # (<-> [ ch ] [ th ] ) # (-> ph (-> ps (-. [ [ [ th ] ))) # </table>
(-> ph (-> ps (-. ch))) , (<-> ch th)(-> ph (-> ps (-. th)))
EqReplaceImp1Imp1Not0Eq0 # <title> Substitution </title> # <table> # (-> ph (-> ps (-. (= [ A ] ] ] C)))) # (= [ A ] [ B ] ) # (-> ph (-> ps (-. (= [ [ [ B ] C)))) # </table>
(-> ph (-> ps (-. (= A C)))) , (= A B)(-> ph (-> ps (-. (= B C))))
zeroProductz # <title> Zero Product Property </title>
(-> (/\ (-. (= A (0))) (-. (= B (0)))) (-. (= (* A B) (0))))
(<-> (E. x (/\ (| x A) (/\ (-. (= x (1))) (-. (= x A))))) (E. y (/\ (| y A) (/\ (-. (= y (1))) (-. (= y A))))))
df-composite # <title> Definition of a composite number </title>
(<-> (composite A) (E. x (/\ (| x A) (/\ (-. (= x (1))) (-. (= x A))))))
compositeeq # <title> Equivalence for composite </title> ##
(-> (= A B) (<-> (composite A) (composite B)))
(= A B)(<-> (composite A) (composite B))
(-> ph (= A B))(-> ph (<-> (composite A) (composite B)))
df-prime-just number 39.0
(<-> (/\ (> A (1)) (A. x (-> (| x A) (\/ (= x (1)) (= x A))))) (/\ (> A (1)) (A. y (-> (| y A) (\/ (= y (1)) (= y A))))))
df-prime # <title> Prime Definition </title>
(<-> (prime A) (/\ (> A (1)) (A. x (-> (| x A) (\/ (= x (1)) (= x A))))))
primeeq # <title> Equivalence for prime </title> ##
(-> (= A B) (<-> (prime A) (prime B)))
(= A B)(<-> (prime A) (prime B))
(-> ph (= A B))(-> ph (<-> (prime A) (prime B)))
df-compositeset # <title> Def. Set of Composite Numbers </title> # <suggest> right('Define', 'Cmp') left('Simplify', 'Cmp') </suggest>
(=_ (compositeset) ({|} y (composite y)))
df-primeset # <title> Def. Set of Prime Numbers </title> # <suggest> right('Define', 'Pr') left('Simplify', 'Pr') </suggest>
(=_ (primeset) ({|} y (prime y)))
elprimeset # <title> Def. Set of Prime Numbers </title> # <suggest> right('Equivalence', '∈') left('Equivalence', '∈') </suggest>
(<-> (e. A (primeset)) (prime A))
(rwff x (/\ (<= A x) (<= x B)))
(rwff x (/\ (< A x) (< x B)))
(rwff x (| x A))
(rwff x (| A x))
(rwff x (prime x))
(<-> (e. A ({|} x (-. (| x B)))) (-. (| A B)))
(-. (| A B))(e. A ({|} x (-. (| x B))))
(<= A B)(=_ (u. ({...} A B) ({} (+ B (1)))) ({...} A (+ B (1))))
BiReplaceBi1An1Not0Ex1 # <title> Substitution </title> # <table> # (<-> ph (/\ ps (-. (E. x [ ch ] ] ] )))) # (<-> [ ch ] [ th ] ) # (<-> ph (/\ ps (-. (E. x [ [ [ th ] )))) # </table>
(<-> ph (/\ ps (-. (E. x ch)))) , (<-> ch th)(<-> ph (/\ ps (-. (E. x th))))
BiReplaceBi1An1Not0Ex1An1 # <title> Substitution </title> # <table> # (<-> ph (/\ ps (-. (E. x (/\ ch [ th ] ] ] ))))) # (<-> [ th ] [ ta ] ) # (<-> ph (/\ ps (-. (E. x (/\ ch [ [ [ ta ] ))))) # </table>
(<-> ph (/\ ps (-. (E. x (/\ ch th))))) , (<-> th ta)(<-> ph (/\ ps (-. (E. x (/\ ch ta)))))
primeeqii # <title> Equivalence over Prime </title> # <table> # (prime [ A ] ] ] ) # (= [ A ] [ B ] ) # (prime [ [ [ B ] ) # </table>
(prime A) , (= A B)(prime B)
(| B A) , (/\ (< (1) B) (< B A))(-. (prime A))
0orpos number 40.0 # <title> Natural Number </title>
(\/ (= A (0)) (<= (1) A))
df-2 # <title> Definition of 2 </title>
(= (2) (+ (1) (1)))
df-3 # <title> Definition of 3 </title>
(= (3) (+ (2) (1)))
df-4 # <title> Definition of 4 </title>
(= (4) (+ (3) (1)))
df-5 # <title> Definition of 5 </title>
(= (5) (+ (4) (1)))
df-6 # <title> Definition of 6 </title>
(= (6) (+ (5) (1)))
df-7 # <title> Definition of 7 </title>
(= (7) (+ (6) (1)))
df-8 # <title> Definition of 8 </title>
(= (8) (+ (7) (1)))
df-9 # <title> Definition of 9 </title>
(= (9) (+ (8) (1)))
df-10 # <title> Definition of 10 </title>
(= (10) (+ (9) (1)))
(= (+ (2) (2)) (4))
0ne2 number 42.0 # <title> Basic Inequality </title>
(-. (= (0) (+ (1) (1))))
jctilb number 43.0 jctil with hyps listed backwards
ch , (-> ph ps)(-> ph (/\ ch ps))
(> (+ (1) (1)) (1))
2primelem1 number 44.0 # <title> 2 is Prime Lemma </title>
(\/ ph ps) , (\/ ch (\/ th (\/ ta et))) , (-> (/\ ps et) (-. si)) , (-> ph (-. si)) , (-> ch (-. si))(-> si (\/ th ta))
2prime number 45.0 # <title> 2 is Prime </title>
(prime (+ (1) (1)))
dividesmul number 46.0
(-> (| A B) (| A (* B C)))
(| A B)(| A (* B C))
exfactorial.1 number 47.0 Induction tool for exfactorial
(-> (= z A) (<-> (E. x (A. y (-> (<= (S y) (S z)) (| (S y) (S (S x)))))) (E. x (A. y (-> (<= (S y) (S A)) (| (S y) (S (S x))))))))
exfactoriallem1 number 47.0 Induction tool for exfactorial
(-> (= z A) (<-> (E. x (A. y (-> (<= (S (S y)) (S (S z))) (| (S (S y)) (S (S x)))))) (E. x (A. y (-> (<= (S (S y)) (S (S A))) (| (S (S y)) (S (S x))))))))
dividessym # <title> A number divides itself </title> # <suggest> full('Simplify', 'T') </suggest>
(| A A)
dividessymmul # <title> A number divides a multiple of itself </title> # <suggest> full('Simplify', 'T') </suggest>
(| A (* A B))
exfactorial.2 number 52.0 Base case for induction in exfactorial
(E. x (A. y (-> (<= (S y) (S (0))) (| (S y) (S (S x))))))
exfactoriallem2 number 52.0 Base case for induction in exfactorial
(E. x (A. y (-> (<= (S (S y)) (S (S (0)))) (| (S (S y)) (S (S x))))))
exfactoriallem4 number 53.0 # <summary> Utility to avoid excessive mandhyp baggage in exfactoriallem3 </summary>
(-> ph (\/ ps ch)) , (-> th ps)(-> (-> ch th) (-> ph ps))
exfactorial.3 number 54.0 Inductive step for exfactorial
(-> (E. x (A. y (-> (<= (S y) (S z)) (| (S y) (S (S x)))))) (E. x (A. y (-> (<= (S y) (S (S z))) (| (S y) (S (S x)))))))
exfactoriallem3 number 54.0 Inductive step for exfactorial
(-> (E. x (A. y (-> (<= (S (S y)) (S (S z))) (| (S (S y)) (S (S x)))))) (E. x (A. y (-> (<= (S (S y)) (S (S (S z)))) (| (S (S y)) (S (S x)))))))
exfactorial # <summary> # There exists a number that is divided all numbers up to #(S A)#. While factorial is # certainly one such, it's not the only, so perhaps this is not an ideal name. # </summary>
(E. x (A. y (-> (<= (S y) (S A)) (| (S y) (S (S x))))))
dividesle number 57.0
(-> (| A (S B)) (<= A (S B)))
(-> (> B (0)) (-> (| A B) (<= A B)))
sindlem1 number 58.0
(-> ch (-> ps (\/ (-> th ph) ta))) , (-> si (/\ th (-> ta ph)))(-> si (-> ch (-> ps ph)))
sind # <title> Strong Induction </title>
(-> (= x (0)) (<-> ph ps)) , (-> (= x (S y)) (<-> ph th)) , (-> (= x A) (<-> ph ta)) , ps , (-> (A. x (-> (<= x y) ph)) th)ta
sindplus1 Strong Induction using + 1 instead of successor. # <title> Strong Induction </title>
(-> (= x (0)) (<-> ph ps)) , (-> (= x (+ y (1))) (<-> ph th)) , (-> (= x A) (<-> ph ta)) , ps , (-> (A. x (-> (<= x y) ph)) th)ta
infDescentLem1 Induction tool
(-> (= y A) (<-> (-. ([/] y x ph)) (-. ([/] A x ph))))
infiniteDescent # <title> Proof By Infinite Descent </title>
(-> ([/] w x ph) (E. y (/\ (< y w) ([/] y x ph))))(-. ([/] x x ph))
not0divides # <title> 0 does not divide positive numbers </title>
(-. (| (0) (S A)))
not0divides2 # <title> 0 does not divide positive numbers </title>
(-> (< (0) A) (-. (| (0) A)))
BiReplaceBi1Or1Ex1An1 # <title> Substitution </title> # <table> # (<-> ph (\/ ps (E. x (/\ ch [ th ] ] ] )))) # (<-> [ th ] [ ta ] ) # (<-> ph (\/ ps (E. x (/\ ch [ [ [ ta ] )))) # </table>
(<-> ph (\/ ps (E. x (/\ ch th)))) , (<-> th ta)(<-> ph (\/ ps (E. x (/\ ch ta))))
BiReplaceBi1Or1Ex1An1Not0 # <title> Substitution </title> # <table> # (<-> ph (\/ ps (E. x (/\ ch (-. [ th ] ] ] ))))) # (<-> [ th ] [ ta ] ) # (<-> ph (\/ ps (E. x (/\ ch (-. [ [ [ ta ] ))))) # </table>
(<-> ph (\/ ps (E. x (/\ ch (-. th))))) , (<-> th ta)(<-> ph (\/ ps (E. x (/\ ch (-. ta)))))
dfprime1lem # <title> A composite has no factors above it </title>
(-> (-. (prime A)) (-> (> A (1)) (E. x (/\ (| x A) (/\ (-. (= x (1))) (< x A))))))
BiReplaceBi0Not0An1 # <title> Substitution </title> # <table> # (<-> (-. (/\ ph [ ps ] ] ] )) th) # (<-> [ ps ] [ ch ] ) # (<-> (-. (/\ ph [ [ [ ch ] )) th) # </table>
(<-> (-. (/\ ph ps)) th) , (<-> ps ch)(<-> (-. (/\ ph ch)) th)
BiReplaceImp1Imp1Ex1An1Not0An1 # <title> Substitution </title> # <table> # (-> ph (-> ps (E. x (/\ ch (-. (/\ th [ ta ] ] ] )))))) # (<-> [ ta ] [ et ] ) # (-> ph (-> ps (E. x (/\ ch (-. (/\ th [ [ [ et ] )))))) # </table>
(-> ph (-> ps (E. x (/\ ch (-. (/\ th ta)))))) , (<-> ta et)(-> ph (-> ps (E. x (/\ ch (-. (/\ th et))))))
BiReplaceImp1Imp1Ex1Or0 # <title> Substitution </title> # <table> # (-> ph (-> ps (E. x (\/ [ ch ] ] ] ta)))) # (<-> [ ch ] [ th ] ) # (-> ph (-> ps (E. x (\/ [ [ [ th ] ta)))) # </table>
(-> ph (-> ps (E. x (\/ ch ta)))) , (<-> ch th)(-> ph (-> ps (E. x (\/ th ta))))
BiReplaceImp1Imp1Ex1Or0An0 # <title> Substitution </title> # <table> # (-> ph (-> ps (E. x (\/ (/\ [ ch ] ] ] ta) et)))) # (<-> [ ch ] [ th ] ) # (-> ph (-> ps (E. x (\/ (/\ [ [ [ th ] ta) et)))) # </table>
(-> ph (-> ps (E. x (\/ (/\ ch ta) et)))) , (<-> ch th)(-> ph (-> ps (E. x (\/ (/\ th ta) et))))
BiReplaceBi1Imp1 # <title> Substitution </title> # <table> # (<-> ph (-> ps [ ch ] ] ] )) # (<-> [ ch ] [ th ] ) # (<-> ph (-> ps [ [ [ th ] )) # </table>
(<-> ph (-> ps ch)) , (<-> ch th)(<-> ph (-> ps th))
BiReplaceBi1Not0An1 # <title> Substitution </title> # <table> # (<-> ph (-. (/\ ps [ ch ] ] ] ))) # (<-> [ ch ] [ th ] ) # (<-> ph (-. (/\ ps [ [ [ th ] ))) # </table>
(<-> ph (-. (/\ ps ch))) , (<-> ch th)(<-> ph (-. (/\ ps th)))
BiReplaceImp1Imp1Ex1An1An0An0 # <title> Substitution </title> # <table> # (-> ph (-> ps (E. x (/\ ch (/\ (/\ [ th ] ] ] et) zi))))) # (<-> [ th ] [ ta ] ) # (-> ph (-> ps (E. x (/\ ch (/\ (/\ [ [ [ ta ] et) zi))))) # </table>
(-> ph (-> ps (E. x (/\ ch (/\ (/\ th et) zi))))) , (<-> th ta)(-> ph (-> ps (E. x (/\ ch (/\ (/\ ta et) zi)))))
(-> (-. (prime A)) (-> (> A (1)) (E. x (/\ (| x A) (/\ (< (1) x) (< x A))))))
BiReplaceImp0An0Not0 # <title> Substitution </title> # <table> # (-> (/\ (-. [ ph ] ] ] ) ch) th) # (<-> [ ph ] [ ps ] ) # (-> (/\ (-. [ [ [ ps ] ) ch) th) # </table>
(-> (/\ (-. ph) ch) th) , (<-> ph ps)(-> (/\ (-. ps) ch) th)
BiReplaceImp0An0Not0Ex1 # <title> Substitution </title> # <table> # (-> (/\ (-. (E. x [ ph ] ] ] )) ch) th) # (<-> [ ph ] [ ps ] ) # (-> (/\ (-. (E. x [ [ [ ps ] )) ch) th) # </table>
(-> (/\ (-. (E. x ph)) ch) th) , (<-> ph ps)(-> (/\ (-. (E. x ps)) ch) th)
BiReplaceImp0An0Not0Ex1Not0 # <title> Substitution </title> # <table> # (-> (/\ (-. (E. x (-. [ ph ] ] ] ))) ch) th) # (<-> [ ph ] [ ps ] ) # (-> (/\ (-. (E. x (-. [ [ [ ps ] ))) ch) th) # </table>
(-> (/\ (-. (E. x (-. ph))) ch) th) , (<-> ph ps)(-> (/\ (-. (E. x (-. ps))) ch) th)
(-> (/\ (A. y (-> (/\ (< (1) y) (< y A)) (-. (| y A)))) (> A (1))) (prime A))
SeqReplaceImp0An0Ss0 # <title> Substitution </title> # <table> # (-> (/\ (C_ [ S ] ] ] U) ph) ps) # (=_ [ S ] [ T ] ) # (-> (/\ (C_ [ [ [ T ] U) ph) ps) # </table>
(-> (/\ (C_ S U) ph) ps) , (=_ S T)(-> (/\ (C_ T U) ph) ps)
BiReplaceImp0An0Ss0Ab1 # <title> Substitution </title> # <table> # (-> (/\ (C_ ({|} x [ ph ] ] ] ) S) ch) th) # (<-> [ ph ] [ ps ] ) # (-> (/\ (C_ ({|} x [ [ [ ps ] ) S) ch) th) # </table>
(-> (/\ (C_ ({|} x ph) S) ch) th) , (<-> ph ps)(-> (/\ (C_ ({|} x ps) S) ch) th)
BiReplaceImp0An0Ss0Ab1An0 # <title> Substitution </title> # <table> # (-> (/\ (C_ ({|} x (/\ [ ph ] ] ] ch)) S) th) ta) # (<-> [ ph ] [ ps ] ) # (-> (/\ (C_ ({|} x (/\ [ [ [ ps ] ch)) S) th) ta) # </table>
(-> (/\ (C_ ({|} x (/\ ph ch)) S) th) ta) , (<-> ph ps)(-> (/\ (C_ ({|} x (/\ ps ch)) S) th) ta)
1plus1 # <title> One-digit Addition </title>
(= (+ (1) (1)) (2))
a2suc # <title> Two Successors Adds Two </title> # <suggest> right('Equivalence', '+2') </suggest>
(= (S (S A)) (+ A (2)))
EqReplaceImp0An0Ss0Ab1An0Le0 # <title> Substitution </title> # <table> # (-> (/\ (C_ ({|} x (/\ (<= [ A ] ] ] C) ph)) S) ps) ch) # (= [ A ] [ B ] ) # (-> (/\ (C_ ({|} x (/\ (<= [ [ [ B ] C) ph)) S) ps) ch) # </table>
(-> (/\ (C_ ({|} x (/\ (<= A C) ph)) S) ps) ch) , (= A B)(-> (/\ (C_ ({|} x (/\ (<= B C) ph)) S) ps) ch)
BiReplaceImp0An0Ss0Ab1An1 # <title> Substitution </title> # <table> # (-> (/\ (C_ ({|} x (/\ ph [ ps ] ] ] )) S) th) ta) # (<-> [ ps ] [ ch ] ) # (-> (/\ (C_ ({|} x (/\ ph [ [ [ ch ] )) S) th) ta) # </table>
(-> (/\ (C_ ({|} x (/\ ph ps)) S) th) ta) , (<-> ps ch)(-> (/\ (C_ ({|} x (/\ ph ch)) S) th) ta)
BiReplaceImp0An1Not0 # <title> Substitution </title> # <table> # (-> (/\ ph (-. [ ps ] ] ] )) th) # (<-> [ ps ] [ ch ] ) # (-> (/\ ph (-. [ [ [ ch ] )) th) # </table>
(-> (/\ ph (-. ps)) th) , (<-> ps ch)(-> (/\ ph (-. ch)) th)
EqReplaceBi1Le1 # <title> Substitution </title> # <table> # (<-> ph (<= A [ B ] ] ] )) # (= [ B ] [ C ] ) # (<-> ph (<= A [ [ [ C ] )) # </table>
(<-> ph (<= A B)) , (= B C)(<-> ph (<= A C))
EqReplaceBi0Gt1 # <title> Substitution </title> # <table> # (<-> (> A [ B ] ] ] ) ph) # (= [ B ] [ C ] ) # (<-> (> A [ [ [ C ] ) ph) # </table>
(<-> (> A B) ph) , (= B C)(<-> (> A C) ph)
(-> (/\ (C_ ({...} (2) A) ({|} y (-. (| y (+ A (1)))))) (> A (0))) (prime (+ A (1))))
(C_ ({...} (2) A) ({|} y (-. (| y (+ A (1)))))) , (> A (0))(prime (+ A (1)))
EqReplaceImp1Bi0Divs1 # <title> Substitution </title> # <table> # (-> ph (<-> (| A [ B ] ] ] ) ps)) # (= [ B ] [ C ] ) # (-> ph (<-> (| A [ [ [ C ] ) ps)) # </table>
(-> ph (<-> (| A B) ps)) , (= B C)(-> ph (<-> (| A C) ps))
SeqReplaceImp0An0Ss1 # <title> Substitution </title> # <table> # (-> (/\ (C_ S [ T ] ] ] ) ph) ps) # (=_ [ T ] [ U ] ) # (-> (/\ (C_ S [ [ [ U ] ) ph) ps) # </table>
(-> (/\ (C_ S T) ph) ps) , (=_ T U)(-> (/\ (C_ S U) ph) ps)
EqReplaceImp1Prime0 # <title> Substitution </title> # <table> # (-> ph (prime [ A ] ] ] )) # (= [ A ] [ B ] ) # (-> ph (prime [ [ [ B ] )) # </table>
(-> ph (prime A)) , (= A B)(-> ph (prime B))
(C_ ({...} (2) (.- A (1))) ({|} y (-. (| y A)))) , (< (1) A)(prime A)
lesuc1 number 60.0
(<-> (<= A B) (<= (S A) (S B)))
EqReplaceGe1 # <title> Substitution </title> # <table> # (>= A [ B ] ] ] ) # (= [ B ] [ C ] ) # (>= A [ [ [ C ] ) # </table>
(>= A B) , (= B C)(>= A C)
(> (+ A (1)) (0))
EqReplaceGt0 # <title> Substitution </title> # <table> # (> [ A ] ] ] C) # (= [ A ] [ B ] ) # (> [ [ [ B ] C) # </table>
(> A C) , (= A B)(> B C)
(> (S (S A)) (1))
primedivisor.1 number 61.0 # <summary> Every multitude has either a proper multitude divisor or a prime multitude divisor </summary>
(\/ (E. z (/\ (< (S (S z)) (S (S A))) (| (S (S z)) (S (S A))))) (E. x (/\ (prime (S (S x))) (| (S (S x)) (S (S A))))))
primedivisor.2 number 62.0 Induction tool
(-> (= y A) (<-> (E. x (/\ (prime (S (S x))) (| (S (S x)) (S (S y))))) (E. x (/\ (prime (S (S x))) (| (S (S x)) (S (S A)))))))
dividestr The "divides" relation is transitive
(-> (/\ (| A B) (| B C)) (| A C))
primedivisor number 64.0
(E. x (/\ (prime (S (S x))) (| (S (S x)) (S (S A)))))
BiReplaceEx1An1 # <title> Substitution </title> # <table> # (E. x (/\ ph [ ps ] ] ] )) # (<-> [ ps ] [ ch ] ) # (E. x (/\ ph [ [ [ ch ] )) # </table>
(E. x (/\ ph ps)) , (<-> ps ch)(E. x (/\ ph ch))
EqReplaceEx1An1Divs1 # <title> Substitution </title> # <table> # (E. x (/\ ph (| A [ B ] ] ] ))) # (= [ B ] [ C ] ) # (E. x (/\ ph (| A [ [ [ C ] ))) # </table>
(E. x (/\ ph (| A B))) , (= B C)(E. x (/\ ph (| A C)))
EqReplaceEx1An1Divs0 # <title> Substitution </title> # <table> # (E. x (/\ ph (| [ A ] ] ] C))) # (= [ A ] [ B ] ) # (E. x (/\ ph (| [ [ [ B ] C))) # </table>
(E. x (/\ ph (| A C))) , (= A B)(E. x (/\ ph (| B C)))
BiReplaceEx1An0 # <title> Substitution </title> # <table> # (E. x (/\ [ ph ] ] ] ch)) # (<-> [ ph ] [ ps ] ) # (E. x (/\ [ [ [ ps ] ch)) # </table>
(E. x (/\ ph ch)) , (<-> ph ps)(E. x (/\ ps ch))
EqReplaceEx1An0Prime0 # <title> Substitution </title> # <table> # (E. x (/\ (prime [ A ] ] ] ) ph)) # (= [ A ] [ B ] ) # (E. x (/\ (prime [ [ [ B ] ) ph)) # </table>
(E. x (/\ (prime A) ph)) , (= A B)(E. x (/\ (prime B) ph))
(<-> ([/] B y (/\ (prime y) (| y A))) (/\ (prime B) (| B A)))
primedivisor2 # <title> Numbers above 1 have prime divisors </title>
(-> (<= (2) A) (E. y (/\ (prime y) (| y A))))
ImpReplaceImp1An0 # <title> Substitution </title> # <table> # (-> ph (/\ [ ps ] ] ] th)) # (-> [ ps ] [ ch ] ) # (-> ph (/\ [ [ [ ch ] th)) # </table>
(-> ph (/\ ps th)) , (-> ps ch)(-> ph (/\ ch th))
BiReplaceImp1An1 # <title> Substitution </title> # <table> # (-> ph (/\ ps [ ch ] ] ] )) # (<-> [ ch ] [ th ] ) # (-> ph (/\ ps [ [ [ th ] )) # </table>
(-> ph (/\ ps ch)) , (<-> ch th)(-> ph (/\ ps th))
BiReplaceImp1An1Not0 # <title> Substitution </title> # <table> # (-> ph (/\ ps (-. [ ch ] ] ] ))) # (<-> [ ch ] [ th ] ) # (-> ph (/\ ps (-. [ [ [ th ] ))) # </table>
(-> ph (/\ ps (-. ch))) , (<-> ch th)(-> ph (/\ ps (-. th)))
BiReplaceImp1Ex1An1 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps [ ch ] ] ] ))) # (<-> [ ch ] [ th ] ) # (-> ph (E. x (/\ ps [ [ [ th ] ))) # </table>
(-> ph (E. x (/\ ps ch))) , (<-> ch th)(-> ph (E. x (/\ ps th)))
BiReplaceImp1Ex1An1Not0 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps (-. [ ch ] ] ] )))) # (<-> [ ch ] [ th ] ) # (-> ph (E. x (/\ ps (-. [ [ [ th ] )))) # </table>
(-> ph (E. x (/\ ps (-. ch)))) , (<-> ch th)(-> ph (E. x (/\ ps (-. th))))
BiReplaceImp1Ex1An0 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ [ ps ] ] ] th))) # (<-> [ ps ] [ ch ] ) # (-> ph (E. x (/\ [ [ [ ch ] th))) # </table>
(-> ph (E. x (/\ ps th))) , (<-> ps ch)(-> ph (E. x (/\ ch th)))
BiReplaceImp1Ex1An1An0 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps (/\ [ ch ] ] ] ta)))) # (<-> [ ch ] [ th ] ) # (-> ph (E. x (/\ ps (/\ [ [ [ th ] ta)))) # </table>
(-> ph (E. x (/\ ps (/\ ch ta)))) , (<-> ch th)(-> ph (E. x (/\ ps (/\ th ta))))
BiReplaceImp1Ex1An1An0An1 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps (/\ (/\ ch [ th ] ] ] ) et)))) # (<-> [ th ] [ ta ] ) # (-> ph (E. x (/\ ps (/\ (/\ ch [ [ [ ta ] ) et)))) # </table>
(-> ph (E. x (/\ ps (/\ (/\ ch th) et)))) , (<-> th ta)(-> ph (E. x (/\ ps (/\ (/\ ch ta) et))))
ImpReplaceImp1Ex1An1 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps [ ch ] ] ] ))) # (-> [ ch ] [ th ] ) # (-> ph (E. x (/\ ps [ [ [ th ] ))) # </table>
(-> ph (E. x (/\ ps ch))) , (-> ch th)(-> ph (E. x (/\ ps th)))
ImpReplaceImp1Ex1An1An0 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps (/\ [ ch ] ] ] ta)))) # (-> [ ch ] [ th ] ) # (-> ph (E. x (/\ ps (/\ [ [ [ th ] ta)))) # </table>
(-> ph (E. x (/\ ps (/\ ch ta)))) , (-> ch th)(-> ph (E. x (/\ ps (/\ th ta))))
ImpReplaceImp1Ex1An1An0An0 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps (/\ (/\ [ ch ] ] ] ta) et)))) # (-> [ ch ] [ th ] ) # (-> ph (E. x (/\ ps (/\ (/\ [ [ [ th ] ta) et)))) # </table>
(-> ph (E. x (/\ ps (/\ (/\ ch ta) et)))) , (-> ch th)(-> ph (E. x (/\ ps (/\ (/\ th ta) et))))
BiReplaceImp1Ex1An0An0 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ (/\ [ ps ] ] ] th) ta))) # (<-> [ ps ] [ ch ] ) # (-> ph (E. x (/\ (/\ [ [ [ ch ] th) ta))) # </table>
(-> ph (E. x (/\ (/\ ps th) ta))) , (<-> ps ch)(-> ph (E. x (/\ (/\ ch th) ta)))
ImpReplaceImp1Ex1An1An1 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps (/\ ch [ th ] ] ] )))) # (-> [ th ] [ ta ] ) # (-> ph (E. x (/\ ps (/\ ch [ [ [ ta ] )))) # </table>
(-> ph (E. x (/\ ps (/\ ch th)))) , (-> th ta)(-> ph (E. x (/\ ps (/\ ch ta))))
ImpReplaceImp1Ex1An1An1An1 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps (/\ ch (/\ th [ ta ] ] ] ))))) # (-> [ ta ] [ et ] ) # (-> ph (E. x (/\ ps (/\ ch (/\ th [ [ [ et ] ))))) # </table>
(-> ph (E. x (/\ ps (/\ ch (/\ th ta))))) , (-> ta et)(-> ph (E. x (/\ ps (/\ ch (/\ th et)))))
BiReplaceImp1Ex1An1An1 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps (/\ ch [ th ] ] ] )))) # (<-> [ th ] [ ta ] ) # (-> ph (E. x (/\ ps (/\ ch [ [ [ ta ] )))) # </table>
(-> ph (E. x (/\ ps (/\ ch th)))) , (<-> th ta)(-> ph (E. x (/\ ps (/\ ch ta))))
BiReplaceImp1Ex1An1An1An1 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps (/\ ch (/\ th [ ta ] ] ] ))))) # (<-> [ ta ] [ et ] ) # (-> ph (E. x (/\ ps (/\ ch (/\ th [ [ [ et ] ))))) # </table>
(-> ph (E. x (/\ ps (/\ ch (/\ th ta))))) , (<-> ta et)(-> ph (E. x (/\ ps (/\ ch (/\ th et)))))
BiReplaceImp1Ex1An1An1An1Ex1 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps (/\ ch (/\ th (E. y [ ta ] ] ] )))))) # (<-> [ ta ] [ et ] ) # (-> ph (E. x (/\ ps (/\ ch (/\ th (E. y [ [ [ et ] )))))) # </table>
(-> ph (E. x (/\ ps (/\ ch (/\ th (E. y ta)))))) , (<-> ta et)(-> ph (E. x (/\ ps (/\ ch (/\ th (E. y et))))))
BiReplaceImp1Ex1An1An1An1Ex1An0 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps (/\ ch (/\ th (E. y (/\ [ ta ] ] ] zi))))))) # (<-> [ ta ] [ et ] ) # (-> ph (E. x (/\ ps (/\ ch (/\ th (E. y (/\ [ [ [ et ] zi))))))) # </table>
(-> ph (E. x (/\ ps (/\ ch (/\ th (E. y (/\ ta zi))))))) , (<-> ta et)(-> ph (E. x (/\ ps (/\ ch (/\ th (E. y (/\ et zi)))))))
ImpReplaceImp1An0Ex1 # <title> Substitution </title> # <table> # (-> ph (/\ (E. x [ ps ] ] ] ) th)) # (-> [ ps ] [ ch ] ) # (-> ph (/\ (E. x [ [ [ ch ] ) th)) # </table>
(-> ph (/\ (E. x ps) th)) , (-> ps ch)(-> ph (/\ (E. x ch) th))
ImpReplaceImp1An0Ex1An1 # <title> Substitution </title> # <table> # (-> ph (/\ (E. x (/\ ps [ ch ] ] ] )) ta)) # (-> [ ch ] [ th ] ) # (-> ph (/\ (E. x (/\ ps [ [ [ th ] )) ta)) # </table>
(-> ph (/\ (E. x (/\ ps ch)) ta)) , (-> ch th)(-> ph (/\ (E. x (/\ ps th)) ta))
BiReplaceImp1An0Ex1 # <title> Substitution </title> # <table> # (-> ph (/\ (E. x [ ps ] ] ] ) th)) # (<-> [ ps ] [ ch ] ) # (-> ph (/\ (E. x [ [ [ ch ] ) th)) # </table>
(-> ph (/\ (E. x ps) th)) , (<-> ps ch)(-> ph (/\ (E. x ch) th))
BiReplaceImp1Ex1An1An1Not0 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps (/\ ch (-. [ th ] ] ] ))))) # (<-> [ th ] [ ta ] ) # (-> ph (E. x (/\ ps (/\ ch (-. [ [ [ ta ] ))))) # </table>
(-> ph (E. x (/\ ps (/\ ch (-. th))))) , (<-> th ta)(-> ph (E. x (/\ ps (/\ ch (-. ta)))))
ImpReplaceImp1Ex1An1Al1 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps (A. y [ ch ] ] ] )))) # (-> [ ch ] [ th ] ) # (-> ph (E. x (/\ ps (A. y [ [ [ th ] )))) # </table>
(-> ph (E. x (/\ ps (A. y ch)))) , (-> ch th)(-> ph (E. x (/\ ps (A. y th))))
ImpReplaceImp1Ex1An1Al1An0 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps (A. y (/\ [ ch ] ] ] ta))))) # (-> [ ch ] [ th ] ) # (-> ph (E. x (/\ ps (A. y (/\ [ [ [ th ] ta))))) # </table>
(-> ph (E. x (/\ ps (A. y (/\ ch ta))))) , (-> ch th)(-> ph (E. x (/\ ps (A. y (/\ th ta)))))
BiReplaceImp1Ex1An1Al1 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps (A. y [ ch ] ] ] )))) # (<-> [ ch ] [ th ] ) # (-> ph (E. x (/\ ps (A. y [ [ [ th ] )))) # </table>
(-> ph (E. x (/\ ps (A. y ch)))) , (<-> ch th)(-> ph (E. x (/\ ps (A. y th))))
BiReplaceImp1Ex1An1Al1An0 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps (A. y (/\ [ ch ] ] ] ta))))) # (<-> [ ch ] [ th ] ) # (-> ph (E. x (/\ ps (A. y (/\ [ [ [ th ] ta))))) # </table>
(-> ph (E. x (/\ ps (A. y (/\ ch ta))))) , (<-> ch th)(-> ph (E. x (/\ ps (A. y (/\ th ta)))))
BiReplaceImp1Ex1An1Al1An0Not0 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps (A. y (/\ (-. [ ch ] ] ] ) ta))))) # (<-> [ ch ] [ th ] ) # (-> ph (E. x (/\ ps (A. y (/\ (-. [ [ [ th ] ) ta))))) # </table>
(-> ph (E. x (/\ ps (A. y (/\ (-. ch) ta))))) , (<-> ch th)(-> ph (E. x (/\ ps (A. y (/\ (-. th) ta)))))
BiReplaceImp1Ex1An1Al1Or0 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps (A. y (\/ [ ch ] ] ] ta))))) # (<-> [ ch ] [ th ] ) # (-> ph (E. x (/\ ps (A. y (\/ [ [ [ th ] ta))))) # </table>
(-> ph (E. x (/\ ps (A. y (\/ ch ta))))) , (<-> ch th)(-> ph (E. x (/\ ps (A. y (\/ th ta)))))
ImpReplaceImp1Ex1An1Al1Or0 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps (A. y (\/ [ ch ] ] ] ta))))) # (-> [ ch ] [ th ] ) # (-> ph (E. x (/\ ps (A. y (\/ [ [ [ th ] ta))))) # </table>
(-> ph (E. x (/\ ps (A. y (\/ ch ta))))) , (-> ch th)(-> ph (E. x (/\ ps (A. y (\/ th ta)))))
ImpReplaceImp1Ex1An1Al1Or1 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps (A. y (\/ ch [ th ] ] ] ))))) # (-> [ th ] [ ta ] ) # (-> ph (E. x (/\ ps (A. y (\/ ch [ [ [ ta ] ))))) # </table>
(-> ph (E. x (/\ ps (A. y (\/ ch th))))) , (-> th ta)(-> ph (E. x (/\ ps (A. y (\/ ch ta)))))
BiReplaceBi1Not0An0 # <title> Substitution </title> # <table> # (<-> ph (-. (/\ [ ps ] ] ] th))) # (<-> [ ps ] [ ch ] ) # (<-> ph (-. (/\ [ [ [ ch ] th))) # </table>
(<-> ph (-. (/\ ps th))) , (<-> ps ch)(<-> ph (-. (/\ ch th)))
BiReplaceImp1Ex1An1Not0Ex1 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps (-. (E. y [ ch ] ] ] ))))) # (<-> [ ch ] [ th ] ) # (-> ph (E. x (/\ ps (-. (E. y [ [ [ th ] ))))) # </table>
(-> ph (E. x (/\ ps (-. (E. y ch))))) , (<-> ch th)(-> ph (E. x (/\ ps (-. (E. y th)))))
BiReplaceImp1Ex1An1Not0Ex1Not0 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps (-. (E. y (-. [ ch ] ] ] )))))) # (<-> [ ch ] [ th ] ) # (-> ph (E. x (/\ ps (-. (E. y (-. [ [ [ th ] )))))) # </table>
(-> ph (E. x (/\ ps (-. (E. y (-. ch)))))) , (<-> ch th)(-> ph (E. x (/\ ps (-. (E. y (-. th))))))
(-> (/\ (-. (prime x)) (/\ (> x (1)) (-. (E. y (/\ (| y x) (prime y)))))) (E. z (/\ (< z x) (-. (E. y (/\ (| y z) (prime y)))))))
(-> (| (S A) (+ (* (S A) B) C)) (| (S A) C))
divides1 number 67.0
(-. (| (S (S A)) (1)))
EqReplaceNot0Divs0 number 67.0 # <title> Substitution </title> # <table> # (-. (| [ A ] ] ] C)) # (= [ A ] [ B ] ) # (-. (| [ [ [ B ] C)) # </table>
(-. (| A C)) , (= A B)(-. (| B C))
EqReplaceNot0Divs0Add0 # <title> Substitution </title> # <table> # (-. (| (+ [ A ] ] ] C) D)) # (= [ A ] [ B ] ) # (-. (| (+ [ [ [ B ] C) D)) # </table>
(-. (| (+ A C) D)) , (= A B)(-. (| (+ B C) D))
EqReplaceNot0Divs0Add1 # <title> Substitution </title> # <table> # (-. (| (+ A [ B ] ] ] ) D)) # (= [ B ] [ C ] ) # (-. (| (+ A [ [ [ C ] ) D)) # </table>
(-. (| (+ A B) D)) , (= B C)(-. (| (+ A C) D))
(-> (<= (2) B) (-. (| B (1))))
EqReplaceImp0Le0 # <title> Substitution </title> # <table> # (-> (<= [ A ] ] ] C) ph) # (= [ A ] [ B ] ) # (-> (<= [ [ [ B ] C) ph) # </table>
(-> (<= A C) ph) , (= A B)(-> (<= B C) ph)
divides1prime # <title> A prime number cannot divide 1 </title>
(-> (prime A) (-. (| A (1))))
(-> (| (S A) B) (-> (| (S A) (+ B C)) (| (S A) C)))
suceqi number 69.0
(= A B)(= (S A) (S B))
infprime.1 number 70.0
(E. x (/\ (< (S (S A)) (S (S x))) (prime (S (S x)))))
infprime # <title> Primes are infinite </title>
(E. x (/\ (< A x) (prime x)))
sqrteu # <title> Existential uniqueness of sqrt </title>
(E! x (/\ (<= (* x x) A) (< A (* (S x) (S x)))))
df-sqrt-just number 74.0
(= (iota ({|} x (/\ (<= (* x x) A) (< A (* (S x) (S x)))))) (iota ({|} y (/\ (<= (* y y) A) (< A (* (S y) (S y)))))))
(= (sqrt A) (iota ({|} x (/\ (<= (* x x) A) (< A (* (S x) (S x)))))))
syl6seqr number 76.0
(-> ph (=_ S T)) , (=_ U T)(-> ph (=_ S U))
sqrteq number 77.0
(-> (= A B) (= (sqrt A) (sqrt B)))
df-min-just number 87.0
(= (iota ({|} x (/\ (e. x S) (A. y (-> (e. y S) (<= x y)))))) (iota ({|} x' (/\ (e. x' S) (A. y' (-> (e. y' S) (<= x' y')))))))
(= (min S) (iota ({|} x (/\ (e. x S) (A. y (-> (e. y S) (<= x y)))))))
minseq number 88.0 # <table> # (-> (=_ <r> S <g> T) (= (min <r> S) (min <g> T))) # </table>
(-> (=_ S T) (= (min S) (min T)))
(=_ S T)(= (min S) (min T))
(-> (= y A) (<-> (-> (e. y S) (/\ (e. (min S) S) (<= (min S) y))) (-> (e. A S) (/\ (e. (min S) S) (<= (min S) A)))))
minex.2.1 number 102.0
(-> (/\ (e. B S) (A. w (-> (e. w S) (<= A w)))) (<= A B))
(-> (/\ (e. A S) (A. w (-> (e. w S) (<= A w)))) (= A (min S)))
anim3 number 103.0
(-> (/\ ph (-> ps ch)) (-> ps (/\ ph ch)))
(-> (/\ (e. w' S) (A. w (-> (e. w S) (<= w' w)))) (= w' (min S)))
(-> (A. w (-> (<= w z) (-> (e. w S) (/\ (e. (min S) S) (<= (min S) w))))) (-> (e. (S z) S) (/\ (e. (min S) S) (<= (min S) (S z)))))
minex # <title> The minimum of a nonempty set exists </title>
(-> (e. A S) (/\ (e. (min S) S) (<= (min S) A)))
minseqd Equality deduction for set minimum
(-> ph (=_ S T))(-> ph (= (min S) (min T)))
df-mod-just number 89.0
(= (min ({|} x (E. y (= (+ (* B y) x) A)))) (min ({|} x' (E. y' (= (+ (* B y') x') A)))))
(= (mod A B) (min ({|} x (E. y (= (+ (* B y) x) A)))))
(-> (= A B) (= (mod A C) (mod B C)))
modeq2 Equality theorem for mod
(-> (= A B) (= (mod C A) (mod C B)))
(= A B)(= (mod A C) (mod B C))
(-> ph (= A B))(-> ph (= (mod A C) (mod B C)))
(= A B)(= (mod C A) (mod C B))
(-> ph (= A B))(-> ph (= (mod C A) (mod C B)))
EqReplaceImp1Eq1Add0 # <title> Substitution </title> # <table> # (-> ph (= A (+ [ B ] ] ] D))) # (= [ B ] [ C ] ) # (-> ph (= A (+ [ [ [ C ] D))) # </table>
(-> ph (= A (+ B D))) , (= B C)(-> ph (= A (+ C D)))
mincl # <title> A nonempty set minimum is in the set </title>
(-> (E. x (e. x S)) (e. (min S) S))
(= (min ({} A)) A)
(= (mod A (0)) A)
EqReplaceLt0Mod1 # <title> Substitution </title> # <table> # (< (mod A [ B ] ] ] ) D) # (= [ B ] [ C ] ) # (< (mod A [ [ [ C ] ) D) # </table>
(< (mod A B) D) , (= B C)(< (mod A C) D)
(-> (/\ (= (+ (* (S B) D) C) A) (= (+ (* (S B) D') C') A)) (<-> (< D' D) (< C C')))
(-> (/\ (= (+ (* (S B) D) C) A) (= (+ (* (S B) D') C') A)) (-> (< C C') (<= (+ (S B) C) C')))
(-> (/\ (= (+ (* B D) C) A) (= (+ (* B D') C') A)) (-> (< C C') (<= (+ B C) C')))
minval # <summary> Another way of specifying the value of minimum </summary>
(rwff x ph) , (-> (= x A) (<-> ph ps))(-> (/\ ps (A. x (-> ph (<= A x)))) (= A (min ({|} x ph))))
minsetval # <suggest> right('Simplify', 'min') </suggest>
(-> (/\ (e. A S) (A. x (-> (e. x S) (<= A x)))) (= A (min ({|} x (e. x S)))))
minel # <summary> If any number satisfies a predicate, the minimum does </summary>
(rwff x ph) , (-> (= x (min ({|} x ph))) (<-> ph ps))(-> (E. x ph) ps)
minsn2 # <summary> # Combines <a href="minsn">minsn</a> and <a href="snid">snid</a> into the form # <a href="minun">minun</a> expects. # </summary>
(/\ (= A (min ({} A))) (e. A ({} A)))
(-> (e. A S) (<= (min S) A))
minun # <title> Minimum of a Union </title>
(-> (/\ (e. (min S) S) (<= (min S) (min T))) (= (min S) (min (u. S T))))
EqReplaceImp0An0El0 # <title> Substitution </title> # <table> # (-> (/\ (e. [ A ] ] ] S) ph) ps) # (= [ A ] [ B ] ) # (-> (/\ (e. [ [ [ B ] S) ph) ps) # </table>
(-> (/\ (e. A S) ph) ps) , (= A B)(-> (/\ (e. B S) ph) ps)
EqReplaceImp0An1Le0 # <title> Substitution </title> # <table> # (-> (/\ ph (<= [ A ] ] ] C)) ps) # (= [ A ] [ B ] ) # (-> (/\ ph (<= [ [ [ B ] C)) ps) # </table>
(-> (/\ ph (<= A C)) ps) , (= A B)(-> (/\ ph (<= B C)) ps)
(/\ (= A (min S)) (e. A S)) , (<= A (min T))(/\ (= A (min (u. S T))) (e. A (u. S T)))
modval # <summary> Main theorem giving mod its value </summary>
(-> (/\ (< C B) (E. y (= (+ (* B y) C) A))) (= C (mod A B)))
modvali # <title> Modulo Value </title>
(< C B) , (= (+ (* B D) C) A)(= (mod A B) C)
modid Identity law for modulo
(-> (< A B) (= (mod A B) A))
df-div-just Definition of division using set minimum instead of iota
(= (min ({|} x (= (+ (* B x) (mod A B)) A))) (min ({|} y (= (+ (* B y) (mod A B)) A))))
(= (div A B) (min ({|} x (= (+ (* B x) (mod A B)) A))))
diveq1 # <title> Equivalence for div </title> ##
(-> (= A C) (= (div A B) (div C B)))
(-> (= B C) (= (div A B) (div A C)))
(-> (/\ (= A B) (= C D)) (= (div A C) (div B D)))
diveq1i # <title> Divide both sides of an equation </title> # <table> # (= [ A ] [ C ) # (= (div [ A B) ] (div [ C B)) # </table>
(= A C)(= (div A B) (div C B))
(-> ph (= A C))(-> ph (= (div A B) (div C B)))
(= A B)(= (div C A) (div C B))
(-> ph (= A B))(-> ph (= (div C A) (div C B)))
modex number 108.0
(E. y (= (+ (* B y) (mod A B)) A))
modle1 number 107.0
(<= (mod A B) A)
div # <summary> Main theorem about division </summary>
(= (+ (* B (div A B)) (mod A B)) A)
modmin number 109.0
(-> (E. x (= (+ (* A x) B) C)) (<= (mod C A) B))
modlt2 number 110.0
(< (mod A (S B)) (S B))
dividesmod # <title> Divides and modulo equivalence </title> # <summary> Divides relation is equivalent to zero remainder </summary>
(<-> (| A B) (= (mod B A) (0)))
(-> (< (0) B) (= (div (* B A) B) A))
muldivi # <title> Cancel multiplication for numbers above 0 </title> # <table> # (> <r> A (0)) # (= (div (* <r> A B) <r> A) B) # </table>
(> A (0))(= (div (* A B) A) B)
df-tri # <title> Triangular Number Definition </title> # <summary> # A triangular number counts the number of objects that can # form an equilateral triangle. # </summary> # <suggest> right('Define', '△') left('Simplify', '△') </suggest>
(= (tri A) (div (* A (+ A (1))) (2)))
trieq # <title> Equivalence for triangular number </title> ##
(-> (= A B) (= (tri A) (tri B)))
(= A B)(= (tri A) (tri B))
(-> ph (= A B))(-> ph (= (tri A) (tri B)))
0notEqual2 # <title> One-Digit Inequality </title>
(-. (= (0) (2)))
0less2 # <title> One-Digit Inequality </title>
(< (0) (2))
0mod2 # <title> One-digit Modulo </title>
(= (mod (0) (2)) (0))
2notEqual0 # <title> One-Digit Inequality </title>
(-. (= (2) (0)))
2greater0 # <title> One-Digit Inequality </title>
(> (2) (0))
EqReplaceEq1Div0 # <title> Substitution </title> # <table> # (= A (div [ B ] ] ] D)) # (= [ B ] [ C ] ) # (= A (div [ [ [ C ] D)) # </table>
(= A (div B D)) , (= B C)(= A (div C D))
EqReplaceEq0Add0 # <title> Substitution </title> # <table> # (= (+ [ A ] ] ] C) D) # (= [ A ] [ B ] ) # (= (+ [ [ [ B ] C) D) # </table>
(= (+ A C) D) , (= A B)(= (+ B C) D)
EqReplaceEq1Div0Mul1 # <title> Substitution </title> # <table> # (= A (div (* B [ C ] ] ] ) A')) # (= [ C ] [ D ] ) # (= A (div (* B [ [ [ D ] ) A')) # </table>
(= A (div (* B C) A')) , (= C D)(= A (div (* B D) A'))
EqReplaceEq1Div0Mul1Add1 # <title> Substitution </title> # <table> # (= A (div (* B (+ C [ D ] ] ] )) B')) # (= [ D ] [ A' ] ) # (= A (div (* B (+ C [ [ [ A' ] )) B')) # </table>
(= A (div (* B (+ C D)) B')) , (= D A')(= A (div (* B (+ C A')) B'))
EqReplaceBi1Eq1 # <title> Substitution </title> # <table> # (<-> ph (= A [ B ] ] ] )) # (= [ B ] [ C ] ) # (<-> ph (= A [ [ [ C ] )) # </table>
(<-> ph (= A B)) , (= B C)(<-> ph (= A C))
BiReplaceEq1Min0Ab1 # <title> Substitution </title> # <table> # (= A (min ({|} x [ ph ] ] ] ))) # (<-> [ ph ] [ ps ] ) # (= A (min ({|} x [ [ [ ps ] ))) # </table>
(= A (min ({|} x ph))) , (<-> ph ps)(= A (min ({|} x ps)))
SeqReplaceEq1Min0 # <title> Substitution </title> # <table> # (= A (min [ S ] ] ] )) # (=_ [ S ] [ T ] ) # (= A (min [ [ [ T ] )) # </table>
(= A (min S)) , (=_ S T)(= A (min T))
(> B (0)) , (= (+ (* B C) (mod A B)) A)(= (div A B) C)
triangle0 # <title> 0th Triangular Number </title>
(= (tri (0)) (0))
EqReplaceImp1Divs1 # <title> Substitution </title> # <table> # (-> ph (| A [ B ] ] ] )) # (= [ B ] [ C ] ) # (-> ph (| A [ [ [ C ] )) # </table>
(-> ph (| A B)) , (= B C)(-> ph (| A C))
EqReplaceBi1Le0Add1 # <title> Substitution </title> # <table> # (<-> ph (<= (+ A [ B ] ] ] ) D)) # (= [ B ] [ C ] ) # (<-> ph (<= (+ A [ [ [ C ] ) D)) # </table>
(<-> ph (<= (+ A B) D)) , (= B C)(<-> ph (<= (+ A C) D))
EqReplaceImp1Ex1An0Le0 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ (<= [ A ] ] ] C) ps))) # (= [ A ] [ B ] ) # (-> ph (E. x (/\ (<= [ [ [ B ] C) ps))) # </table>
(-> ph (E. x (/\ (<= A C) ps))) , (= A B)(-> ph (E. x (/\ (<= B C) ps)))
BiReplaceEx1Imp1 # <title> Substitution </title> # <table> # (E. x (-> ph [ ps ] ] ] )) # (<-> [ ps ] [ ch ] ) # (E. x (-> ph [ [ [ ch ] )) # </table>
(E. x (-> ph ps)) , (<-> ps ch)(E. x (-> ph ch))
(-> (< (0) B) (< (mod A B) B))
(-> (< (0) A) (<-> (= C (mod B A)) (/\ (< C A) (E. x (= (+ (* A x) C) B)))))
(-> (= C (mod B A)) (E. x (= (+ (* A x) C) B)))
df-even # <title> Even Number Definition </title> # <summary> # An even number is divisible by 2. # </summary> # <suggest> right('Define', 'Ev') left('Simplify', 'Ev') </suggest>
(<-> (even A) (| (2) A))
(-> (= A B) (<-> (even A) (even B)))
(= A B)(<-> (even A) (even B))
(-> ph (= A B))(-> ph (<-> (even A) (even B)))
df-odd # <title> Odd Number Definition </title> # <summary> # An odd number is not divisible by 2. # </summary> # <suggest> right('Define', 'Odd') left('Simplify', 'Odd') </suggest>
(<-> (odd A) (-. (| (2) A)))
oddNotEven # <title> An Odd Number is Not Even </title>
(<-> (-. (even A)) (odd A))
evenNotOdd # <title> An Odd Number is Not Even </title>
(<-> (-. (odd A)) (even A))
notDivides2 # <title> A non-multiple occurs between two multiples </title>
(-> (/\ (-. (| A B)) (> A (0))) (E. x (/\ (< (* A x) B) (< B (* A (+ x (1)))))))
notDivides3 # <title> A non-multiple occurs between two multiples </title>
(-> (> A (0)) (<-> (-. (| A B)) (E. x (/\ (< (* A x) B) (< B (* A (+ x (1))))))))
EqReplaceBi1Ex1An1Lt1 # <title> Substitution </title> # <table> # (<-> ph (E. x (/\ ps (< A [ B ] ] ] )))) # (= [ B ] [ C ] ) # (<-> ph (E. x (/\ ps (< A [ [ [ C ] )))) # </table>
(<-> ph (E. x (/\ ps (< A B)))) , (= B C)(<-> ph (E. x (/\ ps (< A C))))
BiReplaceBi1Ex1An0 # <title> Substitution </title> # <table> # (<-> ph (E. x (/\ [ ps ] ] ] th))) # (<-> [ ps ] [ ch ] ) # (<-> ph (E. x (/\ [ [ [ ch ] th))) # </table>
(<-> ph (E. x (/\ ps th))) , (<-> ps ch)(<-> ph (E. x (/\ ch th)))
oddex # <title> Alternative Odd Number Definition </title>
(<-> (odd A) (E. x (= (+ (* (2) x) (1)) A)))
evensuccessor # <title> Odd Numbers Are Above Even Numbers </title>
(<-> (even A) (odd (+ A (1))))
EqReplaceBi1Ex1Eq0Add1 # <title> Substitution </title> # <table> # (<-> ph (E. x (= (+ A [ B ] ] ] ) D))) # (= [ B ] [ C ] ) # (<-> ph (E. x (= (+ A [ [ [ C ] ) D))) # </table>
(<-> ph (E. x (= (+ A B) D))) , (= B C)(<-> ph (E. x (= (+ A C) D)))
oddsuccessor # <title> Even Numbers Are Above Odd Numbers </title>
(<-> (odd A) (even (+ A (1))))
consecutiveEven # <title> One of two consecutive numbers is even </title> # <summary> # For two consecutive numbers, one of the numbers is even. # <a href="consecutiveOdd">consecutiveOdd</a> shows that one # of them is odd. # </summary>
(\/ (even A) (even (+ A (1))))
consecutiveOdd # <title> One of two consecutive numbers is odd </title> # <summary> # For two consecutive numbers, one of the numbers is odd. # <a href="consecutiveEven">consecutiveEven</a> shows that one # of them is even. # </summary>
(\/ (odd A) (odd (+ A (1))))
evenmul # <title> Any multiple of an even number is even </title>
(-> (even A) (even (* A B)))
EqReplaceEq1Add0Add1 # <title> Substitution </title> # <table> # (= A (+ (+ B [ C ] ] ] ) A')) # (= [ C ] [ D ] ) # (= A (+ (+ B [ [ [ D ] ) A')) # </table>
(= A (+ (+ B C) A')) , (= C D)(= A (+ (+ B D) A'))
EqReplaceEq1Add1Add0 # <title> Substitution </title> # <table> # (= A (+ B (+ [ C ] ] ] A'))) # (= [ C ] [ D ] ) # (= A (+ B (+ [ [ [ D ] A'))) # </table>
(= A (+ B (+ C A'))) , (= C D)(= A (+ B (+ D A')))
BiReplaceImp1Ex1Ex1 # <title> Substitution </title> # <table> # (-> ph (E. x (E. y [ ps ] ] ] ))) # (<-> [ ps ] [ ch ] ) # (-> ph (E. x (E. y [ [ [ ch ] ))) # </table>
(-> ph (E. x (E. y ps))) , (<-> ps ch)(-> ph (E. x (E. y ch)))
EqReplaceImp1Ex1Ex1Eq0 # <title> Substitution </title> # <table> # (-> ph (E. x (E. y (= [ A ] ] ] C)))) # (= [ A ] [ B ] ) # (-> ph (E. x (E. y (= [ [ [ B ] C)))) # </table>
(-> ph (E. x (E. y (= A C)))) , (= A B)(-> ph (E. x (E. y (= B C))))
EqReplaceEq1Add0Add0 # <title> Substitution </title> # <table> # (= A (+ (+ [ B ] ] ] D) A')) # (= [ B ] [ C ] ) # (= A (+ (+ [ [ [ C ] D) A')) # </table>
(= A (+ (+ B D) A')) , (= B C)(= A (+ (+ C D) A'))
ImpReplaceImp1Ex1Ex1Ex1 # <title> Substitution </title> # <table> # (-> ph (E. x (E. y (E. z [ ps ] ] ] )))) # (-> [ ps ] [ ch ] ) # (-> ph (E. x (E. y (E. z [ [ [ ch ] )))) # </table>
(-> ph (E. x (E. y (E. z ps)))) , (-> ps ch)(-> ph (E. x (E. y (E. z ch))))
oddmul # <title> The product of odd numbers is odd </title>
(-> (/\ (odd A) (odd B)) (odd (* A B)))
BiReplaceImp1Or1 # <title> Substitution </title> # <table> # (-> ph (\/ ps [ ch ] ] ] )) # (<-> [ ch ] [ th ] ) # (-> ph (\/ ps [ [ [ th ] )) # </table>
(-> ph (\/ ps ch)) , (<-> ch th)(-> ph (\/ ps th))
EqReplaceImp1Even0 # <title> Substitution </title> # <table> # (-> ph (even [ A ] ] ] )) # (= [ A ] [ B ] ) # (-> ph (even [ [ [ B ] )) # </table>
(-> ph (even A)) , (= A B)(-> ph (even B))
evenmul2 # <title> Multiplication of Even Numbers </title>
(<-> (even (* A B)) (\/ (even A) (even B)))
evenxxplus1 # <title> Product of consecutive numbers is even </title>
(even (* A (+ A (1))))
div2xxplus1 # <title> Product of consecutive numbers is even </title>
(| (2) (* A (+ A (1))))
exey number 111.0
(-> (/\ (E. x ph) (E. y ps)) (E. x (E. y (/\ ph ps))))
dividesadd12 number 0.9 # <suggest> right('Simplify', '|') </suggest>
(-> (/\ (| A B) (| A C)) (| A (+ B C)))
(-> (/\ (= (mod B A) (0)) (= (mod C A) (0))) (= (mod (+ B C) A) (0)))
divdist # <title> Distribute an integer division </title> # <summary> # Integer division distributes when adding two multiples of the divisor # </summary>
(| A B) , (| A C)(-> (< (0) A) (= (+ (div B A) (div C A)) (div (+ B C) A)))
divdisti # <title> Distribute an integer division </title> # <table> # (< (0) A) # (| A <g> B) # (| A <r> C) # (= (+ (div <g> B A) (div <r> C A)) (div (+ <g> B <r> C) A)) # </table> # <summary> # Integer division distributes when adding two multiples of the divisor # </summary>
(< (0) A) , (| A B) , (| A C)(= (+ (div B A) (div C A)) (div (+ B C) A))
trianglePlus1 # <title> Formula for the next triangular number </title>
(= (+ (tri A) (+ A (1))) (tri (+ A (1))))
trianglePlus1r # <title> Triangular Number Recurrence Relation </title> # <summary> Formula for the next triangular number in terms of the previous one. </summary>
(= (tri (+ A (1))) (+ (+ (tri A) A) (1)))
LtReplaceLe1 # <title> Substitution </title> # <table> # (<= A [ B ] ] ] ) # (< [ B ] [ C ] ) # (< A [ [ [ C ] ) # </table>
(<= A B) , (< B C)(< A C)
triMonotonic # <title> Triangular Numbers are Monotonically Increasing </title>
(< (tri A) (tri (+ A (1))))
(<-> ([/] B y (< (tri A) (tri (+ (+ A y) (1))))) (< (tri A) (tri (+ (+ A B) (1)))))
EqReplaceLt1Tri0 # <title> Substitution </title> # <table> # (< A (tri [ B ] ] ] )) # (= [ B ] [ C ] ) # (< A (tri [ [ [ C ] )) # </table>
(< A (tri B)) , (= B C)(< A (tri C))
EqReplaceLt0Tri0 # <title> Substitution </title> # <table> # (< (tri [ A ] ] ] ) C) # (= [ A ] [ B ] ) # (< (tri [ [ [ B ] ) C) # </table>
(< (tri A) C) , (= A B)(< (tri B) C)
triMonotonic2 # <title> Triangular Numbers are Monotonically Increasing </title>
(< (tri A) (tri (+ (+ A B) (1))))
triMonotonic3 # <title> Triangular Numbers are Monotonically Increasing </title>
(-> (< A B) (< (tri A) (tri B)))
triMonotonic4 # <title> Triangular Numbers are Monotonically Increasing </title>
(-> (<= A B) (<= (tri A) (tri B)))
(<-> (<= A B) (< (+ (tri B) A) (tri (+ B (1)))))
(-> (/\ (< B C) (<= A B)) (< (+ (tri B) A) (tri C)))
df-op # <title> Definition of Ordered Pair </title>
(= (<,> A B) (+ (tri (+ A B)) A))
opeq1 # <title> Equivalence for <,> </title> ##
(-> (= A C) (= (<,> A B) (<,> C B)))
(= A C)(= (<,> A B) (<,> C B))
opeq2 # <title> Equivalence for <,> </title> ##
(-> (= B C) (= (<,> A B) (<,> A C)))
(-> ph (= A C))(-> ph (= (<,> A B) (<,> C B)))
(= B C)(= (<,> A B) (<,> A C))
opeq12 # <title> Equivalence for <,> </title> ##
(-> (/\ (= A B) (= C D)) (= (<,> A C) (<,> B D)))
(-> ph (= B C))(-> ph (= (<,> A B) (<,> A C)))
(-> ph (= A B)) , (-> ph (= C D))(-> ph (= (<,> A C) (<,> B D)))
LeReplaceImp1Lt1 # <title> Substitution </title> # <table> # (-> ph (< A [ B ] ] ] )) # (<= [ B ] [ C ] ) # (-> ph (< A [ [ [ C ] )) # </table>
(-> ph (< A B)) , (<= B C)(-> ph (< A C))
(-> (< (+ A B) (+ A' B')) (< (<,> A B) (<,> A' B')))
(-> (-. (= (+ A B) (+ A' B'))) (-. (= (<,> A B) (<,> A' B'))))
EqReplaceImp1Not0Eq0 # <title> Substitution </title> # <table> # (-> ph (-. (= [ A ] ] ] C))) # (= [ A ] [ B ] ) # (-> ph (-. (= [ [ [ B ] C))) # </table>
(-> ph (-. (= A C))) , (= A B)(-> ph (-. (= B C)))
EqReplaceImp1Not0Eq1 # <title> Substitution </title> # <table> # (-> ph (-. (= A [ B ] ] ] ))) # (= [ B ] [ C ] ) # (-> ph (-. (= A [ [ [ C ] ))) # </table>
(-> ph (-. (= A B))) , (= B C)(-> ph (-. (= A C)))
(-> (/\ (= (+ A B) (+ A' B')) (-. (= A A'))) (-. (= (<,> A' B') (<,> A B))))
BiReplaceImp0An0Or1 # <title> Substitution </title> # <table> # (-> (/\ (\/ ph [ ps ] ] ] ) th) ta) # (<-> [ ps ] [ ch ] ) # (-> (/\ (\/ ph [ [ [ ch ] ) th) ta) # </table>
(-> (/\ (\/ ph ps) th) ta) , (<-> ps ch)(-> (/\ (\/ ph ch) th) ta)
BiReplaceImp1An1An0 # <title> Substitution </title> # <table> # (-> ph (/\ ps (/\ [ ch ] ] ] ta))) # (<-> [ ch ] [ th ] ) # (-> ph (/\ ps (/\ [ [ [ th ] ta))) # </table>
(-> ph (/\ ps (/\ ch ta))) , (<-> ch th)(-> ph (/\ ps (/\ th ta)))
(-> (= (<,> A B) (<,> A' B')) (/\ (= A A') (= B B')))
opth # <title> Ordered Pair Theorem </title> # <summary> # Two ordered pairs are equal if and only if the first and the # second numbers of the pair are equal. # </summary>
(<-> (= (<,> A B) (<,> A' B')) (/\ (= A A') (= B B')))
EqReplaceImp1Imp1Eq0 # <title> Substitution </title> # <table> # (-> ph (-> ps (= [ A ] ] ] C))) # (= [ A ] [ B ] ) # (-> ph (-> ps (= [ [ [ B ] C))) # </table>
(-> ph (-> ps (= A C))) , (= A B)(-> ph (-> ps (= B C)))
EqReplaceBi0Eq0 # <title> Substitution </title> # <table> # (<-> (= [ A ] ] ] C) ph) # (= [ A ] [ B ] ) # (<-> (= [ [ [ B ] C) ph) # </table>
(<-> (= A C) ph) , (= A B)(<-> (= B C) ph)
(-> (/\ (= x z) (= (+ (tri z) x) A)) (= (tri (+ z (1))) (+ A (1))))
BiReplaceImp0Ex1 # <title> Substitution </title> # <table> # (-> (E. x [ ph ] ] ] ) ch) # (<-> [ ph ] [ ps ] ) # (-> (E. x [ [ [ ps ] ) ch) # </table>
(-> (E. x ph) ch) , (<-> ph ps)(-> (E. x ps) ch)
EqReplaceImp0Ex1Eq0 # <title> Substitution </title> # <table> # (-> (E. x (= [ A ] ] ] C)) ph) # (= [ A ] [ B ] ) # (-> (E. x (= [ [ [ B ] C)) ph) # </table>
(-> (E. x (= A C)) ph) , (= A B)(-> (E. x (= B C)) ph)
(-> (E. x (E. z (/\ (= x z) (= (+ (tri z) x) A)))) (E. x (E. z (/\ (<= x z) (= (+ (tri z) x) (+ A (1)))))))
(-> (/\ (< x z) (= (+ (tri z) x) A)) (/\ (<= (+ x (1)) z) (= (+ (tri z) (+ x (1))) (+ A (1)))))
(-> (E. x (E. z (/\ (< x z) (= (+ (tri z) x) A)))) (E. x (E. z (/\ (<= x z) (= (+ (tri z) x) (+ A (1)))))))
(-> (E. x (E. z (/\ (<= x z) (= (+ (tri z) x) A)))) (E. x (E. z (/\ (<= x z) (= (+ (tri z) x) (+ A (1)))))))
(<-> ([/] A y (E. x (E. z (/\ (<= x z) (= (+ (tri z) x) y))))) (E. x (E. z (/\ (<= x z) (= (+ (tri z) x) A)))))
exTriangle # <title> Existence of Triangular Number Pair </title>
(E. x (E. z (/\ (<= x z) (= (+ (tri z) x) A))))
BiReplaceEx1Ex1 # <title> Substitution </title> # <table> # (E. x (E. y [ ph ] ] ] )) # (<-> [ ph ] [ ps ] ) # (E. x (E. y [ [ [ ps ] )) # </table>
(E. x (E. y ph)) , (<-> ph ps)(E. x (E. y ps))
BiReplaceEx1Ex1An0 # <title> Substitution </title> # <table> # (E. x (E. y (/\ [ ph ] ] ] ch))) # (<-> [ ph ] [ ps ] ) # (E. x (E. y (/\ [ [ [ ps ] ch))) # </table>
(E. x (E. y (/\ ph ch))) , (<-> ph ps)(E. x (E. y (/\ ps ch)))
ImpReplaceEx1Ex1 # <title> Substitution </title> # <table> # (E. x (E. y [ ph ] ] ] )) # (-> [ ph ] [ ps ] ) # (E. x (E. y [ [ [ ps ] )) # </table>
(E. x (E. y ph)) , (-> ph ps)(E. x (E. y ps))
ImpReplaceEx1Ex1Ex1 # <title> Substitution </title> # <table> # (E. x (E. y (E. z [ ph ] ] ] ))) # (-> [ ph ] [ ps ] ) # (E. x (E. y (E. z [ [ [ ps ] ))) # </table>
(E. x (E. y (E. z ph))) , (-> ph ps)(E. x (E. y (E. z ps)))
ImpReplaceEx1Ex1Ex1An0 # <title> Substitution </title> # <table> # (E. x (E. y (E. z (/\ [ ph ] ] ] ch)))) # (-> [ ph ] [ ps ] ) # (E. x (E. y (E. z (/\ [ [ [ ps ] ch)))) # </table>
(E. x (E. y (E. z (/\ ph ch)))) , (-> ph ps)(E. x (E. y (E. z (/\ ps ch))))
EqReplaceEx1Ex1Eq0 # <title> Substitution </title> # <table> # (E. x (E. y (= [ A ] ] ] C))) # (= [ A ] [ B ] ) # (E. x (E. y (= [ [ [ B ] C))) # </table>
(E. x (E. y (= A C))) , (= A B)(E. x (E. y (= B C)))
exOp # <title> Every number maps to an ordered pair </title> # <summary> # For any number A, there exists a number x and a number y # such that the pair (x, y) maps to A. # </summary>
(E. x (E. y (= (<,> x y) A)))
euhead # <title> Every number maps to a unique ordered pair </title> # <summary> # For any number A, there exists a unique number x and a unique number y # such that the pair (x, y) maps to A. This theorem shows that the first # number x is unique. The theorem <a href="eutail">eutail</a> shows that # the second number is unique. # </summary>
(E! x (E. y (= (<,> x y) A)))
eutail # <title> Every number maps to a unique ordered pair </title> # <summary> # For any number A, there exists a unique number x and a unique number y # such that the pair (x, y) maps to A. This theorem shows that the second # number y is unique. The theorem <a href="euhead">euhead</a> shows that # the first number is unique. # </summary>
(E! y (E. x (= (<,> x y) A)))
(= (iota ({|} x (E. y (= (<,> x y) A)))) (iota ({|} z (E. y' (= (<,> z y') A)))))
(= (head A) (iota ({|} x (E. y' (= (<,> x y') A)))))
headop # <title> Apply Head Operator </title> # <suggest> right('Simplify', 'Hd') </suggest>
(= (head (<,> A B)) A)
(= (iota ({|} x (E. y (= (<,> y x) A)))) (iota ({|} z (E. y' (= (<,> y' z) A)))))
(= (tail A) (iota ({|} x (E. y' (= (<,> y' x) A)))))
(-> (= A B) (= (tail A) (tail B)))
(= A B)(= (tail A) (tail B))
(-> ph (= A B))(-> ph (= (tail A) (tail B)))
tailop # <title> Apply Tail Operator </title> # <suggest> right('Simplify', 'Tl') </suggest>
(= (tail (<,> A B)) B)
ImpReplaceEx1Ex1An0 # <title> Substitution </title> # <table> # (E. x (E. y (/\ [ ph ] ] ] ch))) # (-> [ ph ] [ ps ] ) # (E. x (E. y (/\ [ [ [ ps ] ch))) # </table>
(E. x (E. y (/\ ph ch))) , (-> ph ps)(E. x (E. y (/\ ps ch)))
ImpReplaceEx1Ex1An1 # <title> Substitution </title> # <table> # (E. x (E. y (/\ ph [ ps ] ] ] ))) # (-> [ ps ] [ ch ] ) # (E. x (E. y (/\ ph [ [ [ ch ] ))) # </table>
(E. x (E. y (/\ ph ps))) , (-> ps ch)(E. x (E. y (/\ ph ch)))
ImpReplaceEx1Ex1An1An0 # <title> Substitution </title> # <table> # (E. x (E. y (/\ ph (/\ [ ps ] ] ] th)))) # (-> [ ps ] [ ch ] ) # (E. x (E. y (/\ ph (/\ [ [ [ ch ] th)))) # </table>
(E. x (E. y (/\ ph (/\ ps th)))) , (-> ps ch)(E. x (E. y (/\ ph (/\ ch th))))
opexpand # <title> Ordered Pair Expansion </title> # <summary> # Every number can be expanded into a ordered pair using the # head and tail operations. # </summary> # <suggest> left('Simplify', '(,)') </suggest>
(= A (<,> (head A) (tail A)))
df-fun-just number 86.0
(<-> (/\ (A. x (E! y (e. (<,> x y) S))) (A. x (-> (e. x S) (E. y (E. z (= x (<,> y z))))))) (/\ (A. x' (E! y' (e. (<,> x' y') S))) (A. x' (-> (e. x' S) (E. y' (E. z' (= x' (<,> y' z'))))))))
df-fun # <title> Function Definition </title> # <summary> # Functions are represented by sets of ordered pairs, but not every set is a valid function. # fun S is true when the set S is a valid function and false otherwise. # </summary>
(<-> (fun S) (/\ (A. x (E! y (e. (<,> x y) S))) (A. x (-> (e. x S) (E. y (E. z (= x (<,> y z))))))))
df-lincom-just number 90.1 (lincom A B C) means that C is a linear (integer) combination of A and B.
(-> (= C C') (<-> (E. v (E. w (E. x (E. y (= (+ (* v A) (* w B)) (+ (+ (* x A) (* y B)) C)))))) (E. v' (E. w' (E. x' (E. y' (= (+ (* v' A) (* w' B)) (+ (+ (* x' A) (* y' B)) C'))))))))
(<-> (lincom A B C) (E. v (E. w (E. x (E. y (= (+ (* v A) (* w B)) (+ (+ (* x A) (* y B)) C)))))))
exan number 90.2
(E. x ph) , (E. y ps)(E. x (E. y (/\ ph ps)))
lincomd number 90.3
(-> ph (= (+ (* A A') (* B B')) (+ (+ (* C A') (* D B')) C')))(-> ph (lincom A' B' C'))
lincomeq3 number 90.4
(-> (= A B) (<-> (lincom C D A) (lincom C D B)))
df-gcd-just number 91.0
(= (min ({|} z (/\ (-. (= z (0))) (lincom A B z)))) (min ({|} z' (/\ (-. (= z' (0))) (lincom A B z')))))
df-gcd # <title> Def. Greatest Common Denominator </title>
(= (gcd A B) (min ({|} z (/\ (-. (= z (0))) (lincom A B z)))))
gcddiv1.1 number 111.5 A' is in the set minned by (gcd A' B).
(e. (S A) ({|} z (/\ (-. (= z (0))) (lincom (S A) B z))))
gcddiv1.2 number 111.6
(-> (= (gcd (S A) B) z) (/\ (-. (= z (0))) (lincom (S A) B z)))
gcddiv1 number 112.0
(| (gcd (S A) B) (S A))
divideseq12 number 115.0
(-> (/\ (= A B) (= C D)) (-> (| A C) (| B D)))

## Godel's Beta Function

df-beta-just # <summary> A development of Godel's Beta Function, following Shoenfield(1967). </summary>
(= (min ({|} x (| (S (* (S (<,> B x)) (tail A))) (head A)))) (min ({|} x' (| (S (* (S (<,> B x')) (tail A))) (head A)))))
(= (beta A B) (min ({|} x (| (S (* (S (<,> B x)) (tail A))) (head A)))))
maxex.1 number 116.1
(-> (= x' A) (<-> (-> (fun S) (E. x (A. y (-> (/\ (< (head y) x') (e. y S)) (<= (tail y) x))))) (-> (fun S) (E. x (A. y (-> (/\ (< (head y) A) (e. y S)) (<= (tail y) x)))))))
fun1 number 116.15
(-> (fun S) (E. x (A. y (-> (/\ (= (head y) A) (e. y S)) (= y x)))))
ImpReplaceEx1An0 # <title> Substitution </title> # <table> # (E. x (/\ [ ph ] ] ] ch)) # (-> [ ph ] [ ps ] ) # (E. x (/\ [ [ [ ps ] ch)) # </table>
(E. x (/\ ph ch)) , (-> ph ps)(E. x (/\ ps ch))
ImpReplaceEx1An1 # <title> Substitution </title> # <table> # (E. x (/\ ph [ ps ] ] ] )) # (-> [ ps ] [ ch ] ) # (E. x (/\ ph [ [ [ ch ] )) # </table>
(E. x (/\ ph ps)) , (-> ps ch)(E. x (/\ ph ch))
BiReplaceEx1Imp1An1 # <title> Substitution </title> # <table> # (E. x (-> ph (/\ ps [ ch ] ] ] ))) # (<-> [ ch ] [ th ] ) # (E. x (-> ph (/\ ps [ [ [ th ] ))) # </table>
(E. x (-> ph (/\ ps ch))) , (<-> ch th)(E. x (-> ph (/\ ps th)))
BiReplaceEx1Imp1An0 # <title> Substitution </title> # <table> # (E. x (-> ph (/\ [ ps ] ] ] th))) # (<-> [ ps ] [ ch ] ) # (E. x (-> ph (/\ [ [ [ ch ] th))) # </table>
(E. x (-> ph (/\ ps th))) , (<-> ps ch)(E. x (-> ph (/\ ch th)))
ImpReplaceEx1Imp1 # <title> Substitution </title> # <table> # (E. x (-> ph [ ps ] ] ] )) # (-> [ ps ] [ ch ] ) # (E. x (-> ph [ [ [ ch ] )) # </table>
(E. x (-> ph ps)) , (-> ps ch)(E. x (-> ph ch))
(E. x (A. y (-> (e. y S) (= y x))))(-> (/\ (e. A S) (e. B S)) (= A B))
fun1.1 # <summary> Similiar to singleQualifier, but applied to fun1. </summary>
(fun S)(-> (/\ (/\ (= (head B) A) (e. B S)) (/\ (= (head C) A) (e. C S))) (= B C))
(-> (-> (fun S) (E. x (A. y (-> (/\ (< (head y) z) (e. y S)) (<= (tail y) x))))) (-> (fun S) (E. x (A. y (-> (/\ (< (head y) (S z)) (e. y S)) (<= (tail y) x))))))
(-> (fun S) (E. x (A. y (-> (/\ (< (head y) A) (e. y S)) (<= (tail y) x)))))
(<-> (A. x (-> (| B (* A x)) (| B x))) (A. x' (-> (| B (* A x')) (| B x'))))
df-relprim Definition of "relatively prime"
(<-> (relprim A B) (A. x (-> (| B (* A x)) (| B x))))
relprimex.1 number 120.0 Induction tool for relprimex
(-> (= x' C) (<-> (-> (A. x (A. y (-> (/\ (e. x S) (e. y T)) (relprim x y)))) (E. z (/\ (A. y (-> (/\ (< (S (S y)) x') (e. (S (S y)) S)) (| (S (S y)) z))) (A. y (-> (e. (S (S y)) T) (-. (| (S (S y)) z))))))) (-> (A. x (A. y (-> (/\ (e. x S) (e. y T)) (relprim x y)))) (E. z (/\ (A. y (-> (/\ (< (S (S y)) C) (e. (S (S y)) S)) (| (S (S y)) z))) (A. y (-> (e. (S (S y)) T) (-. (| (S (S y)) z)))))))))
relprimex.2 number 122.0 base case for relprimex
(-> (A. x (A. y (-> (/\ (e. x S) (e. y T)) (relprim x y)))) (E. z (/\ (A. y (-> (/\ (< (S (S y)) (0)) (e. (S (S y)) S)) (| (S (S y)) z))) (A. y (-> (e. (S (S y)) T) (-. (| (S (S y)) z)))))))
relprimeq2 Equality theorem for relative primeness, second argument
(-> (= A B) (<-> (relprim C A) (relprim C B)))
relprimeq1 Equality theorem for relative primeness, first argument
(-> (= A B) (<-> (relprim A C) (relprim B C)))
relprimex.3 induction step for relprimex
(-> (-> (A. x (A. y (-> (/\ (e. x S) (e. y T)) (relprim x y)))) (E. z (/\ (A. y (-> (/\ (< (S (S y)) A) (e. (S (S y)) S)) (| (S (S y)) z))) (A. y (-> (e. (S (S y)) T) (-. (| (S (S y)) z))))))) (-> (A. x (A. y (-> (/\ (e. x S) (e. y T)) (relprim x y)))) (E. z (/\ (A. y (-> (/\ (< (S (S y)) (S A)) (e. (S (S y)) S)) (| (S (S y)) z))) (A. y (-> (e. (S (S y)) T) (-. (| (S (S y)) z))))))))
relprimex number 127.0 # <summary> # A development of Godel's Beta Function, following Shoenfield(1967). # Suppose everything in S is relatively prime to everything in T. # Then there's a number x divisible by everything in (1,A) & S and by nothing in (1, B) & T. # We prove this by induction on A. # </summary>
(-> (A. x (A. y (-> (/\ (e. x S) (e. y T)) (relprim x y)))) (E. z (/\ (A. y (-> (/\ (< (S (S y)) A) (e. (S (S y)) S)) (| (S (S y)) z))) (A. y (-> (e. (S (S y)) T) (-. (| (S (S y)) z)))))))
relprimcom number 128.0
(-> (relprim A (S B)) (relprim (S B) A))
beta.1.1 number 128.5
(relprim (S A) (S (* B (S A))))
dividesmul12 number 128.6
(-> (| A B) (| (* A C) (* B C)))
beta.1 number 129.0 # <summary> A development of Godel's Beta Function, following Shoenfield(1967). k=A', z=B', j=C </summary>
(-> (| (S A) (S B)) (relprim (S (* (+ C (S A)) (S B))) (S (* C (S B)))))
sucsuc number 131.0
(<-> (E. x (= A (S (S x)))) (< (1) A))
relprimex2 number 133.0 # <summary> Like relprimex, but without the class abstraction </summary>
(rwff x ph) , (rwff v ps)(-> (A. x (A. v (-> (/\ ph ps) (relprim x v)))) (E. z (/\ (A. x (-> (/\ (< (1) x) (/\ (< x A) ph)) (| x z))) (A. v (-> (/\ (< (1) v) ps) (-. (| v z)))))))
beta.2.1 number 134.5
(E. w (A. x (A. y (-> (/\ (<= y x) (/\ (-. (= x y)) (/\ (< x A) (< y A)))) (relprim (S (* x (S (S w)))) (S (* y (S (S w)))))))))
beta.2 number 135.0
(E. w (A. x (A. y (-> (/\ (-. (= x y)) (/\ (< x A) (< y A))) (relprim (S (* x (S (S w)))) (S (* y (S (S w)))))))))
beta.2s number 135.1
(E. w (A. x (A. y (-> (/\ (-. (= x y)) (/\ (< x A) (< y A))) (relprim (S (* (S x) (S (S w)))) (S (* (S y) (S (S w)))))))))
beta.3.1 number 137.5
(<-> ph (E. x' (/\ ps (= x (S (* (S x') (S A)))))))(-> ph (< (1) x))
lesuc12 number 137.6
(<-> (<= A B) (<= (S A) (S B)))
beta.3 number 138.0 # <summary> A development of Godel's Beta Function, following Shoenfield(1967). </summary>
(<-> ph (E. x' (/\ (/\ (<= x' A) (e. x' S)) (= x (S (* (S x') (S (S w)))))))) , (<-> ps (E. y' (/\ (/\ (<= y' B) (-. (e. y' S))) (= y (S (* (S y') (S (S w))))))))(E. w (E. z' (/\ (A. x (-> ph (| x z'))) (A. y (-> ps (-. (| y z')))))))
beta.4.1 number 139.5
(-> (A. x (-> (E. x' (/\ ph (= x B))) (| x A))) (A. x' (-> ph (| B A))))
beta.4.2 number 139.6
(-> (A. x (-> (E. x' (/\ ph (= x B))) (-. (| x A)))) (A. x' (-> ph (-. (| B A)))))
beta.4 number 140.0
(E. z (A. x' (-> (<= x' A) (<-> (e. x' S) (| (S (* (S x') (tail z))) (head z))))))
leop12 # <title> Ordered Pairs Ordering Theorem </title> # <summary> # An ordering theorem on ordered pairs. Note that this breaks the abstraction somewhat, # but if necessary we could define a special ordering rather than reusing <=. # </summary>
(-> (/\ (<= A B) (<= C D)) (<= (<,> A C) (<,> B D)))
maxex2 number 143.0
(-> (fun S) (E. v (A. w (-> (/\ (< (head w) A) (e. w S)) (<= w (<,> A v))))))
beta number 146.0 # <summary> # A development of Godel's Beta Function, following Shoenfield(1967). # If S is a functional set defining a sequence {S(0), S(1), ..., S(A), ...}: # Then there exists a z such that for all x in [0,A], we have: # beta(z, x) = S(x). # This allows us to encode finite sequences in a quantifiable way, # which is necessary to deal with recursive functions. # </summary>
(-> (fun S) (E. z (A. x (-> (< x A) (e. (<,> x (beta z x)) S)))))
betaeq1 Equality theorem for beta, first argument
(-> (= A B) (= (beta A C) (beta B C)))
betaeq2 Equality theorem for beta, second argument
(-> (= A B) (= (beta C A) (beta C B)))
recursive.2.1 number 152.0
(E. x (= (beta x (0)) A))

## Lambda and function application

df-lambda-just # <summary> # Definition of the lambda operator, which creates a functional set from an # expression in one variable. # </summary>
(=_ ({|} x (E. y (= x (<,> y A)))) ({|} x' (E. y (= x' (<,> y A)))))
(=_ (lambda y A) ({|} x (E. y (= x (<,> y A)))))
funlambda number 156.0 # <title> Lambda constructs are functions </title>
(-> (= x y) (= A B))(fun (lambda x A))
piecewisefun.1 number 156.5
(<-> (e. A ({|} x (\/ (/\ ([/] (head x) x ph) (e. x S)) (/\ (-. ([/] (head x) x ph)) (e. x T))))) (\/ (/\ ([/] (head A) x ph) (e. A S)) (/\ (-. ([/] (head A) x ph)) (e. A T))))
piecewisefun number 157.0 # <summary> # Given two functions S, T and a discriminator ph, we can assemble a piecewise # function which mimics S when ph is true and T otherwise. # </summary>
(-> (/\ (fun S) (fun T)) (fun ({|} x' (\/ (/\ ([/] (head x') x' ph) (e. x' S)) (/\ (-. ([/] (head x') x' ph)) (e. x' T))))))
df-apply-just number 157.5 # <summary> # Definition of "apply" to apply a function (reperesented by a set S) to an # input. # </summary>
(= (iota ({|} z (e. (<,> A z) S))) (iota ({|} y (e. (<,> A y) S))))
df-apply Definition of function application
(= (apply S A) (iota ({|} z (e. (<,> A z) S))))
applyseq1 # <title> Equivalence for apply </title> ##
(-> (=_ S T) (= (apply S A) (apply T A)))
(=_ S T)(= (apply S A) (apply T A))
(-> ph (=_ S T))(-> ph (= (apply S A) (apply T A)))
applyeq2 # <title> Equivalence for apply </title> ##
(-> (= A B) (= (apply S A) (apply S B)))
(= A B)(= (apply S A) (apply S B))
(-> ph (= A B))(-> ph (= (apply S A) (apply S B)))
funseq Equality identity for fun
(-> (=_ S T) (<-> (fun S) (fun T)))
(=_ S T)(<-> (fun S) (fun T))
(-> ph (=_ S T))(-> ph (<-> (fun S) (fun T)))
ellambda # <summary> Asserts that membership in functional set of a lambda works the way you'd expect. </summary>
(-> (= x y) (= B C))(<-> (e. (<,> x A) (lambda x B)) (= A B))
funapply number 159.5 # <summary> apply actually works (assuming S is a function). </summary>
(-> (fun S) (e. (<,> A (apply S A)) S))
(-> (= x y) (= A B))(= (apply (lambda x A) x) A)
(-> (= x y) (= A B))(-> (= x C) (= (apply (lambda x A) C) A))
applylambda # <title> Apply the function </title>
(-> (= x y) (= B D)) , (-> (= x A) (= B C))(= (apply (lambda x B) A) C)
applylambdaconst # <title> Apply a constant function </title>
(= (apply (lambda x A) B) A)
applyfunid # <title> Apply the identity function </title>
(= (apply (lambda x x) A) A)
lambdaeq1 First equality identity for lambda.
(-> (= x y) (= A B))(=_ (lambda x A) (lambda y B))
lambdaeq2 Second equality identity for lambda
(-> (A. x (= A B)) (=_ (lambda x A) (lambda x B)))
(A. x (= B C))(=_ (lambda x B) (lambda x C))
(-> ph (A. x (= B C)))(-> ph (=_ (lambda x B) (lambda x C)))
df-1to1-just # <title> Def. One-to-One Function Justification </title>
(<-> (A. y (E* x (= (apply S x) y))) (A. y' (E* x' (= (apply S x') y'))))
df-1to1 # <title> One-to-one Function Definition </title> # <summary> # Functions are represented by sets of ordered pairs. # 1tot S is true when the set S is a one-to-one function meaning that for every y # there is at most one x that maps to y. One-to-one functions are also known as # injective function. # </summary>
(<-> (1to1 S) (/\ (fun S) (A. y (E* x (= (apply S x) y)))))
df-domain-just # <title> Domain Definition Justification </title>
(=_ ({|} x (E. y (e. (<,> x y) S))) ({|} x' (E. y' (e. (<,> x' y') S))))
df-domain # <title> Function Domain Definition </title> # <summary> # The domain is the set of all possible inputs into a function. # </summary>
(=_ (domain S) ({|} x (E. y (e. (<,> x y) S))))
df-range-just # <title> Range Definition Justification </title>
(=_ ({|} y (E. x (e. (<,> x y) S))) ({|} y' (E. x' (e. (<,> x' y') S))))
df-range # <title> Function Range Definition </title> # <summary> # The range is the set of all possible outputs from a function. # </summary>
(=_ (range S) ({|} y (E. x (e. (<,> x y) S))))

## Recursive functions

df-recursep-just Definition of recursion, using a predicate. (recursep S A B C) will mean that S^A(B) = C
(<-> (E. z (/\ (= (beta z (0)) B) (/\ (= (beta z A) C) (A. y (-> (< y A) (e. (<,> (beta z y) (beta z (S y))) S)))))) (E. w (/\ (= (beta w (0)) B) (/\ (= (beta w A) C) (A. x (-> (< x A) (e. (<,> (beta w x) (beta w (S x))) S)))))))
df-recursep # <title> Definition of Recursive Predicate </title> # <suggest> right('Define', 'rec') left('Simplify', 'rec') </suggest>
(<-> (recursep S A B C) (E. z (/\ (= (beta z (0)) B) (/\ (= (beta z A) C) (A. y (-> (< y A) (e. (<,> (beta z y) (beta z (S y))) S)))))))
recursepeq4 number 157.7 Fourth equality identity for recursep.
(-> (= A B) (<-> (recursep S C D A) (recursep S C D B)))
recursive.3.1 number 160.0
(<-> ph (/\ (A. y (-> (<= y (S A)) (\/ (/\ (<= y A) (= (beta z y) (beta v y))) (/\ (= y (S A)) (= (beta z y) (apply S C)))))) (/\ (= (beta v (0)) B) (/\ (= (beta v A) C) (A. y (-> (< y A) (e. (<,> (beta v y) (beta v (S y))) S)))))))(-> (fun S) (-> (recursep S A B C) (recursep S (S A) B (apply S C))))
recursive.3 number 161.0
(-> (-> (fun S) (E. x (recursep S w A x))) (-> (fun S) (E. x (recursep S (S w) A x))))
(-> (= w B) (<-> (-> (fun S) (E. x (recursep S w A x))) (-> (fun S) (E. x (recursep S B A x)))))
recursive.2 Base case
(-> (fun S) (E! x (E. z (/\ (= (beta z (0)) A) (/\ (= (beta z (0)) x) (A. y (-> (< y (0)) (e. (<,> (beta x y) (beta x (S y))) S))))))))
recursive.2a Base case
(-> (fun S) (E. x (recursep S (0) A x)))
recursive # <summary> Existence of the result of a recursion operation. </summary>
(-> (fun S) (E. w (recursep S A B w)))
recursep-uniq.1 number 166.0
(-> (fun S) (<-> (recursep S (0) A B) (= A B)))
recursepsuc # <summary> Recursing "one more time" works as expected. </summary>
(-> (recursep S (S A) B C) (E. x (/\ (recursep S A B x) (e. (<,> x C) S))))
recursep-uniq.2 number 168.0
(-> (fun S) (-> (A. z (A. z' (-> (/\ (recursep S y A z) (recursep S y A z')) (= z z')))) (A. z (A. z' (-> (/\ (recursep S (S y) A z) (recursep S (S y) A z')) (= z z'))))))
recursepeq2 Second equality identitiy for recursep.
(-> (= A B) (<-> (recursep S A C D) (recursep S B C D)))
recursep-uniq.3 number 170.0
(-> (= x B) (<-> (-> (fun S) (A. z (A. z' (-> (/\ (recursep S x A z) (recursep S x A z')) (= z z'))))) (-> (fun S) (A. z (A. z' (-> (/\ (recursep S B A z) (recursep S B A z')) (= z z')))))))
recursep-uniq # <summary> Uniqueness of the result of a recursion operation. </summary>
(-> (fun S) (-> (/\ (recursep S A B C) (recursep S A B D)) (= C D)))
recursepeq1 First equality identity of recursep.
(-> (=_ S T) (<-> (recursep S A B C) (recursep T A B C)))
recursep0 # <title> Recursing zero times does nothing </title> # <suggest> full('Simplify', 'T') </suggest>
(recursep S (0) A A)
eurecursep number 174.0 # <summary> # There exists a unique answer to recursing the function S exactly B times # starting at A. # </summary>
(-> (fun S) (E! x (recursep S A B x)))
(= (iota ({|} x (recursep S A B x))) (iota ({|} z (recursep S A B z))))
df-recurse # <title> Definition of Recursive Function </title> # <suggest> right('Define', 're') left('Simplify', 're') </suggest>
(= (recurse S A B) (iota ({|} x (recursep S A B x))))
recurseseq1 First equality identity for recurse
(-> (=_ S T) (= (recurse S A B) (recurse T A B)))
recurseeq2 Second equality identity for recurse
(-> (= A B) (= (recurse S A C) (recurse S B C)))
recursepseq1 # <title> Equivalence for recursep </title> ##
(-> (=_ S T) (<-> (recursep S A B C) (recursep T A B C)))
(=_ S T)(<-> (recursep S A B C) (recursep T A B C))
(-> ph (=_ S T))(-> ph (<-> (recursep S A B C) (recursep T A B C)))
(= A B)(<-> (recursep S A C D) (recursep S B C D))
(-> ph (= A B))(-> ph (<-> (recursep S A C D) (recursep S B C D)))
recursepeq3 # <title> Equivalence for recursep </title> ##
(-> (= B D) (<-> (recursep S A B C) (recursep S A D C)))
(= B D)(<-> (recursep S A B C) (recursep S A D C))
(-> ph (= B D))(-> ph (<-> (recursep S A B C) (recursep S A D C)))
(= A B)(<-> (recursep S C D A) (recursep S C D B))
(-> ph (= A B))(-> ph (<-> (recursep S C D A) (recursep S C D B)))
(=_ S T)(= (recurse S A B) (recurse T A B))
(-> ph (=_ S T))(-> ph (= (recurse S A B) (recurse T A B)))
(= A B)(= (recurse S A C) (recurse S B C))
(-> ph (= A B))(-> ph (= (recurse S A C) (recurse S B C)))
recurseeq3 # <title> Equivalence for recurse </title> ##
(-> (= B C) (= (recurse S A B) (recurse S A C)))
(= B C)(= (recurse S A B) (recurse S A C))
(-> ph (= B C))(-> ph (= (recurse S A B) (recurse S A C)))
(-> (/\ (= A B) (= C D)) (= (recurse S A C) (recurse S B D)))
SeqReplaceImp1Eq1Iota0 # <title> Substitution </title> # <table> # (-> ph (= A (iota [ S ] ] ] ))) # (=_ [ S ] [ T ] ) # (-> ph (= A (iota [ [ [ T ] ))) # </table>
(-> ph (= A (iota S))) , (=_ S T)(-> ph (= A (iota T)))
recurseNoPred # <title> Convert a recurse predicate to recurse </title>
(fun S)(-> (recursep S A B C) (= (recurse S A B) C))
EqReplaceImp0Recursep1 # <title> Substitution </title> # <table> # (-> (recursep S [ A ] ] ] C D) ph) # (= [ A ] [ B ] ) # (-> (recursep S [ [ [ B ] C D) ph) # </table>
(-> (recursep S A C D) ph) , (= A B)(-> (recursep S B C D) ph)
ImpReplaceImp1Ex1An0 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ [ ps ] ] ] th))) # (-> [ ps ] [ ch ] ) # (-> ph (E. x (/\ [ [ [ ch ] th))) # </table>
(-> ph (E. x (/\ ps th))) , (-> ps ch)(-> ph (E. x (/\ ch th)))
recurse0 # <title> Applying a Function 0 Times </title>
(fun S)(= (recurse S (0) A) A)
recursesuc # <title> Recursion Applies a Function Multiple Times </title>
(fun S)(= (recurse S (+ A (1)) B) (apply S (recurse S A B)))
EqReplaceEq0Recurse1 # <title> Substitution </title> # <table> # (= (recurse S [ A ] ] ] C) D) # (= [ A ] [ B ] ) # (= (recurse S [ [ [ B ] C) D) # </table>
(= (recurse S A C) D) , (= A B)(= (recurse S B C) D)
EqReplaceEq1Apply1 # <title> Substitution </title> # <table> # (= A (apply S [ B ] ] ] )) # (= [ B ] [ C ] ) # (= A (apply S [ [ [ C ] )) # </table>
(= A (apply S B)) , (= B C)(= A (apply S C))
recurse1 # <title> Applying a Function Once </title>
(fun S)(= (recurse S (1) A) (apply S A))
(<-> ([/] A x (= (recurse S x (recurse S B C)) (recurse S (+ x B) C))) (= (recurse S A (recurse S B C)) (recurse S (+ A B) C)))
EqReplaceImp1Eq1Recurse1 # <title> Substitution </title> # <table> # (-> ph (= A (recurse S [ B ] ] ] D))) # (= [ B ] [ C ] ) # (-> ph (= A (recurse S [ [ [ C ] D))) # </table>
(-> ph (= A (recurse S B D))) , (= B C)(-> ph (= A (recurse S C D)))
EqReplaceImp1Eq1Recurse1Add1 # <title> Substitution </title> # <table> # (-> ph (= A (recurse S (+ B [ C ] ] ] ) A'))) # (= [ C ] [ D ] ) # (-> ph (= A (recurse S (+ B [ [ [ D ] ) A'))) # </table>
(-> ph (= A (recurse S (+ B C) A'))) , (= C D)(-> ph (= A (recurse S (+ B D) A')))
(fun S)(= (recurse S A (recurse S B C)) (recurse S (+ A B) C))
df-fibonacci-step # <title> Definition of One Fibonacci Step </title> ## # <summary> # The Fibonacci step is used to define the Fibonacci sequence. Its behavior # is best described using by the theorem <a href="fibonacci-step-op">fibonacci-step-op</a>. # From two Fibonacci numbers, it computes the next pair of Fibonacci numbers. # </summary>
(= (fibonacci-step A) (<,> (tail A) (+ (head A) (tail A))))
fibonacci-stepeq # <title> Equivalence for fibonacci-step </title> ##
(-> (= A B) (= (fibonacci-step A) (fibonacci-step B)))
(= A B)(= (fibonacci-step A) (fibonacci-step B))
(-> ph (= A B))(-> ph (= (fibonacci-step A) (fibonacci-step B)))
EqReplaceEq1Op0 # <title> Substitution </title> # <table> # (= A (<,> [ B ] ] ] D)) # (= [ B ] [ C ] ) # (= A (<,> [ [ [ C ] D)) # </table>
(= A (<,> B D)) , (= B C)(= A (<,> C D))
EqReplaceEq1Op1 # <title> Substitution </title> # <table> # (= A (<,> B [ C ] ] ] )) # (= [ C ] [ D ] ) # (= A (<,> B [ [ [ D ] )) # </table>
(= A (<,> B C)) , (= C D)(= A (<,> B D))
EqReplaceEq1Op1Add0 # <title> Substitution </title> # <table> # (= A (<,> B (+ [ C ] ] ] A'))) # (= [ C ] [ D ] ) # (= A (<,> B (+ [ [ [ D ] A'))) # </table>
(= A (<,> B (+ C A'))) , (= C D)(= A (<,> B (+ D A')))
EqReplaceEq1Op1Add1 # <title> Substitution </title> # <table> # (= A (<,> B (+ C [ D ] ] ] ))) # (= [ D ] [ A' ] ) # (= A (<,> B (+ C [ [ [ A' ] ))) # </table>
(= A (<,> B (+ C D))) , (= D A')(= A (<,> B (+ C A')))
fibonacci-step-op # <title> Fibonacci Step Acting on Ordered Pair </title> # <summary> # Demonstrates that if A and B are two Fibonacci numbers, Fibonacci step # computes the next pair of Fibonacci numbers which includes B. #</summary>
(= (fibonacci-step (<,> A B)) (<,> B (+ A B)))
df-fibonacci # <title> Definition of the Fibonacci Sequence </title> # <summary> Defines the A-th number in the Fibonacci Sequence </summary>
(= (fibonacci A) (head (recurse (lambda y (fibonacci-step y)) A (<,> (0) (1)))))
fibonaccieq # <title> Equivalence for fibonacci </title> ##
(-> (= A B) (= (fibonacci A) (fibonacci B)))
(= A B)(= (fibonacci A) (fibonacci B))
(-> ph (= A B))(-> ph (= (fibonacci A) (fibonacci B)))
EqReplaceEq1Head0 # <title> Substitution </title> # <table> # (= A (head [ B ] ] ] )) # (= [ B ] [ C ] ) # (= A (head [ [ [ C ] )) # </table>
EqReplaceEq0Fibonacci-step0 # <title> Substitution </title> # <table> # (= (fibonacci-step [ A ] ] ] ) C) # (= [ A ] [ B ] ) # (= (fibonacci-step [ [ [ B ] ) C) # </table>
(= (fibonacci-step A) C) , (= A B)(= (fibonacci-step B) C)
(= (head (fibonacci-step A)) (tail A))
EqReplaceEq0Recurse2 # <title> Substitution </title> # <table> # (= (recurse S A [ B ] ] ] ) D) # (= [ B ] [ C ] ) # (= (recurse S A [ [ [ C ] ) D) # </table>
(= (recurse S A B) D) , (= B C)(= (recurse S A C) D)
(= (head (recurse (lambda x (fibonacci-step x)) (2) A)) (+ (head A) (tail A)))
(fun (lambda x (fibonacci-step x)))
(= (+ (head (recurse (lambda x (fibonacci-step x)) (0) A)) (head (recurse (lambda x (fibonacci-step x)) (1) A))) (head (recurse (lambda x (fibonacci-step x)) (2) A)))
(= (fibonacci (0)) (0))
(= (recurse (lambda x (fibonacci-step x)) (1) (<,> (0) (1))) (<,> (1) (1)))
(= (recurse (lambda x (fibonacci-step x)) (2) (<,> (0) (1))) (<,> (1) (2)))
(= (fibonacci (1)) (1))
(= (fibonacci (2)) (1))
EqReplaceEq0Head0 # <title> Substitution </title> # <table> # (= (head [ A ] ] ] ) C) # (= [ A ] [ B ] ) # (= (head [ [ [ B ] ) C) # </table>
SeqReplaceEq0Head0Recurse0 # <title> Substitution </title> # <table> # (= (head (recurse [ S ] ] ] A B)) C) # (=_ [ S ] [ T ] ) # (= (head (recurse [ [ [ T ] A B)) C) # </table>
(= (head (recurse S A B)) C) , (=_ S T)(= (head (recurse T A B)) C)
EqReplaceEq1Fibonacci0 # <title> Substitution </title> # <table> # (= A (fibonacci [ B ] ] ] )) # (= [ B ] [ C ] ) # (= A (fibonacci [ [ [ C ] )) # </table>
(= A (fibonacci B)) , (= B C)(= A (fibonacci C))
(= (head (recurse (lambda y (fibonacci-step y)) A (recurse (lambda x (fibonacci-step x)) B (<,> (0) (1))))) (fibonacci (+ B A)))
EqReplaceEq0Add0Fibonacci0 # <title> Substitution </title> # <table> # (= (+ (fibonacci [ A ] ] ] ) C) D) # (= [ A ] [ B ] ) # (= (+ (fibonacci [ [ [ B ] ) C) D) # </table>
(= (+ (fibonacci A) C) D) , (= A B)(= (+ (fibonacci B) C) D)
df-fibRecurse # <title> Recursive Definition of Fibonacci Numbers </title>
(= (fibonacci (+ A (2))) (+ (fibonacci A) (fibonacci (+ A (1)))))
df-sum-step-just Summation. Big Sigma.
(-> (= A B) (= (<,> (+ (head A) (1)) (+ (tail A) (apply S (head A)))) (<,> (+ (head B) (1)) (+ (tail B) (apply S (head B))))))
(=_ (sum-step S) (lambda y (<,> (+ (head y) (1)) (+ (tail y) (apply S (head y))))))
(-> (=_ S T) (=_ (sum-step S) (sum-step T)))
(=_ S T)(=_ (sum-step S) (sum-step T))
(-> ph (=_ S T))(-> ph (=_ (sum-step S) (sum-step T)))
SeqReplaceImp1Eq0Apply0 # <title> Substitution </title> # <table> # (-> ph (= (apply [ S ] ] ] A) B)) # (=_ [ S ] [ T ] ) # (-> ph (= (apply [ [ [ T ] A) B)) # </table>
(-> ph (= (apply S A) B)) , (=_ S T)(-> ph (= (apply T A) B))
EqReplaceImp1Eq1Op0 # <title> Substitution </title> # <table> # (-> ph (= A (<,> [ B ] ] ] D))) # (= [ B ] [ C ] ) # (-> ph (= A (<,> [ [ [ C ] D))) # </table>
(-> ph (= A (<,> B D))) , (= B C)(-> ph (= A (<,> C D)))
EqReplaceImp1Eq1Op0Add0 # <title> Substitution </title> # <table> # (-> ph (= A (<,> (+ [ B ] ] ] D) A'))) # (= [ B ] [ C ] ) # (-> ph (= A (<,> (+ [ [ [ C ] D) A'))) # </table>
(-> ph (= A (<,> (+ B D) A'))) , (= B C)(-> ph (= A (<,> (+ C D) A')))
EqReplaceImp1Eq1Op1 # <title> Substitution </title> # <table> # (-> ph (= A (<,> B [ C ] ] ] ))) # (= [ C ] [ D ] ) # (-> ph (= A (<,> B [ [ [ D ] ))) # </table>
(-> ph (= A (<,> B C))) , (= C D)(-> ph (= A (<,> B D)))
EqReplaceImp1Eq1Op1Add0 # <title> Substitution </title> # <table> # (-> ph (= A (<,> B (+ [ C ] ] ] A')))) # (= [ C ] [ D ] ) # (-> ph (= A (<,> B (+ [ [ [ D ] A')))) # </table>
(-> ph (= A (<,> B (+ C A')))) , (= C D)(-> ph (= A (<,> B (+ D A'))))
EqReplaceImp1Eq1Op1Add1 # <title> Substitution </title> # <table> # (-> ph (= A (<,> B (+ C [ D ] ] ] )))) # (= [ D ] [ A' ] ) # (-> ph (= A (<,> B (+ C [ [ [ A' ] )))) # </table>
(-> ph (= A (<,> B (+ C D)))) , (= D A')(-> ph (= A (<,> B (+ C A'))))
EqReplaceImp1Eq1Op1Add1Apply1 # <title> Substitution </title> # <table> # (-> ph (= A (<,> B (+ C (apply S [ D ] ] ] ))))) # (= [ D ] [ A' ] ) # (-> ph (= A (<,> B (+ C (apply S [ [ [ A' ] ))))) # </table>
(-> ph (= A (<,> B (+ C (apply S D))))) , (= D A')(-> ph (= A (<,> B (+ C (apply S A')))))
SeqReplaceEq0Apply0 # <title> Substitution </title> # <table> # (= (apply [ S ] ] ] A) B) # (=_ [ S ] [ T ] ) # (= (apply [ [ [ T ] A) B) # </table>
(= (apply S A) B) , (=_ S T)(= (apply T A) B)
(= (apply (sum-step S) (<,> A B)) (<,> (+ A (1)) (+ B (apply S A))))
(fun (sum-step S))
(-> (= C D) (<-> (= (head (recurse (sum-step S) C (<,> A B))) (+ A C)) (= (head (recurse (sum-step S) D (<,> A B))) (+ A D))))
EqReplaceImp1Bi0Eq0 # <title> Substitution </title> # <table> # (-> ph (<-> (= [ A ] ] ] C) ps)) # (= [ A ] [ B ] ) # (-> ph (<-> (= [ [ [ B ] C) ps)) # </table>
(-> ph (<-> (= A C) ps)) , (= A B)(-> ph (<-> (= B C) ps))
(= (head (recurse (sum-step S) C (<,> A B))) (+ A C))
(= (tail (apply (sum-step S) A)) (+ (tail A) (apply S (head A))))
EqReplaceEq1Add1Apply1 # <title> Substitution </title> # <table> # (= A (+ B (apply S [ C ] ] ] ))) # (= [ C ] [ D ] ) # (= A (+ B (apply S [ [ [ D ] ))) # </table>
(= A (+ B (apply S C))) , (= C D)(= A (+ B (apply S D)))
tail-sum-step # <suggest> right('Equivalence', 'rec') </suggest>
(= (tail (recurse (sum-step S) (+ B (1)) (<,> A C))) (+ (tail (recurse (sum-step S) B (<,> A C))) (apply S (+ A B))))
df-sum Sum a sequence of numbers from a function. Capital Sigma. # <suggest> right('Define', 'Σ') left('Simplify', 'Σ') </suggest>
(= (sum A B S) (tail (recurse (sum-step S) (.- (+ B (1)) A) (<,> A (0)))))
(=_ ({.|} S T) ({|} y (E. z (/\ (= y (apply S z)) (e. z T)))))
applysetseq1 # <title> Equivalence for {.|} </title> ##
(-> (=_ S U) (=_ ({.|} S T) ({.|} U T)))
(=_ S U)(=_ ({.|} S T) ({.|} U T))
(-> ph (=_ S U))(-> ph (=_ ({.|} S T) ({.|} U T)))
applysetseq2 # <title> Equivalence for {.|} </title> ##
(-> (=_ T U) (=_ ({.|} S T) ({.|} S U)))
(=_ T U)(=_ ({.|} S T) ({.|} S U))
(-> ph (=_ T U))(-> ph (=_ ({.|} S T) ({.|} S U)))
(-> (/\ (=_ S T) (=_ U V)) (=_ ({.|} S U) ({.|} T V)))
SeqReplaceEl1 # <title> Substitution </title> # <table> # (e. A [ S ] ] ] ) # (=_ [ S ] [ T ] ) # (e. A [ [ [ T ] ) # </table>
(e. A S) , (=_ S T)(e. A T)
(<-> (e. A ({.|} S T)) (E. y (/\ (= A (apply S y)) (e. y T))))
(-> (e. A T) (e. (apply S A) ({.|} S T)))
BiReplaceBi1Al1Not0 # <title> Substitution </title> # <table> # (<-> ph (A. x (-. [ ps ] ] ] ))) # (<-> [ ps ] [ ch ] ) # (<-> ph (A. x (-. [ [ [ ch ] ))) # </table>
(<-> ph (A. x (-. ps))) , (<-> ps ch)(<-> ph (A. x (-. ch)))
BiReplaceBi1Al1Imp1Not0 # <title> Substitution </title> # <table> # (<-> ph (A. x (-> ps (-. [ ch ] ] ] )))) # (<-> [ ch ] [ th ] ) # (<-> ph (A. x (-> ps (-. [ [ [ th ] )))) # </table>
(<-> ph (A. x (-> ps (-. ch)))) , (<-> ch th)(<-> ph (A. x (-> ps (-. th))))
(<-> (-. (e. A ({.|} S T))) (A. x (-> (e. x T) (-. (= (apply S x) A)))))
sumeq1 # <title> Equivalence for sum </title> ##
(-> (= A C) (= (sum A B S) (sum C B S)))
(= A C)(= (sum A B S) (sum C B S))
(-> ph (= A C))(-> ph (= (sum A B S) (sum C B S)))
sumeq2 # <title> Equivalence for sum </title> ##
(-> (= B C) (= (sum A B S) (sum A C S)))
(= B C)(= (sum A B S) (sum A C S))
sumseq3 # <title> Equivalence for sum </title> ##
(-> (=_ S T) (= (sum A B S) (sum A B T)))
(-> ph (= B C))(-> ph (= (sum A B S) (sum A C S)))
(=_ S T)(= (sum A B S) (sum A B T))
(-> ph (=_ S T))(-> ph (= (sum A B S) (sum A B T)))
(-> (/\ (= A B) (=_ S T)) (= (sum C A S) (sum C B T)))
EqReplaceEq1Tail0 # <title> Substitution </title> # <table> # (= A (tail [ B ] ] ] )) # (= [ B ] [ C ] ) # (= A (tail [ [ [ C ] )) # </table>
(= A (tail B)) , (= B C)(= A (tail C))
EqReplaceEq1Tail0Recurse1 # <title> Substitution </title> # <table> # (= A (tail (recurse S [ B ] ] ] D))) # (= [ B ] [ C ] ) # (= A (tail (recurse S [ [ [ C ] D))) # </table>
(= A (tail (recurse S B D))) , (= B C)(= A (tail (recurse S C D)))
EqReplaceEq1Tail0Recurse1Add0 # <title> Substitution </title> # <table> # (= A (tail (recurse S (+ [ B ] ] ] D) A'))) # (= [ B ] [ C ] ) # (= A (tail (recurse S (+ [ [ [ C ] D) A'))) # </table>
(= A (tail (recurse S (+ B D) A'))) , (= B C)(= A (tail (recurse S (+ C D) A')))
EqReplaceEq1Add0Tail0 # <title> Substitution </title> # <table> # (= A (+ (tail [ B ] ] ] ) D)) # (= [ B ] [ C ] ) # (= A (+ (tail [ [ [ C ] ) D)) # </table>
(= A (+ (tail B) D)) , (= B C)(= A (+ (tail C) D))
EqReplaceEq0Tail0 # <title> Substitution </title> # <table> # (= (tail [ A ] ] ] ) C) # (= [ A ] [ B ] ) # (= (tail [ [ [ B ] ) C) # </table>
(= (tail A) C) , (= A B)(= (tail B) C)
EqReplaceEq0Tail0Recurse1 # <title> Substitution </title> # <table> # (= (tail (recurse S [ A ] ] ] C)) D) # (= [ A ] [ B ] ) # (= (tail (recurse S [ [ [ B ] C)) D) # </table>
(= (tail (recurse S A C)) D) , (= A B)(= (tail (recurse S B C)) D)
sum1 # <title> Sum a sequence of One Number </title>
(= (sum A A S) (apply S A))
EqReplaceImp1Eq1Tail0 # <title> Substitution </title> # <table> # (-> ph (= A (tail [ B ] ] ] ))) # (= [ B ] [ C ] ) # (-> ph (= A (tail [ [ [ C ] ))) # </table>
(-> ph (= A (tail B))) , (= B C)(-> ph (= A (tail C)))
sum0 # <title> Sum of an empty sequence </title>
(-> (< B A) (= (sum A B S) (0)))
sumdetach # <title> Detach the Last Number in a sum </title>
(-> (< A B) (= (sum A B S) (+ (sum A (.- B (1)) S) (apply S B))))
sumdetachi # <title> Detach the Last Number in a sum </title>
(< A B)(= (sum A B S) (+ (sum A (.- B (1)) S) (apply S B)))
EqReplaceImp1Eq1Add0Sum1 # <title> Substitution </title> # <table> # (-> ph (= A (+ (sum B [ C ] ] ] S) A'))) # (= [ C ] [ D ] ) # (-> ph (= A (+ (sum B [ [ [ D ] S) A'))) # </table>
(-> ph (= A (+ (sum B C S) A'))) , (= C D)(-> ph (= A (+ (sum B D S) A')))
sumdetach2 # <title> Detach the Last Number in a sum </title>
(= (sum (0) (+ A (1)) S) (+ (sum (0) A S) (apply S (+ A (1)))))
df-product-step-just Product of a sequence.
(-> (= A B) (= (<,> (+ (head A) (1)) (* (tail A) (apply S (head A)))) (<,> (+ (head B) (1)) (* (tail B) (apply S (head B))))))
(=_ (product-step S) (lambda y (<,> (+ (head y) (1)) (* (tail y) (apply S (head y))))))
(-> (=_ S T) (=_ (product-step S) (product-step T)))
(=_ S T)(=_ (product-step S) (product-step T))
(-> ph (=_ S T))(-> ph (=_ (product-step S) (product-step T)))
EqReplaceImp1Eq1Op1Mul0 # <title> Substitution </title> # <table> # (-> ph (= A (<,> B (* [ C ] ] ] A')))) # (= [ C ] [ D ] ) # (-> ph (= A (<,> B (* [ [ [ D ] A')))) # </table>
(-> ph (= A (<,> B (* C A')))) , (= C D)(-> ph (= A (<,> B (* D A'))))
EqReplaceImp1Eq1Op1Mul1 # <title> Substitution </title> # <table> # (-> ph (= A (<,> B (* C [ D ] ] ] )))) # (= [ D ] [ A' ] ) # (-> ph (= A (<,> B (* C [ [ [ A' ] )))) # </table>
(-> ph (= A (<,> B (* C D)))) , (= D A')(-> ph (= A (<,> B (* C A'))))
EqReplaceImp1Eq1Op1Mul1Apply1 # <title> Substitution </title> # <table> # (-> ph (= A (<,> B (* C (apply S [ D ] ] ] ))))) # (= [ D ] [ A' ] ) # (-> ph (= A (<,> B (* C (apply S [ [ [ A' ] ))))) # </table>
(-> ph (= A (<,> B (* C (apply S D))))) , (= D A')(-> ph (= A (<,> B (* C (apply S A')))))
(= (apply (product-step S) (<,> A B)) (<,> (+ A (1)) (* B (apply S A))))
(fun (product-step S))
(-> (= C D) (<-> (= (head (recurse (product-step S) C (<,> A B))) (+ A C)) (= (head (recurse (product-step S) D (<,> A B))) (+ A D))))
(= (head (recurse (product-step S) C (<,> A B))) (+ A C))
(= (tail (apply (product-step S) A)) (* (tail A) (apply S (head A))))
EqReplaceEq1Mul1Apply1 # <title> Substitution </title> # <table> # (= A (* B (apply S [ C ] ] ] ))) # (= [ C ] [ D ] ) # (= A (* B (apply S [ [ [ D ] ))) # </table>
(= A (* B (apply S C))) , (= C D)(= A (* B (apply S D)))
tail-product-step # <suggest> right('Equivalence', 'rec') </suggest>
(= (tail (recurse (product-step S) (+ B (1)) (<,> A C))) (* (tail (recurse (product-step S) B (<,> A C))) (apply S (+ A B))))
df-product Multiply a sequence of numbers from a function. Capital Pi. # <suggest> right('Define', 'Π') left('Simplify', 'Π') </suggest>
(= (product A B S) (tail (recurse (product-step S) (.- (+ B (1)) A) (<,> A (1)))))
producteq1 # <title> Equivalence for product </title> ##
(-> (= A C) (= (product A B S) (product C B S)))
(= A C)(= (product A B S) (product C B S))
(-> ph (= A C))(-> ph (= (product A B S) (product C B S)))
producteq2 # <title> Equivalence for product </title> ##
(-> (= B C) (= (product A B S) (product A C S)))
(= B C)(= (product A B S) (product A C S))
productseq3 # <title> Equivalence for product </title> ##
(-> (=_ S T) (= (product A B S) (product A B T)))
(-> ph (= B C))(-> ph (= (product A B S) (product A C S)))
(=_ S T)(= (product A B S) (product A B T))
(-> ph (=_ S T))(-> ph (= (product A B S) (product A B T)))
(-> (/\ (= A B) (=_ S T)) (= (product C A S) (product C B T)))
EqReplaceEq1Mul0Tail0 # <title> Substitution </title> # <table> # (= A (* (tail [ B ] ] ] ) D)) # (= [ B ] [ C ] ) # (= A (* (tail [ [ [ C ] ) D)) # </table>
(= A (* (tail B) D)) , (= B C)(= A (* (tail C) D))
product1 # <title> Multiply a sequence of One Number </title>
(= (product A A S) (apply S A))
EqReplaceImp1Eq1Mul0 # <title> Substitution </title> # <table> # (-> ph (= A (* [ B ] ] ] D))) # (= [ B ] [ C ] ) # (-> ph (= A (* [ [ [ C ] D))) # </table>
(-> ph (= A (* B D))) , (= B C)(-> ph (= A (* C D)))
productdetach # <title> Detach the last number in a product </title>
(-> (< A B) (= (product A B S) (* (product A (.- B (1)) S) (apply S B))))
productdetachi # <title> Detach the last number in a product </title>
(< A B)(= (product A B S) (* (product A (.- B (1)) S) (apply S B)))
EqReplaceImp1Eq1Mul0Product1 # <title> Substitution </title> # <table> # (-> ph (= A (* (product B [ C ] ] ] S) A'))) # (= [ C ] [ D ] ) # (-> ph (= A (* (product B [ [ [ D ] S) A'))) # </table>
(-> ph (= A (* (product B C S) A'))) , (= C D)(-> ph (= A (* (product B D S) A')))
(-> (<= (1) A) (= (product (1) (+ A (1)) S) (* (product (1) A S) (apply S (+ A (1))))))
product0 # <title> Multiply an empty sequence </title>
(-> (< B A) (= (product A B S) (1)))
productdetach2 # <summary> # Unfortunately, this is much more complicated because 0 .- 1 = 0. We need to check that B > 0, because # the value: # product 0 (.= 0 1) S = S(0), not 1 as we'd expect if we were using a real minus and not a halfminus. # </summary>
(-> (/\ (< (0) B) (<= A B)) (= (product A B S) (* (product A (.- B (1)) S) (apply S B))))
(= (product (1) (+ A (1)) S) (* (product (1) A S) (apply S (+ A (1)))))
EqReplaceBi1Imp1Lt1 # <title> Substitution </title> # <table> # (<-> ph (-> ps (< A [ B ] ] ] ))) # (= [ B ] [ C ] ) # (<-> ph (-> ps (< A [ [ [ C ] ))) # </table>
(<-> ph (-> ps (< A B))) , (= B C)(<-> ph (-> ps (< A C)))
(<-> ([/] B x (-> (<= x A) (< (0) (product (1) x S)))) (-> (<= B A) (< (0) (product (1) B S))))
(-> th (-> ph (-> ps ch))) , (-> th (-> ps ta))(-> th (-> (-> ta ph) (-> ps ch)))
(-> (A. x (-> (/\ (<= (1) x) (<= x A)) (< (0) (apply S x)))) (-> (<= B A) (< (0) (product (1) B S))))
EqReplaceBi1Eq0 # <title> Substitution </title> # <table> # (<-> ph (= [ A ] ] ] C)) # (= [ A ] [ B ] ) # (<-> ph (= [ [ [ B ] C)) # </table>
(<-> ph (= A C)) , (= A B)(<-> ph (= B C))
EqReplaceBi1Eq0Mul1 # <title> Substitution </title> # <table> # (<-> ph (= (* A [ B ] ] ] ) D)) # (= [ B ] [ C ] ) # (<-> ph (= (* A [ [ [ C ] ) D)) # </table>
(<-> ph (= (* A B) D)) , (= B C)(<-> ph (= (* A C) D))
EqReplaceBi1Eq1Product1 # <title> Substitution </title> # <table> # (<-> ph (= A (product B [ C ] ] ] S))) # (= [ C ] [ D ] ) # (<-> ph (= A (product B [ [ [ D ] S))) # </table>
(<-> ph (= A (product B C S))) , (= C D)(<-> ph (= A (product B D S)))
EqReplaceLe1 # <title> Substitution </title> # <table> # (<= A [ B ] ] ] ) # (= [ B ] [ C ] ) # (<= A [ [ [ C ] ) # </table>
(<= A B) , (= B C)(<= A C)
EqReplaceLe1Add1 # <title> Substitution </title> # <table> # (<= A (+ B [ C ] ] ] )) # (= [ C ] [ D ] ) # (<= A (+ B [ [ [ D ] )) # </table>
(<= A (+ B C)) , (= C D)(<= A (+ B D))
EqReplaceEq1Mul0Product1 # <title> Substitution </title> # <table> # (= A (* (product B [ C ] ] ] S) A')) # (= [ C ] [ D ] ) # (= A (* (product B [ [ [ D ] S) A')) # </table>
(= A (* (product B C S) A')) , (= C D)(= A (* (product B D S) A'))
EqReplaceImp1Eq0Mul1 # <title> Substitution </title> # <table> # (-> ph (= (* A [ B ] ] ] ) D)) # (= [ B ] [ C ] ) # (-> ph (= (* A [ [ [ C ] ) D)) # </table>
(-> ph (= (* A B) D)) , (= B C)(-> ph (= (* A C) D))
EqReplaceImp1Eq0Mul1Product1 # <title> Substitution </title> # <table> # (-> ph (= (* A (product B [ C ] ] ] S)) A')) # (= [ C ] [ D ] ) # (-> ph (= (* A (product B [ [ [ D ] S)) A')) # </table>
(-> ph (= (* A (product B C S)) A')) , (= C D)(-> ph (= (* A (product B D S)) A'))
EqReplaceEq0Mul0 # <title> Substitution </title> # <table> # (= (* [ A ] ] ] C) D) # (= [ A ] [ B ] ) # (= (* [ [ [ B ] C) D) # </table>
(= (* A C) D) , (= A B)(= (* B C) D)
EqReplaceEq0Mul0Product1 # <title> Substitution </title> # <table> # (= (* (product A [ B ] ] ] S) D) A') # (= [ B ] [ C ] ) # (= (* (product A [ [ [ C ] S) D) A') # </table>
(= (* (product A B S) D) A') , (= B C)(= (* (product A C S) D) A')
EqReplaceImp1Eq1Mul1 # <title> Substitution </title> # <table> # (-> ph (= A (* B [ C ] ] ] ))) # (= [ C ] [ D ] ) # (-> ph (= A (* B [ [ [ D ] ))) # </table>
(-> ph (= A (* B C))) , (= C D)(-> ph (= A (* B D)))
EqReplaceImp1Eq1Mul1Apply1 # <title> Substitution </title> # <table> # (-> ph (= A (* B (apply S [ C ] ] ] )))) # (= [ C ] [ D ] ) # (-> ph (= A (* B (apply S [ [ [ D ] )))) # </table>
(-> ph (= A (* B (apply S C)))) , (= C D)(-> ph (= A (* B (apply S D))))
(<-> ([/] C x (= (* (product A B S) (product (+ B (1)) (+ B x) S)) (product A (+ B x) S))) (= (* (product A B S) (product (+ B (1)) (+ B C) S)) (product A (+ B C) S)))
EqReplaceLt1Add1 # <title> Substitution </title> # <table> # (< A (+ B [ C ] ] ] )) # (= [ C ] [ D ] ) # (< A (+ B [ [ [ D ] )) # </table>
(< A (+ B C)) , (= C D)(< A (+ B D))
(<= A B)(= (* (product A B S) (product (+ B (1)) (+ B C) S)) (product A (+ B C) S))
LeReplaceBi1Lt1 # <title> Substitution </title> # <table> # (<-> ph (< A [ B ] ] ] )) # (<= [ B ] [ C ] ) # (<-> ph (< A [ [ [ C ] )) # </table>
(<-> ph (< A B)) , (<= B C)(-> ph (< A C))
(-> (<= A B) (= (* (product A B S) (product (+ B (1)) (+ B C) S)) (product A (+ B C) S)))
lastproductdivides # <title> Product is divisible by its last number </title>
(-> (<= A B) (| (apply S B) (product A B S)))
EqReplaceEq0Mul1Product1 # <title> Substitution </title> # <table> # (= (* A (product B [ C ] ] ] S)) A') # (= [ C ] [ D ] ) # (= (* A (product B [ [ [ D ] S)) A') # </table>
(= (* A (product B C S)) A') , (= C D)(= (* A (product B D S)) A')
EqReplaceEq1Product1 # <title> Substitution </title> # <table> # (= A (product B [ C ] ] ] S)) # (= [ C ] [ D ] ) # (= A (product B [ [ [ D ] S)) # </table>
(= A (product B C S)) , (= C D)(= A (product B D S))
EqReplaceDivs1 # <title> Substitution </title> # <table> # (| A [ B ] ] ] ) # (= [ B ] [ C ] ) # (| A [ [ [ C ] ) # </table>
(| A B) , (= B C)(| A C)
(<= A C) , (<= C B)(| (apply S C) (product A B S))
(-> (/\ (<= A C) (<= C B)) (| (apply S C) (product A B S)))
df-factorial # <suggest> right('Define', '!') left('Simplify', '!') </suggest>
(= (! A) (product (1) A (lambda x x)))
factorialeq # <title> Equivalence for ! </title> ##
(-> (= A B) (= (! A) (! B)))
(= A B)(= (! A) (! B))
(-> ph (= A B))(-> ph (= (! A) (! B)))
(= (! (0)) (1))
(= (! (1)) (1))
(-> (< (1) A) (= (! A) (* (! (.- A (1))) A)))
(-> (>= A (1)) (= (! A) (* (! (.- A (1))) A)))
EqReplaceEq0Fact0 # <title> Substitution </title> # <table> # (= (! [ A ] ] ] ) C) # (= [ A ] [ B ] ) # (= (! [ [ [ B ] ) C) # </table>
(= (! A) C) , (= A B)(= (! B) C)
factorialrecurse # <title> Recursive Definition of Factorial </title>
(= (! (+ A (1))) (* (! A) (+ A (1))))
df-binomial # <title> Binomial Coefficient Definition </title> # <suggest> right('Define', 'nCr') left('Simplify', 'nCr') </suggest>
(= (nCr A B) (div (! A) (* (! B) (! (.- A B)))))
(-> (= A B) (= (nCr A C) (nCr B C)))
(= A B)(= (nCr A C) (nCr B C))
binomialeq2 # <title> Equivalence for nCr </title> ##
(-> (= B C) (= (nCr A B) (nCr A C)))
(-> ph (= A B))(-> ph (= (nCr A C) (nCr B C)))
(= B C)(= (nCr A B) (nCr A C))
(-> ph (= B C))(-> ph (= (nCr A B) (nCr A C)))

## Exponentiation

df-exp # <title> Definition of Exponentiation </title>
(= (exp A B) (product (1) B (lambda y A)))
(-> (= A B) (= (exp A C) (exp B C)))
(= A B)(= (exp A C) (exp B C))
expeq2 # <title> Equivalence for exp </title> ##
(-> (= B C) (= (exp A B) (exp A C)))
(-> ph (= A B))(-> ph (= (exp A C) (exp B C)))
(= B C)(= (exp A B) (exp A C))
expeq12 # <title> Equivalence for exp </title> ##
(-> (/\ (= A B) (= C D)) (= (exp A C) (exp B D)))
(-> ph (= B C))(-> ph (= (exp A B) (exp A C)))
(-> ph (= A B)) , (-> ph (= C D))(-> ph (= (exp A C) (exp B D)))
exp0 # <title> 0th power of a number is 1 </title>
(= (exp A (0)) (1))
exp1 # <title> First power of a number is the number </title>
(= (exp A (1)) A)
EqReplaceEq0exp1 # <title> Substitution </title> # <table> # (= (exp A [ B ] ] ] ) D) # (= [ B ] [ C ] ) # (= (exp A [ [ [ C ] ) D) # </table>
(= (exp A B) D) , (= B C)(= (exp A C) D)
expplus1 # <title> Formula for Increasing Exponent by 1 </title>
(= (exp A (+ B (1))) (* A (exp A B)))
(= (exp A (S B)) (* A (exp A B)))
EqReplaceEq0Exp1 # <title> Substitution </title> # <table> # (= (exp A [ B ] ] ] ) D) # (= [ B ] [ C ] ) # (= (exp A [ [ [ C ] ) D) # </table>
(= (exp A B) D) , (= B C)(= (exp A C) D)
(-> (= x D) (<-> (= (exp (* A B) x) (* (exp A x) (exp B x))) (= (exp (* A B) D) (* (exp A D) (exp B D)))))
expmul Multiplying of exponents
(= (exp (* A B) C) (* (exp A C) (exp B C)))
(-> (= x B) (<-> (= (exp A (+ x C)) (* (exp A x) (exp A C))) (= (exp A (+ B C)) (* (exp A B) (exp A C)))))
(= (exp A (+ B C)) (* (exp A B) (exp A C)))
EqReplaceImp1An1Eq0 # <title> Substitution </title> # <table> # (-> ph (/\ ps (= [ A ] ] ] C))) # (= [ A ] [ B ] ) # (-> ph (/\ ps (= [ [ [ B ] C))) # </table>
(-> ph (/\ ps (= A C))) , (= A B)(-> ph (/\ ps (= B C)))
calculational0 # <title> Dijkstra's Calculational Proof Example 0 </title> # <summary> # This corresponds to EWD1300's Proof 0. # </summary>
(-> (/\ (= (* x y) y) (= (* y z) z)) (= (* x z) z))
calculational1 # <title> Dijkstra's Calculational Proof Example 1 </title> # <summary> # This corresponds to EWD1300's Proof 1. # </summary>
(= (* x y) y) , (= (* y z) z)(= (* x z) z)
sbc-expexp # <title> Perform a Substitution </title>
(<-> ([/] C x (= (exp (exp A B) x) (exp A (* B x)))) (= (exp (exp A B) C) (exp A (* B C))))
dist_ax6 # <title> Distributive Property </title>
(= (* A (+ B (1))) (+ (* A B) A))
EqReplaceImp1Eq1Exp1 # <title> Substitution </title>
(-> ph (= A (exp B C))) , (= C D)(-> ph (= A (exp B D)))
expexp # <title> Exponentiation over exponentiation yields multiplication </title>
(= (exp (exp A B) C) (exp A (* B C)))
expexp2 # <title> Exponentiation over exponentiation yields multiplication </title> # <summary> An alternative proof to <a href="expexp">expexp</a>. </summary>
(= (exp (exp A B) C) (exp A (* B C)))
(-> (= x C) (<-> (= (exp (exp A B) x) (exp A (* B x))) (= (exp (exp A B) C) (exp A (* B C)))))
expexpOld Exponentiation over exponentiation yields multiplication.
(= (exp (exp A B) C) (exp A (* B C)))
expid # <title> Exponent Right Identity </title>
(= (exp A (1)) A)
(-> (< (0) A) (<= (1) (exp A B)))
(-> (< (0) A) (-> (<= B C) (<= (exp A B) (exp A C))))
(-> (< (1) A) (-> (< B C) (< (exp A B) (exp A C))))
exple # <summary> Exponentation is strictly monotonic with base of two or greater </summary>
(-> (< (1) A) (<-> (<= B C) (<= (exp A B) (exp A C))))
explt # <summary> Exponentation is strictly monotonic with base of two or greater </summary>
(-> (< (1) A) (<-> (< B C) (< (exp A B) (exp A C))))
df-tuple # <title> Tuple Definition </title> # <summary> # A tuple defining a finite sequence of numbers. # The tuple is just an ordered pair. The second argument (the tail) is the length of the # tuple. The first argument is a group of nested ordered pair containing the values in the # tuple. This definition is useful because it signals to the typesetter how to format the # values. For example, the 3-tuple (1, 2, 3) is displayed as (1, 2, 3) not as the ordered pairs # (((1, 2), 3), 3). This is also useful as a reminder that the values are being treated as # a tuple. # </summary>
(= (<> A B) (<,> A B))
tupleeq1 # <title> Equivalence for <> </title> ##
(-> (= A C) (= (<> A B) (<> C B)))
(= A C)(= (<> A B) (<> C B))
(-> ph (= A C))(-> ph (= (<> A B) (<> C B)))
tupleeq2 # <title> Equivalence for <> </title> ##
(-> (= B C) (= (<> A B) (<> A C)))
(= B C)(= (<> A B) (<> A C))
(-> ph (= B C))(-> ph (= (<> A B) (<> A C)))
tupleeq12 # <title> Tuple Equality </title>
(-> (/\ (= A B) (= C D)) (= (<> A C) (<> B D)))
tupleeq12i # <title> Tuple Equality </title>
(= A B) , (= C D)(= (<> A C) (<> B D))
tupleeq12d # <title> Tuple Equality </title>
(-> ph (= A B)) , (-> ph (= C D))(-> ph (= (<> A C) (<> B D)))
df-length # <summary> # The length of a tuple. This is just the tail. This definition is just a # way of explaining that the tail of the tuple is its length. # </summary>
(= (length A) (tail A))
lengtheq # <title> Equivalence for length </title> ##
(-> (= A B) (= (length A) (length B)))
(= A B)(= (length A) (length B))
(-> ph (= A B))(-> ph (= (length A) (length B)))
lengthtuple # <title> Apply Length Operator </title> # <suggest> right('Simplify', 'Lng') </suggest>
(= (length (<> A B)) B)
headtuple # <title> Apply Head Operator </title> # <suggest> right('Simplify', 'Hd') </suggest>
(= (head (<> A B)) A)
df-index Take the B-th element of the tuple A. # <title> Tuple Index Definition </title> # <suggest> right('Define', '_') left('Simplify', '_') </suggest>
(= (_ A B) (tail (recurse (lambda y (head y)) (.- (+ (length A) (1)) B) A)))
(-> (= A B) (= (_ A C) (_ B C)))
(= A B)(= (_ A C) (_ B C))
(-> ph (= A B))(-> ph (= (_ A C) (_ B C)))
indexeq2 # <title> Equivalence for _ </title> ##
(-> (= B C) (= (_ A B) (_ A C)))
(= B C)(= (_ A B) (_ A C))
(-> ph (= B C))(-> ph (= (_ A B) (_ A C)))
df-push Add a number to the end of a tuple. Using the analogy of a stack, we push a number onto the stack. # <title> Push onto Tuple Definition </title> # <suggest> right('Define', 'ps') left('Simplify', 'ps') </suggest>
(= (push A B) (<> (<,> (head A) B) (+ (length A) (1))))
(-> (= A C) (= (push A B) (push C B)))
(= A C)(= (push A B) (push C B))
pusheq2 # <title> Equivalence for push </title> ##
(-> (= B C) (= (push A B) (push A C)))
(-> ph (= A C))(-> ph (= (push A B) (push C B)))
(= B C)(= (push A B) (push A C))
(-> ph (= B C))(-> ph (= (push A B) (push A C)))
EqReplaceEq1Tuple0 # <title> Substitution </title> # <table> # (= A (<> [ B ] ] ] D)) # (= [ B ] [ C ] ) # (= A (<> [ [ [ C ] D)) # </table>
(= A (<> B D)) , (= B C)(= A (<> C D))
EqReplaceEq1Tuple0Op0 # <title> Substitution </title> # <table> # (= A (<> (<,> [ B ] ] ] D) A')) # (= [ B ] [ C ] ) # (= A (<> (<,> [ [ [ C ] D) A')) # </table>
(= A (<> (<,> B D) A')) , (= B C)(= A (<> (<,> C D) A'))
EqReplaceEq1Tuple1 # <title> Substitution </title> # <table> # (= A (<> B [ C ] ] ] )) # (= [ C ] [ D ] ) # (= A (<> B [ [ [ D ] )) # </table>
(= A (<> B C)) , (= C D)(= A (<> B D))
EqReplaceEq1Tuple1Add0 # <title> Substitution </title> # <table> # (= A (<> B (+ [ C ] ] ] A'))) # (= [ C ] [ D ] ) # (= A (<> B (+ [ [ [ D ] A'))) # </table>
(= A (<> B (+ C A'))) , (= C D)(= A (<> B (+ D A')))
(= (push (<> A C) B) (<> (<,> A B) (+ C (1))))
lengthpush # <suggest> right('Simplify', 'ps') </suggest>
(= (length (push A B)) (+ (length A) (1)))
EqReplaceEq1Tail0Recurse1HM0 # <title> Substitution </title> # <table> # (= A (tail (recurse S (.- [ B ] ] ] D) A'))) # (= [ B ] [ C ] ) # (= A (tail (recurse S (.- [ [ [ C ] D) A'))) # </table>
(= A (tail (recurse S (.- B D) A'))) , (= B C)(= A (tail (recurse S (.- C D) A')))
EqReplaceEq1Tail0Recurse1HM0Add0 # <title> Substitution </title> # <table> # (= A (tail (recurse S (.- (+ [ B ] ] ] D) A') B'))) # (= [ B ] [ C ] ) # (= A (tail (recurse S (.- (+ [ [ [ C ] D) A') B'))) # </table>
(= A (tail (recurse S (.- (+ B D) A') B'))) , (= B C)(= A (tail (recurse S (.- (+ C D) A') B')))
indexpush # <title> Index of pushed element </title> # <suggest> right('Simplify', '_') </suggest>
(= (_ (push A B) (+ (length A) (1))) B)
df-pop Pop a number off a tuple. # <title> Pop Definition </title> # <suggest> right('Define', 'pop') left('Simplify', 'pop') </suggest>
(-> (= A B) (= (pop A) (pop B)))
(= A B)(= (pop A) (pop B))
(-> ph (= A B))(-> ph (= (pop A) (pop B)))
lengthpop # <suggest> right('Simplify', 'pop') </suggest>
(= (length (pop A)) (.- (length A) (1)))
df-tuplesum # <suggest> right('Define', '<+>') left('Simplify', '<+>') </suggest>
(= (<+> A) (sum (1) (length A) (lambda y (_ A y))))
df-tupleproduct # <suggest> right('Define', '<*>') left('Simplify', '<*>') </suggest>
(= (<*> A) (product (1) (length A) (lambda y (_ A y))))
(-> (= A B) (= (<*> A) (<*> B)))
(= A B)(= (<*> A) (<*> B))
(-> ph (= A B))(-> ph (= (<*> A) (<*> B)))
(-> (= A B) (= (<+> A) (<+> B)))
(= A B)(= (<+> A) (<+> B))
(-> ph (= A B))(-> ph (= (<+> A) (<+> B)))
(=_ (<{}> A) ({.|} (lambda y (_ A y)) ({|} y (/\ (<= (1) y) (<= y (length A))))))
(-> (e. B ({.|} S ({|} y (/\ (<= (1) y) (<= y (length A)))))) (| B (product (1) (length A) S)))
SeqReplaceImp0El1 # <title> Substitution </title> # <table> # (-> (e. A [ S ] ] ] ) ph) # (=_ [ S ] [ T ] ) # (-> (e. A [ [ [ T ] ) ph) # </table>
(-> (e. A S) ph) , (=_ S T)(-> (e. A T) ph)
elementDivides # <title> Each element in the set is a divisor </title>
(-> (e. B (<{}> A)) (| B (<*> A)))
BiReplaceImp0Al1 # <title> Substitution </title> # <table> # (-> (A. x [ ph ] ] ] ) ch) # (<-> [ ph ] [ ps ] ) # (-> (A. x [ [ [ ps ] ) ch) # </table>
(-> (A. x ph) ch) , (<-> ph ps)(-> (A. x ps) ch)
BiReplaceImp0Al1Imp1 # <title> Substitution </title> # <table> # (-> (A. x (-> ph [ ps ] ] ] )) th) # (<-> [ ps ] [ ch ] ) # (-> (A. x (-> ph [ [ [ ch ] )) th) # </table>
(-> (A. x (-> ph ps)) th) , (<-> ps ch)(-> (A. x (-> ph ch)) th)
BiReplaceImp0Al1Imp0 # <title> Substitution </title> # <table> # (-> (A. x (-> [ ph ] ] ] ch)) th) # (<-> [ ph ] [ ps ] ) # (-> (A. x (-> [ [ [ ps ] ch)) th) # </table>
(-> (A. x (-> ph ch)) th) , (<-> ph ps)(-> (A. x (-> ps ch)) th)
BiReplaceImp0Al1Imp1Not0 # <title> Substitution </title> # <table> # (-> (A. x (-> ph (-. [ ps ] ] ] ))) th) # (<-> [ ps ] [ ch ] ) # (-> (A. x (-> ph (-. [ [ [ ch ] ))) th) # </table>
(-> (A. x (-> ph (-. ps))) th) , (<-> ps ch)(-> (A. x (-> ph (-. ch))) th)
SeqReplaceImp0Not0El1 # <title> Substitution </title> # <table> # (-> (-. (e. A [ S ] ] ] )) ph) # (=_ [ S ] [ T ] ) # (-> (-. (e. A [ [ [ T ] )) ph) # </table>
(-> (-. (e. A S)) ph) , (=_ S T)(-> (-. (e. A T)) ph)
tupleproduct0 # <title> Product of nonzero numbers is not zero </title>
(-> (-. (e. (0) (<{}> A))) (> (<*> A) (0)))
tupleproduct1 # <title> Product of nonzero numbers is not zero </title>
(-> (-. (e. (0) (<{}> A))) (>= (<*> A) (1)))
(<-> (prime A) (e. A ({|} x (prime x))))
0notprime number 7.4 # <title> 0 is not prime </title>
(-. (prime (0)))
BiReplaceImp1Imp0Not0 # <title> Substitution </title> # <table> # (-> ph (-> (-. [ ps ] ] ] ) th)) # (<-> [ ps ] [ ch ] ) # (-> ph (-> (-. [ [ [ ch ] ) th)) # </table>
(-> ph (-> (-. ps) th)) , (<-> ps ch)(-> ph (-> (-. ch) th))

## Unique factorization

lincomgcd number 0.5
(lincom (S A) B (gcd (S A) B))
EqReplaceBi1Eq1Div0 # <title> Substitution </title> # <table> # (<-> ph (= A (div [ B ] ] ] D))) # (= [ B ] [ C ] ) # (<-> ph (= A (div [ [ [ C ] D))) # </table>
(<-> ph (= A (div B D))) , (= B C)(<-> ph (= A (div C D)))
EqReplaceBi1Eq1Div0Mul1 # <title> Substitution </title> # <table> # (<-> ph (= A (div (* B [ C ] ] ] ) A'))) # (= [ C ] [ D ] ) # (<-> ph (= A (div (* B [ [ [ D ] ) A'))) # </table>
(<-> ph (= A (div (* B C) A'))) , (= C D)(<-> ph (= A (div (* B D) A')))
EqReplaceBi1Eq1Div0Mul1Add1 # <title> Substitution </title> # <table> # (<-> ph (= A (div (* B (+ C [ D ] ] ] )) B'))) # (= [ D ] [ A' ] ) # (<-> ph (= A (div (* B (+ C [ [ [ A' ] )) B'))) # </table>
(<-> ph (= A (div (* B (+ C D)) B'))) , (= D A')(<-> ph (= A (div (* B (+ C A')) B')))
EqReplaceImp1Eq1Div0 # <title> Substitution </title> # <table> # (-> ph (= A (div [ B ] ] ] D))) # (= [ B ] [ C ] ) # (-> ph (= A (div [ [ [ C ] D))) # </table>
(-> ph (= A (div B D))) , (= B C)(-> ph (= A (div C D)))
(< (0) A)(= (mod (0) A) (0))
div0 # <title> 0 divided by a positive number is 0 </title>
(< (0) A)(= (div (0) A) (0))
sbc-arithmeticsum # <title> Perform a substitution </title> # <summary> # Perform substitution for a formula describing an arithmetic sum. Replace every instance of y with A. # </summary>
(<-> ([/] A y (= (sum (0) y (lambda x x)) (div (* y (+ y (1))) (2)))) (= (sum (0) A (lambda x x)) (div (* A (+ A (1))) (2))))
hypaddeq1 # <title> Replace number using a hypothetical equality </title> # <table> # (= [ C (+ [ <g> A ] B)) # (-> (= <g> A <r> D) (= [ C (+ [ <r> D ] B))) # </table>
(= C (+ A B))(-> (= A D) (= C (+ D B)))
arithmeticsum Similiar to trianglePlus1 theorem. # <title> Sum of an Arithmetic Series </title> # <summary> A formula for the sum of all numbers between 0 and A. Proved using induction. </summary>
(= (sum (0) A (lambda x x)) (div (* A (+ A (1))) (2)))
arithmeticsumtri # <title> Triangular Numbers as an Arithmetic Series </title> # <summary> # Adding the first A numbers sums to the A-th triangular number. # </summary
(= (sum (0) A (lambda x x)) (tri A))
df-modcon # <title> Modulo Congruence Definition </title> # <summary> # Two numbers A and B are congruent modulo C if there values # mod C are equal. # </summary>
(<-> (=mod A B C) (= (mod A C) (mod B C)))
(-> (= A D) (<-> (=mod A B C) (=mod D B C)))
(-> (= A D) (<-> (=mod B A C) (=mod B D C)))
(-> (= A B) (<-> (=mod C D A) (=mod C D B)))
(= A D)(<-> (=mod A B C) (=mod D B C))
(-> ph (= A D))(-> ph (<-> (=mod A B C) (=mod D B C)))
(= A D)(<-> (=mod B A C) (=mod B D C))
(-> ph (= A D))(-> ph (<-> (=mod B A C) (=mod B D C)))
(= A B)(<-> (=mod C D A) (=mod C D B))
modconeq12 # <title> Equivalence for =mod </title> ##
(-> (/\ (= A B) (= C D)) (<-> (=mod A C A') (=mod B D A')))
(-> (/\ (= A A') (= C C')) (<-> (=mod A B C) (=mod A' B C')))
(-> (/\ (= A A') (= C C')) (<-> (=mod B A C) (=mod B A' C')))
(-> ph (= A B))(-> ph (<-> (=mod C D A) (=mod C D B)))
(-> ph (= A B)) , (-> ph (= C D))(-> ph (<-> (=mod A C A') (=mod B D A')))
(-> ph (= A B)) , (-> ph (= C D))(-> ph (<-> (=mod A A' C) (=mod B A' D)))
(-> ph (= A B)) , (-> ph (= C D))(-> ph (<-> (=mod A' A C) (=mod A' B D)))
modconid # <title> Reflexive Property </title>
(=mod A A C)
modconcom # <title> Symmetric Property </title> # <suggest> right('Commute', '=') </suggest>
(<-> (=mod A B C) (=mod B A C))
eqmodcon # <title> Equality Implies Modular Congruence </title>
(-> (= B C) (=mod B C A))
modcontr # <title> Transitive Property </title>
(-> (/\ (=mod A B D) (=mod A C D)) (=mod B C D))
(<-> (=mod A B (0)) (= A B))
(-> (/\ (< A C) (= A (mod B C))) (= A (mod (+ B (* C D)) C)))
ImpReplaceImp1Bi1 # <title> Substitution </title> # <table> # (-> ph (<-> ps [ ch ] ] ] )) # (-> [ ch ] [ th ] ) # (-> ph (<-> ps [ [ [ th ] )) # </table>
(-> ph (<-> ps ch)) , (-> ch th)(-> ph (-> ps th))
(-> (< (0) B) (=mod C (+ C (* B D)) B))
(=mod C (+ C (* B D)) B)
EqReplaceImp1Modcon1 # <title> Substitution </title> # <table> # (-> ph (=mod A [ B ] ] ] D)) # (= [ B ] [ C ] ) # (-> ph (=mod A [ [ [ C ] D)) # </table>
(-> ph (=mod A B D)) , (= B C)(-> ph (=mod A C D))
(=mod A (+ (* B C) A) B)
(-> (= (+ (* A x) B) (+ (* A y) C)) (=mod C B A))
(-> (E. y (E. x (= (+ (* A x) B) (+ (* A y) C)))) (=mod C B A))
EqReplaceImp1Ex1Eq0Add1 # <title> Substitution </title> # <table> # (-> ph (E. x (= (+ A [ B ] ] ] ) D))) # (= [ B ] [ C ] ) # (-> ph (E. x (= (+ A [ [ [ C ] ) D))) # </table>
(-> ph (E. x (= (+ A B) D))) , (= B C)(-> ph (E. x (= (+ A C) D)))
BiReplaceImp1Imp1Ex1Ex1 # <title> Substitution </title> # <table> # (-> ph (-> ps (E. x (E. y [ ch ] ] ] )))) # (<-> [ ch ] [ th ] ) # (-> ph (-> ps (E. x (E. y [ [ [ th ] )))) # </table>
(-> ph (-> ps (E. x (E. y ch)))) , (<-> ch th)(-> ph (-> ps (E. x (E. y th))))
EqReplaceImp1Imp1Ex1Ex1Eq1 # <title> Substitution </title> # <table> # (-> ph (-> ps (E. x (E. y (= A [ B ] ] ] ))))) # (= [ B ] [ C ] ) # (-> ph (-> ps (E. x (E. y (= A [ [ [ C ] ))))) # </table>
(-> ph (-> ps (E. x (E. y (= A B))))) , (= B C)(-> ph (-> ps (E. x (E. y (= A C)))))
EqReplaceImp1Ex1Ex1Eq1 # <title> Substitution </title> # <table> # (-> ph (E. x (E. y (= A [ B ] ] ] )))) # (= [ B ] [ C ] ) # (-> ph (E. x (E. y (= A [ [ [ C ] )))) # </table>
(-> ph (E. x (E. y (= A B)))) , (= B C)(-> ph (E. x (E. y (= A C))))
BiReplaceBi0Ex1 # <title> Substitution </title> # <table> # (<-> (E. x [ ph ] ] ] ) ch) # (<-> [ ph ] [ ps ] ) # (<-> (E. x [ [ [ ps ] ) ch) # </table>
(<-> (E. x ph) ch) , (<-> ph ps)(<-> (E. x ps) ch)
BiReplaceBi0Ex1Ex1 # <title> Substitution </title> # <table> # (<-> (E. x (E. y [ ph ] ] ] )) ch) # (<-> [ ph ] [ ps ] ) # (<-> (E. x (E. y [ [ [ ps ] )) ch) # </table>
(<-> (E. x (E. y ph)) ch) , (<-> ph ps)(<-> (E. x (E. y ps)) ch)
modconex # <title> Modulus Congruence using Existence </title>
(<-> (E. x (E. y (= (+ (* A x) B) (+ (* A y) C)))) (=mod B C A))
ImpReplaceImp1Ex1Ex1Ex1Ex1 # <title> Substitution </title> # <table> # (-> ph (E. x (E. y (E. z (E. v [ ps ] ] ] ))))) # (-> [ ps ] [ ch ] ) # (-> ph (E. x (E. y (E. z (E. v [ [ [ ch ] ))))) # </table>
(-> ph (E. x (E. y (E. z (E. v ps))))) , (-> ps ch)(-> ph (E. x (E. y (E. z (E. v ch)))))
BiReplaceImp1Ex1Ex1Ex1 # <title> Substitution </title> # <table> # (-> ph (E. x (E. y (E. z [ ps ] ] ] )))) # (<-> [ ps ] [ ch ] ) # (-> ph (E. x (E. y (E. z [ [ [ ch ] )))) # </table>
(-> ph (E. x (E. y (E. z ps)))) , (<-> ps ch)(-> ph (E. x (E. y (E. z ch))))
BiReplaceImp1Ex1Ex1Ex1Ex1 # <title> Substitution </title> # <table> # (-> ph (E. x (E. y (E. z (E. v [ ps ] ] ] ))))) # (<-> [ ps ] [ ch ] ) # (-> ph (E. x (E. y (E. z (E. v [ [ [ ch ] ))))) # </table>
(-> ph (E. x (E. y (E. z (E. v ps))))) , (<-> ps ch)(-> ph (E. x (E. y (E. z (E. v ch)))))
ImpReplaceImp1Ex1Ex1Ex1Ex1Ex1 # <title> Substitution </title> # <table> # (-> ph (E. x (E. y (E. z (E. v (E. w' [ ps ] ] ] )))))) # (-> [ ps ] [ ch ] ) # (-> ph (E. x (E. y (E. z (E. v (E. w' [ [ [ ch ] )))))) # </table>
(-> ph (E. x (E. y (E. z (E. v (E. w' ps)))))) , (-> ps ch)(-> ph (E. x (E. y (E. z (E. v (E. w' ch))))))
(-> (/\ (=mod A B j) (=mod C D j)) (=mod (+ A C) (+ B D) j))
EqReplaceEq1Add1Add0Mul0 # <title> Substitution </title> # <table> # (= A (+ B (+ (* [ C ] ] ] A') B'))) # (= [ C ] [ D ] ) # (= A (+ B (+ (* [ [ [ D ] A') B'))) # </table>
(= A (+ B (+ (* C A') B'))) , (= C D)(= A (+ B (+ (* D A') B')))
modmuleq12 # <title> Multiply congruent numbers </title>
(-> (/\ (=mod A B j) (=mod C D j)) (=mod (* A C) (* B D) j))
divideshalfminus12 # <title> Divide the difference </title> # <suggest> right('Simplify', '|') </suggest> # <table> # (-> (/\ (| A <r> B) (| A <g> C)) (| A (.- <r> B <g> C))) # </table>
(-> (/\ (| A B) (| A C)) (| A (.- B C)))
primesetdivisor2 # <title> Numbers above 1 have prime divisors </title>
(-> (>= A (2)) (E. y (/\ (e. y (primeset)) (| y A))))
EqReplaceImp1Divs1Add0 # <title> Substitution </title> # <table> # (-> ph (| A (+ [ B ] ] ] D))) # (= [ B ] [ C ] ) # (-> ph (| A (+ [ [ [ C ] D))) # </table>
(-> ph (| A (+ B D))) , (= B C)(-> ph (| A (+ C D)))
ImpReplaceImp1Ex1An1Imp1 # <title> Substitution </title> # <table> # (-> ph (E. x (/\ ps (-> ch [ th ] ] ] )))) # (-> [ th ] [ ta ] ) # (-> ph (E. x (/\ ps (-> ch [ [ [ ta ] )))) # </table>
(-> ph (E. x (/\ ps (-> ch th)))) , (-> th ta)(-> ph (E. x (/\ ps (-> ch ta))))
ImpReplaceBi1An1 # <title> Substitution </title> # <table> # (<-> ph (/\ ps [ ch ] ] ] )) # (-> [ ch ] [ th ] ) # (<-> ph (/\ ps [ [ [ th ] )) # </table>
(<-> ph (/\ ps ch)) , (-> ch th)(-> ph (/\ ps th))
exmpanand # <title> Modus Ponens </title> # <table> # (-> ta (E. x (/\ (/\ ph ] ps) ] (-> ps [ ch)))) # (-> ta (E. x (/\ ph ] ] [ ch))) # </table>
(-> ta (E. x (/\ (/\ ph ps) (-> ps ch))))(-> ta (E. x (/\ ph ch)))
ImExelnotseqcom # <title> Sets are unequal if an element is only in one </title> # <table> # (-> ph (E. y (/\ (e. y S) (-. (e. y [ T ] ))))) # (-> ph (E. y (-. (=_ [ T ] S)))) # </table>
(-> ph (E. y (/\ (e. y S) (-. (e. y T)))))(-> ph (E. y (-. (=_ T S))))
ImExAncon3i # <title> Contrapositive </title> # <table> # (-> th (E. x (/\ ch [ (-> <r> ph <g> ps) ] ))) # (-> th (E. x (/\ ch [ (-> <g> (-. ps) <r> (-. ph) ] )))) # </table>
(-> th (E. x (/\ ch (-> ph ps))))(-> th (E. x (/\ ch (-> (-. ps) (-. ph)))))
removeImp23 # <title> Remove a true antecedent </title> # <table> # (-> ph (-> [ <r> ps [ ch)) # [ <r> ps ] # (-> ph [ [ ch) # </table>
(-> ph (-> ps ch)) , ps(-> ph ch)
euclidthm # <title> Euclid's Theorem </title> # <summary> # <a href="http://en.wikipedia.org/wiki/Euclid">Euclid</a>'s Proof that there are infinitely # many prime numbers. # </summary>
(-. (=_ (<{}> x) (primeset)))
1divides # <title> All numbers are divisible by 1 </title>
(| (1) A)
(-> (= (* A B) C) (| A C))
dividesFactorial1 # <title> Divisibility for Factorials </title>
(-> (>= A (1)) (| A (! A)))
(| (! A) (! (+ A (1))))
(<-> ([/] A x (-> (/\ (<= (1) B) (<= B x)) (| B (! x)))) (-> (/\ (<= (1) B) (<= B A)) (| B (! A))))
BiReplaceImp1Imp0An1 # <title> Substitution </title> # <table> # (-> ph (-> (/\ ps [ ch ] ] ] ) ta)) # (<-> [ ch ] [ th ] ) # (-> ph (-> (/\ ps [ [ [ th ] ) ta)) # </table>
(-> ph (-> (/\ ps ch) ta)) , (<-> ch th)(-> ph (-> (/\ ps th) ta))
(-> (/\ (<= (1) A) (<= A B)) (| A (! B)))
(-> (/\ (<= (1) A) (<= A B)) (| A (+ (! B) A)))
(<-> ([/] A x (-. (= (! x) (0)))) (-. (= (! A) (0))))
EqReplaceNot0Eq0 # <title> Substitution </title> # <table> # (-. (= [ A ] ] ] C)) # (= [ A ] [ B ] ) # (-. (= [ [ [ B ] C)) # </table>
(-. (= A C)) , (= A B)(-. (= B C))
LeReplaceLt1 # <title> Substitution </title> # <table> # (< A [ B ] ] ] ) # (<= [ B ] [ C ] ) # (< A [ [ [ C ] ) # </table>
(< A B) , (<= B C)(< A C)
factorialPos # <title> All factorials are positive </title>
(> (! A) (0))
compositeAddFact # <title> Factorial divisible by consecutive numbers </title>
(-> (/\ (< (1) A) (<= A B)) (composite (+ (! B) A)))
EqReplaceImp0An0Le0 # <title> Substitution </title> # <table> # (-> (/\ (<= [ A ] ] ] C) ph) ps) # (= [ A ] [ B ] ) # (-> (/\ (<= [ [ [ B ] C) ph) ps) # </table>
(-> (/\ (<= A C) ph) ps) , (= A B)(-> (/\ (<= B C) ph) ps)
SeqReplaceSs0 # <title> Substitution </title> # <table> # (C_ [ S ] ] ] U) # (=_ [ S ] [ T ] ) # (C_ [ [ [ T ] U) # </table>
(C_ S U) , (=_ S T)(C_ T U)
SeqReplaceSs1 # <title> Substitution </title> # <table> # (C_ S [ T ] ] ] ) # (=_ [ T ] [ U ] ) # (C_ S [ [ [ U ] ) # </table>
(C_ S T) , (=_ T U)(C_ S U)
consecutiveComposites.1 # <title> Arbitrarily Long Composite Sequence </title>
(C_ ({...} (+ (! A) (2)) (+ (! A) A)) (compositeset))
EqReplaceSs0Intv1 # <title> Substitution </title> # <table> # (C_ ({...} A [ B ] ] ] ) S) # (= [ B ] [ C ] ) # (C_ ({...} A [ [ [ C ] ) S) # </table>
(C_ ({...} A B) S) , (= B C)(C_ ({...} A C) S)
EqReplaceSs0Intv1Add1 # <title> Substitution </title> # <table> # (C_ ({...} A (+ B [ C ] ] ] )) S) # (= [ C ] [ D ] ) # (C_ ({...} A (+ B [ [ [ D ] )) S) # </table>
(C_ ({...} A (+ B C)) S) , (= C D)(C_ ({...} A (+ B D)) S)
consecutiveComposites # <title> Arbitrarily Long Composite Sequence </title> # <summary> # For every natural number A, there exist a set of A consecutive composite numbers. # </summary>
(E. x (C_ ({...} x (+ x A)) (compositeset)))
divideslincom number 0.95
(-> (/\ (| (S A) B) (| (S A) C)) (-> (lincom B C D) (| (S A) D)))
(-> (/\ (| (S A) (S B)) (| (S A) C)) (| (S A) (gcd (S B) C)))
lincomcom Linear combination is commutative
(<-> (lincom A B C) (lincom B A C))
(= (gcd A B) (gcd B A))
primegcd number 7.0
(-> (prime (S A)) (\/ (| (S A) (S B)) (= (gcd (S A) (S B)) (1))))
divides0 number 7.1
(| A (0))
0divides number 7.2
(<-> (| (0) A) (= (0) A))
0primeideal number 7.3
(<-> (= (* A B) (0)) (\/ (= A (0)) (= B (0))))
euclidlem.1 # <summary> Euclid's lemma, assuming A and B are not 0. </summary>
(-> (prime (S A)) (-> (| (S A) (* (S B) C)) (\/ (| (S A) (S B)) (| (S A) C))))
euclidlem.2 # <summary> # Removes one of the S marks from [euclidlem.1] by considering the case A=0. # The other S mark will be removed in [euclidlem] by considering B=0. # </summary>
(-> (prime A) (-> (| A (* (S B) C)) (\/ (| A (S B)) (| A C))))
euclidlem number 8.0 # <title> Euclid's lemma </title>
(-> (prime A) (-> (| A (* B C)) (\/ (| A B) (| A C))))
df-primes-just primes(A B) shall mean that the first A elements of the list represented by the beta-numeral B are all prime.
(<-> (A. x (-> (< x A) (prime (beta B x)))) (A. y (-> (< y A) (prime (beta B y)))))
(<-> (primes A B) (A. x (-> (< x A) (prime (beta B x)))))
df-nondecr-just number 10.0 nondecr(A B) shall mean that the first A elements of the list represented by the beta-numeral B are nondecreasing.
(<-> (A. x (-> (< (S x) A) (<= (beta B x) (beta B (S x))))) (A. y (-> (< (S y) A) (<= (beta B y) (beta B (S y))))))
(<-> (nondecr A B) (A. x (-> (< (S x) A) (<= (beta B x) (beta B (S x))))))
df-partprod-just partprod(A B C) shall mean that the first A elements of the sequence in beta-numeral B have their partial products in the beta-numeral C. May act funky if A == 0.
(<-> (/\ (= (beta B (0)) (beta C (0))) (A. x (-> (< (S x) A) (= (beta C (S x)) (* (beta C x) (beta B x)))))) (/\ (= (beta B (0)) (beta C (0))) (A. y (-> (< (S y) A) (= (beta C (S y)) (* (beta C y) (beta B y)))))))
(<-> (partprod A B C) (/\ (= (beta B (0)) (beta C (0))) (A. x (-> (< (S x) A) (= (beta C (S x)) (* (beta C x) (beta B x)))))))
df-factorization factorization(A, B, C, D) shall mean that D has been factored into A' primes, which are listed nondecreasingly in the beta-numeral B. The beta-numeral C shall list the partial products alongside.
(<-> (factorization A B C D) (/\ (primes (S A) B) (/\ (nondecr (S A) B) (/\ (partprod (S A) B C) (= D (beta C A))))))
exfactorization.0 # <summary> Any prime number has a trivial length-1 factorization </summary>
(-> (prime A) (E. x (factorization (0) x x A)))
factorizationeq3 Third equality identity for factorization
(-> (= C C') (<-> (factorization A B C D) (factorization A B C' D)))
factorizationeq4 number 14.0 Fourth equality identity for factorization
(-> (= A B) (<-> (factorization D C C' A) (factorization D C C' B)))
factorizationeq1 number 14.5 First equality identity for factorization
(-> (= A B) (<-> (factorization A C C' D) (factorization B C C' D)))
exfactorization.1 number 15.0
(-> (= x A) (<-> (E. w (E. y (E. z (factorization w y z (S (S x)))))) (E. w (E. y (E. z (factorization w y z (S (S A))))))))
emptyThm # <summary> This is used just for convenience to get an empty theorem. </summary>
(T)