(def-theorem a%even-a%odd-a%inf-cover-dom-of-f 
    "a%even union a%odd union a%inf = dom{f}"
    lemma
    reverse
    (theory schroeder-bernstein-theory)
    (usages transportable-macete)
    (proof
      (
        unfold-defined-constants
        extensionality
        direct-inference
        beta-reduce-repeatedly
        (raise-conditional (0))
        simplify
        (case-split ("#(last%a%index(x_0))"))
        (apply-macete-with-minor-premises natural-numbers-are-even-or-odd)
        simplify
        )))


(def-theorem a%even-a%odd-disjoint 
    "a%even disj a%odd"
    lemma
    (theory schroeder-bernstein-theory)
    (proof
      (
        unfold-defined-constants
        simplify-insistently
        (apply-macete-with-minor-premises even-and-odd-natural-numbers-are-disjoint)
        simplify
        )))


(def-theorem a%even-a%inf-disjoint 
    "a%even disj a%inf"
    lemma
    (theory schroeder-bernstein-theory)
    (proof
      (
        unfold-defined-constants
        simplify-insistently
        )))


(def-theorem a%odd-a%inf-disjoint 
    "a%odd disj a%inf"
    lemma
    (theory schroeder-bernstein-theory)
    (proof
      (
        unfold-defined-constants
        simplify-insistently
        )))


(def-theorem ran-of-f-is-b%seq-at-1 
    "ran{f}=b%seq(1)"
    lemma
    reverse
    (theory schroeder-bernstein-theory)
    (proof
      (
        (unfold-single-defined-constant-globally b%seq)
        simplify
        (unfold-single-defined-constant-globally a%seq)
        simplify
        )))


(def-theorem a%seq-to-b%seq-step-by-f 
    "forall(i:nn,x:ind_1, x in a%seq(i) iff f(x) in b%seq(1+i))"
    reverse
    lemma
    (theory schroeder-bernstein-theory)
    (proof
      (
        (unfold-single-defined-constant-globally b%seq)
        simplify
        direct-and-antecedent-inference-strategy
        (instantiate-existential ("x"))
        (instantiate-theorem f-injectiveness ("x" "x_$1"))
        (backchain "with(x_$1,x:ind_1,x=x_$1)")
        )))


(def-theorem a%seq-b%seq-hierarchies-lemma 
    "forall(i:zz, 
          0<=i 
            implies 
          a%seq(1+i) subseteq a%seq(i) 
            and 
          b%seq(1+i) subseteq b%seq(i))"
    lemma
    (theory schroeder-bernstein-theory)
    (proof
      (
        (induction integer-inductor ("i"))
        simplify-insistently
        (unfold-single-defined-constant (0) a%seq)
        simplify
        (unfold-single-defined-constant (2) b%seq)
        simplify
        (apply-macete-with-minor-premises tr%image-is-monotone-wrt-subseteq)
        direct-inference
        )))


