```(def-theorem ()
"forall(x,y:pp,#(dist(x,y)))"
(theory metric-spaces)
(usages d-r-convergence transportable-macete)
(proof (insistent-direct-inference-strategy
(instantiate-theorem positivity-of-distance ("x" "y")))))
```

```(def-theorem ()
"forall(x,y:pp,dist(x,y)<=dist(y,x))"
(theory metric-spaces)
(proof ((instantiate-theorem symmetry-of-distance ("x" "y"))
simplify)))
```

```(def-theorem ()
"forall(x:pp,dist(x,x)<=0)"
(theory metric-spaces)
(proof ((instantiate-theorem point-separation-for-distance ("x" "x"))
simplify)))
```

```
(def-theorem triangle-inequality-alternate-form
"forall(x,y,z:pp,r:rr, dist(x,z)+dist(z,y)<=r implies dist(x,y)<=r)"
(theory metric-spaces)
(usages transportable-macete)
(proof (direct-inference-strategy
(cut-with-single-formula "dist(x,y)<=dist(x,z)+dist(z,y)")
simplify
(apply-macete-with-minor-premises triangle-inequality-for-distance)
)))
```

```
(def-theorem zero-self-distance
"forall(x,y:pp,dist(x,x)=0)"
(theory metric-spaces)
(usages transportable-macete)
(proof
(
direct-inference
(instantiate-theorem point-separation-for-distance ("x" "x"))
)
))
```

```
(def-theorem metric-separation
"forall(x,y:pp,x=y
iff
forall(r:rr,0<r implies forsome(z:pp,
dist(z,x)<=r and dist(z,y)<=r)))"
(theory metric-spaces)
(usages transportable-macete)
(proof
(
direct-and-antecedent-inference-strategy
(instantiate-existential ("x"))
simplify
simplify
(apply-macete-with-minor-premises point-separation-for-distance)
(instantiate-universal-antecedent
"with(p:prop, forall(r:rr, 0<r implies p))"
("dist(x,y)/3"))
simplify
(cut-with-single-formula "dist(x,y)<=dist(z_\$0,x)+dist(z_\$0,y)")
simplify
(cut-with-single-formula "dist(x,y)<=dist(x,z_\$0)+dist(z_\$0,y)")
simplify
(apply-macete-with-minor-premises triangle-inequality-for-distance)
)))
```

```
(def-theorem ball-definedness
"forall(a:pp,r:rr,#(ball(a,r)))"
(theory metric-spaces)
(usages transportable-macete)
(proof (unfold-defined-constants insistent-direct-inference-strategy simplify)))
```

```
(def-theorem open-ball-definedness
"forall(a:pp,r:rr,#(open%ball(a,r)))"
(theory metric-spaces)
(usages transportable-macete)
(proof (unfold-defined-constants insistent-direct-inference-strategy simplify)))
```

```
(def-theorem ball-membership-condition
"forall(a,x:pp,r:rr,x in ball(a,r) iff dist(a,x)<=r)"
(theory metric-spaces)
(usages transportable-macete)
(proof (unfold-defined-constants direct-inference simplify-insistently)))
```

```
(def-theorem open-ball-membership-condition
"forall(a,x:pp,r:rr,x in open%ball(a,r) iff dist(a,x)<r)"
(theory metric-spaces)
(usages transportable-macete)
(proof (unfold-defined-constants direct-inference simplify-insistently)))
```

```
(def-theorem open-balls-are-open
"forall(a:pp,r:rr,open(open%ball(a,r)))"
(theory metric-spaces)
(usages transportable-macete)
(proof
(
unfold-defined-constants-repeatedly
simplify-insistently
direct-and-antecedent-inference-strategy
(instantiate-existential ("(r-dist(a,x_\$2))/2"))
simplify
(cut-with-single-formula "dist(a,x_\$0)<=dist(a,x_\$2)+dist(x_\$2,x_\$0)")
simplify
(apply-macete-with-minor-premises triangle-inequality-for-distance)
)))
```

