(def-quasi-constructor m-composition
"lambda(f:[ind_2,ind_3],g:[ind_1,ind_2], lambda(x:ind_1, f(g(x))))"
(language pure-generic-theory-3)
(fixed-theories the-kernel-theory))
(def-quasi-constructor m-domain
"lambda(f:[ind_1,ind_2], indic(x:ind_1, #(f(x))))"
(language pure-generic-theory-2)
(fixed-theories the-kernel-theory))
(def-quasi-constructor m-range
"lambda(f:[ind_1,ind_2], indic(y:ind_2, forsome(x:ind_1, y=f(x))))"
(language pure-generic-theory-2)
(fixed-theories the-kernel-theory))
(def-quasi-constructor m-image
"lambda(f:[ind_1,ind_2],a:sets[ind_1],
indic(y:ind_2, forsome(x:ind_1, (x in a) and y=f(x))))"
(language pure-generic-theory-2)
(fixed-theories the-kernel-theory))
(def-quasi-constructor m-inverse-image
"lambda(f:[ind_1,ind_2],b:sets[ind_2], b oo f)"
(language pure-generic-theory-2)
(fixed-theories the-kernel-theory))
(def-quasi-constructor m-inverse
"lambda(f:[ind_1,ind_2],
lambda(x:ind_2, iota(y:ind_1, f(y)=x)))"
(language pure-generic-theory-2)
(fixed-theories the-kernel-theory))
(def-quasi-constructor m-id
"lambda(a:sets[ind_1],
lambda(x:ind_1, if(x in a, x, ?ind_1)))"
(language pure-generic-theory-1)
(fixed-theories the-kernel-theory))
(def-quasi-constructor m-restrict
"lambda(f:[ind_1,ind_2],a:sets[ind_1],
lambda(x:ind_1, if(x in a, f(x), ?ind_2)))"
(language pure-generic-theory-2)
(fixed-theories the-kernel-theory))
(def-quasi-constructor m-restrict2
"lambda(f:[ind_1,ind_2,ind_3],a:sets[ind_1],b:sets[ind_2],
lambda(x:ind_1,y:ind_2, if(x in a and y in b, f(x,y), ?ind_3)))"
(language pure-generic-theory-3)
(fixed-theories the-kernel-theory))
(def-quasi-constructor m-surjective?
"lambda(f:[ind_1,ind_2],
forall(x:ind_1, x in dom(f)) and forall(y:ind_2, y in ran(f)))"
(language pure-generic-theory-2)
(fixed-theories the-kernel-theory))
(def-quasi-constructor m-injective?
"lambda(f:[ind_1,ind_2],
forall(x_1,x_2:ind_1, f(x_1)=f(x_2) implies x_1=x_2))"
(language pure-generic-theory-2)
(fixed-theories the-kernel-theory))
(def-quasi-constructor m-bijective?
"lambda(f:[ind_1,ind_2], surjective_q(f) and injective_q(f))"
(language pure-generic-theory-2)
(fixed-theories the-kernel-theory))
(def-quasi-constructor m-surjective-on?
"lambda(f:[ind_1,ind_2],a:sets[ind_1],b:sets[ind_2],
dom(f)=a and ran(f)=b)"
(language pure-generic-theory-2)
(fixed-theories the-kernel-theory))
(def-quasi-constructor m-injective-on?
"lambda(f:[ind_1,ind_2],a:sets[ind_1],
forall(x_1,x_2:ind_1,
((x_1 in a) and (x_2 in a) and f(x_1)=f(x_2)) implies x_1=x_2))"
(language pure-generic-theory-2)
(fixed-theories the-kernel-theory))
(def-quasi-constructor m-bijective-on?
"lambda(f:[ind_1,ind_2],a:sets[ind_1],b:sets[ind_2],
surjective_on_q(f,a,b) and injective_on_q(f,a))"
(language pure-generic-theory-2)
(fixed-theories the-kernel-theory))