(def-theorem a%seq-hierarchy 
    "forall(i,j:nn, i<=j implies a%seq(j) subseteq a%seq(i))"
    lemma
    (theory schroeder-bernstein-theory)
    (proof
      (
        (force-substitution 
          "forall(i,j:nn,i<=j implies a%seq(j) subseteq a%seq(i))" 
          "forall(i:zz, 
                forall(j:zz, i<=j 
                  implies 
                (#(i,nn) and #(j,nn) implies a%seq(j) subseteq a%seq(i))))" 
          (0))
        (apply-macete-with-minor-premises integer-induction)
        beta-reduce-repeatedly
        direct-and-antecedent-inference-strategy
        (contrapose "with(p:prop, not(p))")
        (weaken (0 2 4))
        (incorporate-antecedent "with(i:zz,#(i,nn))")
        (apply-macete-with-minor-premises nn-defining-axiom_h-o-real-arithmetic)
        simplify
        (cut-with-single-formula "#(t,nn)")
        (instantiate-theorem a%seq-b%seq-hierarchies-lemma ("t"))
        (contrapose "with(p:prop, not(p))")
        (apply-macete-with-minor-premises nn-in-quasi-sort_h-o-real-arithmetic)
        (force-substitution "t+1" "1+t" (0))
        (apply-macete-with-minor-premises tr%subseteq-transitivity)
        (instantiate-existential ("a%seq(t)"))
        simplify
        (weaken (0 2 4))
        direct-and-antecedent-inference-strategy
        (backchain "with(p:prop, forall(i:zz,p))")
        )))


(def-theorem last%a%index-to-last%b%index-step-by-f 
    "forall(x:ind_1, last%b%index(f(x)) == (1 + last%a%index(x)))"
    lemma
    (theory schroeder-bernstein-theory)
    (proof; 116 nodes
      (
        unfold-defined-constants
        insistent-direct-inference-strategy
        (antecedent-inference "with(p,q:prop, p or q)")
        (eliminate-defined-iota-expression 0 w)
        (cut-with-single-formula "#([-1]+w,nn)")
        (eliminate-iota 0)
        (instantiate-existential ("[-1]+w"))
        (incorporate-antecedent "with(x:ind_2,a:sets[ind_2], x in a)")
        (apply-macete-with-minor-premises tr%membership-in-diff)
        (apply-macete-with-minor-premises a%seq-to-b%seq-step-by-f)
        simplify
        (instantiate-universal-antecedent "with(p:prop,forall(w_1:nn,p))" ("1+z%iota_$0"))
        (contrapose "with(p:prop, not(p))")
        (weaken (0 2 3 4 5))
        (incorporate-antecedent "with(x:ind_1,a:sets[ind_1], x in a)")
        (apply-macete-with-minor-premises tr%membership-in-diff)
        (apply-macete-with-minor-premises a%seq-to-b%seq-step-by-f)
        (weaken (1 2 3 4 5))
        simplify
        simplify
        (cut-with-single-formula "w=0 or 0<w")
        (antecedent-inference "with(p,q:prop, p or q)")
        (contrapose "with(x:ind_2,a:sets[ind_2], x in a)")
        (backchain "with(w:nn,w=0)")
        (unfold-single-defined-constant (0) b%seq)
        simplify
        (weaken (0 1 2 3))
        (apply-macete-with-minor-premises rev%ran-of-f-is-b%seq-at-1)
        (apply-macete-with-minor-premises range-domain-membership)
        (apply-macete-with-minor-premises domain-membership-iff-defined)
        (apply-macete-with-minor-premises nn-defining-axiom_h-o-real-arithmetic)
        simplify
        simplify
        (eliminate-defined-iota-expression 1 w)
        (eliminate-iota 0)
        (instantiate-existential ("1+w"))
        (incorporate-antecedent "with(x:ind_1,a:sets[ind_1], x in a)")
        (apply-macete-with-minor-premises tr%membership-in-diff)
        (apply-macete-with-minor-premises a%seq-to-b%seq-step-by-f)
        (cut-with-single-formula "#([-1]+z%iota_$0,nn)")
        (instantiate-universal-antecedent "with(p:prop,forall(w_1:nn,p))" ("[-1]+z%iota_$0"))
        (contrapose "with(p:prop, not(p))")
        (weaken (0 3 4 5))
        (incorporate-antecedent "with(x:ind_2,a:sets[ind_2], x in a)")
        (apply-macete-with-minor-premises tr%membership-in-diff)
        (apply-macete-with-minor-premises a%seq-to-b%seq-step-by-f)
        simplify
        simplify
        (cut-with-single-formula "z%iota_$0=0 or 0<z%iota_$0")
        (antecedent-inference "with(p,q:prop, p or q)")
        (contrapose "with(x:ind_2,a:sets[ind_2], x in a)")
        (backchain "with(w:nn,z%iota_$0=0)")
        (unfold-single-defined-constant (0) b%seq)
        simplify
        (apply-macete-with-minor-premises nn-defining-axiom_h-o-real-arithmetic)
        simplify
        simplify
        )))


(def-theorem b%odd-subseteq-of-ran-of-f 
    "b%odd subseteq ran{f}"
    lemma
    (theory schroeder-bernstein-theory)
    (proof
      (
        (apply-macete-with-minor-premises ran-of-f-is-b%seq-at-1)
        (unfold-single-defined-constant-globally b%odd)
        (unfold-single-defined-constant-globally last%b%index)
        insistent-direct-inference
        simplify
        direct-inference
        (cut-with-single-formula 
          "#(iota(i_$0:nn, x_$0 in b%seq(i_$0) and not(x_$0 in b%seq(1+i_$0))))")
        (incorporate-antecedent "with(m:nn, odd(m))")
        (eliminate-defined-iota-expression 0 w)
        direct-inference
        (cut-with-single-formula "1<=w")
        (instantiate-transported-theorem 
          a%seq-hierarchy 
          schroeder-bernstein-symmetry 
          ("1" "w"))
        (instantiate-universal-antecedent "with(a,b:sets[ind_2], a subseteq b)" ("x_$0"))
        (case-split ("0=w"))
        (contrapose "with(w:nn,odd(w))")
        (backchain-backwards "with(w:nn,0=w)")
        (apply-macete-with-minor-premises even-and-odd-natural-numbers-are-disjoint)
        (unfold-single-defined-constant-globally even)
        simplify
        simplify
        )))


(def-theorem b%inf-subseteq-of-ran-of-f 
    "b%inf subseteq ran{f}"
    lemma
    (theory schroeder-bernstein-theory)
    (proof
      (
        (apply-macete-with-minor-premises ran-of-f-is-b%seq-at-1)
        insistent-direct-inference
        (unfold-single-defined-constant-globally b%inf)
        (unfold-single-defined-constant-globally last%b%index)
        simplify
        direct-inference
        (cut-with-single-formula "x_$0 in (b%seq(0) diff b%seq(1)) or x_$0 in b%seq(1)")
        (antecedent-inference "with(p,q:prop, p or q)")
        (contrapose "with(p:prop, not(p))")
        (apply-macete-with-minor-premises eliminate-iota-macete)
        (instantiate-existential ("0"))
        simplify
        (incorporate-antecedent "with(x_$0:ind_2,x_$0 in b%seq(0) diff b%seq(1))")
        (apply-macete-with-minor-premises tr%membership-in-diff)
        direct-and-antecedent-inference-strategy
        simplify
        (cut-with-single-formula "j=0 or 1<=j")
        (antecedent-inference "with(p,q:prop, p or q)")
        (instantiate-transported-theorem 
          a%seq-hierarchy 
          schroeder-bernstein-symmetry 
          ("1" "j"))
        (instantiate-universal-antecedent "with(j:nn,b%seq(j) subseteq b%seq(1))" ("x_$0"))
        simplify
        (apply-macete-with-minor-premises tr%membership-in-diff)
        direct-and-antecedent-inference-strategy
        (contrapose "with(p:prop, not(p))")
        (unfold-single-defined-constant-globally b%seq)
        simplify
        )))


(def-theorem image-of-a%even-under-f 
    "image{f,a%even}=b%odd"
    lemma
    reverse
    (theory schroeder-bernstein-theory)
    (usages transportable-macete)
    (proof
      (
        unfold-defined-constants
        (apply-macete-with-minor-premises tr%subseteq-antisymmetry)
        direct-inference
        insistent-direct-inference
        simplify
        direct-and-antecedent-inference-strategy
        (backchain "with(x,y:ind_2, x=y)")
        (incorporate-antecedent "with(x:ind_1,even(last%a%index(x)))")
        (apply-macete-with-minor-premises last%a%index-to-last%b%index-step-by-f)
        (apply-macete-with-minor-premises even-iff-suc-is-odd)
        simplify
        (weaken (0))
        insistent-direct-inference
        simplify
        (instantiate-theorem b%odd-subseteq-of-ran-of-f ("x_$1"))
        (incorporate-antecedent "with(p:prop, not(p))")
        (unfold-single-defined-constant-globally b%odd)
        simplify
        (incorporate-antecedent "with(p:prop, p)")
        simplify
        direct-inference
        (antecedent-inference "with(p:prop, forsome(x:ind_1,p))")
        (backchain "with(x,y:ind_2, x=y)")
        (apply-macete-with-minor-premises last%a%index-to-last%b%index-step-by-f)
        direct-inference
        auto-instantiate-existential
        (apply-macete-with-minor-premises even-iff-suc-is-odd)
        simplify
        )))


(def-theorem image-of-a%odd-under-inverse-of-g 
    "image{inverse{g},a%odd}=b%even"
    lemma
    reverse
    (theory schroeder-bernstein-theory)
    (usages transportable-macete)
    (proof
      (
        (apply-macete-with-minor-premises tr%image-under-inverse-of-injective-mapping)
        (apply-macete-with-minor-premises g-injectiveness)
        (apply-macete-with-minor-premises tr%image-of-a%even-under-f)
        direct-inference
        (apply-macete-with-minor-premises tr%rev%a%even-a%odd-a%inf-cover-dom-of-f)
        simplify-insistently
        )))


(def-theorem image-of-a%inf-under-f 
    "image{f,a%inf}=b%inf"
    lemma
    reverse
    (theory schroeder-bernstein-theory)
    (usages transportable-macete)
    (proof
      (
        unfold-defined-constants
        (apply-macete-with-minor-premises tr%subseteq-antisymmetry)
        direct-inference
        insistent-direct-inference
        simplify
        direct-and-antecedent-inference-strategy
        (backchain "with(x,y:ind_2, x=y)")
        (apply-macete-with-minor-premises last%a%index-to-last%b%index-step-by-f)
        simplify
        (weaken (0))
        insistent-direct-inference
        simplify
        (instantiate-theorem b%inf-subseteq-of-ran-of-f ("x_$1"))
        (incorporate-antecedent "with(p:prop, not(p))")
        (unfold-single-defined-constant-globally b%inf)
        simplify
        (incorporate-antecedent "with(p:prop, p)")
        simplify
        direct-inference
        (antecedent-inference "with(p:prop, forsome(x:ind_1,p))")
        (backchain "with(x,y:ind_2, x=y)")
        (apply-macete-with-minor-premises last%a%index-to-last%b%index-step-by-f)
        direct-inference
        auto-instantiate-existential
        (simplify-antecedent "with(p:prop, not(p))")
        )))


(def-theorem h-injectiveness-lemma 
    "forall(x_1,x_2:ind_1,
          (x_1 in a%inf or x_1 in a%even)
            and 
          f(x_1)=iota(y:ind_2,g(y)=x_2)
            and 
          not(x_2 in a%inf or x_2 in a%even)
            implies 
          x_1=x_2)"
    lemma
    (theory schroeder-bernstein-theory)
    (proof
      (
        direct-and-antecedent-inference-strategy
        (cut-with-single-formula "x_2 in a%odd")
        (cut-with-single-formula "f(x_1) in b%inf")
        (cut-with-single-formula "f(x_1) in b%even")
        (instantiate-transported-theorem 
          a%even-a%inf-disjoint 
          schroeder-bernstein-symmetry 
          ("f(x_1)"))
        (apply-macete-with-minor-premises rev%image-of-a%odd-under-inverse-of-g)
        (weaken (0 2 4))
        simplify
        auto-instantiate-existential
        (apply-macete-with-minor-premises rev%image-of-a%inf-under-f)
        (weaken (0 3))
        simplify
        auto-instantiate-existential
        (weaken (0 1))
        (assume-theorem a%even-a%odd-a%inf-cover-dom-of-f)
        (contrapose "a%even union a%odd union a%inf=dom{f}")
        extensionality
        (instantiate-existential ("x_2"))
        simplify
        (cut-with-single-formula "x_2 in a%odd")
        (cut-with-single-formula "f(x_1) in b%odd")
        (cut-with-single-formula "f(x_1) in b%even")
        (instantiate-transported-theorem 
          a%even-a%odd-disjoint 
          schroeder-bernstein-symmetry 
          ("f(x_1)"))
        (apply-macete-with-minor-premises rev%image-of-a%odd-under-inverse-of-g)
        (weaken (0 2 4))
        (apply-macete-with-minor-premises rev%image-of-a%even-under-f)
        (weaken (0 3))
        simplify
        auto-instantiate-existential
        (weaken (0 1))
        )))


(def-theorem h-injectiveness 
    "injective_q{h}"
    lemma
    (theory schroeder-bernstein-theory)
    (proof
      (
        (unfold-single-defined-constant-globally h)
        insistent-direct-inference
        beta-reduce-repeatedly
        (raise-conditional (0))
        (raise-conditional (0))
        (raise-conditional (0))
        direct-and-antecedent-inference-strategy
        (instantiate-theorem f-injectiveness ("x_1" "x_2"))
        (instantiate-theorem f-injectiveness ("x_1" "x_2"))
        (instantiate-theorem f-injectiveness ("x_1" "x_2"))
        (instantiate-theorem f-injectiveness ("x_1" "x_2"))
        (apply-macete-with-minor-premises h-injectiveness-lemma)
        direct-and-antecedent-inference-strategy
        (apply-macete-with-minor-premises h-injectiveness-lemma)
        direct-and-antecedent-inference-strategy
        (force-substitution "x_1=x_2" "x_2=x_1" (0))
        (apply-macete-with-minor-premises h-injectiveness-lemma)
        direct-and-antecedent-inference-strategy
        (weaken (0 1 2))
        simplify
        (force-substitution "x_1=x_2" "x_2=x_1" (0))
        (apply-macete-with-minor-premises h-injectiveness-lemma)
        direct-and-antecedent-inference-strategy
        (instantiate-transported-theorem inverse-is-injective () ("g"))
        (backchain "injective_q{inverse{g}}")
        simplify
        )))


(def-theorem dom-of-h 
    "total_q{dom{h},sets[ind_1]}"
    lemma
    (theory schroeder-bernstein-theory)
    (proof
      (
        (unfold-single-defined-constant-globally h)
        insistent-direct-inference
        simplify
        (raise-conditional (0))
        direct-and-antecedent-inference-strategy
        (cut-with-single-formula "x_0 in a%odd")
        (instantiate-transported-theorem 
          b%odd-subseteq-of-ran-of-f 
          schroeder-bernstein-symmetry 
          ("x_0"))
        (incorporate-antecedent "with(x_0:ind_1,x_0 in ran{g})")
        simplify
        direct-and-antecedent-inference-strategy
        (apply-macete-with-minor-premises eliminate-iota-macete)
        (instantiate-existential ("x"))
        (instantiate-theorem g-injectiveness ("j" "x"))
        (assume-theorem a%even-a%odd-a%inf-cover-dom-of-f)
        (contrapose "a%even union a%odd union a%inf=dom{f}")
        extensionality
        (instantiate-existential ("x_0"))
        simplify
        )))


(def-theorem ran-of-h-lemma-1 
    "forall(x_0:ind_2,
          x_0 in b%inf
            implies
          forsome(x:ind_1,
              x_0
              =if(x in a%inf or x in a%even,
                    f(x),
                    iota(y:ind_2,g(y)=x))))"
    lemma
    (theory schroeder-bernstein-theory)
    (proof
      (
        direct-and-antecedent-inference-strategy
        (instantiate-theorem b%inf-subseteq-of-ran-of-f ("x_0"))
        (contrapose "with(x_0:ind_2,x_0 in ran{f})")
        simplify
        direct-inference
        (contrapose "with(p:prop, forall(x:ind_1,p))")
        (instantiate-existential ("inverse{f}(x_0)"))
        (cut-with-single-formula "inverse{f}(x_0) in a%inf")
        (incorporate-antecedent "with(x_0:ind_2,inverse{f}(x_0) in a%inf)")
        (raise-conditional (0))
        simplify
        direct-inference
        (eliminate-defined-iota-expression 0 w)
        (contrapose "with(x_0:ind_2,x_0 in b%inf)")
        (apply-macete-with-minor-premises rev%image-of-a%inf-under-f)
        simplify
        direct-and-antecedent-inference-strategy
        (contrapose "with(x_0:ind_2,not(inverse{f}(x_0) in a%inf))")
        simplify
        (eliminate-iota 0)
        (instantiate-existential ("x_$0"))
        (instantiate-theorem f-injectiveness ("z%iota" "x_$0"))
        (eliminate-iota 0)
        (instantiate-existential ("x"))
        (instantiate-theorem f-injectiveness ("z%iota" "x"))
        )))


