Origin Definitions Sections DiscrMathExt Search Doc
IF YOU CAN SEE THIS go to http://www.cs.cornell.edu/Info/People/sfa/Nuprl/Shared/Xindentation_hack_doc.html
DiscreteMath
Nuprl Section: DiscreteMath - Discrete Math Lessons

Selected Objects
IntroductionIntroductory Remarks
defis_one_one_corr_rel
One-one correlation as a relation
1-1-Corr x:A,y:BR(x;y) == (x:A!y:BR(x;y)) & (y:B!x:AR(x;y))
defis_list_mem
(a is a member of list xs)
a  xs == Case of xs; nil  False ; x.ys  a = x  A  (a  ys)  (recursive)
THMndiff_vs_diff
a,b:ab  (b -- a) = b-a
THMeq_int_is_eq_nsub
IsEqFun(b;i,ji=j)
THMdecidable__nat_equal
i,j:. Dec(i = j)
THMexteq_singleton_vs_intseg
a,a':a'-a = 1  ({a..a'} =ext {a:})
THMexteq_prod_family_singleton_vs_intseg
a,a':.
a'-a = 1  (B:({a..a'}Type{i}). (i:{a..a'}B(i)) =ext ({a:}B(a)))
THMexteq_sum_family_singleton_vs_intseg
a,a':.
a'-a = 1  (B:({a..a'}Type{i}). (i:{a..a'}B(i)) =ext ({a:}B(a)))
definjection_type
(the injections from A into B)
A inj B == {f:(AB)| Inj(ABf) }
defbijection_type
(the bijections from A onto B)
A bij B == {f:(AB)| Bij(ABf) }
THMinjtype_vs_inj
((A inj B))  (f:(AB). Inj(ABf))
THMinjection_type_fun
f:(A inj B). f  AB
THMinjection_type_injection
f:(A inj B). Inj(ABf)
THMinj_point_deletion
f:(A inj B), a:Af  {x:Ax = a }{y:By = f(a) }
THMinj_point_deletion_inj
f:(A inj B), a:Af  {x:Ax = a } inj {y:By = f(a) }
THMinj_from_empty_unique
(A (!(A inj B))
THMbijtype_sub_injtype
(A bij B (A inj B)
THMbijection_type_inc_inj
(A bij B (A inj B)
THMnsub_inj_lop_typing
a:b:f:(a inj b). f  (a-1) inj {x:bx = f(a-1) }
THMnsub_inj_fill_typing
a:b:j:bf:((a-1) inj {x:bx = j }).
(i.if i=a-1 j else f(i) fi)  a inj b
defsurjection_type
(the surjections from A onto B)
A onto B == {f:(AB)| Surj(ABf) }
THMbijtype_sub_surjtype
(A bij B (A onto B)
THMbijection_type_inc_surj
(A bij B (A onto B)
THMbijtype_exteq_inj_isect_surjtype
(A bij B) =ext ((A inj B)(A onto B))
COMunicomp_assoc
  h o g o f = h o g o f ...
COMinverse_function_intro
Explain inverse functions and

Def  InvFuns(ABfg) == g o f = Id & f o g = Id

COMone_one_corr_intro
One-to-One Correspondence ...
COMone_one_corr_via_inverse
One-to-One Correspondence via Inverse Functions ...
COMone_one_corr_intro_aux1
Comparison of definitional resources used. ...
COMone_one_corr_intro3
One-to-One Correspondence: equivalence of two characterizations. ...
COMcount_demo
Counting is finding a function of a certain kind. ...
deflist_to_function
A function mapping positions in a list to entries
seq:l(i) == l[i]
COMnote_on_generalization_for_induction
Not done yet.
defreplace_fn_values
(Replace values x s.t. P(x) by y in f)(i) == if P(f(i)) y else f(i) fi
defdelete_fenum_value
Special purpose operation for shrinking the domain and range of an injection simultaneously. See REMARK.
Replace value k by f(m) in f == Replace values x s.t. x=k by f(m) in f
COMdelete_fenum_value_example
let xs = [1; 3; 0; 7; 2; 4; 6; 5] in 
let v = 4 in (Replace value v by seq:xs(||xs||-1) in seq:xs){(||xs||-1)}
*
[1; 3; 0; 7; 2; 5; 6]
THMdelete_fenum_value_comp1_gen
Inj({u:P(u) }; {u:Q(u) }; f)

(m:{u:P(u) }, k:{v:Q(v) }, i:{u:P(u) & u = m }.
(f(i) = k  (Replace value k by f(m) in f)(i) = f(m {v:Q(v) & v = k })
THMdelete_fenum_value_comp2_gen
Inj({u:P(u) }; {u:Q(u) }; f)

(m:{u:P(u) }, k:{v:Q(v) }, i:{u:P(u) & u = m }.
(f(i) = k  (Replace value k by f(m) in f)(i) = f(i {v:Q(v) & v = k })
THMdelete_fenum_value_is_inj_genW
Inj({u:P(u) }; {v:Q(v) }; f)

(m:{u:P(u) }, k:{v:Q(v) }.
((Replace value k by f(m) in f {u:P(u) & u = m }{v:Q(v) & v = k }
(& Inj({u:P(u) & u = m }; {v:Q(v) & v = k };
(& Inj(Replace value k by f(m) in f))
THMdelete_fenum_value_is_inj_gen
Inj({u:P(u) }; {v:Q(v) }; f)

(m:{u:P(u) }, k:{v:Q(v) }.
(Inj({u:P(u) & u = m }; {v:Q(v) & v = k };
(Inj(Replace value k by f(m) in f))
THMdelete_fenum_value_is_fenum_gen
Bij({u:P(u) }; {v:Q(v) }; f)

(m:{u:P(u) }, k:{v:Q(v) }.
(Bij({u:P(u) & u = m }; {v:Q(v) & v = k };
(Bij(Replace value k by f(m) in f))
THMdelete_fenum_value_comp1
Inj((m+1); (k+1); f)

(i:mf(i) = k  (Replace value k by f(m) in f)(i) = f(mk)
THMdelete_fenum_value_comp2
Inj((m+1); (k+1); f)

(i:mf(i) = k  (Replace value k by f(m) in f)(i) = f(ik)
THMdelete_fenum_value_is_inj
Inj((m+1); (k+1); f Inj(mk; Replace value k by f(m) in f)
THMdelete_fenum_value_is_fenum
Bij((m+1); (k+1); f Bij(mk; Replace value k by f(m) in f)
THMfinite_inj_counter_example
(Proof Gloss)
Lemma for the pigeon-hole principle.
A finite non-injection into integers maps some two distinct arguments to the same value.
m:f:(m). Inj(mf (x:my:xf(x) = f(y))
THMinj_imp_le
(Proof Gloss)
The range of a finite injection is as big as its domain.
(f:(mk). Inj(mkf))  mk
THMinj_typing_imp_le
The range of a finite injection is as big as its domain.
((m inj k))  mk
THMinj_imp_le2
The range of a finite injection is as big as its domain.
m,k:f:(mk). Inj(mkf mk
THMpigeon_hole
(Proof Gloss)
The pigeon-hole principle
A mapping from one finite collection into a smaller collection assigns a single output to two inputs.
m,k:f:(mk). k<m  (x,y:mx  y & f(x) = f(y))
defrel_1_1
(R is a 1-1 relation)
R is 1-1 == x,x':Ay,y':BR(x,y) & R(x',y' (x = x'  y = y')
defrel_1_1_b
(R(x;y) is a 1-1 relation in x in A and y in B)
1-1 xA,yBR(x;y) == x,x':Ay,y':BR(x;y) & R(x';y' (x = x'  y = y')
THMrel_1_1_eq_rel_1_1_b
Equivalence of two forms of relational one-to-one correspondence
R:(ABProp). (R is 1-1) = (1-1 xA,yBR(x;y))
definv_funs_2
(f and g are inverse functions, i.e. they cancel each other)
InvFuns(A;B;f;g) == (x:Ag(f(x)) = x) & (y:Bf(g(y)) = y)
THMinv_funs_2_identity
InvFuns(A;A;Id;Id)
defone_one_corr_2
(types A and B are in one-to-one corresponence)
A ~ B == f:(AB), g:(BA). InvFuns(A;B;f;g)
THMone_one_corr_2_functionality_wrt_eq
A = A'  B = B'  (A ~ B) = (A' ~ B')
THMfun_with_inv2_is_inj
(Proof Gloss)
InvFuns(A;B;f;g Inj(ABf)
THMfun_with_inv2_is_surj
(Proof Gloss)
InvFuns(A;B;f;g Surj(ABf)
THMsq_stable__inv_funs_2
f:(AB), g:(BA). SqStable(InvFuns(A;B;f;g))
defcompose_iter
Iterated self-composition of a function.
f{i}(x) == if i=0 x else f(f{i-1}(x)) fi  (recursive)
defleast
(the least number i such that p(i))
least i:p(i) == if p(0) 0 else (least i:p(i+1))+1 fi  (recursive)
THMleast_characterized
Characterization of "least".
k:p:{p:(k)| i:kp(i) }.
(least i:p(i))  {i:kp(i) & (j:ip(j)) }
THMleast_characterized2
Characterization of "least".
p:{p:()| i:p(i) }. 
(least i:p(i))  {i:p(i) & (j:j<i  p(j)) }
THMleast_satisfies
The least number having a property has it.
k:p:{p:(k)| i:kp(i) }. p(least i:p(i))
THMleast_is_least
No number smaller than the least one having a property has it.
k:p:{p:(k)| i:kp(i) }, j:(least i:p(i)). p(j)
THMleast_is_least2
No number smaller than the least one having a property has it.
p:{p:()| i:p(i) }, j:(least i:p(i)). p(j)
THMleast_satisfies2
The least number having a property has it.
p:{p:()| i:p(i) }. p(least i:p(i))
THMnsub_discr_range_surj
(A Discrete)

(k:f:(kA).
({a:Ai:ka = f(i) }  Type
(f  k{a:Ai:ka = f(i) }
(& Surj(k; {a:Ai:ka = f(i) }; f))
THMnsub_discr_range_surjtype
(A Discrete)  (k:f:(kA). f  k onto {a:Ai:ka = f(i) })
THMnsub_inj_discr_range_bij
(A Discrete)

(k:f:(k inj A).
({a:Ai:ka = f(i) }  Type
(f  k{a:Ai:ka = f(i) }
(& Bij(k; {a:Ai:ka = f(i) }; f))
THMnsub_inj_discr_range_bijtype
Characterizing an injection as a bijection
(A Discrete)  (k:f:(k inj A). f  k bij {a:Ai:ka = f(i) })
THMnsub_surj_least_preimage_total_gen
Computing the inverse of a finite function
e:(BB). 
IsEqFun(B;e (a:f:(a onto B), y:B. (least x:. (f(x)) e y a)
THMnsub_surj_least_preimage_total
Computing the inverse of a finite function
f:(a onto b), y:b. (least x:f(x)=y a
THMnsub_surj_least_preimage_works_gen
e:(BB). 
IsEqFun(B;e (a:f:(a onto B), y:Bf(least x:. (f(x)) e y) = y)
THMnsub_surj_least_preimage_works
f:(a onto b), y:bf(least x:f(x)=y) = y
deffind_first_iter
find_first_iter(v.p(v); v.f(v); a)
== if p(a) a else find_first_iter(v.p(v); v.f(v); f(a)) fi
(recursive)
THMfin_plus_nat_ooc_nat
k:. (k+) ~ 
THMnat_plus_ooc_nat
There are as many positive numbers as non-negative.
 ~ 
defis_finite_type
Finite(A) == n:A ~ n
THMnsub_is_finite
k:. Finite(k)
THMooc_preserves_finiteness
(A ~ B Finite(A Finite(B)
THMno_finite_model_lemma
R:(AAProp). 
(A) & (Trans x,y:AR(x;y)) & (x:Ay:AR(x;y))

(k:f:(kA). i,j:ki<j  R(f(i);f(j)))
THMno_finite_model
(A:Type, R:(AAProp).
((A) & (Trans x,y:AR(x;y)) & (x:Ay:AR(x;y))
((x:AR(x;x))
(& Finite(A))
THMsimple_card_cross_assoc
(ABC) ~ ((AB)C)
THMbijtype_ooc_inj_isect_surjtype
(A bij B) ~ ((A inj B)(A onto B))
THMifthenelse_distr_subtype_ooc
{x:A| if b P(x) else Q(x) fi } ~ if b {x:AP(x) } else {x:AQ(x) } fi
THMcard_subset_vs_and
{x:{x:AP(x) }| Q(x) } ~ {x:AP(x) & Q(x) }
THMcard_sum_family_singleton_vs_intseg
a,a':a'-a = 1  (B:({a..a'}Type{i}). (i:{a..a'}B(i)) ~ ({a:}B(a)))
THMcard1_iff_inhabited_uniquely
(A ~ 1)  (!A)
THMcard_void_dom_fun_unit
(0A) ~ 1
THMnsub_delete
k:j:km:m = k-1  ({i:ki = j } ~ m)
THMnsub_delete_rw
k:j:k. {i:ki = j } ~ (k-1)
THMcard_nsub_inj_vs_lopped
The cardinality of injections on a finite nonempty domain in terms of injections on a domain one smaller.
The number ways to order a distinct objects from among b is b times the number of ways to order a-1 distinct objects from among b-1.
a,b:. (a inj b) ~ (b((a-1) inj (b-1)))
THMcard_prod_family_singleton_elim
(i:{a:A}B(i)) ~ B(a)
THMcard_prod_family_intseg_singleton_elim
a,a':a'-a = 1  (B:({a..a'}Type{i}). (i:{a..a'}B(i)) ~ B(a))
THMsubset_sq_remove_card
{x:AB(x) } ~ {x:AB(x) }
THMone_one_corr_2_weakening_wrt
A = B  (A ~ B)
THMcard0_iff_uninhabited
A class has zero members just when it doesn't have any.
(A ~ 0)  (A)
THMcard_sum_family_singleton_elim
B:({a:A}Type). (i:{a:A}B(i)) ~ B(a)
THMcard_sum_family_intseg_singleton_elim
a,a':a'-a = 1  (B:({a..a'}Type{i}). (i:{a..a'}B(i)) ~ B(a))
defone_one_corr_fams
One-to-one correspondence between index families of classes.
(x:AB(x)) ~ (x':A'B'(x'))
== f:(AA'), g:(A'A), F:(x:AB(x)B'(f(x))), G:(x:AB'(f(x))B(x)).
== InvFuns(A;A';f;g) & (u:A. InvFuns(B(u);B'(f(u));F(u);G(u)))
THMone_one_corr_fams_refl
(x:AB(x)) ~ (x:AB(x))
THMdecidable_vs_unique_nsub2
Dec(P (!i:2. if i=0 P else P fi)
THMleast_exists
k:P:{P:(kProp)| i:kP(i) }.
(i:k. Dec(P(i)))  ({i:kP(i) & (j:iP(j)) })
THMleast_exists2
Existence of a least number having a given property.
P:{P:(Prop)| i:P(i) }. 
(i:. Dec(P(i)))  ({i:P(i) & (j:j<i  P(j)) })
defis_one_one_corr
(function f is a one-to-one correspondence)
f is 1-1 corr == g:(BA). InvFuns(A;B;f;g)
defis_permutation
f is permutation on A == f is 1-1 corr
defunion_to_sigma
union_to_sigma(e) == InjCase(ea. <0,a>; b. <1,b>)
defsigma_to_union
sigma_to_union(e) == e/i,u. if i=0 inl(u) else inr(u) fi
definv_pair
(the inverse function pairs between A and B)
AB == {fg:((AB)(BA))| fg/f,g. InvFuns(A;B;f;g) }
THMinv_pair_iff_ooc
((AB))  (A ~ B)
deffin_enum
(the finite enumerations of A)
fin_enum(A) == k:kA
THMfactorial_via_intseg_zero
0!  
THMfactorial_via_intseg_step
k,n:k = n+1  k! = kn 
THMfactorial_via_intseg_step_rw
k:k! = k(k-1)!  
defunboundedly_infinite
(one can find any number of members of A)
Unbounded(A) == k:(k inj A)
defproductively_infinite
(there is an infinite (omega) sequence of distinct members of A)
Infinite(A) == ( inj A)
THMunboundedly_imp_productively_infinite
Infinite(A Unbounded(A)
defDedekind_infinite
Dedekind's formulation of infinite class
(A can be mapped 1-1 into a proper subpart of itself)
Dedekind-Infinite(A) == a:Af:(AA). Inj(AAf) & (x:Af(x) = a)
THMndiff_bound
b,a:b(b -- a)+a
THMeq_mem_is_ax
a,a':Ax:(a = a'). x = *
THMcomp_preserves_inj
Composing injections gives an injection.
Inj(ABg Inj(BCf Inj(ACf o g)
THMcomp_preserves_surj
Composing surjections gives a surjection.
Surj(ABg Surj(BCf Surj(ACf o g)
THMsurjection_type_surjection
f:(A onto B), a:a onto A  (B Discrete)  Surj(ABf)
THMsurjection_type_nsub_surjection
f:(a onto b). Surj(abf)
THMinv_pair_functionality_wrt_one_one_corr
(A ~ A' (B ~ B' ((AB) ~ (A'B'))
THMone_one_corr_fams_trans
One-to-one correspondence between indexed families of classes is transitive.
A:Type, A',A'':Type, B:(AType), B':(A'Type), B'':(A''Type).
(x:AB(x)) ~ (x':A'B'(x'))

(x':A'B'(x')) ~ (x'':A''B''(x''))  (x:AB(x)) ~ (x'':A''B''(x''))
THMcomp_preserves_bij
Composing bijections gives a bijection.
Bij(ABg Bij(BCf Bij(ACf o g)
THMone_one_corr_rel_vs_invfuns
Equivalence of one-one correspondence and existence of inverses
R:(ABProp). 
(1-1-Corr x:A,y:BR(x;y))

(f:(AB), g:(BA).
(InvFuns(A;B;f;g) & (x:Ay:BR(x;y y = f(x) & x = g(y)))
THMcard_split_prod_intseg_family_decbl
(x:A. Dec(P(x)))  ((x:AB(x)) ~ ((x:A st P(x)B(x))(x:A st P(x)B(x))))
THMfinite_choice
Principle of finite choice. The function can be constructed explicitly without appeal to the Axiom of Choice.
k:Q:(kAProp). (x:ky:AQ(x;y))  (f:(kA). x:kQ(x;f(x)))
THMdep_finite_choice
Principle of dependent finite choice. The function can be constructed explicitly without appeal to the Dependent Axiom of Choice.
k:B:(kType), Q:(x:kB(x)Prop).
(x:ky:B(x). Q(x;y))  (f:(x:kB(x)). x:kQ(x;f(x)))
THMinv_funs_2_sym
Being mutual inverses is symmetric.
InvFuns(A;B;f;g InvFuns(B;A;g;f)
THMinvfuns_are_surj
Mutually inverse functions are surjections.
InvFuns(A;B;f;g Surj(ABf) & Surj(BAg)
THMsurjection_type_functionality_wrt_ooc
(A ~ A' (B ~ B' ((A onto B) ~ (A' onto B'))
THMone_one_corr_fams_sym
B:(AType), B':(A'Type).
(x:AB(x)) ~ (x':A'B'(x'))  (x':A'B'(x')) ~ (x:AB(x))
THMfun_with_inv2_is_inj_rev
InvFuns(A;B;f;g Inj(BAg)
THMooc_preserves_dededkind_inf
(A ~ B Dedekind-Infinite(A Dedekind-Infinite(B)
THMinvfuns_are_inj
Mutually inverse functions are injections.
InvFuns(A;B;f;g Inj(ABf) & Inj(BAg)
THMinjection_type_functionality_wrt_ooc
(A ~ A' (B ~ B' ((A inj B) ~ (A' inj B'))
THMfun_with_inv2_is_surj_rev
InvFuns(A;B;f;g Surj(BAg)
THMone_one_corr_is_equiv_rel
EquivRel X,Y:Type. X ~ Y
THMiff_weakening_wrt_one_one_corr_2
(A ~ B (A  B)
THMinhabited_functionality_wrt_one_one_corr
(A ~ B ((A (B))
THMone_one_corr_2_functionality_wrt_one_one_corr
(A ~ A' (B ~ B' ((A ~ B (A' ~ B'))
THMone_one_corr_2_reflex
A ~ A
THMone_one_corr_2_inversion
(A ~ B (B ~ A)
THMone_one_corr_2_transitivity
(A ~ B (B ~ C (A ~ C)
COMone_one_corr_via_bijection
One-to-One Correspondence via Bijection ...
COMone_one_corr_and_bij_thm
One-to-One Correspondence: equivalence of two characterizations. ...
THMinv_funs_2_unique
A function has at most one inverse.
InvFuns(A;B;f;g InvFuns(A;B;f;h g = h
THMleft_inv_of_surj_is_right_inv
A function that cancels a surjection is also cancelled by it.
g:(BA). Surj(ABf (x:Ag(f(x)) = x (y:Bf(g(y)) = y)
THMparallel_conjunct_imp
(A  C (B  D A & B  C & D
THMfun_with_inv2_is_bij
(Proof Gloss)
InvFuns(A;B;f;g Bij(ABf)
THMfun_with_inv2_is_bij_rev
InvFuns(A;B;f;g Bij(BAg)
THMcomp_id_r_version2
f:(AB). f o Id = f  AB
THMcomp_id_l_version2
f:(AB). Id o f = f  AB
THMcomp_assoc_version2
f:(AB), g:(BC), h:(CD). h o (g o f) = (h o g) o f  AD
THMeta_conv_version2
f:(AB). (x.f(x)) = f
THMfun_with_inv_is_bij_version2
f:(AB), g:(BA). InvFuns(A;B;f;g Bij(ABf)
THMbij_imp_exists_inv_version2
Bijections have inverses.
f:(AB). Bij(ABf (g:(BA). InvFuns(A;B;f;g))
THMbij_iff_1_1_corr_version2
(f:(AB). Bij(ABf))  (A ~ B)
THMint_ooc_nat
There are as many non-negative integers as integers.
 ~ 
THMunb_inf_not_fin
Unbounded(A Finite(A)
THMinfinite_imp_nonfinite
Infinite(A Finite(A)
THMooc_preserves_unb_inf
(A ~ B Unbounded(A Unbounded(B)
THMooc_preserves_infiniteness
(A ~ B Infinite(A Infinite(B)
THMbij_iff_1_1_corr_version2a
(f:(AB). Bij(ABf))  (B ~ A)
THMnegnegelim_imp_notfin_imp_unb_inf
(P:Prop. P  P (A:Type. Finite(A Unbounded(A))
THMnsub_not_infinite
k:Infinite(k)
THMabsurd_nonfin_imp_unb_inf
(A:Type. Finite(A Unbounded(A))  (D:Type. (D (D))
THMnonfin_eqv_unb_inf_iff_negnegelim
(A:Type. Finite(A Unbounded(A))  (P:Prop. P  P)
THMabsurd_nonfinite_imp_infinite
(A:Type. Finite(A Infinite(A))  (D:Type. (D (D))
THMnot_nat_occ_natfuns
The infinite sequences of numbers cannot be paired one-to-one with the numbers themselves. (Cantor)
(() ~ )
THMcounting_is_unique
(Proof Gloss)
Any way of counting a finite class produces the same number.
(A ~ m (A ~ k m = k
THMfin_card_vs_nat_eq
a,b:. (a ~ b a = b
THMnat_not_finite
Finite()
THMpartition_type
P:(ABProp). (x:A!y:BP(x;y))  (A ~ (y:B{x:AP(x;y) }))
THMbij_imp_exists_inv2
Bijections have inverses.
f:(AB). Bij(ABf (g:(BA). InvFuns(A;B;f;g))
THMbij_iff_is_1_1_corr
Bijections and one-one correspondence functions are the same.
Bij(ABf f is 1-1 corr
THMone_one_corr_fams_if_one_one_corr_B
(x:AB(x) ~ B'(x))  (x:AB(x)) ~ (x:AB'(x))
THMone_one_corr_fams_if_bij_A
g:(A'A). Bij(A'Ag (x:AB(x)) ~ (x':A'B(g(x')))
THMone_one_corr_fams_indep_if_one_one_corr
(A ~ A' (B ~ B' (:AB) ~ (:A'B')
THMunion_functionality_wrt_one_one_corr
(A ~ A' (B ~ B' ((A+B) ~ (A'+B'))
defseq_nil
Nil(i) == i
defseq_cons
[xxs](i) == if i=0 x else xs(i-1) fi
THMcard_product_swap
(AB) ~ (BA)
THMcard_settype
Bij(AA'f (x:AB(x B'(f(x)))  ({x:AB(x) } ~ {x:A'B'(x) })
THMcard_settype_sq
Bij(AA'f (x:AB(x B'(f(x)))  ({x:AB(x) } ~ {x:A'B'(x) })
THMset_functionality_wrt_one_one_corr_n_pred2
(x:AB(x B'(x))  ({x:AB(x) } ~ {x:AB'(x) })
THMset_functionality_wrt_one_one_corr_n_pred
(x:AB(x B'(x))