(def-theory-ensemble-instances metric-spaces (target-multiple 2) (multiples 1))
(def-theory-ensemble-overloadings metric-spaces (1))
(def-theorem lim-preservation "forall(f:[pp_0,pp_1],x:pp_0,s:[zz,pp_0],continuous%at%point(f,lim(s)) implies lim(f oo s)=f(lim(s)))" (theory metric-spaces-2-tuples) (usages transportable-macete) reverse (proof ( (force-substitution "continuous%at%point(f,lim(s))" "lim(s)=lim(s) and continuous%at%point(f,lim(s))" (0)) (unfold-single-defined-constant (0) continuous%at%point) direct-and-antecedent-inference-strategy (apply-macete-with-minor-premises tr%characterization-of-limit) direct-and-antecedent-inference-strategy (cut-with-single-formula "#(lim(s))") (incorporate-antecedent "with(s:[zz,pp_0],lim(s)=lim(s));") (apply-macete-with-minor-premises tr%characterization-of-limit) direct-and-antecedent-inference-strategy (auto-instantiate-universal-antecedent "with(p:prop, forall(eps:rr, 0<eps implies forsome(delta:rr, 0<delta and p)))") (instantiate-universal-antecedent "with(p:prop, forall(eps:rr, 0<eps implies p))" ("delta")) (instantiate-existential ("n_$0")) simplify-insistently (instantiate-universal-antecedent "with(p:prop, forall(eps:rr, 0<eps implies forsome(delta:rr, 0<delta and p)))" ("1")) (simplify-antecedent "with(p:prop, not(p))") (instantiate-universal-antecedent "with(f:[pp_0,pp_1],delta:rr,s:[zz,pp_0], forall(y:pp_0, dist_0(lim(s),y)<=delta implies dist_1(f(lim(s)),f(y))<=1));" ("lim(s)")) (contrapose "with(p:prop, not(p))") (apply-macete-with-minor-premises tr%zero-self-distance) simplify simplify )))
(def-theorem lim-preservation-global "forall(f:[pp_0,pp_1],total_q{f,[pp_0,pp_1]} and continuous(f) implies forall(s:[zz,pp_0],#(lim(s)) implies lim(f oo s)=f(lim(s))))" (theory metric-spaces-2-tuples) (proof ( (apply-macete-with-minor-premises eps-delta-characterization-of-continuity) direct-and-antecedent-inference-strategy (apply-macete-with-minor-premises lim-preservation) ) ))
(def-script use-minimum-values 3 ( (cut-with-single-formula (% "forsome(~a:rr, 0<~a and ~a <=~a and ~a<=~a)" $1 $1 $1 $2 $1 $3)) (label-node with-cut) (move-to-sibling 1) (instantiate-existential ((% "min(~a,~a)" $2 $3))) (unfold-single-defined-constant (0) min) (case-split ((% "~a<=~a" $2 $3))) simplify simplify (apply-macete-with-minor-premises minimum-1st-arg) (apply-macete-with-minor-premises minimum-2nd-arg) (jump-to-node with-cut)))
(def-theorem splicing-continuous-functions-lemma-1 "forall(f,g:[pp_0,pp_1], s:sets[pp_0],x:pp_0, continuous%at%point(f,x) and continuous%at%point(g,x) and f(x)=g(x) implies continuous%at%point(lambda(z:pp_0,if(z in s, f(z),g(z))),x))" (theory metric-spaces-2-tuples) (usages transportable-macete) (proof ( unfold-defined-constants direct-and-antecedent-inference-strategy (instantiate-universal-antecedent "with(p:prop,forall(eps:rr,p));" ("eps_$0")) (instantiate-universal-antecedent "with(p:prop,forall(eps:rr,p));" ("eps_$0")) (use-minimum-values "delta_1" "delta_$0" "delta") (instantiate-existential ("delta_1")) (case-split ("x in s" "y_$0 in s")) simplify simplify (backchain "with(p:pp_1,p=p);") simplify simplify (backchain-backwards "with(p:pp_1,p=p);") simplify simplify )))
(def-theorem splicing-continuous-functions-lemma-2 "forall(f,g:[pp_0,pp_1],x:pp_0, continuous%at%point(f,x) and forsome(r:rr, 0<r and forall(z:pp_0,z in open%ball(x,r) implies f(z)=g(z))) implies continuous%at%point(g,x))" (theory metric-spaces-2-tuples) (usages transportable-macete) (proof ( (unfold-single-defined-constant-globally continuous%at%point) (apply-macete-with-minor-premises tr%open-ball-membership-condition) direct-and-antecedent-inference-strategy (instantiate-universal-antecedent "with(p:prop,forall(eps:rr,p));" ("eps")) (use-minimum-values "delta_1" "r/2" "delta") (instantiate-existential ("delta_1")) (backchain-backwards "with(p:pp_1,r:rr,forall(z:pp_0,r<r implies p=p));") (backchain-backwards "with(p:pp_1,r:rr,forall(z:pp_0,r<r implies p=p));") direct-and-antecedent-inference-strategy simplify (apply-macete-with-minor-premises tr%zero-self-distance) simplify)))