Cartesian functions send {A}→{B} with exactly one tail a↦ per a∈{A} connecting to each head ↦b∈{B}.
In other words B has to be equal size or smaller than A.

This is true mapping rings to rings, groups to groups, sets to sets, vector spaces to vector spaces,

… it’s just a property of arrows really.


When mathematicians want to talk about “one-to-many” (using the database lingo) or “multimaps” (some stupid word I heard on Wikipedia which absolutely nobody anywhere ever thought was a good term), though, they’re not left outside.
If you’ve got a bundle of arrows ⇶ with tails from {a₀, a₁, a₂, a₃} ⇶ {b₁₄}, then that’s a bundle of tails all heading to the same place. If you “grab them all by the head”
So when mathematicians want to talk about a multimap, they use a preimage ƒ⁻¹. Let’s say the kernel for example–it’s “everything that gets thrown in the trash”—so if multiple things get thrownin the trash,
(linear subspace / quotient / ring morphism kernel)
So this is how they can associate a bunch of stuff, to one point. For example every point on a manifold gets a tangent space. Maybe this is a vector space for example–which is a lot bigger than just one point.
That would be a problem for 1-to-≥1 functions, so the mathematicians need to turn the arrows around. That’s why they define the projection map π:E→B to send a ton of things e∈E onto that one point b∈B i.e. p∈M.