```
(def-constant lim
"lambda(s:[zz,pp],iota(x:pp, forall(eps:rr,0<eps implies forsome(n:zz,
forall(p:zz, n<=p implies dist(x,s(p))<=eps)))))"
(theory metric-spaces))
```

```
(def-theorem characterization-of-limit
"forall(s:[zz,pp],x:pp,lim(s)=x iff forall(eps:rr,0<eps implies forsome(n:zz,
forall(p:zz, n<=p implies dist(x,s(p))<=eps))))"
(theory metric-spaces)
(usages transportable-macete)
(proof
(
(unfold-single-defined-constant (0) lim)
direct-and-antecedent-inference-strategy
(contrapose "with(a:pp,p:prop, iota(x:pp, p)=a)")
(eliminate-defined-iota-expression 0 w)
(contrapose "with(eps:rr,s:[zz,pp],x:pp,
forall(n:zz,
forsome(p:zz,n<=p and not(dist(x,s(p))<=eps))));")
(backchain-backwards "with(x,w:pp,w=x);")
(backchain "with(p:prop,forall(eps:rr,0<eps implies p))")
(apply-macete-with-minor-premises eliminate-iota-macete)
direct-and-antecedent-inference-strategy
(apply-macete-with-minor-premises metric-separation)
direct-and-antecedent-inference-strategy
(instantiate-universal-antecedent "with(s:[zz,pp],b_\$0:pp,
forall(eps:rr,
0<eps
implies
forsome(n:zz,
forall(p:zz,n<=p implies dist(b_\$0,s(p))<=eps))));" ("r"))
(instantiate-universal-antecedent "with(s:[zz,pp],x:pp,
forall(eps:rr,
0<eps
implies
forsome(n:zz,
forall(p:zz,n<=p implies dist(x,s(p))<=eps))));" ("r"))
(instantiate-existential ("s(max(n,n_\$0))"))
(apply-macete-with-minor-premises symmetry-of-distance)
(backchain "with(r:rr,s:[zz,pp],b_\$0:pp,n:zz,
forall(p:zz,n<=p implies dist(b_\$0,s(p))<=r));")
(apply-macete-with-minor-premises maximum-1st-arg)
(apply-macete-with-minor-premises symmetry-of-distance)
(backchain "with(r:rr,s:[zz,pp],x:pp,n_\$0:zz,
forall(p:zz,n_\$0<=p implies dist(x,s(p))<=r));")
(apply-macete-with-minor-premises maximum-2nd-arg)
(instantiate-universal-antecedent "with(r:rr,s:[zz,pp],x:pp,n_\$0:zz,
forall(p:zz,n_\$0<=p implies dist(x,s(p))<=r));" ("max(n,n_\$0)"))
)))
```

```
(def-theorem existence-of-limit
"forall(s:[zz,pp], #(lim(s)) iff forsome(x:pp,forall(eps:rr,0<eps implies forsome(n:zz,forall(p:zz, n<=p implies dist(x,s(p))<=eps)))))"
(theory metric-spaces)
(usages transportable-macete)
(proof
(
direct-and-antecedent-inference-strategy
(cut-with-single-formula "lim(s)=lim(s)")
(incorporate-antecedent "with(s:[zz,pp],lim(s)=lim(s));")
(apply-macete-with-minor-premises characterization-of-limit)
direct-inference
(instantiate-existential ("lim(s)"))
(cut-with-single-formula "lim(s)=x")
(apply-macete-with-minor-premises characterization-of-limit)
)
))

```

```
(def-constant cauchy
"lambda(s:[zz,pp],forall(eps:rr,0<eps implies
forsome(p:zz,forall(q:zz,p<q implies dist(s(p),s(q))<=eps))))"
(theory metric-spaces))
```

