(def-theory-ensemble-multiple metric-spaces 2)
(def-theory-ensemble-overloadings metric-spaces (1))
(def-constant continuous%at%point
"lambda(f:[pp_0,pp_1],x:pp_0,forall(eps:rr,0<eps
implies
forsome(delta:rr,0<delta
and forall(y:pp_0,dist_0(x,y)<=delta implies dist_1(f(x),f(y))<=eps))))"
(theory metric-spaces-2-tuples))
(def-constant continuous
"lambda(f:[pp_0,pp_1],
forall(v:sets[pp_1], open(v) implies open(inv_image(f,v))))"
(theory metric-spaces-2-tuples))
(def-theory-ensemble-overloadings metric-spaces (2))
(def-theorem abstract-intermediate-value
"forall(f:[pp_0,pp_1],o:sets[pp_0],
continuous(f) and total_q(f,[pp_0,pp_1]) and connected(o) implies connected(image(f,o)))"
(theory metric-spaces-2-tuples)
(proof (unfold-defined-constants
(apply-macete-with-minor-premises direct-image-to-inverse-image-conversion-macete)
(prove-by-logic-and-simplification 3))))
(def-theorem abstract-bolzano-weierstrass
"forall(f:[pp_0,pp_1],o:sets[pp_0],
continuous(f) and total_q(f,[pp_0,pp_1]) and compact(o) implies compact(image(f,o)))"
(theory metric-spaces-2-tuples)
(proof (unfold-defined-constants
(apply-macete-with-minor-premises covers-direct-image-to-inverse-image-conversion-macete)
(prove-by-logic-and-simplification 3))))
(def-theorem eps-delta-characterization-of-continuity
"forall(f:[pp_0,pp_1],total_q{f,[pp_0,pp_1]}
implies
continuous(f)
iff
forall(x:pp_0,continuous%at%point(f,x)))"
(theory metric-spaces-2-tuples)
(usages transportable-macete)
(proof
(
unfold-defined-constants
direct-inference
direct-inference
direct-inference
(block (script-comment "node added by `direct-inference' at (0)")
(instantiate-universal-antecedent "with(p:prop,forall(v:sets[pp_1],p));"
(" open%ball(f(x),eps)"))
(block (script-comment "node added by `instantiate-universal-antecedent' at (0 0 0 0 0)")
(contrapose "with(p:prop,not(p));")
(apply-macete-with-minor-premises tr%open-balls-are-open))
(block (script-comment "node added by `instantiate-universal-antecedent' at (0 0 0 0 1)")
(incorporate-antecedent "with(f:sets[pp_0],open(f));")
unfold-defined-constants-repeatedly
simplify-insistently
direct-and-antecedent-inference-strategy
(instantiate-universal-antecedent "with(p:prop,forall(x_$2:pp_0,p implies p));"
("x"))
(block (script-comment "node added by `instantiate-universal-antecedent' at (0 0 0)")
(contrapose "with(p:prop,not(p));")
(apply-macete-with-minor-premises tr%zero-self-distance))
(block (script-comment "node added by `instantiate-universal-antecedent' at (0 0 1 0 0)")
(instantiate-existential ("delta_$1"))
(auto-instantiate-universal-antecedent "with(eps:rr,f:[pp_0,pp_1],delta_$1:rr,x:pp_0,
forall(x_$0:pp_0,
dist_0(x,x_$0)<=delta_$1
implies
dist_1(f(x),f(x_$0))<eps))")
simplify))
(unfold-single-defined-constant (0) open%ball_1))
(block (script-comment "node added by `direct-inference' at (1)")
unfold-defined-constants-repeatedly
simplify-insistently
direct-and-antecedent-inference-strategy
(auto-instantiate-universal-antecedent "with(v:sets[pp_1],p:prop,forall(x:pp_1, x in v implies p))")
(instantiate-universal-antecedent "with(p:prop,forall(x:pp_0,forall(eps:rr,p)));"
("x_$2"))
(auto-instantiate-universal-antecedent "with(p:prop, forall(eps:rr,0<eps implies p))")
(instantiate-existential ("delta_$0"))
(backchain-repeatedly ("with(v:sets[pp_1],delta:rr,x_$2:pp_0,f:[pp_0,pp_1],
forall(x_$0:pp_1,
dist_1(f(x_$2),x_$0)<=delta implies x_$0 in v))"))
(backchain "with(p:prop,forall(y_$0:pp_0,p implies p));"))
)
)
)
(def-constant lipschitz%bound%on
"lambda(phi:[pp_0,pp_1],r:rr,s:sets[pp_0],
0<r and forall(x,y:pp_0,
x in s and y in s
implies
dist_1(phi(x),phi(y)) <= r * dist_0(x,y)))"
(theory metric-spaces-2-tuples))
(def-constant lipschitz%bound
"lambda(phi:[pp_0,pp_1],r:rr,
lipschitz%bound%on(phi,r,sort_to_indic{pp_0}))"
(theory metric-spaces-2-tuples))
(def-theorem lipschitz-bound-is-total
"forall(f:[pp_0,pp_1],r:rr,
lipschitz%bound(f,r) implies total_q{f,[pp_0,pp_1]})"
(theory metric-spaces-2-tuples)
(usages transportable-macete)
(proof
(
unfold-defined-constants
unfold-defined-constants
direct-and-antecedent-inference-strategy
insistent-direct-inference
simplify
)))
(def-constant uniformly%continuous
"lambda(f:[pp_0,pp_1],
forall(eps:rr,
0<eps
implies
forsome(delta:rr, 0<delta and
forall(x,y:pp_0,
#(f(x)) and #(f(y)) and dist_0(x,y)<=delta
implies
dist_1(f(x),f(y))<=eps))))"
(theory metric-spaces-2-tuples))
(def-theorem lipschitz-bound-is-uniformly-continuous
"forall(f:[pp_0,pp_1],r:rr,
lipschitz%bound(f,r) implies uniformly%continuous(f))"
(theory metric-spaces-2-tuples)
(usages transportable-macete)
(proof
(
unfold-defined-constants
(unfold-single-defined-constant (0) lipschitz%bound%on)
direct-and-antecedent-inference-strategy
(instantiate-existential ("eps/r"))
(apply-macete-with-minor-premises fractional-expression-manipulation)
simplify
(apply-macete-with-minor-premises transitivity-of-<=)
(instantiate-existential ("r*dist_0(x_$0,y_$0)"))
(backchain
"with(r:rr,f:[pp_0,pp_1],forall(x_$0,y_$0:pp_0,
x_$0 in sort_to_indic{pp_0} and y_$0 in sort_to_indic{pp_0}
implies
dist_1(f(x_$0),f(y_$0))<=r*dist_0(x_$0,y_$0)));")
simplify
(incorporate-antecedent
"with(r,eps:rr,y_$0,x_$0:pp_0,f:[pp_0,pp_1],
#(f(x_$0)) and #(f(y_$0)) and dist_0(x_$0,y_$0)<=eps/r);")
(apply-macete-with-minor-premises fractional-expression-manipulation)
simplify
simplify
)))
(def-theorem total-uniformly-continuous-is-continuous
"forall(f:[pp_0,pp_1],
uniformly%continuous(f) and total_q{f,[pp_0,pp_1]}
implies
forall(x:pp_0, continuous%at%point(f,x)))"
(theory metric-spaces-2-tuples)
(usages transportable-macete)
(proof
(
unfold-defined-constants
direct-and-antecedent-inference-strategy
(auto-instantiate-universal-antecedent
"with(p:prop, forall(eps:rr, 0<eps implies p))")
(instantiate-existential ("delta"))
(backchain "with(p,q:prop, forall(x,y:pp_0, p implies q))")
simplify
)))
(def-theorem lipschitz-bound-is-continuous
"forall(f:[pp_0,pp_1],r:rr,x:pp_0,
lipschitz%bound(f,r) implies continuous%at%point(f,x))"
(theory metric-spaces-2-tuples)
(usages transportable-macete)
(proof
(
(apply-macete-with-minor-premises total-uniformly-continuous-is-continuous)
(apply-macete-with-minor-premises lipschitz-bound-is-uniformly-continuous)
(apply-macete-with-minor-premises lipschitz-bound-is-total)
direct-and-antecedent-inference-strategy
(instantiate-existential ("r"))
)))