A line meets a parabola in two points. Two circles in two. A cubic and a line in three. Multiply the degrees of the curves and you get the count.
Except parallel lines meet in zero. A line tangent to a parabola in one. Two disjoint circles in zero. The product rule breaks. The repair is not a footnote — it rewrites what the plane is.
The repair takes three moves. The widget below runs through them.
Three failures of the naive count
Take a line of degree 1 and a parabola of degree 2. Substitute y = mx + c into y = x² and you get a quadratic in x — two roots, two intersections. 1 · 2 = 2. Clean. Now break it three ways: (a) two parallel lines y = x and y = x + 1 — substitute and you get 0 = 1, a contradiction; zero intersections, not the predicted 1 · 1 = 1. (b) The line y = 0 is tangent to y = x² at the origin — they meet at one point, not two. (c) Two disjoint unit circles x² + y² = 1 and (x − 3)² + y² = 1 share zero points, not four.
The product rule is right often enough to look like a theorem, and wrong often enough to look like a guess. Either it's a guess, or the plane is the wrong stage. We take the second option.
Fix #1 — the projective plane
A line is a direction plus an offset. Parallel lines share a direction. Suppose we add a new point to the plane for each direction — call it the point at infinity for that direction. Then any two parallel lines, sharing a direction, share that one extra point. Two non-parallel lines still meet at their usual one place. So every two distinct lines now meet at exactly one point. Add up all the points at infinity (one per direction) and you've added one extra line — the line at infinity. The plane plus that line is the projective plane ℝℙ².
The clean way to write a projective point is [X : Y : Z] — three numbers, not all zero, up to overall scale (so [2 : 2 : 0], [1 : 1 : 0], [5 : 5 : 0] are the same point). Affine (ordinary, finite) points are [x : y : 1]. Points at infinity are [X : Y : 0]: the direction (X, Y). The two parallel lines from §1 both pass through [1 : 1 : 0] — the "direction (1, 1)" point. Failure (a) is fixed.
Fix #2 — multiplicity
A tangent line meets a parabola at one geometric point but a double algebraic point. Substitute y = 0 into y = x²: the equation becomes x² = 0, with x = 0 as a repeated root. Polynomials remember what pictures forget. Define the intersection multiplicity of two curves at a point as the order to which the eliminated polynomial vanishes there. A transverse crossing is multiplicity 1; a simple tangency is 2; a triple tangency 3; and so on. Bezout's count is multiplicity-counted, never raw.
In the widget above, switch to the tangent preset and turn on show multiplicity: the tangent point earns its ×2 label, and the visible 3 jumps to 4. Failure (b) fixed.
Fix #3 — complex coordinates
The disjoint circles x² + y² = 1 and (x − 3)² + y² = 1 seem to meet nowhere. Subtract them: −6x + 9 = 0, so x = 3/2. At that x the first circle gives y² = 1 − 9/4 = −5/4 — no real y, but two perfectly good complex ones: y = ± i √5 / 2. The two circles really do meet at two points (3/2, ± i √5 / 2) — they just live in ℂ², not ℝ².
In the widget, the disjoint preset shows zero real intersections — turn on show complex, and four open dots appear in the side panel: the four Bezout-promised intersections, projected onto the complex x-plane. Failure (c) fixed.
The statement
Three fixes in: projective plane, complex coordinates, multiplicity. The product rule is now a theorem.
Why it works — the resultant
Eliminate one variable. Two polynomials f(x, y), g(x, y), viewed as polynomials in y with coefficients depending on x, share a root iff their resultant in y vanishes. If f has y-degree d and g has y-degree e, the resultant is a polynomial in x of degree d · e — and its d · e complex roots (with multiplicity) are the x-coordinates of the d · e intersections. Two conics: a quartic in x. Four roots. Four intersections. The widget above is exactly this quartic, solved.