(def-theorem defined-iota-expression "forall(p:[ind_1,prop], #(iota(i:ind_1,p(i))) implies (p(iota(i:ind_1,p(i))) and forall(j:ind_1, p(j) implies j=iota(i:ind_1,p(i)))))" (theory pure-generic-theory-1) (usages transportable-macete) (proof ( direct-inference direct-inference (cut-with-single-formula "#(iota(i:ind_1,p(i))) and forall(x:ind_1,x=x)") (contrapose "with(i:ind_1,#(i));") (eliminate-iota 0) direct-and-antecedent-inference-strategy (contrapose "with(p:prop,p or p);") direct-inference (block (script-comment "`direct-inference' at (0)") (eliminate-iota 0) (instantiate-existential ("y%iota"))) (block (script-comment "`direct-inference' at (1)") (instantiate-universal-antecedent-multiply "with(y%iota:ind_1,p:[ind_1,prop], forall(z%iota:ind_1,p(z%iota) implies z%iota=y%iota));" (("j") ("iota(i:ind_1,p(i))"))) direct-inference direct-inference) )))
(def-theorem defined-iota-expression-satisfiability "forall(p:[ind_1,prop], #(iota(i:ind_1,p(i))) implies p(iota(i:ind_1,p(i))))" (theory pure-generic-theory-1) (usages transportable-macete) (proof ( direct-and-antecedent-inference-strategy (instantiate-theorem defined-iota-expression ("p")) )))
(def-theorem defined-iota-expression-existence "forall(p:[ind_1,prop], #(iota(i:ind_1,p(i))) implies nonvacuous_q{p})" (theory pure-generic-theory-1) (usages transportable-macete) (proof ( direct-and-antecedent-inference-strategy (instantiate-theorem defined-iota-expression ("p")) auto-instantiate-existential )))
(def-theorem defined-iota-expression-full-existence "forall(%%p%%:[ind_1,prop], not(#(iota(i:ind_1,%%p%%(i)))) or forsome(j:ind_1, j=iota(i:ind_1,%%p%%(i)) and %%p%%(j) and forall(j_1:ind_1, %%p%%(j_1) implies j=j_1)))" (theory pure-generic-theory-1) (usages transportable-macete) (proof ( direct-and-antecedent-inference-strategy (instantiate-theorem defined-iota-expression ("%%p%%")) auto-instantiate-existential (instantiate-universal-antecedent "with(%%p%%:prop, forall(j:ind_1,%%p%%))" ("j_$0")) )))
(def-theorem defined-iota-expression-uniqueness "forall(p:[ind_1,prop], #(iota(i:ind_1,p(i))) implies forall(j:ind_1, p(j) implies j=iota(i:ind_1,p(i))))" (theory pure-generic-theory-1) (usages transportable-macete) (proof ( direct-and-antecedent-inference-strategy (instantiate-theorem defined-iota-expression ("p")) (backchain "with(p,q:prop, forall(j:ind_1, p implies q))") )))
(def-theorem defined-iota-expression-iota-free-uniqueness "forall(p:[ind_1,prop], #(iota(i:ind_1,p(i))) implies forall(i,j:ind_1, (p(i) and p(j)) implies i=j))" (theory pure-generic-theory-1) (usages transportable-macete) (proof ( direct-and-antecedent-inference-strategy (instantiate-theorem defined-iota-expression ("p")) (instantiate-universal-antecedent-multiply "with(p:prop,forall(j:ind_1,p));" (("i") ("j"))) )))
(def-theorem equal-iota-expressions-lemma "forall(p,q:[ind_1,prop], iota(i:ind_1,p(i)) = iota(i:ind_1,q(i)) implies forall(k:ind_1, p(k) implies q(k)))" lemma (theory pure-generic-theory-1) (usages transportable-macete) (proof ( direct-and-antecedent-inference-strategy (instantiate-theorem defined-iota-expression-uniqueness ("p")) (instantiate-universal-antecedent "with(p:prop, forall(j:ind_1,p))" ("k")) (force-substitution "k" "iota(i:ind_1,q(i))" (0)) (apply-macete-with-minor-premises defined-iota-expression-satisfiability) )))
(def-theorem equal-iota-expressions "forall(p,q:[ind_1,prop], iota(i:ind_1,p(i)) = iota(i:ind_1,q(i)) implies p=q)" (theory pure-generic-theory-1) (usages transportable-macete) (proof ( direct-and-antecedent-inference-strategy extensionality direct-inference simplify (instantiate-theorem equal-iota-expressions-lemma ("p" "q")) (instantiate-theorem equal-iota-expressions-lemma ("q" "p")) (instantiate-universal-antecedent "with(p,q:[ind_1,prop],forall(k:ind_1,q(k) implies p(k)));" ("x_0")) (instantiate-universal-antecedent "with(q,p:[ind_1,prop],forall(k:ind_1,p(k) implies q(k)));" ("x_0")) simplify simplify )))
(def-theorem defined-iota-expression-elimination "forall(p:[ind_1,prop], #(iota(i:ind_1,p(i))) iff forsome(i:ind_1, p(i) and forall(j:ind_1, p(j) implies j=i)))" (theory pure-generic-theory-1) (usages transportable-macete) (proof ( direct-and-antecedent-inference-strategy (instantiate-theorem defined-iota-expression-full-existence ("p")) (instantiate-existential ("j")) (instantiate-universal-antecedent "with(p:prop, forall(j_1:ind_1,p))" ("j_$0")) (eliminate-iota 0) auto-instantiate-existential direct-and-antecedent-inference-strategy (instantiate-theorem defined-iota-expression-full-existence ("p")) (instantiate-existential ("j")) (instantiate-universal-antecedent "with(p:prop, forall(j_1:ind_1,p))" ("j_$0")) )))
(def-theorem negated-defined-iota-expression-elimination-1 "forall(p:[ind_1,prop], forall(i:ind_1, not(p(i))) implies not(#(iota(i:ind_1,p(i)))))" (theory pure-generic-theory-1) (usages transportable-macete) (proof ( direct-and-antecedent-inference-strategy (eliminate-iota 0) direct-and-antecedent-inference-strategy (contrapose "with(p:[ind_1,prop],forall(i:ind_1,not(p(i))));") auto-instantiate-existential )))
(def-theorem negated-defined-iota-expression-elimination-2 "forall(p:[ind_1,prop], forsome(i,j:ind_1, p(i) and p(j) and not(i=j)) implies not(#(iota(i:ind_1,p(i)))))" (theory pure-generic-theory-1) (usages transportable-macete) (proof ( direct-and-antecedent-inference-strategy (eliminate-iota 0) direct-and-antecedent-inference-strategy (contrapose "with(p:prop,not(p));") (instantiate-universal-antecedent-multiply "with(y%iota:ind_1,p:[ind_1,prop], forall(z%iota:ind_1,p(z%iota) implies z%iota=y%iota));" (("i") ("j"))) )))
(def-theorem negated-defined-iota-expression-elimination "forall(p:[ind_1,prop], not(#(iota(i:ind_1,p(i)))) iff (forall(i:ind_1, not(p(i))) or forsome(i,j:ind_1, p(i) and p(j) and not(i=j))))" (theory pure-generic-theory-1) (usages transportable-macete) (proof ( direct-and-antecedent-inference-strategy (contrapose "with(p:[ind_1,prop],not(#(iota(i:ind_1,p(i)))));") (eliminate-iota 0) auto-instantiate-existential (backchain "with(p:prop, forall(i,j:ind_1,p))") simplify (apply-macete-with-minor-premises negated-defined-iota-expression-elimination-1) (apply-macete-with-minor-premises negated-defined-iota-expression-elimination-2) auto-instantiate-existential )))
(def-theorem left-iota-expression-equation-elimination "forall(a:ind_1,p:[ind_1,prop], iota(i:ind_1,p(i)) = a iff (p(a) and forall(b:ind_1, p(b) implies b=a)))" (theory pure-generic-theory-1) (usages transportable-macete) (proof ( direct-and-antecedent-inference-strategy (force-substitution "a" "iota(i:ind_1,p(i))" (0)) (apply-macete-with-minor-premises defined-iota-expression-satisfiability) (apply-macete-with-minor-premises defined-iota-expression-iota-free-uniqueness) auto-instantiate-existential (eliminate-iota 0) auto-instantiate-existential )))
(def-theorem right-iota-expression-equation-elimination "forall(a:ind_1,p:[ind_1,prop], a = iota(i:ind_1,p(i)) iff (p(a) and forall(b:ind_1, p(b) implies b=a)))" (theory pure-generic-theory-1) (usages transportable-macete) (proof ( direct-and-antecedent-inference-strategy (force-substitution "a" "iota(i:ind_1,p(i))" (0)) (apply-macete-with-minor-premises defined-iota-expression-satisfiability) (apply-macete-with-minor-premises defined-iota-expression-iota-free-uniqueness) auto-instantiate-existential (eliminate-iota 0) auto-instantiate-existential )))
(def-schematic-macete tr%abstraction-for-iota-body "with(body:prop, iota(i:ind_1,body) == iota(i:ind_1,lambda(i:ind_1,body)(i)))" null transportable (theory pure-generic-theory-1))
(def-compound-macete iota-abstraction-macete (sound tr%abstraction-for-iota-body beta-reduce-unstoppably beta-reduce-unstoppably))
(def-schematic-macete tr%abstraction-for-forsome-body "with(body:prop, forsome(i:ind_1,body) iff forsome(i:ind_1,lambda(i:ind_1,body)(i)))" null transportable (theory pure-generic-theory-1))
(def-compound-macete eliminate-iota-macete (sequential iota-abstraction-macete (series tr%defined-iota-expression-elimination tr%negated-defined-iota-expression-elimination tr%left-iota-expression-equation-elimination tr%right-iota-expression-equation-elimination) beta-reduce))
(def-compound-macete eliminate-forsome-macete (sequential (sound tr%abstraction-for-forsome-body beta-reduce-unstoppably beta-reduce-unstoppably) tr%defined-iota-expression-existence beta-reduce))