(def-constant monotone%between
"lambda(a,b:rr, f:[rr,rr],
forall(x,y:rr,
a <= x
and
x <= b
and
a <= y
and
y <= b
and
x <= y
implies
f(x) <= f(y)))"
(theory h-o-real-arithmetic))
(def-theorem monotone-fixed-point-theorem
"forall(b,a:rr,f:[rr,rr],
a <= b
and
a <= f(a)
and
f(b) <= b
and
monotone%between(a,b,f)
implies
forsome(z:rr,(a <= z and z <= b) and f(z)=z))"
(theory h-o-real-arithmetic)
(proof
(
(unfold-single-defined-constant (0) monotone%between)
(apply-macete-with-minor-premises tr%knaster-fixed-point-theorem-corollary)
)))
(def-constant weakly%lipschitz%between
"lambda(a,b:rr,f:[rr,rr], forsome(k:rr,
forall(x,y:rr, x<=y and a<=x and y<=b implies f(y)-f(x)<=k*(y-x))))"
(theory h-o-real-arithmetic))
(def-theorem weak-lipschitz-constant-positive
"forall(a,b:rr,f:[rr,rr], weakly%lipschitz%between(a,b,f) iff forsome(k:rr, 0<k and
forall(x,y:rr, x<=y and a<=x and y<=b implies f(y)-f(x)<=k*(y-x))))"
(theory h-o-real-arithmetic)
(proof (
(unfold-single-defined-constant-globally weakly%lipschitz%between)
direct-and-antecedent-inference-strategy
(case-split ("0<k"))
auto-instantiate-existential
(instantiate-existential ("1"))
simplify
(apply-macete-with-minor-premises transitivity-of-<=)
(instantiate-existential ("0"))
(case-split ("k=0"))
(incorporate-antecedent "with(p:prop,forall(x,y:rr,p));")
simplify
(cut-with-single-formula "k*(y-x)<=0")
(auto-instantiate-universal-antecedent "with(k:rr,f:[rr,rr],b,a:rr,
forall(x,y:rr,
x<=y and a<=x and y<=b implies f(y)-f(x)<=k*(y-x)));")
simplify
(force-substitution "k*(y-x)<=0" "(-k)*0<=(-k)*(y-x)" (0))
(apply-macete-with-minor-premises monotonicity-for-multiplication)
simplify
simplify
simplify
simplify
auto-instantiate-existential)))
(def-theorem weak-intermediate-value-thm
"forall(a,b:rr, f:[rr,rr], f(a)<=0 and 0<=f(b)
and
a<=b
and
weakly%lipschitz%between(a,b,f)
implies
forsome(x:rr, a<=x and x<=b and f(x)=0))"
(theory h-o-real-arithmetic)
(proof
(
(apply-macete-with-minor-premises weak-lipschitz-constant-positive)
direct-and-antecedent-inference-strategy
(cut-with-single-formula "forsome(x:rr, (a<=x and x<=b) and lambda(z:rr,z-f(z)/k)(x)=x)")
(block (script-comment "first use the assertion.")
(instantiate-existential ("x"))
(incorporate-antecedent "with(p:prop,p and p);")
(apply-macete-with-minor-premises fractional-expression-manipulation)
simplify)
(block (script-comment "now prove the assertion useing the knaster fp theorem.")
(apply-macete-with-minor-premises tr%knaster-fixed-point-theorem-corollary)
(incorporate-antecedent "with(p:prop,forall(x,y:rr,p));")
(apply-macete-with-minor-premises fractional-expression-manipulation)
simplify
direct-and-antecedent-inference-strategy-with-simplification
(instantiate-universal-antecedent "with(p:prop,forall(x,y:rr,p));"
("x_$0" "y_$0")
)
simplify)
)))
(def-theorem power-fn-is-monotone
"forall(n:zz, x,y:rr, 1<=n and 0<=x and x<=y implies x^n <= y^n)"
(theory h-o-real-arithmetic)
lemma
(proof
(
(induction integer-inductor ("n"))
(apply-macete-with-minor-premises exp-out)
(apply-macete-with-minor-premises monotone-product-lemma)
simplify
(case-split ("x=0"))
simplify
(cut-with-single-formula "0<x^t")
simplify
(apply-macete-with-minor-premises positivity-for-r^n)
simplify
)))
(def-theorem power-fn-is-weakly%lipschitz
"forall(r:rr, n:zz, 1<=n implies weakly%lipschitz%between(0,r, lambda(x:rr,x^n)))"
(theory h-o-real-arithmetic)
(proof
(
direct-and-antecedent-inference-strategy
(unfold-single-defined-constant (0) weakly%lipschitz%between)
(case-split ("r=0"))
(instantiate-existential ("1"))
(cut-with-single-formula "x_$0=y_$0")
simplify
simplify
(instantiate-existential ("n*r^(n-1)"))
(induction trivial-integer-inductor ("n"))
simplify
(cut-with-single-formula
"y_$1*(y_$1^t-x_$1^t)<=t*r^t*(y_$1-x_$1) and x_$1^t*(y_$1-x_$1)<=r^t*(y_$1-x_$1)")
simplify
(force-substitution "t*r^t*(y_$1-x_$1)" "r*(t*r^(t-1)*(y_$1-x_$1))" (0))
(apply-macete-with-minor-premises monotone-product-lemma)
simplify
(force-substitution "0" "0^t" (0))
(move-to-sibling 1)
simplify
(apply-macete-with-minor-premises power-fn-is-monotone)
simplify
simplify
)))
(def-theorem nth-roots-exist
"forall(x:rr, n:zz, 1<=n and 0<=x implies forsome(y:rr, 0<=y and y^n=x))"
(theory h-o-real-arithmetic)
(proof
(
direct-and-antecedent-inference-strategy
(cut-with-single-formula
"forsome(a:rr, forsome(y:rr, 0<=y and y<=a and lambda(theta:rr, theta^n-x)(y)=0))")
(antecedent-inference "with(p:prop,forsome(a:rr,p));")
(instantiate-existential ("y"))
(simplify-antecedent "with(p:prop,p and p and p);")
(apply-macete-with-minor-premises weak-intermediate-value-thm)
beta-reduce-repeatedly
(force-substitution "weakly%lipschitz%between(0,a,lambda(theta:rr,theta^n-x))"
"weakly%lipschitz%between(0,a,lambda(theta:rr,theta^n))"
(0))
(move-to-sibling 1)
(unfold-single-defined-constant-globally weakly%lipschitz%between)
simplify
(apply-macete-with-minor-premises power-fn-is-weakly%lipschitz)
simplify
(case-split ("x<=1"))
(instantiate-existential ("1"))
simplify
simplify
(instantiate-existential ("x"))
(induction integer-inductor ("n"))
(apply-macete-with-minor-premises exp-out)
(force-substitution "x" "1*x" (0))
(apply-macete-with-minor-premises monotone-product-lemma)
simplify
simplify )))
(def-theorem nth-roots-are-unique
"forall(x,y:rr, n:zz, 1<=n and 0<=x and 0<=y and x^n=y^n implies x=y)"
(theory h-o-real-arithmetic)
(proof
(
(cut-with-single-formula "forall(x,y:rr, n:zz, 1<=n and 0<=x and x<y implies x^n<y^n)")
(move-to-sibling 1)
direct-and-antecedent-inference-strategy
(case-split ("x=0"))
simplify
(apply-macete-with-minor-premises positivity-for-r^n)
(cut-with-single-formula "forall(t:rr, 1<t implies 1<t^n)")
(instantiate-universal-antecedent "with(p:prop,forall(t:rr,p));" ("y/x"))
(contrapose "with(r:rr,not(1<r));")
(apply-macete-with-minor-premises fractional-expression-manipulation)
simplify
(incorporate-antecedent "with(r:rr,1<r);")
(apply-macete-with-minor-premises fractional-expression-manipulation)
simplify
(apply-macete-with-minor-premises positivity-for-r^n)
simplify
direct-and-antecedent-inference-strategy
(cut-with-single-formula "1+n*(t-1)<=t^n and 0<n*(t-1)")
simplify
(force-substitution "t" "1+(t-1)" (1))
(apply-macete-with-minor-premises bernoullis-inequality)
simplify
simplify
direct-and-antecedent-inference-strategy
(cut-with-single-formula "x<y or x=y or y<x")
(antecedent-inference "with(p:prop,p or p or p);")
(instantiate-universal-antecedent "with(p:prop,forall(x,y:rr,n:zz,p));"
("x" "y" "n"))
simplify
(instantiate-universal-antecedent "with(p:prop,forall(x,y:rr,n:zz,p));"
("y" "x" "n"))
simplify
simplify
)))
(def-constant nth%root
"lambda(n:zz,x:rr, iota(y:rr, 1<=n and 0<=y and y^n=x))"
(theory h-o-real-arithmetic))
(def-theorem iota-free-characterization-of-nth%root
"forall(n:zz,x,y:rr, 1<=n implies (nth%root(n,x)=y iff (0<=y and y^n=x)))"
(theory h-o-real-arithmetic)
(proof
(
(unfold-single-defined-constant (0) nth%root)
direct-and-antecedent-inference-strategy
(contrapose "with(y,r:rr,r=y);")
(apply-macete-with-minor-premises eliminate-iota-macete)
(contrapose "with(p:prop,not(p));")
(contrapose "with(y,r:rr,r=y);")
(apply-macete-with-minor-premises eliminate-iota-macete)
(contrapose "with(p:prop,not(p));")
(apply-macete-with-minor-premises eliminate-iota-macete)
direct-and-antecedent-inference-strategy
(apply-macete-with-minor-premises nth-roots-are-unique)
(instantiate-existential ("n"))
)))
(def-theorem nth%root%existence
"forall(n:zz, x:rr, 0 <=x and 1<=n implies #(nth%root(n,x)))"
(theory h-o-real-arithmetic)
(usages d-r-convergence)
(proof
(
direct-and-antecedent-inference-strategy
(cut-with-single-formula "forsome(y:rr, 0<=y and nth%root(n,x)=y)")
(antecedent-inference "with(p:prop,forsome(y:rr,p));")
(apply-macete-with-minor-premises iota-free-characterization-of-nth%root)
simplify
(apply-macete-with-minor-premises nth-roots-exist)
direct-and-antecedent-inference-strategy
)))
(def-theorem nth%root-power
"forall(a,b:rr,n:zz,0<=a and 1<=n implies nth%root(n,a)^n=a)"
(theory h-o-real-arithmetic)
(proof
(
direct-and-antecedent-inference-strategy
(cut-with-single-formula "forsome(s:rr, nth%root(n,a)=s)")
(move-to-sibling 1)
(instantiate-existential ("nth%root(n,a)"))
simplify
(antecedent-inference "with(p:prop,forsome(s:rr,p));")
(backchain "with(s,r:rr,r=s);")
(incorporate-antecedent "with(s,r:rr,r=s);")
(apply-macete-with-minor-premises iota-free-characterization-of-nth%root)
direct-and-antecedent-inference-strategy
)))
(def-theorem strict-monotonicity-of-nth%root
"forall(a,b:rr, n:zz, 0<=a and a<b and 1<=n implies nth%root(n,a)<nth%root(n,b))"
(theory h-o-real-arithmetic)
(proof
(
direct-and-antecedent-inference-strategy
(case-split ("nth%root(n,b)<=nth%root(n,a)"))
(move-to-sibling 2)
simplify
(cut-with-single-formula "not(b<=a)")
(move-to-sibling 1)
simplify
(contrapose "with(p:prop,not(p));")
(cut-with-single-formula "(nth%root(n,b))^n<=(nth%root(n,a))^n")
(move-to-sibling 1)
(apply-macete-with-minor-premises power-fn-is-monotone)
direct-and-antecedent-inference-strategy
(cut-with-single-formula "forsome(s:rr, nth%root(n,b)=s)")
(antecedent-inference "with(p:prop,forsome(s:rr,p));")
(backchain "with(s,r:rr,r=s);")
(incorporate-antecedent "with(s,r:rr,r=s);")
(apply-macete-with-minor-premises iota-free-characterization-of-nth%root)
direct-and-antecedent-inference-strategy
(instantiate-existential ("nth%root(n,b)"))
(contrapose "with(n:zz,r:rr,r^n<=r^n);")
(apply-macete-with-minor-premises nth%root-power)
)))
(def-theorem monotonicity-of-nth%root
"forall(a,b:rr, n:zz, 0<=a and a<=b and 1<=n implies nth%root(n,a)<=nth%root(n,b))"
(theory h-o-real-arithmetic)
(proof
(
direct-and-antecedent-inference-strategy
(case-split ("a=b"))
simplify
(cut-with-single-formula "nth%root(n,a)<nth%root(n,b)")
simplify
(apply-macete-with-minor-premises strict-monotonicity-of-nth%root)
simplify)))
(def-theorem nth-root-is-multiplicative
"forall(a,b:rr, n:zz,
0<=a and 0<=b and 1<=n implies nth%root(n,a*b)=nth%root(n,a)*nth%root(n,b))"
(theory h-o-real-arithmetic)
(proof
(
direct-and-antecedent-inference-strategy
(cut-with-single-formula "forsome(s,t:rr, nth%root(n,a)=s and nth%root(n,b)=t)"
)
(move-to-sibling 1)
(instantiate-existential ("nth%root(n,a)" "nth%root(n,b)"))
(block
(script-comment "`cut-with-single-formula' at (0)")
(antecedent-inference "with(p:prop,forsome(s,t:rr,p));")
(backchain "with(p:prop,p and p);") (backchain "with(p:prop,p and p);")
(incorporate-antecedent "with(p:prop,p and p);")
(apply-macete-with-minor-premises iota-free-characterization-of-nth%root)
simplify direct-and-antecedent-inference-strategy
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (0 0 0 0 0)"
)
(apply-macete-with-minor-premises positivity-for-products) simplify
)
simplify
))))
(def-theorem nth%root-of-zero
"forall(n:zz, 1<=n implies nth%root(n,0)=0)"
(theory h-o-real-arithmetic)
(proof
(
direct-inference
(instantiate-theorem nth%root%existence ("n" "0"))
(simplify-antecedent "with(p:prop,p);")
direct-inference
(incorporate-antecedent "with(p:prop,p);")
(unfold-single-defined-constant-globally nth%root)
(eliminate-defined-iota-expression 1 zero)
simplify)))
(def-theorem nth%root-non-negative
"forall(x:rr,n:zz, 0<=x and 1<=n implies 0<= nth%root(n,x))"
(theory h-o-real-arithmetic)
(proof
(
direct-and-antecedent-inference-strategy
(instantiate-theorem strict-monotonicity-of-nth%root ("0" "x" "n"))
(simplify-antecedent "with(p:prop,not(p));")
(cut-with-single-formula "x=0")
simplify
(apply-macete-with-minor-premises nth%root-of-zero)
simplify
(contrapose "with(r:rr,r<r);")
(apply-macete-with-minor-premises nth%root-of-zero)
simplify)))
(def-theorem nth%root-positive-for-positive
"forall(x:rr,n:zz, 0<x and 1<=n implies 0<nth%root(n,x))"
(theory h-o-real-arithmetic)
(proof
(
direct-and-antecedent-inference-strategy
(instantiate-theorem strict-monotonicity-of-nth%root ("0" "x" "n"))
(simplify-antecedent "with(p:prop,not(p));")
(contrapose "with(x:rr,n:zz,nth%root(n,0)<nth%root(n,x));")
(apply-macete-with-minor-premises nth%root-of-zero))))
(def-theorem iterated-nth%root
"forall(x:rr,n,m:zz, 0<=x and 1<=n and 1<=m implies nth%root(n*m,x)=nth%root(n,nth%root(m,x)))"
(theory h-o-real-arithmetic)
(proof
(
(apply-macete-with-minor-premises iota-free-characterization-of-nth%root)
(apply-macete-with-minor-premises nth%root-non-negative)
(apply-macete-with-minor-premises nth%root-non-negative)
(force-substitution "nth%root(n,nth%root(m,x))^(n*m)"
"(nth%root(n,nth%root(m,x))^(n))^m"
(0))
(apply-macete-with-minor-premises nth%root-power)
(apply-macete-with-minor-premises nth%root-power)
simplify
(apply-macete-with-minor-premises nth%root-non-negative)
simplify
(apply-macete-with-minor-premises product-power-is-iterated-power)
(force-substitution "1" "1*1" (0))
(apply-macete-with-minor-premises monotone-product-lemma)
simplify
simplify
)))