```
(def-constant complete
"forall(s:[zz,pp],cauchy(s) implies #(lim(s)))"
(theory metric-spaces))
```

```
(def-theorem cauchy-double-index-characterization
"forall(s:[zz,pp], cauchy(s) iff forall(eps:rr,0<eps implies
forsome(n:zz,forall(p,q:zz,n<=p and n<=q implies dist(s(p),s(q))<=eps))))"
(proof

(

unfold-defined-constants
direct-and-antecedent-inference-strategy
(instantiate-universal-antecedent "with(p:prop,  forall(eps:rr,  0<eps implies p))" ("eps/2"))
(contrapose "with(p:prop,not(p))")
simplify
(instantiate-existential ("p_\$0+1"))
(apply-macete-with-minor-premises triangle-inequality-alternate-form)
(instantiate-existential ("s(p_\$0)"))
(cut-with-single-formula "dist(s(p_\$0),s(p))<=eps/2 and dist(s(p_\$0),s(q))<=eps/2")
simplify
direct-and-antecedent-inference-strategy
(backchain "with(r:prop, forall(q_\$0:zz,p_\$0<q_\$0 implies r))")
simplify
(backchain "with(r:prop, forall(q_\$0:zz,p_\$0<q_\$0 implies r))")
simplify
(instantiate-universal-antecedent "with(r:prop, forall(q_\$0:zz,p_\$0<q_\$0 implies r))" ("q"))
(instantiate-universal-antecedent "with(r:prop, forall(q_\$0:zz,p_\$0<q_\$0 implies r))" ("q"))
(instantiate-universal-antecedent "with(r:prop, forall(q_\$0:zz,p_\$0<q_\$0 implies r))" ("q"))
(auto-instantiate-universal-antecedent "with(p:prop, forall(eps:rr, 0<eps implies p))")
(instantiate-existential ("n"))
(backchain "with(eps:rr,s:[zz,pp],n:zz,forall(p,q:zz,n<=p and n<=q implies dist(s(p),s(q))<=eps))")
simplify
)
)
(usages transportable-macete)
(theory metric-spaces))
```

```
(def-theorem convergent-implies-cauchy
"forall(s:[zz,pp], #(lim(s)) implies cauchy(s))"
(theory metric-spaces)
(usages transportable-macete)
(proof
(
(apply-macete-with-minor-premises existence-of-limit)
direct-and-antecedent-inference-strategy
(unfold-single-defined-constant (0) cauchy)
direct-and-antecedent-inference-strategy
(instantiate-universal-antecedent "with(p:prop,forall(eps:rr,0<eps implies p))" ("eps/2"))
(simplify-antecedent "with(p:prop, not(p))")
(instantiate-existential ("n_\$0"))
(cut-with-single-formula "dist(s(n_\$0),s(q))<=dist(s(n_\$0),x)+dist(x,s(q)) and dist(s(n_\$0),x)<=eps/2 and dist(x,s(q))<=eps/2")
(antecedent-inference "with(p,q,r:prop, p and q and r)")
simplify
direct-and-antecedent-inference-strategy
(apply-macete-with-minor-premises triangle-inequality-for-distance)
(instantiate-universal-antecedent
"with(q:prop,n:zz,forall(p:zz,n<=p implies q))" ("q"))
(simplify-antecedent "with(q,n_\$0:zz,not(n_\$0<=q));")
(instantiate-universal-antecedent
"with(q:prop,n:zz,forall(p:zz,n<=p implies q))" ("n_\$0"))
(simplify-antecedent "with(n_\$0:zz,not(n_\$0<=n_\$0));")
(apply-macete-with-minor-premises symmetry-of-distance)
(backchain "with(q:prop,n:zz,forall(p:zz,n<=p implies q))")
simplify
(backchain "with(q:prop,n:zz,forall(p:zz,n<=p implies q))")
simplify
))
(usages transportable-macete))
```