(def-theorem ran-of-h-lemma-2 
    "forall(x_0:ind_2,
          x_0 in b%odd
            implies
          forsome(x:ind_1,
              x_0
              =if(x in a%inf or x in a%even,
                    f(x),
                    iota(y:ind_2,g(y)=x))))"
    lemma
    (theory schroeder-bernstein-theory)
    (proof
      (
        direct-and-antecedent-inference-strategy
        (instantiate-theorem b%odd-subseteq-of-ran-of-f ("x_0"))
        (contrapose "with(x_0:ind_2,x_0 in ran{f})")
        simplify
        direct-inference
        (contrapose "with(p:prop, forall(x:ind_1,p))")
        (instantiate-existential ("inverse{f}(x_0)"))
        (cut-with-single-formula "inverse{f}(x_0) in a%even")
        (incorporate-antecedent "with(x_0:ind_2,inverse{f}(x_0) in a%even);")
        (raise-conditional (0))
        simplify
        direct-inference
        (eliminate-defined-iota-expression 0 w)
        (contrapose "with(x_0:ind_2,x_0 in b%odd);")
        (apply-macete-with-minor-premises rev%image-of-a%even-under-f)
        simplify
        direct-and-antecedent-inference-strategy
        (contrapose "with(x_0:ind_2,not(inverse{f}(x_0) in a%even));")
        simplify
        (eliminate-iota 0)
        (instantiate-existential ("x_$0"))
        (instantiate-theorem f-injectiveness ("z%iota" "x_$0"))
        (eliminate-iota 0)
        (instantiate-existential ("x"))
        (instantiate-theorem f-injectiveness ("z%iota" "x"))
        )))


