(def-theorem exp-out "forall(n:zz,x:rr,2<=n implies x^n=x*x^(n-1))" (proof ( simplify )) (theory h-o-real-arithmetic))
(def-theorem monotonicity-for-multiplication "forall(x,y,r:rr, 0<r implies (r*x<=r*y iff x<=y))" (proof ( simplify )) (theory h-o-real-arithmetic))
(def-theorem strict-monotonicity-for-multiplication "forall(x,y,r:rr, 0<r implies (r*x<r*y iff x<y))" (proof ( simplify )) (theory h-o-real-arithmetic))
(def-theorem domain-of-inverse "forall(x:rr,#(x^[-1]) iff (#(x) and not(x=0)))" (proof ( direct-inference (case-split ("x=0")) simplify simplify )) (theory h-o-real-arithmetic))
(def-theorem domain-of-quotient "forall(x,y:rr,#(x/y) iff (#(x) and #(y) and not(y=0)))" (theory h-o-real-arithmetic) (proof ( direct-inference (case-split ("y=0")) simplify simplify )))
(def-theorem domain-of-exponentiation "forall(x:rr,y:zz,#(x^y) iff (#(x) and #(y) and (not(x=0) or 0<y)))" (theory h-o-real-arithmetic) (proof ( direct-and-antecedent-inference-strategy (contrapose "with(y:zz,x:rr,#(x^y));") simplify simplify simplify )) )
(def-theorem totality-of-addition "forall(x,y:rr,#(x+y) iff (#(x) and #(y)))" (proof ( simplify insistent-direct-inference-strategy )) (theory h-o-real-arithmetic))
(def-theorem totality-of-multiplication;; simplification. "forall(x,y:rr,#(x*y) iff (#(x) and #(y)))" (proof ( simplify insistent-direct-inference-strategy )) (theory h-o-real-arithmetic))
(def-theorem inverse-replacement ;;;simplification "forall(x:rr,x^[-1] ==1/x)" (proof ( simplify )) (theory h-o-real-arithmetic))
(def-theorem subtraction-replacement "forall(x,y,z,u:rr,x - y =x+[-1]*y)" (proof ( simplify )) (theory h-o-real-arithmetic))
(def-theorem negative-replacement "forall(x,y,z,u:rr, - y =[-1]*y)" (proof ( simplify )) (theory h-o-real-arithmetic))
(def-theorem multiplication-of-fractions-left "forall(x,y,u:rr,(x/u)*y == (x*y)/u)" (proof ( simplify )) (theory h-o-real-arithmetic))
(def-theorem multiplication-of-fractions-right "forall(x,y,u:rr,y*(x/u) == (y*x)/u)" (proof ( simplify )) (theory h-o-real-arithmetic))
(def-theorem multiplication-of-fractions "forall(x,y,z,u:rr,x/u*y/z == (x*y)/(u*z))" (proof ( simplify )) (theory h-o-real-arithmetic))
(def-theorem addition-of-fractions-left "forall(x,y,z,u:rr,x/u + y == (x+u*y)/u)" (proof ( direct-inference (case-split ("u=0")) simplify simplify )) (theory h-o-real-arithmetic))
(def-theorem addition-of-fractions-right "forall(x,y,z,u:rr,y+x/u == (x+u*y)/u)" (proof ( direct-inference (case-split ("u=0")) simplify simplify )) (theory h-o-real-arithmetic))
(def-theorem division-of-fractions "forall(x,y,z:rr,(x/y)/z==x/(y*z))" (proof ( simplify )) (theory h-o-real-arithmetic))
(def-theorem division-of-fractions-2 "forall(x,y,z:rr,not(z=0) implies x/(y/z)==(x*z)/y)" (proof ( simplify )) (theory h-o-real-arithmetic))
(def-theorem exponents-of-fractions "forall(x,y:rr,n:zz,(x/y)^n ==x^n/y^n)" (proof ( direct-inference (case-split ("y=0")) simplify simplify )) (theory h-o-real-arithmetic))
(def-theorem negative-exponent-replacement "forall(x:rr,n:zz,not(x=0) implies x^([-1]*n)==1/x^n)" (proof ( simplify )) (theory h-o-real-arithmetic))
(def-theorem right-denominator-removal-for-equalities "forall(x,y,z:rr, x = y/z iff (#(z^[-1]) and x*z=y))" (proof ( direct-inference (force-substitution "x=y/z" "z^[-1]*(x*z-y)=0" (0)) (case-split ("z=0")) simplify (apply-macete-with-minor-premises cancel) (cut-with-single-formula "not(z^[-1]=0)") simplify (contrapose "with(z:rr,not(z=0));") (force-substitution "z" "z*z^[-1]*z" (0)) simplify (cut-with-single-formula "#(z^[-1])") (weaken (1)) simplify (case-split ("z=0")) simplify simplify )) (theory h-o-real-arithmetic))
(def-theorem left-denominator-removal-for-equalities "forall(x,y,z:rr, y/z=x iff (#(z^[-1]) and x*z=y))" (proof ( (force-substitution "y/z=x" "x=y/z" (0)) (apply-macete-with-minor-premises right-denominator-removal-for-equalities) direct-and-antecedent-inference-strategy )) (theory h-o-real-arithmetic))
(def-theorem equality-of-fractions "forall(x,y,z,u:rr, x/u = y/z iff (#(u^[-1]) and #(z^[-1]) and x*z=y*u))" (proof ( (apply-macete-with-minor-premises right-denominator-removal-for-equalities) (apply-macete-with-minor-premises multiplication-of-fractions-left) (apply-macete-with-minor-premises left-denominator-removal-for-equalities) direct-and-antecedent-inference-strategy )) (theory h-o-real-arithmetic))
(def-theorem positivity-of-inverse "forall(x:rr,0<x^[-1] iff 0<x)" (proof ( (cut-with-single-formula "forall(x:rr, 0<x implies 0<x^[-1])") direct-and-antecedent-inference-strategy (force-substitution "x" "(x^[-1])^[-1]" (0)) (backchain "forall(x:rr,0<x implies 0<x^[-1]);") simplify (backchain "forall(x:rr,0<x implies 0<x^[-1]);") direct-and-antecedent-inference-strategy (cut-with-single-formula "0<x^[-1] or 0=x^[-1] or 0<[-1]*x^[-1]") (antecedent-inference "with(x:rr,0<x^[-1] or 0=x^[-1] or 0<[-1]*x^[-1]);") (cut-with-single-formula "1=x*x^[-1]") (contrapose "with(x:rr,1=x*x^[-1]);") simplify (weaken (0)) simplify (cut-with-single-formula "0<x*([-1]*x^[-1])") (contrapose "with(x:rr,0<x*([-1]*x^[-1]))") (weaken (0 1 2)) (case-split ("x=0")) simplify simplify (apply-macete-with-minor-premises strict-positivity-for-products) simplify simplify )) (theory h-o-real-arithmetic))
(def-theorem right-denominator-removal-for-strict-inequalities "forall(x,y,z:rr, 0<z implies x < y/z iff x*z<y)" (proof ( (force-substitution "x<y/z" "0<z^[-1]*(y-x*z)" (0)) direct-inference direct-inference (cut-with-single-formula "0<z^[-1]") simplify (apply-macete-with-minor-premises positivity-of-inverse) (weaken (0)) (case-split ("z=0")) simplify simplify )) (theory h-o-real-arithmetic))
(def-theorem left-denominator-removal-for-strict-inequalities "forall(x,y,z:rr, 0<z implies y/z<x iff y<x*z)" (proof ( (force-substitution "y/z<x" "0<z^[-1]*(x*z-y)" (0)) direct-inference direct-inference (cut-with-single-formula "0<z^[-1]") simplify (apply-macete-with-minor-premises positivity-of-inverse) (weaken (0)) (case-split ("z=0")) simplify simplify )) (theory h-o-real-arithmetic))
(def-theorem right-denominator-removal-for-inequalities "forall(x,y,z:rr, 0<z implies x <= y/z iff x*z<=y)" (theory h-o-real-arithmetic) (proof ( (force-substitution "x<=y/z" "0<=z^[-1]*(y-x*z)" (0)) direct-inference direct-inference (cut-with-single-formula "0<z^[-1]") simplify (apply-macete-with-minor-premises positivity-of-inverse) (weaken (0)) (case-split ("z=0")) simplify simplify )))
(def-theorem left-denominator-removal-for-inequalities "forall(x,y,z:rr, 0<z implies y/z<=x iff y<=x*z)" (theory h-o-real-arithmetic) (proof ( (force-substitution "y/z<=x" "0<=z^[-1]*(x*z-y)" (0)) direct-inference direct-inference (cut-with-single-formula "0<z^[-1]") simplify (apply-macete-with-minor-premises positivity-of-inverse) (weaken (0)) (case-split ("z=0")) simplify simplify )))
(def-theorem positivity-for-r^n "forall(r:rr,n:zz,0<r implies 0<r^n)" (theory h-o-real-arithmetic) (proof ( (cut-with-single-formula "forall(r:rr,n:zz,0<r and 0<=n implies 0<r^n)") direct-and-antecedent-inference-strategy (case-split ("0<=n")) (backchain "forall(r:rr,n:zz,0<r and 0<=n implies 0<r^n);") direct-and-antecedent-inference-strategy (force-substitution "r^n" "(r^[-1])^([-1]*n)" (0)) (backchain "forall(r:rr,n:zz,0<r and 0<=n implies 0<r^n);") (apply-macete-with-minor-premises positivity-of-inverse) simplify simplify (induction integer-inductor ("n")) (force-substitution "r^(1+t)" "r^t*r" (0)) (apply-macete-with-minor-premises strict-positivity-for-products) direct-inference simplify )))
(def-compound-macete fractional-expression-manipulation (series beta-reduce (repeat inverse-replacement subtraction-replacement negative-replacement addition-of-fractions-left addition-of-fractions-right multiplication-of-fractions-left multiplication-of-fractions-right division-of-fractions division-of-fractions-2 exponents-of-fractions negative-exponent-replacement) (repeat left-denominator-removal-for-equalities right-denominator-removal-for-equalities right-denominator-removal-for-strict-inequalities left-denominator-removal-for-strict-inequalities right-denominator-removal-for-inequalities left-denominator-removal-for-inequalities multiplication-of-fractions-left multiplication-of-fractions-right)))
(def-theorem non-zero-product "forall(x,y:rr, #(x) and #(y) and not(x=0) and not(y=0) implies not(x*y=0))" (proof ( (apply-macete-with-minor-premises cancel) )) (theory h-o-real-arithmetic))
(def-script prove-iteration-operator-definedness 3 ( direct-inference (case-split ((% "~a<=~a" $1 $2))) (induction integer-inductor ()) (prove-by-logic-and-simplification 3) (unfold-single-defined-constant (0) $3) simplify ))
(def-theorem sum-definedness "forall(m,n:zz,f:[zz,rr],forall(k:zz,m<=k and k<=n implies #(f(k))) implies #(sum(m,n,f)))" (theory h-o-real-arithmetic) (proof ( (prove-iteration-operator-definedness "m" "n" sum) )) (usages d-r-convergence))
(def-theorem prod-definedness "forall(m,n:zz,f:[zz,rr],forall(k:zz,m<=k and k<=n implies #(f(k))) implies #(prod(m,n,f)))" (theory h-o-real-arithmetic) (proof ( (prove-iteration-operator-definedness "m" "n" prod) )) (usages d-r-convergence))
(def-theorem prod-non-zero "forall(m,n:zz,f:[zz,rr],forall(k:zz,m<=k and k<=n implies not(f(k)=0)) implies not(prod(m,n,f)=0))" (proof ( direct-inference (case-split ("m<=n")) (induction integer-inductor ()) (case-split ("#(f(1+t)) and #(prod(m,t,f))")) (apply-macete-with-minor-premises cancel) (contrapose "with(t,m:zz,m<=t);") (antecedent-inference "with(m,t:zz,f:[zz,rr],f(1+t)=0 or prod(m,t,f)=0);") (contrapose "with(t:zz,f:[zz,rr],f(1+t)=0);") (prove-by-logic-and-simplification 3) (contrapose "with(f:[zz,rr],t,m:zz,prod(m,t,f)=0);") (prove-by-logic-and-simplification 3) (contrapose "with(m,t:zz,f:[zz,rr],not(#(f(1+t)) and #(prod(m,t,f))));") simplify (unfold-single-defined-constant (0) prod) simplify )) (theory h-o-real-arithmetic))
(def-theorem monotonicity-for-sum "forall(f,g:[zz,rr], a,b:zz, forall(z:zz,a<=z and z<=b implies f(z)<=g(z)) implies sum(a,b,f)<=sum(a,b,g))" (proof ( direct-and-antecedent-inference-strategy (case-split ("a<=b")) (induction integer-inductor ()) direct-inference (cut-with-single-formula "f(1+t)<=g(1+t) and sum(a,t,f)<=sum(a,t,g)") simplify (prove-by-logic-and-simplification 3) (unfold-single-defined-constant (0 1) sum) simplify ) ) (theory h-o-real-arithmetic))
(def-theorem monotonicity-of-inverse "forall(x,y:rr,0<x and 0<y implies y^[-1]<=x^[-1] iff x<=y)" (proof ( (apply-macete-with-minor-premises fractional-expression-manipulation) simplify )) (theory h-o-real-arithmetic))
(def-theorem strict-monotonicity-of-inverse "forall(x,y:rr,0<x and 0<y implies y^[-1]<x^[-1] iff x<y)" (proof ( (apply-macete-with-minor-premises fractional-expression-manipulation) simplify )) (theory h-o-real-arithmetic))
(def-theorem absolute-value-inversion "forall(x:rr, abs(x^[-1])==abs(x)^[-1])" (theory h-o-real-arithmetic) (proof ( direct-inference unfold-defined-constants (cut-with-single-formula "0<x or 0=x or x<0") (antecedent-inference "with(x:rr,0<x or 0=x or x<0);") (cut-with-single-formula "0<x^[-1]") simplify (apply-macete-with-minor-premises positivity-of-inverse) simplify (cut-with-single-formula "x^[-1]<0") simplify (force-substitution "x^[-1]<0" "0<([-1]*x)^[-1]" (0)) (apply-macete-with-minor-premises positivity-of-inverse) simplify simplify simplify )))
(def-theorem absolute-value-product "forall(x,y:rr,abs(x*y)=abs(x)*abs(y))" (theory h-o-real-arithmetic) (proof ( direct-inference unfold-defined-constants (cut-with-single-formula "0<x and 0<y and 0<x*y or 0<x and y<0 and 0<[-1]*y*x or 0<y and x<0 and 0<[-1]*x*y or x<0 and y<0 and 0<([-1]*y)*([-1]*x) or (x=0 or y=0) and x*y=0") (prove-by-logic-and-simplification 3) (apply-macete-with-minor-premises strict-positivity-for-products) (apply-macete-with-minor-premises cancel) (prove-by-logic-and-simplification 3) )))
(def-theorem absolute-value-quotient "forall(x,y:rr,abs(x/y)==abs(x)/abs(y))" (theory h-o-real-arithmetic) (proof ( simplify (apply-macete-with-minor-premises absolute-value-product) (apply-macete-with-minor-premises absolute-value-inversion) )))
(def-theorem absolute-value-zero "forall(x:rr,abs(x)=0 iff x=0)" (theory h-o-real-arithmetic) (proof ( unfold-defined-constants direct-inference (case-split ("0<=x")) simplify simplify )))
(def-theorem absolute-value-non-negative "forall(x:rr,0<=x implies abs(x)=x)" (theory h-o-real-arithmetic) (proof ( direct-and-antecedent-inference-strategy unfold-defined-constants simplify )) )
(def-theorem absolute-value-non-positive "forall(x:rr,x<=0 implies abs(x)=-x)" (theory h-o-real-arithmetic) (proof ( direct-and-antecedent-inference-strategy unfold-defined-constants (case-split ("x<0")) simplify simplify )) )
(def-theorem absolute-value-absolute-value "forall(x:rr,abs(abs(x))=abs(x))" (theory h-o-real-arithmetic) (usages rewrite) (proof ( direct-and-antecedent-inference-strategy (apply-macete absolute-value-non-negative) )))
(def-compound-macete integer-induction (sequential (sound abstraction-for-induction beta-reduce beta-reduce) induct))
(def-theorem () "forall(x,y:zz, #(max(x,y),zz))" (theory h-o-real-arithmetic) (usages d-r-convergence) (proof ( unfold-defined-constants )) )
(def-theorem () "forall(x,y:zz,#(min(x,y),zz))" (theory h-o-real-arithmetic) (proof ( unfold-defined-constants )) (usages d-r-convergence))
(def-theorem factorial-non-zero "forall(m:zz,not(m!=0))" (theory h-o-real-arithmetic) (proof ( (unfold-single-defined-constant (0) factorial) (apply-macete-with-minor-premises prod-non-zero) simplify )))
(def-theorem factorial-non-zero-1 "forall(m:zz, y:rr, m!=y implies not(y=0))" (theory h-o-real-arithmetic) (proof ( direct-and-antecedent-inference-strategy (backchain-backwards "with(y:rr,m:zz,m!=y);") (apply-macete-with-minor-premises factorial-non-zero) )) (usages d-r-value))
(def-theorem factorial-out "forall(m:zz,1<=m implies m!=(m-1)!*m)" (proof ( (unfold-single-defined-constant (0 1) factorial) (unfold-single-defined-constant (0) prod) simplify )) (theory h-o-real-arithmetic))
(def-theorem factorial-definedness "forall(m:zz,#(m!))" (proof ( (unfold-single-defined-constant (0) factorial) insistent-direct-inference beta-reduce-repeatedly (apply-macete-with-minor-premises prod-definedness) simplify ) ) (theory h-o-real-arithmetic) (usages d-r-convergence))
(def-compound-macete definedness-manipulations (series (repeat totality-of-addition totality-of-multiplication domain-of-exponentiation domain-of-inverse non-zero-product factorial-non-zero sum-definedness factorial-definedness) simplify))
(def-theorem monotone-product-lemma "forall(x,y,z,u:rr, 0<=x and x<=y and 0<=u and u<=z implies x*u<=y*z)" (proof ( direct-and-antecedent-inference-strategy (apply-macete-with-minor-premises transitivity-of-<=) (instantiate-existential ("x*z")) (cut-with-single-formula "0<=x*(z-u)") simplify (apply-macete-with-minor-premises positivity-for-products) simplify (cut-with-single-formula "0<=(y-x)*z") simplify (apply-macete-with-minor-premises positivity-for-products) simplify ) ) (theory h-o-real-arithmetic))
(def-theorem prod-definedness-converse "forall(m,n:zz,f:[zz,rr], #(prod(m,n,f)) implies forall(k:zz,m<=k and k<=n implies #(f(k))))" (theory h-o-real-arithmetic) (proof ( direct-inference direct-inference (case-split ("m<=n")) (induction integer-inductor ()) direct-and-antecedent-inference-strategy (cut-with-single-formula "k_$0=m") simplify simplify (case-split ("k=1+t")) simplify simplify direct-and-antecedent-inference-strategy (simplify-antecedent "with(p:prop,not(p));") )) )
(def-theorem monotonicity-of-exponentiation "forall(a:rr, x,y:zz, x<=y and 0<a and a<=1 implies a^y<=a^x)" (theory h-o-real-arithmetic) (proof ( (induction integer-inductor ("y")) (force-substitution "a^(1+t)<=a^x" "a*a^t<=1*a^x" (0)) (block (script-comment "`force-substitution' at (0)") (apply-macete-with-minor-premises monotone-product-lemma) (cut-with-single-formula "0<a^t") simplify (apply-macete-with-minor-premises positivity-for-r^n)) (block (script-comment "`force-substitution' at ()") direct-inference simplify) )))
(def-theorem strict-monotonicity-of-exponentiation "forall(a:rr, x,y:zz, x<y and 0<a and a<1 implies a^y<a^x)" (theory h-o-real-arithmetic) (proof ( direct-and-antecedent-inference-strategy (cut-with-single-formula "a^y<=a^(x+1)") (move-to-sibling 1) (block (script-comment "`cut-with-single-formula' at (1)") (apply-macete-with-minor-premises monotonicity-of-exponentiation) simplify) (cut-with-single-formula "a^(x+1)<a^x") simplify (force-substitution "a^(x+1)<a^x" "0<(1-a)*a^x" (0)) (move-to-sibling 1) (block (script-comment "`force-substitution' at (1)") (weaken ("a<1")) simplify) (block (script-comment "`force-substitution' at (0)") simplify (apply-macete-with-minor-premises positivity-for-r^n)) )))