```
(def-theorem complete-induction-schema
Remark: This entry is multiply defined. See:  [1] [2]
"forall(p:[zz,prop],n:zz,
forall(k:zz,n<=k implies p(k))
iff
(truth
and
forall(m:zz,
n<=m and forall(k:zz,n<=k and k<m implies p(k))
implies
p(m))))"
(theory h-o-real-arithmetic)
(proof
(
direct-and-antecedent-inference-strategy
(backchain "with(p:[zz,prop],n:zz,forall(k:zz,n<=k implies p(k)));")
(apply-macete-with-minor-premises complete-induction)
(instantiate-existential ("n"))
)))
```

```(def-inductor complete-inductor
complete-induction-schema
(theory h-o-real-arithmetic))
```

```
(def-theorem omega-n-as-domain-lemma
"forall(f:[nn->nn],n:nn, dom{f}=omega(n) iff forall(x:nn, #(f(x)) iff x<n))"
(theory h-o-real-arithmetic)
lemma
(proof
(
(unfold-single-defined-constant (0) omega)
(apply-macete-with-minor-premises tr%subseteq-antisymmetry)
direct-and-antecedent-inference-strategy
(block
(script-comment "node added by `direct-and-antecedent-inference-strategy' at (0 0 0
0 0)")
(instantiate-universal-antecedent "with(f:[nn,nn],dom{f})
subseteq with(f:[nn,prop],pred_to_indic(f));"
("x"))
(simplify-antecedent "with(p:prop,not(p));")
(simplify-antecedent "with(x:nn,f:sets[nn],x in f);"))
(block
(script-comment "node added by `direct-and-antecedent-inference-strategy' at (0 0 0
1 0)")
(instantiate-universal-antecedent "with(f:[nn,prop],pred_to_indic(f))
subseteq with(f:[nn,nn],dom{f});"
("x"))
(simplify-antecedent "with(p:prop,not(p));")
(simplify-antecedent "with(x:nn,f:sets[nn],x in f);"))
(block
(script-comment "node added by `direct-and-antecedent-inference-strategy' at (0 1 0)")
insistent-direct-inference
direct-and-antecedent-inference-strategy
(instantiate-universal-antecedent "with(p:prop,forall(x:nn,p));"
("x_\$2"))
simplify
(simplify-antecedent "with(x_\$2:nn,f:sets[nn],x_\$2 in f);"))
(block
(script-comment "node added by `direct-and-antecedent-inference-strategy' at (0 1 1)")
insistent-direct-inference
direct-and-antecedent-inference-strategy
(instantiate-universal-antecedent "with(p:prop,forall(x:nn,p iff p));"
("x_\$1"))
simplify
(block
(script-comment "node added by `instantiate-universal-antecedent' at (0 0 1)")
simplify))
)))
```

```
(def-theorem not-in-range-condition
"forall(f,g:[nn,nn], m:nn, dom{f}=dom{g} and
forall(k,l:nn, #(f(k)) and #(f(l)) and #(g(k)) and #(g(l)) and k<l
implies
f(k) < f(l) and g(k)<g(l))
and
forall(x:nn, x<m implies f(x)==g(x))
and
f(m)<g(m)
implies not(f(m) in ran{g}))"
(theory h-o-real-arithmetic)
(proof
(
direct-and-antecedent-inference-strategy
(apply-macete-with-minor-premises indicator-facts-macete)
beta-reduce-repeatedly
(contrapose "with(f:sets[nn],f=f);")
(antecedent-inference "with(p:prop,forsome(x:nn,p));")
(contrapose "with(n:nn,n=n);")
(cut-with-single-formula "x<m or x=m or m<x")
(move-to-sibling 1)
simplify
(block
(script-comment "node added by `cut-with-single-formula' at (0)")
(antecedent-inference "with(p:prop,p or p or p);")
(block
(script-comment "node added by `antecedent-inference' at (0)")
(case-split ("#(f(x)) and #(f(m))"))
(block
(script-comment "node added by `case-split' at (1)")
(cut-with-single-formula "f(x)=g(x) and f(x)<f(m)")
(move-to-sibling 1)
(block
(script-comment "node added by `cut-with-single-formula' at (1)")
(backchain-backwards "with(p:prop,forall(x:nn,p));")
direct-and-antecedent-inference-strategy
(backchain "with(p:prop,forall(k,l:nn,p));")
direct-and-antecedent-inference-strategy
(backchain-backwards "with(p:prop,forall(x:nn,p));")
direct-and-antecedent-inference-strategy)
simplify)
(block
(script-comment "node added by `case-split' at (2)")
(contrapose "with(p:prop,not(p));")
direct-inference
simplify))
simplify
(block
(script-comment "node added by `antecedent-inference' at (2)")
(case-split ("#(g(x))"))
(block
(script-comment "node added by `case-split' at (1)")
(cut-with-single-formula "g(m)<g(x)")
simplify
(block
(script-comment "node added by `cut-with-single-formula' at (1)")
simplify
simplify
(backchain "with(p:prop,forall(k,l:nn,p));")
direct-and-antecedent-inference-strategy
(apply-macete-with-minor-premises tr%rev%domain-membership-iff-defined)
(backchain "with(f:sets[nn],f=f);")
(apply-macete-with-minor-premises tr%domain-membership-iff-defined)))
simplify))
)))
```

```
(def-theorem characterization-of-omega-embedding-lemma
"forall(f,g:[nn -> nn], n:nn, dom{f}= dom{g}
and ran{f}=ran{g} and
forall(k,l:nn, k<l and l in dom{g} implies f(k) < f(l) and g(k)<g(l))
implies
g=f)"
(theory h-o-real-arithmetic)
(proof
(
direct-and-antecedent-inference-strategy
(cut-with-single-formula "forall(k:zz, 0<=k implies g(k)==f(k))")
(block
(script-comment "`cut-with-single-formula' at (0)")
extensionality
direct-inference
simplify)
(block
(script-comment "`cut-with-single-formula' at (1)")
(induction complete-inductor ())
(case-split ("m in dom{g}"))
(block
(script-comment "`case-split' at (1)")
(cut-with-single-formula "#(f(m)) and #(g(m))")
(move-to-sibling 1)
(block
(script-comment "`cut-with-single-formula' at (1)")
direct-and-antecedent-inference-strategy
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (0)")
(incorporate-antecedent "with(m:zz,f:sets[nn],m in f);")
(backchain-backwards "with(g,f:[nn,nn],dom{f}=dom{g});")
simplify)
(simplify-antecedent "with(m:zz,f:sets[nn],m in f);"))
(block
(script-comment "`cut-with-single-formula' at (0)")
(cut-with-single-formula "g(m)<f(m) or g(m)=f(m) or f(m)<g(m)")
(move-to-sibling 1)
simplify
(block
(script-comment "`cut-with-single-formula' at (0)")
(antecedent-inference "with(p:prop,p or p or p);")
(block
(script-comment "`antecedent-inference' at (0)")
(cut-with-single-formula "not(g(m) in ran{f})")
(move-to-sibling 1)
(block
(script-comment "`cut-with-single-formula' at (1)")
(apply-macete-with-minor-premises not-in-range-condition)
direct-and-antecedent-inference-strategy
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (1 0 0
0 0)")
(backchain "with(p:prop,forall(k,l:nn,p));")
simplify)
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (1 0 0
1 0)")
(backchain "with(p:prop,forall(k,l:nn,p));")
simplify)
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (2 0 0)")
(backchain "with(p:prop,forall(k:zz,p));")
simplify))
(block
(script-comment "`cut-with-single-formula' at (0)")
(contrapose "with(p:prop,not(p));")
(backchain "with(g,f:[nn,nn],ran{f}=ran{g});")
(apply-macete-with-minor-premises indicator-facts-macete)
beta-reduce-repeatedly
(instantiate-existential ("m"))))
(block
(script-comment "`antecedent-inference' at (2)")
(cut-with-single-formula "not(f(m) in ran{g})")
(move-to-sibling 1)
(block
(script-comment "`cut-with-single-formula' at (1)")
(apply-macete-with-minor-premises not-in-range-condition)
direct-and-antecedent-inference-strategy
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (1 0 0
0 0)")
(backchain "with(p:prop,forall(k,l:nn,p));")
simplify)
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (1 0 0
1 0)")
(backchain "with(p:prop,forall(k,l:nn,p));")
simplify)
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (2 0 0)")
(backchain "with(p:prop,forall(k:zz,p));")
simplify))
(block
(script-comment "`cut-with-single-formula' at (0)")
(contrapose "with(p:prop,not(p));")
(backchain-backwards "with(g,f:[nn,nn],ran{f}=ran{g});")
(apply-macete-with-minor-premises indicator-facts-macete)
beta-reduce-repeatedly
(instantiate-existential ("m")))))))
(block
(script-comment "`case-split' at (2)")
(cut-with-single-formula "not(#(g(m))) and not(#(f(m)))")
simplify
(block
(script-comment "`cut-with-single-formula' at (1)")
direct-inference
(simplify-antecedent "with(p:prop,not(p));")
(block
(script-comment "`direct-inference' at (1)")
(contrapose "with(m:zz,f:sets[nn],not(m in f));")
(backchain-backwards "with(g,f:[nn,nn],dom{f}=dom{g});")
simplify))))
)))
```

```
(def-theorem characterization-of-omega-embedding
"forall(f:[nn -> nn], s:sets[nn],
(omega%embedding(s)=f
iff
(dom{f}=dom(omega%embedding(s))
and ran{f}=s and
forall(k,l:nn, k<l and l in dom{f} implies f(k) < f(l)))))"
(theory h-o-real-arithmetic)
(proof
(
direct-and-antecedent-inference-strategy
simplify
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (0 0 1)")
(backchain-backwards "with(f:[nn,nn],f=f);")
(apply-macete-with-minor-premises ran-of-omega%embedding))
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (0 0 2
0 0 0)")
(backchain-backwards "with(f:[nn,nn],f=f);")
(backchain-backwards "with(f:[nn,nn],f=f);")
(apply-macete-with-minor-premises strong-monotonicity-of-omega%embedding)
(backchain "with(f:[nn,nn],f=f);")
direct-inference
(simplify-antecedent "with(l:nn,f:sets[nn],l in f);"))
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (0 1 0)")
(apply-macete-with-minor-premises characterization-of-omega-embedding-lemma)
direct-and-antecedent-inference-strategy
(apply-macete-with-minor-premises ran-of-omega%embedding)
simplify
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (2 0 0
1 0)")
(apply-macete-with-minor-premises strong-monotonicity-of-omega%embedding)
direct-and-antecedent-inference-strategy
(simplify-antecedent "with(l:nn,f:sets[nn],l in f);")))
)))
```

```
(def-theorem upper-bound-of-finite-sequences
"forall(f:[nn->rr],n:nn,
forsome(r:rr, forall(k:nn, k<=n and #(f(k))implies f(k)<=r)))"
(theory h-o-real-arithmetic)
(proof
(
direct-and-antecedent-inference-strategy
(cut-with-single-formula
"forall(n:zz,0<=n implies
forsome(r:rr,forall(k:nn,k<=n and #(f(k)) implies f(k)<=r)))")
simplify
(block
(script-comment "`cut-with-single-formula' at (1)")
(induction integer-inductor ())
(block
(script-comment "`induction' at (0 0 0)")
(case-split ("#(f(0))"))
(block
(script-comment "`case-split' at (1)")
(instantiate-existential ("f(0)"))
(cut-with-single-formula "k_\$0=0")
simplify
simplify)
(block
(script-comment "`case-split' at (2)")
(instantiate-existential ("0"))
(contrapose "with(p:prop,not(p));")
(cut-with-single-formula "k=0")
simplify
simplify))
(block
(script-comment "`induction' at (0 1 0 0 0 0 0)")
(case-split ("#(f(1+t))"))
(block
(script-comment "`case-split' at (1)")
(instantiate-existential ("max(r,f(1+t))"))
(case-split ("k_\$0<=t"))
(block
(script-comment "`case-split' at (1)")
(cut-with-single-formula "f(k_\$0)<=r and r<=max(r,f(1+t))")
simplify
(block
(script-comment "`cut-with-single-formula' at (1)")
(apply-macete-with-minor-premises maximum-1st-arg)
simplify))
(block
(script-comment "`case-split' at (2)")
(cut-with-single-formula "f(1+t)<=max(r,f(1+t)) and f(k_\$0)=f(1+t)")
simplify
(block
(script-comment "`cut-with-single-formula' at (1)")
(apply-macete-with-minor-premises maximum-2nd-arg)
(cut-with-single-formula "k_\$0=1+t")
simplify)))
(block
(script-comment "`case-split' at (2)")
(instantiate-existential ("r"))
(backchain "with(p:prop,forall(k:nn,p));")
direct-and-antecedent-inference-strategy
(cut-with-single-formula "not(k=1+t)")
simplify
(block
(script-comment "`cut-with-single-formula' at (1)")
(contrapose "with(p:prop,not(p));")
simplify))))
)))
```

```
(def-theorem upper-bound-of-finite-sequences-of-nn
"forall(f:[nn->nn],n:nn,
forsome(m:nn, forall(k:nn, k<=n and #(f(k))implies f(k)<=m)))"
(theory h-o-real-arithmetic)
(proof
(
direct-and-antecedent-inference-strategy
(cut-with-single-formula "forsome(r:rr, forall(k:nn, k<=n and #(f(k))implies f(k)<=r))")
(move-to-sibling 1)
(apply-macete-with-minor-premises upper-bound-of-finite-sequences)
(block
(script-comment "`cut-with-single-formula' at (0)")
(antecedent-inference "with(p:prop,p);")
(cut-with-single-formula "forsome(n:zz, max(0,r)<n)")
(move-to-sibling 1)
(apply-macete-with-minor-premises archimedean)
(block
(script-comment "`cut-with-single-formula' at (0)")
(antecedent-inference "with(p:prop,forsome(n:zz,p));")
(instantiate-existential ("n_\$0"))
(block
(script-comment "`instantiate-existential' at (0 0 0)")
(cut-with-single-formula "r<=max(0,r) and f(k)<=r")
simplify
(block
(script-comment "`cut-with-single-formula' at (1)")
(apply-macete-with-minor-premises maximum-2nd-arg)
simplify))
(block
(script-comment "`instantiate-existential' at (1)")
(apply-macete-with-minor-premises nn-defining-axiom_h-o-real-arithmetic)
beta-reduce-repeatedly
(cut-with-single-formula "0<=max(0,r)")
simplify
(apply-macete-with-minor-premises maximum-1st-arg))))
)))
```

```
(def-theorem finite-sets-in-nn-are-bounded
"forall(s:sets[nn], f_indic_q{s} implies forsome(n:nn, s subseteq omega(n)))"
(theory h-o-real-arithmetic)
lemma
(proof
(
direct-and-antecedent-inference-strategy
(cut-with-single-formula "forsome(n:nn, omega(n) equinumerous s)")
(block
(script-comment "`cut-with-single-formula' at (0)")
(antecedent-inference "with(p:prop,forsome(n:nn,p));")
(antecedent-inference "with(s,f:sets[nn],f equinumerous s);")
(antecedent-inference "with(s:sets[nn],
bijective_on_q{with(f:[nn,nn],f),with(f:sets[nn],f),s});")
(cut-with-single-formula
"forsome(r:nn, forall(k:nn, k<=n and #(f(k)) implies f(k)<=r))")
(move-to-sibling 1)
(apply-macete-with-minor-premises upper-bound-of-finite-sequences-of-nn)
(block
(script-comment "`cut-with-single-formula' at (0)")
(weaken (1))
(antecedent-inference "with(s:sets[nn],
surjective_on_q{with(f:[nn,nn],f),with(f:sets[nn],f),s});")
(incorporate-antecedent "with(s:sets[nn],f:[nn,nn],ran{f}=s);")
(apply-macete-with-minor-premises tr%subseteq-antisymmetry)
direct-inference
(antecedent-inference "with(p:prop,p and p);")
(instantiate-existential ("r+1"))
insistent-direct-inference
(instantiate-universal-antecedent
"with(f:[nn,nn],s:sets[nn],s subseteq ran{f});"
("x"))
(move-to-ancestor 3)
direct-inference
(instantiate-universal-antecedent "with(f:[nn,nn],s:sets[nn],s subseteq ran{f});"
("x"))
(contrapose "with(x:nn,f:[nn,nn],x in ran{f});")
(apply-macete-with-minor-premises indicator-facts-macete)
beta-reduce-repeatedly
(contrapose "with(p:prop,not(p));")
(unfold-single-defined-constant (0) omega)
(apply-macete-with-minor-premises indicator-facts-macete)
beta-reduce-repeatedly
(antecedent-inference "with(p:prop,forsome(x_\$1:nn,p));")
(backchain "with(n,x:nn,x=n);")
(instantiate-universal-antecedent "with(r,n:nn,p:prop,forall(k:nn,p and p implies n<=r));"
("x_\$1"))
(block
(script-comment "`instantiate-universal-antecedent' at (0 0 0 0)")
(contrapose "with(f:sets[nn],f=f);")
(apply-macete-with-minor-premises tr%subseteq-antisymmetry)
(contrapose "with(n,x_\$1:nn,not(x_\$1<=n));")
(antecedent-inference "with(p:prop,p and p);")
(instantiate-universal-antecedent "with(n:nn,f:[nn,nn],dom{f} subseteq omega(n));"
("x_\$1"))
(simplify-antecedent "with(x_\$1:nn,f:sets[nn],not(x_\$1 in f));")
(block
(script-comment "`instantiate-universal-antecedent' at (0 0 1)")
(incorporate-antecedent "with(x_\$1,n:nn,x_\$1 in omega(n));")
(unfold-single-defined-constant (0) omega)
(apply-macete-with-minor-premises indicator-facts-macete)
simplify))
simplify))
(block
(script-comment "`cut-with-single-formula' at (1)")
(incorporate-antecedent "with(p:prop,p);")
(apply-macete-with-minor-premises tr%iota-free-definition-of-f-indic-q)
(apply-macete-with-minor-premises tr%iota-free-definition-of-f-card)
direct-and-antecedent-inference-strategy
(move-to-ancestor 3)
(instantiate-existential ("n"))
(apply-macete-with-minor-premises tr%equinumerous-is-symmetric))
)))
```

```
(def-theorem subset-of-nn-finite-iff-bounded
"forall(s:sets[nn], f_indic_q{s} iff forsome(n:nn, s subseteq omega(n)))"
(theory h-o-real-arithmetic)
(proof
(
direct-and-antecedent-inference-strategy
(apply-macete-with-minor-premises finite-sets-in-nn-are-bounded)
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (0 1 0)")
(apply-macete-with-minor-premises tr%iota-free-definition-of-f-indic-q)
(cut-with-single-formula "forsome(m:nn, m<=n and f_card{s}=m)")
(block
(script-comment "`cut-with-single-formula' at (0)")
(antecedent-inference "with(p:prop,forsome(m:nn,p));")
(instantiate-existential ("m")))
(apply-macete-with-minor-premises subset-of-finite-cardinal-has-f-card))
)))
```

```
(def-theorem domain-of-omega-embedding-for-finite-sets
"forall(s:sets[nn], f_indic_q{s} implies dom{omega%embedding(s)}=omega(f_card{s}))"
(theory h-o-real-arithmetic)
(proof
(
(apply-macete-with-minor-premises subset-of-nn-finite-iff-bounded)
direct-and-antecedent-inference-strategy
(cut-with-single-formula
"forsome(m:nn, m<=n and dom{omega%embedding(s)}=omega(m))")
(move-to-sibling 1)
(apply-macete-with-minor-premises dom-of-omega%embedding-at-finite-set)
(block
(script-comment "`cut-with-single-formula' at (0)")
(antecedent-inference "with(p:prop,forsome(m:nn,p));")
(backchain "with(p:prop,p and p);")
(cut-with-single-formula "f_card{s}=m")
simplify
(block
(script-comment "`cut-with-single-formula' at (1)")
(apply-macete-with-minor-premises tr%iota-free-definition-of-f-card)
(antecedent-inference "with(p:prop,p and p);")
(apply-macete-with-minor-premises tr%equinumerous-is-symmetric)
(instantiate-existential ("omega%embedding(s)"))
insistent-direct-inference
(block
(script-comment "`insistent-direct-inference' at (0)")
insistent-direct-inference
(apply-macete-with-minor-premises ran-of-omega%embedding))
(block
(script-comment "`insistent-direct-inference' at (1)")
(apply-macete-with-minor-premises tr%injective-implies-injective-on)
(apply-macete-with-minor-premises injectiveness-of-omega%embedding))))
)))
```

```
(def-theorem characterization-of-omega-embedding-for-finite-sets
"forall(f:[nn -> nn], s:sets[nn],
f_indic_q{s}
implies
(omega%embedding(s)=f
iff
(dom{f}=omega(f_card{s})
and ran{f}=s and
forall(k,l:nn, k<l and l in dom{f} implies f(k) < f(l)))))"
(theory h-o-real-arithmetic)
(proof
(
(force-substitution "omega(f_card{s})" "dom(omega%embedding(s))" (0))
(move-to-sibling 1)
(apply-macete-with-minor-premises domain-of-omega-embedding-for-finite-sets)
(apply-macete-with-minor-premises characterization-of-omega-embedding)
)))
```

```
(def-theorem domain-of-omega-embedding-for-infinite-sets
"forall(s:sets[nn],
not(f_indic_q{s})
implies
dom{omega%embedding(s)}=sort_to_indic{nn})"
(theory h-o-real-arithmetic)
(proof
(
direct-and-antecedent-inference-strategy
(apply-macete-with-minor-premises tr%subseteq-antisymmetry)
direct-inference
simplify-insistently
(block
(script-comment "`direct-inference' at (1)")
insistent-direct-inference
(apply-macete-with-minor-premises indicator-facts-macete)
beta-reduce-repeatedly
direct-and-antecedent-inference-strategy
(contrapose "with(p:prop,not(p));")
(apply-macete-with-minor-premises tr%iota-free-definition-of-f-indic-q)
(apply-macete-with-minor-premises tr%iota-free-definition-of-f-card)
(cut-with-single-formula "forsome(n:nn, dom{omega%embedding(s)}=omega(n))")
(block
(script-comment "`cut-with-single-formula' at (0)")
(antecedent-inference "with(p:prop,forsome(n:nn,p));")
(instantiate-existential ("n"))
(backchain-backwards "with(f:sets[nn],f=f);")
(apply-macete-with-minor-premises tr%equinumerous-is-symmetric)
(instantiate-existential ("omega%embedding(s)"))
insistent-direct-inference
(block
(script-comment "`insistent-direct-inference' at (0)")
insistent-direct-inference
(apply-macete-with-minor-premises ran-of-omega%embedding))
(block
(script-comment "`insistent-direct-inference' at (1)")
(apply-macete-with-minor-premises tr%injective-implies-injective-on)
(apply-macete-with-minor-premises injectiveness-of-omega%embedding)))
(block
(script-comment "`cut-with-single-formula' at (1)")
(weaken (2 1))
(contrapose "with(p:prop,p);")
(cut-with-single-formula "forall(k:zz, 0<=k implies #(omega%embedding(s)(k)))")
simplify
(block
(script-comment "`cut-with-single-formula' at (1)")
(induction complete-inductor ("k"))
(move-to-ancestor 3)
(antecedent-inference "with(p:prop,p and p);")
(incorporate-antecedent "with(p:prop,forall(n:nn,not(p)));")
(apply-macete-with-minor-premises omega-n-as-domain-lemma)
direct-and-antecedent-inference-strategy
(contrapose "with(p:prop,forall(n:nn,not(p)));")
(instantiate-existential ("m"))
(block
(script-comment "`instantiate-existential' at (0 0 0)")
(contrapose "with(n:nn,#(n));")
(case-split ("m=x or m<x"))
(antecedent-inference "with(p:prop,p or p);")
simplify
(instantiate-theorem strong-monotonicity-of-omega%embedding
("s" "m" "x")))
simplify)))
)))
```

```
(def-theorem characterization-of-omega-embedding-for-infinite-sets
"forall(f:[nn -> nn], s:sets[nn],
not(f_indic_q{s})
implies
(omega%embedding(s)=f
iff
(dom{f}=sort_to_indic{nn}
and ran{f}=s and
forall(k,l:nn, k<l and l in dom{f} implies f(k) < f(l)))))"
(theory h-o-real-arithmetic)
(proof
(
(force-substitution "sort_to_indic{nn}" "dom(omega%embedding(s))" (0))
(move-to-sibling 1)
(apply-macete-with-minor-premises domain-of-omega-embedding-for-infinite-sets)
(apply-macete-with-minor-premises characterization-of-omega-embedding)
)))
```

```
(def-theorem compositionality-of-omega-embedding
"forall(s:sets[nn], f:[nn -> nn],
s subseteq dom{f} and
forall(a,b:nn, a<b and a in s and b in s implies f(a)<f(b))
implies
omega%embedding(image{f,s})=f oo (omega%embedding(s)))"
(theory h-o-real-arithmetic)
(proof
(
direct-and-antecedent-inference-strategy
(case-split ("f_indic_q{s}"))
(block
(script-comment "`case-split' at (1)")
(apply-macete-with-minor-premises characterization-of-omega-embedding-for-finite-sets)
(move-to-sibling 1)
(block
(script-comment "`apply-macete-with-minor-premises' at (1)")
(cut-with-single-formula "f_card{image{f,s}}<=f_card{s}")
(apply-macete-with-minor-premises tr%image-of-a-finite-set-is-finite))
(block
(script-comment "`apply-macete-with-minor-premises' at (0)")
direct-and-antecedent-inference-strategy
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (0)")
(apply-macete-with-minor-premises tr%domain-composition)
(move-to-sibling 1)
(apply-macete-with-minor-premises ran-of-omega%embedding)
(block
(script-comment "`apply-macete-with-minor-premises' at (0)")
(apply-macete-with-minor-premises domain-of-omega-embedding-for-finite-sets)
(cut-with-single-formula "f_card{s}=f_card{image{f,s}}")
simplify
(block
(script-comment "`cut-with-single-formula' at (1)")
(apply-macete-with-minor-premises tr%f-card-equal-iff-finite-and-equinumerous)
direct-and-antecedent-inference-strategy
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (1 1 0)")
(instantiate-existential ("restrict{f,s}"))
insistent-direct-inference
(block
(script-comment "`insistent-direct-inference' at (0)")
insistent-direct-inference
(apply-macete-with-minor-premises tr%domain-of-a-restriction)
(block
(script-comment "`insistent-direct-inference' at (1)")
(apply-macete-with-minor-premises tr%subseteq-antisymmetry)
direct-inference
(block
(script-comment "`direct-inference' at (0)")
insistent-direct-inference
(apply-macete-with-minor-premises indicator-facts-macete)
beta-reduce-repeatedly)
(block
(script-comment "`direct-inference' at (1)")
insistent-direct-inference
(apply-macete-with-minor-premises indicator-facts-macete)
beta-reduce-repeatedly)))
(block
(script-comment "`insistent-direct-inference' at (1)")
insistent-direct-inference
direct-and-antecedent-inference-strategy
(contrapose "with(p:prop,forall(a,b:nn,p));")
(cut-with-single-formula "x_\$1<x_\$2 or x_\$2<x_\$1")
(move-to-sibling 1)
simplify
(block
(script-comment "`cut-with-single-formula' at (0)")
(antecedent-inference "with(p:prop,p or p);")
(block
(script-comment "`antecedent-inference' at (0)")
(instantiate-existential ("x_\$1" "x_\$2"))
(contrapose "with(n:nn,n=n);")
simplify-insistently)
(block
(script-comment "`antecedent-inference' at (1)")
(instantiate-existential ("x_\$2" "x_\$1"))
(contrapose "with(n:nn,n=n);")
simplify-insistently))))
(weaken (0)))))
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (1)")
(apply-macete-with-minor-premises tr%subseteq-antisymmetry)
direct-inference
(block
(script-comment "`direct-inference' at (0)")
insistent-direct-inference
(apply-macete-with-minor-premises indicator-facts-macete)
beta-reduce-repeatedly
direct-and-antecedent-inference-strategy
(cut-with-single-formula "omega%embedding(s)(x_\$9) in s")
auto-instantiate-existential
(block
(script-comment "`cut-with-single-formula' at (1)")
(apply-macete-with-minor-premises tr%membership-in-a-range)
(instantiate-existential ("x_\$9" "omega%embedding(s)"))
(apply-macete-with-minor-premises ran-of-omega%embedding)))
(block
(script-comment "`direct-inference' at (1)")
insistent-direct-inference
(apply-macete-with-minor-premises indicator-facts-macete)
beta-reduce-repeatedly
direct-and-antecedent-inference-strategy
(cut-with-single-formula "s=ran{omega%embedding(s)}")
(move-to-sibling 1)
(apply-macete-with-minor-premises ran-of-omega%embedding)
(block
(script-comment "`cut-with-single-formula' at (0)")
(incorporate-antecedent "with(x:nn,s:sets[nn],x in s);")
(backchain "with(f:[nn,nn],s:sets[nn],s=ran{f});")
(apply-macete-with-minor-premises indicator-facts-macete)
beta-reduce-repeatedly
direct-and-antecedent-inference-strategy
(instantiate-existential ("x_\$0"))
simplify)))
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (2 0 0 0)")
simplify-insistently
(backchain "with(p:prop,forall(a,b:nn,p));")
(block
(script-comment "`backchain' at (0)")
(apply-macete-with-minor-premises strong-monotonicity-of-omega%embedding)
simplify
(cut-with-single-formula "s=ran{omega%embedding(s)}")
(block
(script-comment "`cut-with-single-formula' at (0)")
(force-substitution "s"
"ran{omega%embedding(s)}"
(2 4))
(apply-macete-with-minor-premises tr%membership-in-a-range)
(block
(script-comment "`apply-macete-with-minor-premises' at (0)")
direct-and-antecedent-inference-strategy
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (0)")
(incorporate-antecedent "with(l_\$0:nn,f:sets[nn],l_\$0 in f);")
simplify-insistently)
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (1)")
(instantiate-existential ("k_\$0" "omega%embedding(s)"))
simplify
(apply-macete-with-minor-premises omega%embedding-strong-definedness)
(instantiate-existential ("l_\$0"))
simplify)
(instantiate-existential ("l_\$0" "omega%embedding(s)")))
(block
(script-comment "`apply-macete-with-minor-premises' at (1)")
(apply-macete-with-minor-premises omega%embedding-strong-definedness)
(instantiate-existential ("l_\$0"))
simplify))
(apply-macete-with-minor-premises ran-of-omega%embedding))
direct-inference)))
(block
(script-comment "`case-split' at (2)")
(apply-macete-with-minor-premises characterization-of-omega-embedding-for-infinite-sets)
(move-to-sibling 1)
(block
(script-comment "`apply-macete-with-minor-premises' at (1)")
(contrapose "with(p:prop,not(p));")
(cut-with-single-formula "f_card{s}<=f_card{image{f,s}}")
(apply-macete-with-minor-premises tr%f-card-leq-iff-finite-and-embeds)
direct-inference
(instantiate-existential ("restrict{f,s}"))
(apply-macete-with-minor-premises tr%domain-of-a-restriction)
(block
(script-comment "`instantiate-existential' at (0 1)")
insistent-direct-inference
(apply-macete-with-minor-premises indicator-facts-macete)
beta-reduce-repeatedly)
(block
(script-comment "`instantiate-existential' at (0 2)")
(apply-macete-with-minor-premises tr%injective-implies-injective-on)
insistent-direct-inference
direct-and-antecedent-inference-strategy
(contrapose "with(n:nn,n=n);")
(cut-with-single-formula "x_\$0<x_\$1 or x_\$1<x_\$0")
(move-to-sibling 1)
simplify
(block
(script-comment "`cut-with-single-formula' at (0)")
(antecedent-inference "with(p:prop,p or p);")
(block
(script-comment "`antecedent-inference' at (0)")
(contrapose "with(p:prop,forall(a,b:nn,p));")
auto-instantiate-existential
(block
(script-comment "`auto-instantiate-existential' at (0 1)")
(contrapose "with(n:nn,n=n);")
simplify-insistently)
(block
(script-comment "`auto-instantiate-existential' at (0 2)")
(contrapose "with(n:nn,n=n);")
simplify-insistently)
(block
(script-comment "`auto-instantiate-existential' at (0 3)")
(contrapose "with(n:nn,n=n);")
simplify-insistently))
(block
(script-comment "`antecedent-inference' at (1)")
(contrapose "with(p:prop,forall(a,b:nn,p));")
auto-instantiate-existential
(block
(script-comment "`auto-instantiate-existential' at (0 1)")
(contrapose "with(n:nn,n=n);")
simplify-insistently)
(block
(script-comment "`auto-instantiate-existential' at (0 2)")
(contrapose "with(n:nn,n=n);")
simplify-insistently)
(block
(script-comment "`auto-instantiate-existential' at (0 3)")
(contrapose "with(n:nn,n=n);")
simplify-insistently)))))
(block
(script-comment "`apply-macete-with-minor-premises' at (0)")
direct-and-antecedent-inference-strategy
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (0)")
(apply-macete-with-minor-premises tr%domain-composition)
(move-to-sibling 1)
(apply-macete-with-minor-premises ran-of-omega%embedding)
(apply-macete-with-minor-premises domain-of-omega-embedding-for-infinite-sets))
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (1)")
(apply-macete-with-minor-premises tr%subseteq-antisymmetry)
direct-inference
(block
(script-comment "`direct-inference' at (0)")
insistent-direct-inference
(apply-macete-with-minor-premises indicator-facts-macete)
beta-reduce-repeatedly
direct-and-antecedent-inference-strategy
(cut-with-single-formula "omega%embedding(s)(x) in s")
(block
(script-comment "`cut-with-single-formula' at (0)")
auto-instantiate-existential
(instantiate-existential ("omega%embedding(s)(x)")))
(block
(script-comment "`cut-with-single-formula' at (1)")
(apply-macete-with-minor-premises tr%membership-in-a-range)
(instantiate-existential ("x_\$2" "omega%embedding(s)"))
(apply-macete-with-minor-premises ran-of-omega%embedding)
(move-to-ancestor 2)
(instantiate-existential ("x" "omega%embedding(s)"))))
(block
(script-comment "`direct-inference' at (1)")
insistent-direct-inference
(apply-macete-with-minor-premises indicator-facts-macete)
beta-reduce-repeatedly
direct-and-antecedent-inference-strategy
(cut-with-single-formula "s=ran{omega%embedding(s)}")
(move-to-sibling 1)
(apply-macete-with-minor-premises ran-of-omega%embedding)
(block
(script-comment "`cut-with-single-formula' at (0)")
(incorporate-antecedent "with(x:nn,s:sets[nn],x in s);")
(backchain "with(f:[nn,nn],s:sets[nn],s=ran{f});")
(apply-macete-with-minor-premises indicator-facts-macete)
beta-reduce-repeatedly
direct-and-antecedent-inference-strategy
(instantiate-existential ("x_\$0"))
simplify)))
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (2 0 0
0)")
simplify-insistently
(backchain "with(p:prop,forall(a,b:nn,p));")
(block
(script-comment "`backchain' at (0)")
(apply-macete-with-minor-premises strong-monotonicity-of-omega%embedding)
simplify
(cut-with-single-formula "s=ran{omega%embedding(s)}")
(block
(script-comment "`cut-with-single-formula' at (0)")
(force-substitution "s"
"ran{omega%embedding(s)}"
(2 4))
(apply-macete-with-minor-premises tr%membership-in-a-range)
(block
(script-comment "`apply-macete-with-minor-premises' at (0)")
direct-and-antecedent-inference-strategy
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (0)")
(incorporate-antecedent "with(l:nn,f:sets[nn],l in f);")
simplify-insistently)
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (1)")
(instantiate-existential ("k" "omega%embedding(s)"))
simplify
(apply-macete-with-minor-premises omega%embedding-strong-definedness)
(instantiate-existential ("l"))
simplify)
(instantiate-existential ("l" "omega%embedding(s)")))
(block
(script-comment "`apply-macete-with-minor-premises' at (1)")
(apply-macete-with-minor-premises omega%embedding-strong-definedness)
(instantiate-existential ("l"))
simplify))
(apply-macete-with-minor-premises ran-of-omega%embedding))
direct-inference)))
)))
```