(def-theorem ran-of-h-lemma-3 
    "forall(x_0:ind_2,
          x_0 in b%even
            implies
          forsome(x:ind_1,
              x_0
              =if(x in a%inf or x in a%even,
                    f(x),
                    iota(y:ind_2,g(y)=x))))"
    lemma
    (theory schroeder-bernstein-theory)
    (proof
      (
        direct-and-antecedent-inference-strategy
        (instantiate-existential ("g(x_0)"))
        (raise-conditional (0))
        direct-and-antecedent-inference-strategy
        (contrapose "with(x_0:ind_2,g(x_0) in a%inf)")
        (apply-macete-with-minor-premises tr%rev%image-of-a%inf-under-f)
        simplify
        direct-and-antecedent-inference-strategy
        (instantiate-theorem g-injectiveness ("x_0" "x"))
        (instantiate-transported-theorem 
          a%even-a%inf-disjoint 
          schroeder-bernstein-symmetry 
          ("x"))
        (simplify-antecedent "with(x:ind_2,not(x in b%even))")
        (assume-transported-theorem image-of-a%even-under-f schroeder-bernstein-symmetry)
        (contrapose "image{g,b%even}=a%odd")
        extensionality
        (instantiate-existential ("g(x_0)"))
        simplify
        direct-and-antecedent-inference-strategy
        (instantiate-universal-antecedent "with(p:prop, forall(x:ind_2,p))" ("x_0"))
        (raise-conditional (0))
        simplify
        direct-and-antecedent-inference-strategy
        (instantiate-theorem a%even-a%odd-disjoint ("g(x_0)"))
        (simplify-antecedent "with(x_0:ind_2,not(g(x_0) in a%odd))")
        (instantiate-theorem a%even-a%odd-disjoint ("g(x_0)"))
        (apply-macete-with-minor-premises eliminate-iota-macete)
        direct-and-antecedent-inference-strategy
        (instantiate-theorem g-injectiveness ("b" "x_0"))
        )))


