(def-constant even "lambda(i:zz, forsome(j:zz, i=2*j))" (theory h-o-real-arithmetic))
(def-constant odd "lambda(i:zz, forsome(j:zz, i=2*j+1))" (theory h-o-real-arithmetic))
(def-theorem even-iff-suc-is-odd "forall(n:zz, even(n) iff odd(n+1))" reverse (theory h-o-real-arithmetic) (proof ( unfold-defined-constants direct-and-antecedent-inference-strategy (instantiate-existential ("j")) (instantiate-existential ("j")) simplify )))
(def-theorem odd-iff-suc-is-even "forall(n:zz, odd(n) iff even(n+1))" reverse (theory h-o-real-arithmetic) (proof ( unfold-defined-constants direct-and-antecedent-inference-strategy (instantiate-existential ("j+1")) simplify (instantiate-existential ("j-1")) simplify )))
(def-theorem natural-numbers-are-even-or-odd "forall(n:nn, even(n) or odd(n))" (theory h-o-real-arithmetic) (proof ( (cut-with-single-formula "forall(n:zz, 0<=n implies forall(m:nn, m<=n implies (even(m) or odd(m))))") direct-inference (backchain "with(p:prop, p)") (instantiate-existential ("n")) (apply-macete-with-minor-premises nn-in-quasi-sort_h-o-real-arithmetic) simplify (induction integer-inductor ("n")) direct-and-antecedent-inference-strategy (contrapose "with(p:prop, forall(j:zz,p))") (instantiate-existential ("0")) simplify (cut-with-single-formula "m<=t or m=1+t") (antecedent-inference "with(p,q:prop, p or q)") (backchain "with(p:prop, forall(m:nn,p))") (cut-with-single-formula "even(t) or odd(t)") (force-substitution "m" "t+1" (0 1)) (incorporate-antecedent "with(p,q:prop, p or q)") (apply-macete-locally even-iff-suc-is-odd (0) "even(t)") (apply-macete-locally odd-iff-suc-is-even (0) "odd(t)") direct-and-antecedent-inference-strategy simplify (instantiate-universal-antecedent "with(p:prop, forall(m:nn,p))" ("t")) (simplify-antecedent "with(p:prop, not(p))") simplify )))
(def-theorem even-and-odd-natural-numbers-are-disjoint "forall(n:nn, odd(n) iff not even(n))" (theory h-o-real-arithmetic) (proof ( direct-and-antecedent-inference-strategy (incorporate-antecedent "with(p:prop, p)") unfold-defined-constants simplify direct-and-antecedent-inference-strategy (backchain "with(p:prop, p)") (weaken (0)) (instantiate-theorem trichotomy ("j" "j_$0")) simplify simplify simplify (instantiate-theorem natural-numbers-are-even-or-odd ("n")) )))
(def-recursive-constant nn%quotient "lambda(f:[rr,rr,rr], lambda(m,n:rr,if(n=0, ?rr, if(m<n,0,1+f(m-n,n)))))" (theory h-o-real-arithmetic) (definition-name nn%quotient))
(def-constant zz%quotient "lambda(m,n:zz, if(m*n<0, nn%quotient(abs(m),abs(n))-1, nn%quotient(abs(m),abs(n))))" (theory h-o-real-arithmetic))