```
(def-theorem closed-balls-are-closed
"forall(x:pp,r:rr,s:[zz,pp], ran{s} subseteq ball(x,r) and #(lim(s)) implies lim(s) in ball(x,r))"
(theory metric-spaces)
(usages transportable-macete)

(proof
((force-substitution "#(lim(s))" "#(lim(s)) and lim(s)=lim(s)" (0))
(apply-macete-with-minor-premises characterization-of-limit)
simplify-insistently
(unfold-single-defined-constant (0 1) ball)
simplify-insistently
direct-and-antecedent-inference-strategy
(cut-with-single-formula "dist(x_\$1,lim(s))<=r or r<dist(x_\$1,lim(s))")
(antecedent-inference "with(p,q:prop, p or q)")
(instantiate-universal-antecedent
"with(s:[zz,pp],
forall(eps:rr,
0<eps
implies
forsome(n:zz,
forall(p:zz,n<=p implies dist(lim(s),s(p))<=eps))));" ("(dist(x_\$1,lim(s))-r)/3"))
(contrapose "with(p:prop, not(p))")
simplify
(instantiate-universal-antecedent "with(p:prop,n:zz,forall(q:zz,n<=q implies p))" ("n_\$0"))
(contrapose "with(p:prop, not(p))")
simplify
(instantiate-universal-antecedent "with(p:prop, forall(x:pp,p))" ("s(n_\$0)"))
(contrapose "with(p:prop, forall(x:zz, not(p)))")
(instantiate-existential ("n_\$0"))
(apply-macete-with-minor-premises transitivity-of-<=)
(apply-macete-with-minor-premises symmetry-of-distance)
(instantiate-existential ("dist(lim(s),s(n_\$0))+dist(s(n_\$0),x_\$1)"))
(apply-macete-with-minor-premises triangle-inequality-for-distance)
(incorporate-antecedent "with(a,b:pp,dist(a,b)<=(dist(b,a)-r)/3);")
(force-substitution "dist(x_\$1,lim(s))" "dist(lim(s),x_\$1)" (0))
simplify
simplify
simplify)))
```

```
"forall(a:pp,r,r_1:rr,r<r_1 implies ball(a,r) subseteq open%ball(a,r_1))"
(theory  metric-spaces)
(usages transportable-macete)
(proof (unfold-defined-constants simplify-insistently)))
```

```
(def-theorem limit-of-subsequence
"forall(s:[zz,pp],phi:[zz,zz],#(lim(s)) and convergent%to%infinity(phi) implies lim(s)=lim(s oo phi))"
(theory metric-spaces)
(usages transportable-macete)
(proof
(
(unfold-single-defined-constant (0) convergent%to%infinity)
(force-substitution "lim(s)=lim(s oo phi)" "lim(s oo phi)=lim(s)" (0))
direct-inference-strategy
(antecedent-inference "with(p,q:prop, p and q)")
(cut-with-single-formula "lim(s)=lim(s)")
(incorporate-antecedent "with(s:[zz,pp],lim(s)=lim(s));")
(apply-macete-with-minor-premises characterization-of-limit)
direct-inference-strategy
(auto-instantiate-universal-antecedent "with(p:prop, forall(eps:rr,
0<eps
implies p))")
(instantiate-universal-antecedent "with(p:prop,forall(m:rr,forsome(x:zz,p)))" ("n"))
(instantiate-existential ("x"))
beta-reduce-insistently
(backchain "with(eps:rr,s:[zz,pp],n:zz,
forall(p:zz,n<=p implies dist(lim(s),s(p))<=eps));")
simplify
simplify
simplify
)))
```