(def-theorem ran-of-h 
    "total_q{ran{h},sets[ind_2]}"
    lemma
    (theory schroeder-bernstein-theory)
    (proof
      (
        (unfold-single-defined-constant-globally h)
        insistent-direct-inference
        simplify
        (cut-with-single-formula "x_0 in b%inf or x_0 in b%odd or x_0 in b%even")
        (antecedent-inference "with(p,q,r:prop, p or q or r)")
        (apply-macete-with-minor-premises ran-of-h-lemma-1)
        (apply-macete-with-minor-premises ran-of-h-lemma-2)
        (apply-macete-with-minor-premises ran-of-h-lemma-3)
        (assume-transported-theorem 
          a%even-a%odd-a%inf-cover-dom-of-f 
          schroeder-bernstein-symmetry)
        (contrapose "b%even union b%odd union b%inf=dom{g}")
        extensionality
        (instantiate-existential ("x_0"))
        simplify
        )))


(def-theorem h-surjectiveness 
    "surjective_q{h}"
    lemma
    (theory schroeder-bernstein-theory)
    (proof
      (
        insistent-direct-inference
        (apply-macete-with-minor-premises dom-of-h)
        (apply-macete-with-minor-premises ran-of-h)
        )))


(def-theorem h-bijectiveness		; first proved by r. givan 
    "bijective_q{h}"
    lemma
    (theory schroeder-bernstein-theory)
    (proof
      (
        insistent-direct-inference
        (apply-macete-with-minor-premises h-surjectiveness)
        (apply-macete-with-minor-premises h-injectiveness)
        )))