injection
1. A {function}, f : A -> B, is injective or
one-one, or is an injection, if and only if
for all a,b in A, f(a) ◦ f(b) ◦> a ◦ b.
I.e. no two different inputs give the same output (contrast
many-to-one). This is sometimes called an embedding. Only
injective functions have left inverses f' where f'(f(x)) ◦ x,
since if f were not an injection, there would be elements of B
for which the value of f' was not unique. If an injective
function is also a {surjection} then is it a {bijection}.
2. An injection function is one which takes
objects of type T and returns objects of type C(T) where C is
some {type constructor}. An example is
f x ◦ (x, 0).
The opposite of an injection function is a {projection}
function which extracts a component of a constructed object,
e.g.
fst (x,y) ◦ x.
We say that f injects its argument into the data type and fst
projects it out.
(1995-03-14)