```
(def-theorem limit-of-subsequence-corollary
"forall(s:[zz,pp],n:zz, #(lim(s)) implies lim(s)=lim(s oo lambda(i:zz,(if (n<=i,i,?zz)))))"
(theory metric-spaces)
(usages transportable-macete)
(proof

((apply-macete-with-minor-premises limit-of-subsequence)
(unfold-single-defined-constant (0) convergent%to%infinity)
direct-and-antecedent-inference-strategy
(cut-with-single-formula "forsome(m_1:zz,max(n,m)<m_1)")
(instantiate-existential ("m_1"))
(cut-with-single-formula "n<=max(n,m) and m<=max(n,m)")
simplify
(apply-macete-with-minor-premises maximum-1st-arg)
(apply-macete-with-minor-premises maximum-2nd-arg)
(apply-macete-with-minor-premises archimedean))
))
```

```
(def-theorem limit-depends-on-tail
"forall(s,s_1:[zz,pp],n:zz,
forsome(m:zz,forall(p:zz,m<=p implies s_1(p)=s(p)))
and
#(lim(s))
implies
lim(s_1)=lim(s))"
(theory metric-spaces)
(usages transportable-macete)
(proof
(
(apply-macete-with-minor-premises characterization-of-limit)
direct-and-antecedent-inference-strategy
(cut-with-single-formula "lim(s)=lim(s)")
(incorporate-antecedent "with(s:[zz,pp],lim(s)=lim(s))")
(apply-macete-with-minor-premises characterization-of-limit)
direct-and-antecedent-inference-strategy
(auto-instantiate-universal-antecedent "with(s:[zz,pp],forall(eps:rr,
0<eps
implies
forsome(n:zz,
forall(p:zz,n<=p implies dist(lim(s),s(p))<=eps))))")
(instantiate-existential ("max(n,m)"))
(backchain "with(s,s_1:[zz,pp],m:zz,forall(p:zz,m<=p implies s_1(p)=s(p)))")
direct-inference
(cut-with-single-formula "m<=max(n,m)")
simplify
(apply-macete-with-minor-premises maximum-2nd-arg)
(backchain "with(eps:rr,s:[zz,pp],n:zz,
forall(p:zz,n<=p implies dist(lim(s),s(p))<=eps))")
(cut-with-single-formula "n<=max(n,m)")
simplify
(apply-macete-with-minor-premises maximum-1st-arg)
)))

```

```
(def-theorem limit-translation-invariance
"forall(s:[zz,pp],a,b:zz,#(lim(s)) and 0<a implies lim(s)=lim(lambda(j:zz,s(a*j+b))))"
(theory metric-spaces)
(proof

(
(force-substitution "lambda(j:zz,s(a*j+b))" "s oo lambda(j:zz,a*j+b)" (0))
(apply-macete-with-minor-premises limit-of-subsequence)
simplify
(force-substitution "b+j*a" "a*j+b" (0))
(apply-macete-with-minor-premises convergent%to%infinity-linear-form)
sort-definedness
simplify
simplify-insistently
)))
```

```
(def-constant closure
"lambda(a:sets[pp],indic{y:pp,forall(r:rr,0<r implies nonempty_indic_q{open%ball(y,r) inters a})})"
(theory metric-spaces))
```

```
(def-theorem characterization-of-closure-lemma-1
"forall(x:pp,a:sets[pp], forsome(s:[zz,pp],ran{s} subseteq a and lim(s)=x) implies x in closure(a))"
lemma
(proof
((force-substitution "ran{s} subseteq a " "forall(x:zz, #(s(x)) implies s(x) in a)" (0))
(apply-macete-with-minor-premises characterization-of-limit)
direct-and-antecedent-inference-strategy
(unfold-single-defined-constant (0) closure) simplify-insistently
(apply-macete-with-minor-premises open-ball-membership-condition)
direct-and-antecedent-inference-strategy
(instantiate-universal-antecedent "with(p:prop,  forall(eps:rr, 0<eps implies p))" ("r_\$0/2"))
(contrapose "with(p:prop, not(p))")
simplify
(instantiate-existential ("s(n)"))
(instantiate-universal-antecedent "with(r_\$0:rr,s:[zz,pp],x_\$0:pp,n:zz,
forall(p:zz,n<=p implies dist(x_\$0,s(p))<=r_\$0/2));" ("n"))
(contrapose "with(p:prop, not(p))")
simplify
simplify
(backchain "with(a:sets[pp],s:[zz,pp],forall(x:zz,#(s(x)) implies s(x) in a));")
simplify
direct-and-antecedent-inference-strategy
(backchain "with(a,b:sets[pp],s:[zz,pp],b subseteq a);")
simplify-insistently
(instantiate-existential ("x"))))
(theory metric-spaces))
```

```
(def-theorem characterization-of-closure-lemma-2
"forall(x:pp,a:sets[pp], x in closure(a) implies forsome(s:[zz,pp], forall(n:zz,1<=n implies s(n) in a and dist(s(n),x)<=1/n)))"
lemma
(theory metric-spaces)
(proof
(
(unfold-single-defined-constant (0) closure)
simplify-insistently
(apply-macete-with-minor-premises open-ball-membership-condition)
direct-and-antecedent-inference-strategy
choice-principle
direct-and-antecedent-inference-strategy
(instantiate-universal-antecedent "with(p:prop,p);" ("max(1,n)^[-1]"))
(block
(script-comment "`instantiate-universal-antecedent' at (0 0 0)")
(contrapose "with(p:prop,p);")
(apply-macete-with-minor-premises fractional-expression-manipulation)
simplify)
(block
(script-comment "`instantiate-universal-antecedent' at (0 0 1 0 0)")
(cut-with-single-formula
"forsome(z:pp, z in a and dist(x,z)<max(1,n)^[-1])")
(move-to-sibling 1)
auto-instantiate-existential
(block
(script-comment "`cut-with-single-formula' at (0)")
(antecedent-inference "with(p:prop,forsome(z:pp,p));")
(instantiate-existential ("z"))
(force-substitution "n" "max(1,n)" (0))
simplify
(block
(script-comment "`force-substitution' at (1)")
(unfold-single-defined-constant (0) max)
simplify)))
)))
```

```
(def-theorem characterization-of-closure
"forall(x:pp,a:sets[pp], x in closure(a) iff forsome(s:[zz,pp],ran{s} subseteq a and lim(s)=x))"
(theory metric-spaces)
(usages transportable-macete)
(proof
(
direct-and-antecedent-inference-strategy
(block
(script-comment "node added by `direct-and-antecedent-inference-strategy' at (0 0)")
(cut-with-single-formula "forsome(s:[zz,pp], forall(n:zz,1<=n implies s(n) in a and dist(s(n),x_\$1)<=1/n))")
(block
(script-comment "node added by `cut-with-single-formula' at (0)")
(instantiate-existential ("lambda(n:zz, if(1<=n,s(n),?pp))"))
(block
(script-comment "node added by `instantiate-existential' at (0 0 0)")
simplify-insistently
direct-and-antecedent-inference-strategy
(backchain "with(p,x_\$3:pp,x_\$3=p);")
(backchain "with(p:prop,forall(n:zz,p));"))
(block
(script-comment "node added by `instantiate-existential' at (0 0 1)")
(apply-macete-with-minor-premises characterization-of-limit)
beta-reduce-repeatedly
direct-and-antecedent-inference-strategy
(cut-with-single-formula "forsome(n:zz,1<=n and 1/n<=eps)")
(block
(script-comment "node added by `cut-with-single-formula' at (0)")
(antecedent-inference "with(p:prop,forsome(n:zz,p));")
(instantiate-existential ("n"))
simplify
(instantiate-universal-antecedent "with(p:prop,forall(n:zz,p));"
("p"))
(block
(script-comment "node added by `instantiate-universal-antecedent' at (0 0 0)")
(contrapose "with(p:prop,not(p));")
simplify)
(block
(script-comment "node added by `instantiate-universal-antecedent' at (0 0 1 0)")
(cut-with-single-formula "1/p<=1/n")
simplify
(block
(script-comment "node added by `cut-with-single-formula' at (1)")
(apply-macete-with-minor-premises fractional-expression-manipulation)
simplify)))
(block
(script-comment "node added by `cut-with-single-formula' at (1)")
(force-substitution "1/n<=eps" "eps^[-1]<=n" (0))
(block
(script-comment "node added by `force-substitution' at (0)")
(cut-with-single-formula "forsome(n:zz, eps^[-1]+1<=n)")
(block
(script-comment "node added by `cut-with-single-formula' at (0)")
(instantiate-existential ("n"))
(block
(script-comment "node added by `instantiate-existential' at (0 0 0)")
(cut-with-single-formula "0<eps^[-1]")
simplify
(block
(script-comment "node added by `cut-with-single-formula' at (1)")
(apply-macete-with-minor-premises fractional-expression-manipulation)
simplify))
simplify)
(block
(script-comment "node added by `cut-with-single-formula' at (1)")
(cut-with-single-formula "forsome(n:zz,eps^[-1]+1<n)")
(block
(script-comment "node added by `cut-with-single-formula' at (0)")
(instantiate-existential ("n"))
simplify)
(apply-macete-with-minor-premises archimedean)))
(block
(script-comment "node added by `force-substitution' at (1)")
(apply-macete-with-minor-premises fractional-expression-manipulation)
simplify))))
(apply-macete-with-minor-premises characterization-of-closure-lemma-2))
(block
(script-comment "node added by `direct-and-antecedent-inference-strategy' at (0 1 0
0)")
(apply-macete-with-minor-premises characterization-of-closure-lemma-1)
(instantiate-existential ("s")))
)
))
```

```
(def-theorem closure-contains-set
"forall(s:sets[pp], s subseteq closure(s))"
(theory metric-spaces)
(proof
(

(unfold-single-defined-constant (0) closure)
insistent-direct-inference-strategy
(apply-macete-with-minor-premises indicator-facts-macete)
beta-reduce-repeatedly
direct-and-antecedent-inference-strategy
simplify-insistently
(apply-macete-with-minor-premises open-ball-membership-condition)
(instantiate-existential ("x"))
simplify
))
(usages transportable-macete))
```

```
(def-theorem  generalized-triangle-inequality
"forall(s:[zz,pp],p,q:zz, p<=q and forall(j:zz,p<=j and j<=q+1 implies #(s(j))) implies dist(s(p),s(q+1))<=sum(p,q,lambda(j:zz,dist(s(j),s(j+1)))))"
(theory metric-spaces)
(proof
(
(induction integer-inductor ())
(prove-by-logic-and-simplification 3)
direct-and-antecedent-inference-strategy
(apply-macete-with-minor-premises triangle-inequality-alternate-form)
(instantiate-existential ("s(1+t)"))
simplify-with-minor-premises
(backchain "with(p:prop,a,b:rr, p implies a<=b)")
direct-and-antecedent-inference-strategy
(backchain "with(q:prop,a:pp, forall(j:zz, q implies #(a)))")
simplify
(backchain "with(q:prop,a:pp, forall(j:zz, q implies #(a)))")
simplify
direct-and-antecedent-inference-strategy
(backchain "with(q:prop,a:pp, forall(j:zz, q implies #(a)))")
simplify
)
)   )
```

```
(def-theorem dist-continuity-lemma
"forall(x,y,z:pp, abs(dist(x,z)-dist(y,z))<=dist(x,y))"
(theory metric-spaces)
(usages transportable-macete)
(proof

(
direct-and-antecedent-inference-strategy
(unfold-single-defined-constant (0) abs)
(cut-with-single-formula "dist(x,z)<=dist(x,y)+dist(y,z)
and dist(y,z)<=dist(y,x)+dist(x,z)")
(prove-by-logic-and-simplification 3)
(apply-macete-with-minor-premises triangle-inequality-for-distance)
)))
```