Week 13   Projective Geometry
Classification of Cubics

© Dana Scott 1993/1997/1998
Notebook  last edited: 30 November 1998

Classifying Singular Cubics

A normal form for cuspidal cubics

Projective equivalence of cuspidal cubics

Curves can look very different when we graph them, but projective transformations (especially those using complex numbers) can show that curves are in fact really the same under a change of coordinate systems.  We treat the cubics with a cusp first.

Theorem.  All cuspidal cubics are projectively equivalent.

Proof:  We know that a cuspidal cubic has one cusp (with a double tangent) and (at least) one inflection point (distinct from the cusp).  Consider such a curve f.  By a projective transformation, we can move the cusp to w and the inflection to v.  Now, consider the two tangents to f at these two points.  These have to be distinct lines.  So we can make another projective transformation leaving v and w fixed and moving the intersection of the tangents to u.

Any point on the double tangent to w, the cusp, has to be a double point of the conic polar, PD[f, w].  Thus, we find PD[f, w u] == 0.  Also, the tangent to the curve at v is a factor of PD[f, v], so u lies on this locus as well.  These considerations give us the following equations about the three points as related to the curve.  We enter them as declarations about the curve and these significant points.

ClearAll[f, u, v, w]; \(f /: DegP[f] = 3; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 
    Nil["f is a cubic"]; 
\(\((w /: # = 0)\)&\)[PD[f, w\^3]]; \ \ \ \ 
    Nil["w is on curve"]; 
\(\((w /: # = 0)\)&\)[PD[f, u\ w\^2]]; \ 
    Nil["w is a double point"]; 
\(\((w /: # = 0)\)&\)[PD[f, v\ w\^2]]; 
    \ 
\(\((v /: # = 0)\)&\)[PD[f, v\^3]]; \ \ \ \ \ 
    Nil["v is on the curve"]; 
\(\((w /: # = 0)\)&\)[PD[f, w\ u\^2]]; \ 
    Nil["u is on tangent at w"]; 
\(\((w /: # = 0)\)&\)[PD[f, w\ u\ v]]; 
    Nil["u dble pt on tangent"]; 
\(\((v /: # = 0)\)&\)[PD[f, v\^2\ u]]; 
    \ \ Nil["u is on tangent at v"]; 

    \(\((v /: # = 0)\)&\)[PD[f, v\ u\^2]]; \ \ 
    Nil["u is on conic polar"]; \)

Let us now see how the curve f behaves with respect to the 10 uvw-monomials:

PD[f,#]&/@Buvw[3]

Good!  All but 2 are zeroed out.   So, to reach a final form, the vectors u and w can be altered by scalar factors using a projective transformation in order to make the two non-zero values shown above anything we please.  (Note, complex numbers may be required for this passage.)

Let us see what we would actually like.  Since the third derivatives of the polynomial essentially give its coefficients, we should try a simple-looking cubic with just two terms:

f = (x^3) - (y^2) z;

What does this do the the monomial basis?

(PD[f, #1]&)/@Buvw[3]

Excellent!  We can make our given, arbitrary cuspidal cubic into this one if we like.  We have thus shown that all these cubics are projectively equivalent.  Q.E.D.

Here, by the way is its degenerate Hessian:

h = Det[MHP[f]]

And the following computation proves there is only one inflection point.

Solve[{f == 0, h == 0, x == 1}, {x, y, z}]

Solve[{f == 0, h == 0, y == 1}, {x, y, z}]

Solve[{f == 0, h == 0, z == 1}, {x, y, z}]

Here is a picture of the real part of these two curves.

ImplicitPlot[{f == 0, x == 0, y == 0} /. z -> 1, {x, -1, 
        3}, {y, -4, 4}, Axes -> None, 
      PlotStyle 
        -> {{Thickness[0.006], Black}, {Thickness[0.006], Red}, {
            Thickness[0.006], Red}}];

We can also peek at part of an imaginary section of the curve.

\(\(ImplicitPlot[\((f /. {y -> I\ y, z -> 1})\) == 0, 

      	{x, \(-3\), 1}, {y, \(-4\), 4}, 
	AxesOrigin -> {0, 0}]; 
    \)\)

We can also bring the infinite points {u, v} down where we can see them by a projective transformation.

\(mm = {{3, 0, 1}, {0, 2, 1}, {0, 0, 1\/10}}; 
\(TP[mm]\)[u]\)TP[mm][v]TL[mm][f] == 0

\(\(ImplicitPlot[{\(TL[mm]\)[f] == 0, \(TL[mm]\)[x] == 0, 
		
          \(TL[mm]\)[y] == 0, \(TL[mm]\)[PD[f, v\^2]] == 0} /. z -> 1, 

      	{x, \(-3\), 5}, {y, \(-2\), 4}, 
	Axes -> None, 
      PlotPoints -> 151, 
      PlotStyle 
        -> {{Thickness[0.006], Black}, {Thickness[0.006], Red}, 

          			{Thickness[0.006], Red}, {Thickness[0.006], Blue}}]; \)\)

The cuspidal cubic as an Abelian group

Here is a parameterization of the standard curve.  There are many excellent properties of this parameterization.  We note that all the points on the curve, save for the cusp w, can be reached by it. (Why?)

\(ClearAll[f]; 
f = x\^3 - y\^2\ z; 
P[a_] := a\ u + v + a\^3\ w; 

    PD[f, P[a]\^3]\)

If we want to accomodate w we would have take a == ComplexInfinity.  Obviously the parametrization is also one-to-one between all (finite) complex numbers and all points on the curve (except for the cusp).

We can show that there is only one point (namely v, given by a == 0) where the Hessian of the conic polar vanishes — just as we expected.  That means this is the only inflection point.  We will call v the zero point of the curve.

Det[MHP[PD[f, P[a]]]]

Suppose P[a], P[b], and P[c] are three points on the curve.  When are they collinear?  Of course, the condition is the vanishing of the following:

Factor[PD[PE[P[a], P[b]], P[c]]]

So we see that the condition is that either two of the points are equal, or that  a + b + c == 0.

Suppose P[(Subscript[a, 1])], P[(Subscript[a, 2])], P[(Subscript[a, 3])], P[(Subscript[a, 4])], P[(Subscript[a, 5])], and P[(Subscript[a, 6])] are six distinct points on the curve.  When do they all lie on a conic?  The condition is that the following quantity should be zero:

Factor[PD[P2P[P[(Subscript[a, 1])], P[(Subscript[a, 2])], P[(Subscript[a, 3])], P[(Subscript[a, 4])], P[(Subscript[a, 5])]], P[(Subscript[a, 6])]^2]]

Pretty amazing!  The condition is that (Subscript[a, 1]) + (Subscript[a, 2]) + (Subscript[a, 3]) + (Subscript[a, 4]) + (Subscript[a, 5]) + (Subscript[a, 6]) == 0.  Hence, if three of these points are collinear, then so are the other three.  If no subtriple is collinear, this will be a non-degenerate conic.

The geometric meaning of the parameterization can also be explained by taking lines from points on the cubic to the cusp.

PE[w, P[a]]

So, the point P[a] makes a line with the origin of slope 1/a.  The intersection of this line with the line y == 1 is at the point with Cartesian coordinates {a, 1}.

PE[PE[w, P[a]], z - y]

So that translates the points on the cubic to points on a line with the parameterizations closely related.

Theorem. Excluding the cusp, all the other points on the cuspidal cubic form a group isomorphic to the additive group of the complex numbers.  The inflection point plays the role of the zero of the group.

Proof:  Let f be any cuspidal cubic, and let n be the inflection point.  The additive group operation can be defined by carrying out the following steps.

(1) Take two points on the curve and join them by a line.  
	(2) Find the third intersection of this line with the cubic.  
	(3) Join this point with the zero point.  
	(4) Find the third intersection of this second line with the curve.  
	(5) That unique point is the answer, called the sum of the two points.

In step (1), we have to use the tangent line to the cubic in case the two given points are equal.  In the case of the inflection point n itself, all the lines are the inflectional tangent, and so the sum of n with itself is again n.  Thus, it is a netural element.

It is also easily seen that the sum with n and any other point p on the curve is p — so n is a zero element as well.

The other group properties are not so easy to see, and we resort to the normal form and the parametric representation of the curve.  Note that the construction of the group operation is given entirely in projective terms and so is completely invariant under projective transformations.  So that means there is no loss of generality in going to the canonical form for the cubic.

What we found in specifying the parametrization P[a] is that 
	(i) it gave in a one-one fashion all points on the curve save for the cusp, 
	(ii) the inflection point was P[0], and 
	(iii) three points P[(Subscript[a, 1])], P[(Subscript[a, 2])], and P[(Subscript[a, 3])]on the curve were collinear if, 	       and only if,  (Subscript[a, 1])+(Subscript[a, 2])+ (Subscript[a, 3]) == 0.  
Hence, steps (1) and (2)  will take us from points P[(Subscript[a, 1])]and P[(Subscript[a, 2])]on the curve to point P[-(Subscript[a, 1])-(Subscript[a, 2])]on the curve.  Then steps (3) and (4) will take us from points P[0]and  P[-(Subscript[a, 1])-(Subscript[a, 2])]on the curve to the point P[(Subscript[a, 1])+(Subscript[a, 2])]on the curve.  Since the correspondence is one to one, this is an isomorphism with the additive group of complex numbers.  Therefore, the geometric construction gives an operation satisfying the group properties.  Q.E.D.

Note that the additive group of complex numbers is torsion free (i.e., whenever k x == 0, then x == 0).  This property (for k == 3) is related to the fact that the cuspidal cubic can have only one inflection point.

A normal form for nodal cubics

Projective equivalence of nodal cubics

Here is the second theorem to be proved.

Theorem.  All nodal cubics are projectively equivalent.

Proof:  A nodal cubic has one node, which is a double point with distinct tangents.  Consider such a curve f.

By a projective transformation, we can move the node to w.  Now consider the two tangents at w.  These have to be distinct lines.  So we can make another projective transformation bringing u and v to these two tangents, one on each.  These considerations give us the following five equations about these points as related to the curve:

ClearAll[f, u, v, w]; \(f /: DegP[f] = 3; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 
    Nil["f is a cubic"]; 
\(\((w /: # = 0)\)&\)[PD[f, w\^3]]; \ \ \ 
    Nil["w is on the cubic"]; 
\(\((w /: # = 0)\)&\)[PD[f, u\ w\^2]]; 
    Nil["w will be a dble pt"]; 
\(\((w /: # = 0)\)&\)[PD[f, v\ w\^2]]; 
    Nil["ditto"]; 
\(\((w /: # = 0)\)&\)[PD[f, w\ u\^2]]; 
    Nil["u on the conic polar"]; 
\(\((w /: # = 0)\)&\)[PD[f, w\ v\^2]]; 
    Nil["v on the conic polar"]; \)

Let us now see how the curve f behaves with respect to the 10 uvw-monomials:

(PD[f, #1]&)/@Buvw[3]

Unfortunately, this does not as yet give enough zeros.  Note that the results above would not change if we replaced u and  v by other points on the two tangents at w.  Thus, consider replacing u by u  +  a w and v by v + b w:

PD[f, (v + b w) (((u + a w))^2)]

PD[f, (u + a w) (((v + b w))^2)]

Clearly, then, there would be values of a and b that would make these zero.  Thus, via projective transformations we can assume these additional equations:

\(\(\((v /: # = 0)\)&\)[PD[f, v\ u\^2]]; \ \ 
    Nil["v on tangent at u"]; 
\(\((v /: # = 0)\)&\)[PD[f, u\ v\^2]]; 
    \ \ Nil["u is on tangent v"]; \)

Now, let us see how things look:

(PD[f, #]&)/@Buvw[3]

Good!  All but 3 are now zeroed out.   So, as a final step, we remark that the vectors u, v, and w can be altered by scalar factors to make the three non-zero values anything we please.  Let us see what we would like have best.  Here is the obvious kind of cubic:

f = (x^3) + (y^3) - 6 x y z; \(\(ImplicitPlot[{f == 0} /. z -> 1, 

      	{x, \(-4\), 4}, {y, \(-4\), 4}, 
	AxesOrigin -> {0, 0}, 
      PlotPoints -> 70, PlotStyle -> {Thickness[0.006]}]; \)\)

What does this do the the monomial basis?

(PD[f, #1]&)/@Buvw[3]

Excellent!  We can make our given, arbitrary nodal cubic into this one if we like.  Q.E.D.

Here, by the way is its Hessian (with a numerical factor eliminated):

h = Det[-MHP[f]/6]

This is a similar curve sharing the same double point and with the same tangents there:

\(\(ImplicitPlot[{f == 0, h == 0} /. z -> 1, 

      	{x, \(-4\), 4}, {y, \(-4\), 4}, 
	PlotPoints -> 100, 
	
      AxesOrigin -> {0, 0}, 
      PlotStyle 
        -> {{Thickness[0.006], Black}, {Thickness[0.006], Red}}]; \)\)

We can see that w is indeed a double point of both the curve and the Hessian.

{PD[f, w], PD[h, w]}

The most obvious inflection point is  u - v with tangent line x + y + 2 z:

{PD[f, (((u - v))^3)], PD[h, (((u - v))^3)]}

{Factor[PD[f, u - v]], Factor[PD[h, u - v]]}

The other inflection points use the other complex cube roots of -1.  They also lie on the line at infinity.

TableForm[Solve[{f == 0, h == 0} /. x -> 1, {y, z}]]

We can write these easier in a symbolic form.

a = (((-1))^(1/3));

Of course we know  a == (1/2) (1 + I (Sqrt[3])).

Here are the three inflection points and the double points of the conic polars.

\({p\_1, p\_2, p\_3} = {u - v, u + a\ v, a\ u + v}; {r\_1, r\_2, r\_3} = {
        u + v - w, a\^2\ u + v + a\ w, u + a\^2\ v + a\ w}; 


    \((PD[f, #1\^3]&)\)/@{p\_1, p\_2, p\_3} == 
      \((PD[h, #1\^3]&)\)/@{r\_1, r\_2, r\_3} == 
      ExpandAll[{PD[f, p\_1\ r\_1], PD[f, p\_2\ r\_2], 
          PD[f, p\_3\ r\_3]}] == {0, 0, 0}\)

The three inflection points are collinear, and the line joining two double points always passes through one of the inflection points.

\(Det[MP[{p\_1, p\_2, p\_3}]] == 
	Det[MP[{p\_1, r\_2, r\_3}]] == 
	
      Det[MP[{p\_2, r\_1, r\_3}]] == 
	Det[MP[{p\_3, r\_1, r\_2}]] == 0\)

The only problem with these nice algebraic formulae is that they involve complex numbers and cannot be seen directly.  What we can do, however, is to map the inflection points to real points and then graph the transform of the curve.  Here is one transformation that could be used.

\(tt = 
      FullSimplify[
        MQP[{p\_1, p\_2, r\_1, r\_2}, {w, u + w, 2\ v + w, 2\ u + v + w}]]; 

    MatrixForm[tt]\)

That is not such a messy matrix!  Here is the transform of the polynomial f.

g = Tidy[2 TL[tt][f]]

Here is the Hessian of the curve.

k = Tidy[(1/864) Det[MHP[g]]]

We now graph them together.

\(\(ImplicitPlot[{g == 0, k == 0} /. z -> 1, 

      	{x, \(-4\), 6}, {y, \(-4\), 4}, PlotPoints -> 100, 
      AxesOrigin -> {0, 0}, 
      PlotStyle 
        -> {{Thickness[0.007], Black}, {Thickness[0.007], Red}}]; \)\)

The three inflection points are apparent, and the three double points of the conic polars can be imagined.  For example, here is one of those points.

Tidy[FullSimplify[Tidy[(1/5) TP[tt][(Subscript[r, 3])] 2]]]

Perhaps, there is a slight mystery as to what has happened to the double point of the original curve.  Here it is:

d = Tidy[(1/16) TP[tt][w] 9 ((2/3) + ((2 I)/(Sqrt[3])))]

But it is real!  Is this correct?  We need to check for this being a double point of the curve (and the Hessian).

ExpandAll[{PD[g, (d^2)], PD[k, (d^2)]}]

Well it satisfies the tests.  But it does not show up as a double point in the picture.  Why?

The reason is that it is the only real point on a complex branch of the curve g, and so it is "passing through" the real plane at just one point.  The ImplicitPlot program does not plot single points, and so we cannot see it.  But it is there on the curve.  The same remarks apply to the Hessian.

Another proof that all nodal cubics are projectively equivalent: The plan of this proof is to make projective transformations until the general polynomial is in a canonical form.  Here is a general cubic to start with:

\(ClearAll[a, cubic, Subscript]; 

    cubic = Bxyz[3] . {a\_1, a\_2, a\_3, a\_4, a\_5, a\_6, a\_7, a\_8, a\_9, 
          a\_10}\)

We want w to be a node for this curve, since wherever the node is it can be transformed to the origin.  The condition for the node is:

PD[cubic, (w^2)] == 0

This linear form can only vanish when the three coefficients vanish.  Let us make this assignment and look again at the form of the cubic:

{(Subscript[a, 8]), (Subscript[a, 9]), (Subscript[a, 10])} = {0, 0, 0}; cubic

There are two tangents at the node.  We can make an aditional transformation to make the two tangents to be the lines x and y.  First we want to see what the tangents look like:

PD[cubic, w]

For this to factor into a multiple of  x y the outer coefficients must be zero.

{(Subscript[a, 5]), (Subscript[a, 7])} = {0, 0}; cubic

Note that the mixed terms have a common factor:

Factor[%[[2]] + %
          [[3]] + %[[5
          ]]]

We can make a projective transformation that leaves x and y fixed but takes x (Subscript[a, 2]) + y (Subscript[a, 3]) + z (Subscript[a, 6]) to z.  This would reduce the cubic to:

cubic = %%[[1]] + %%
          [[4]] + x y z

Using appropriate dilations along the x-and y-axes, we can get rid of the two remaining coefficients:

\(cubic = 
      cubic /. {x -> x\/a\_1\%\(1/3\), y -> y\/a\_4\%\(1/3\), 
          z -> a\_1\%\(1/3\)\ a\_4\%\(1/3\)\ z}\)

We have thus shown that every nodal cubic is projectively equivalent to this specific curve.  Hence, they are all projectively equivalent.  Q.E.D.

The nodal cubic as an Abelian group

Consider our standard nodal cubic:

\(ClearAll[f, a, Subscript]; 
f = x\^3 + y\^3 - 6\ x\ y\ z; \)

The following is its rational parameterization(obtained by a method discussed previously):

\(P[a_] := 6\ a\ u + 6\ a\^2\ v + \((1 + a\^3)\)\ w; 

    Expand[PD[f, P[a]\^3]]\)

We can find a nice condition in terms for the parameterization for three points on the curve to be collinear:

Factor[PD[PE[P[(Subscript[a, 1])], P[(Subscript[a, 2])]], P[(Subscript[a, 3])]]]

This is zero for distinct points just in case (Subscript[a, 1]) (Subscript[a, 2]) (Subscript[a, 3]) == -1.  Note the following point on the curve:

Tidy[P[1]/2]PD[f, P[1]^3]

We call this the unit point.  Here is the condition for points to be collinear with it:

Factor[PD[PE[P[(Subscript[a, 1])], P[(Subscript[a, 2])]], P[1]]]

This algebra suggests looking at the point P[I] and and the tangent at that point.

P[I]t = Tidy[Last[Factor[PD[f, P[I]^2]]]]

It seems likely that the point P[1] lies on this tangent.  A similar conclusion would hold for the tangent at P[-I].

PD[t, P[1]]

Are there any other tangents at P[1]?  To answer this question, we have to find the envelope of the curve.

e = Envel[f]

It is of the 4th degree, and the point P[1] is "tangental".

Factor[Expand[PD[PD[f, P[1]^2]^3, e]]]

So the pencil at that point cuts the dual curve twice.  Hence, there are only three tangents possible at the point (one of them being counted twice).

And here is the condition for six points on the curve to lie on a conic.

Factor[PD[P2P[P[(Subscript[a, 1])], P[(Subscript[a, 2])], P[(Subscript[a, 3])], P[(Subscript[a, 4])], P[(Subscript[a, 5])]], P[(Subscript[a, 6])]^2]]

That took a little time, but the result is great! Namely,  (Subscript[a, 1]) (Subscript[a, 2]) (Subscript[a, 3]) (Subscript[a, 4]) (Subscript[a, 5]) (Subscript[a, 6]) == 1 is the condition for distinct points P[(Subscript[a, 1])], P[(Subscript[a, 2])], P[(Subscript[a, 3])], P[(Subscript[a, 4])], P[(Subscript[a, 5])], P[(Subscript[a, 6])]on the cubic to lie on a conic.

Theorem.  Excluding the one parameter value a == 0 (which corresponds to the node w), all the other points on the nodal cubic form a group isomorphic to the multiplicative group of the non-zero complex numbers.

Proof:  The group operation can be defined as follows:  Take two points on the curve.  Join them by a line.  Find the third intersection of this line with the cubic.  Join this point with the unit point.  Find the third intersection of this second line with the curve.  That point is the answer, called the product of the two points.  (This is exactly the same procedure as we carried out for the cuspidal cubic — except we are using a different curve with a different shape and, so, get a different structure.)

The proof that the operation just defined corresponds to multiplication via the parameterization uses the results above characterizing the collinear points on the curve.  In particular, we note that the two triples of points
	{P[a], P[b], P[-(1/a) . b]} and {P[a b], P[1], P[-(1/a) . b]}
are always collinear triples.  That shows how to get from P[a] and P[b] to their "product" according to the geometric construction.  Q.E.D.

By the way, the line joining P[a] on the curve to the origin w has slope a.

ClearAll[a]; Factor[PE[w, P[a]]]

We of course know that the multiplicative group of complex numbers has non-trivial cube roots,  because the equation (z^3) == 1 has non-trivial solutions.  (The technical term is that the group has torsion.)  On the other hand, the additive group has no non-trivial solutions to the equation 3 z == 0.  Therefore, the group structures of the nodal cubic and the cuspidal cubic are definitely non isomorphic.  (And so this is another reason those two curves are not projectively equivalent.)  As we discussed earlier, the solutions to (z^3) == -1 correspond to the three inflection points.

Since the cubic has been made into a group, we can look at some of its subgroups.  Here is a portion of one.

\(grp = Table[P[2\^\(i/3\)], {i, \(-15\), 15}]; 
\(pict = Draw[grp]; 
    \)\)

The points are arranged arount the top bow of the curve.  If we continued the exponents to hogher powers, the points would converge to the double point but not reach it.  From the recipe for making the group operation, we can derive some interesting configurations.  For example, let us join some of the points in the subgroup together in a systemetic way and then graph the results.

\(\(lines = {
        N[PE[grp[[3]], 
              grp[[15]]]] == 0, 
        N[PE[grp[[4]], 
              grp[[14]]]] == 0, 
        N[PE[grp[[5]], 
              grp[[13]]]] == 0, 
        N[PE[grp[[6]], 
              grp[[12]]]] == 0, 
        N[PE[grp[[7]], 
              grp[[11]]]] == 0, 
        N[PE[grp[[8]], 
              grp[[10]]]] == 0, 
		
        N[PD[f, grp[[9]]\^2]] == 0, 

        		N[PE[grp[[7]], 
              grp[[18]]]] == 0, 
        N[PE[grp[[8]], 
              grp[[17]]]] == 0, 
        N[PE[grp[[9]], 
              grp[[16]]]] == 0, 
        N[PE[grp[[10]], 
              grp[[15]]]] == 0, 
        N[PE[grp[[11]], 
              grp[[14]]]] == 0, 
        N[PE[grp[[12]], 
              grp[[13]]]] == 0}; \)\)

\(\(ImplicitPlot[Join[lines, {f == 0}] /. z -> 1, 

      	{x, \(-4\), 4}, {y, \(-4\), 4}, AxesOrigin -> {0, 0}, 
      PlotPoints -> 70, 
      PlotStyle 
        -> {{Thickness[0.007], Blue}, {Thickness[0.007], Blue}, {
            Thickness[0.007], Blue}, {Thickness[0.007], Blue}, {
            Thickness[0.007], Blue}, {Thickness[0.007], Blue}, {
            Thickness[0.007], Blue}, {Thickness[0.007], Green}, {
            Thickness[0.007], Green}, {Thickness[0.007], Green}, {
            Thickness[0.007], Green}, {Thickness[0.007], Green}, {
            Thickness[0.007], Green}, {Thickness[0.008], Black}}]; \)\)

We get two pencils of lines with their centers lying on the curve.  Note that we could keep drawing this grid using the lines already drawn in to start and by finding intersections with the curve.  This suggests that there is a crossratio result involved, and indeed any four consecutive points in any such subgroup make a constant crossratio.

RL[PE[w, P[(a^n)]], PE[w, P[(a^(n + 1))]], PE[w, P[(a^(n + 2))]], 
      PE[w, P[(a^(n + 3))]]]

Classifying Non-singular Cubics

Normal forms for non-singular cubics

The three normal forms

There are three theorems about normal forms producing simple but rather different- looking equations.  We will need to examine the relationships between them.

Theorem.  Every non-singular cubic is projectively equivalent to one defined by an equation of the form:
			(y^2) z == x (x - z) (x - e z),	
where e is neither 0 nor 1.

Theorem.  Every non-singular cubic is projectively equivalent to one defined by an equation of the form:
			(y^2) z == 4 (x^3) - x (z^2) (Subscript[g, 2]) - (z^3) (Subscript[g, 3]),
where (Subscript[g, 2]^3) - 27 (Subscript[g, 3]^2) is not 0.

Note:  The choice of notation here is related to the use of the Weierstraß ℘ function and the parameterization of cubics.  This function is described in lecture notebook 15.

Theorem.  Every non-singular cubic is projectively equivalent to one defined by an equation of the form:
			(x^3) + (y^3) + (z^3) == 3 k x y z,
where (k^3) is not 1.

The first normal form

Proof of the theorem:  To understand the condition imposed on e, we rewrite the normal-form polynomial as follows in order to see the coefficients:

ClearAll[f, g, h, Subscript]f = Tidy[(y^2) z - x (x - z) (x - e z)]

Of course, the original form was chosen so we could see that the curve must intersect the x-axis where x == 0 or x == 1 or x == e.  We are making sure these three intersections are distinct by the condition on e.  Note that, in the expanded form, the pair of coefficients {(1 + e), -e} sum to 1, and the pairs {2, -1} and {1, 0} are the ones excluded.

Here is the Hessian curve:

h = Tidy[(1/8) Det[MHP[f]]]

Unfortunately, it is hard to see off hand whether this curve is singular or not.

Returning to the general curve, we recall that a non-singular cubic has no double points and (we hope) nine (distinct) inflection points.  Consider such a curve (Subscript[f, 0]).

Comment.  Strictly speaking, at the outset of the discussion all we need is the existence of one inflection — and we have that, because the non-zero Hessian must intersect the curve at least once.  When we get the right normal form and see that the Hessian has no double points, then we will know there have to be nine inflections.

Let one inflection point of the curve (Subscript[f, 0]) be the point p.  We know that the conic polar PD[(Subscript[f, 0]),p] at that point degenerates into two distinct lines, one of which is the tangent to the curve.  Let q be the double point of the conic polar (which means that the derivative PD[(Subscript[f, 0]), p q] == 0).  The point q will not be on the cubic, since the only point on the curve also on the tangent has to be p itself.  (Why?)

Now the conic polar hits the curve at the points of tangency of the tangents drawn from p, so (aside from p) there should be  three of these, all collinear with with q.  (Why?)  If two of these points were equal (say, at a point r on the intersection of the conic polar and the cubic), then the line joining q and r would be tangent to the curve.  This would mean we would have
	PD[(Subscript[f, 0]), p (r^2)] == PD[(Subscript[f, 0]), q (r^2)] == PD[(Subscript[f, 0]), r (r^2)] == 0.
But then, because the three points p, q, and r are independent, PD[(Subscript[f, 0]),(r^2)]==0 would follow, which is impossible because the curve does not have a double point.

Let r be one of the intersection points (and keep in mind there are two others, with all three distinct).  By a suitable projective transformation, we can move {p,  q,  r} to {u,  v,  w}.  The other two intersections of the conic polar to the inflection point are then along the x-axis.  One of the other points can be made into u + w by an additional projective transformation leaving u, v, w fixed as points (not as vectors, of course).   Finally the third intersection can be notated as e u + w, where e ≠ 0 and e ≠ 1.  (Why?)  Let us call the transformed curve (Subscript[f, 1]).

Comment.  We remark that the crossratio of the points u, w, u + w, and e u + w is simply e itself.  This number (or more precisely the six numbers generated from it by permuting the four points and taking crossratios) will be shown to be the projective invariant of the curve among non-singular cubics.  The reason is that this ratio is determined by the tangent at the inflection point and the three other tangents from that point.  The key observation here is that the same set of ratios is determined at each of the nine inflection points.  That is how we get a projective invariant.  (Why?)

These considerations about the convenient placing of points give us in the first place six equations about thes points {u, v, w} as related to the transformed curve:
	Equation			   Meaning
(1)	 PD[(Subscript[f, 1]), (v^3)] == 0		    "v is on the cubic"
(2)	 PD[(Subscript[f, 1]), (w^3)] == 0		    "w is on the cubic"
(3)	 PD[(Subscript[f, 1]), u (v^2)]==0      	    "u is on the tangent at v"
(4)	 PD[(Subscript[f, 1]), (u^2) v] == 0	    "u is on the conic polar of v"
(5)	 PD[(Subscript[f, 1]), u v w] == 0	    "u becomes double point of conic polar"
(6)	 PD[(Subscript[f, 1]),v (w^2)]==0	    "v is on the tangent at w"

The import of equations (3)–(5) is to make PD[(Subscript[f, 1]), u v] == 0.  (Why?)  And, these conditions are enough to make all points a u + b v on the line z lie on the conic polar PD[(Subscript[f, 1]), v].

Now (Subscript[f, 1]) starts out as a cubic polynomial, which in general can be given the following general form.

(Subscript[f, 1]) = {(Subscript[a, 1]), 3 (Subscript[a, 2]), 3 (Subscript[a, 3]), (Subscript[a, 4]), 3 (Subscript[a, 5]), 6 (Subscript[a, 6]), 3 (Subscript[a, 7]), 
          3 (Subscript[a, 8]), 3 (Subscript[a, 9]), (Subscript[a, 10])} . Bxyz[3]

But this polynomial has to annihilate these six monomials as remarked above.

(PD[(Subscript[f, 1]), #]&)/@{(u^2) v, u (v^2), (v^3), u v w, v (w^2), (w^3)}

Of course!  It means that the corresponding coefficients vanish.  So, this is what (Subscript[f, 1])has to be:

(Subscript[f, 1]) = {(Subscript[a, 1]), 0, 0, 0, 3 (Subscript[a, 5]), 0, 3 (Subscript[a, 7]), 3 (Subscript[a, 8]), 0, 0} . 
        Bxyz[3]

Now, (Subscript[a, 1]) cannot be zero, since otherwise the polynomial would factor.  So, by a projective transformation, we can assume (Subscript[a, 7]) == -((Subscript[a, 1])/3), because that is the only term involving y.  (Why?)  We can thus transform the polynomial to:

(Subscript[f, 2]) = {(Subscript[a, 1]), 0, 0, 0, 3 (Subscript[a, 5]), 0, -(Subscript[a, 1]), 3 (Subscript[a, 8]), 0, 0} . 
        Bxyz[3]

Now we can divide through by -(Subscript[a, 1]) and rename the other coefficients:  Thus, every non-singular cubic can be transformed into equivalent to this:

\(ClearAll[a, b, e]; 

    f\_3 = {\(-1\), 0, 0, 0, a, 0, 1, b, 0, 0} . Bxyz[3]\)

However, we must remember that the original cubic was transformed to pass through two other points points on the x-axis.  Let us find the values of a and b that make this true.

sol = 
      Solve[{PD[(Subscript[f, 3]), (((u + w))^3)] == 0, 
          PD[(Subscript[f, 3]), (((e u + w))^3)] == 0}, {a, b}]

We then rewrite the polynomial for the last time.

(Subscript[f, 3]) = (Subscript[f, 3]) /. sol[[1]]

And this is the result we wanted.  Q.E.D.

Here is a way to generate pictures.

\(\(ImplicitPlot[0 == f\_3 /. {z -> 1, e -> \(-2\)}, 

      	{x, \(-3\), 3}, {y, \(-3\), 3}, 
	AxesOrigin -> {0, 0}, 
      PlotPoints -> 50, PlotStyle -> {Thickness[0.006]}]; \)\)

\(\(ImplicitPlot[0 == f\_3 /. {z -> 1, e -> 3}, 

      	{x, \(-3\), 4}, {y, \(-3\), 3}, 
	AxesOrigin -> {0, 0}, 
      PlotPoints -> 50, PlotStyle -> {Thickness[0.006]}]; \)\)

And note the following crossratio.

RP[u, w, u + w, 3  u + w]

In the course of the proof, we came across an intermediate form.  So, we ask:

Question.  Is a cubic of the form -(x^3)+α (x^2) z+(y^2) z+β x (z^2) ever singular?

Answer: If both α == β == 0, we already know the cubic is singular.  We can attack the more general question of the double point directly.

ClearAll[g];
g=-(x^3)+α (x^2) z+(y^2) z+β x (z^2);
trial = PD[g, (((a u  +  b v  + c w))^2)] // Tidy

Hmmmm.  For that to be the 0 form, either b or c has to be 0.  If they both vanish the point we are trying make a double point is just equivalent to u.  And:

PD[g, (u^2)]

We see it is never a double point.

Case 1.  Suppose b == 0.  We can assume c == 1.  (Why?)  So, we try to see when the remaining coefficients could possibly be 0.

Eliminate[{(2 (b^2) + 2 (a^2) α + 4 a c β) == 0,  
        (-6 (a^2) + 4 a c α + 2 (c^2) β) == 0, 
        b == 0, c == 1}, {a, b, c}]

Assuming we can trust Mathematica, it looks as though β == 0 or β == -((α^2)/4) are the only posibilities.  In the first case we have an obvious double point:

\(g /. β -> 0
				\)PD[%, (w^2)]

In the second case, we have to do more work.

\(g /. {β -> \(-\(α\^2\/4\)\)}
				\)PD[%, (((a u  + w))^2)] // Tidy

Since α is not 0 (Why?), neither can a == 0, if this is to be the 0 form.  (Why?)  From the vanishing of the second coefficient we see a == (α/2).  Does this kill the first coefficient?

-6 (a^2) + 4 a α - ((α^2)/2) /. {
        a -> (α/2)}

Yes.  Whew!!

Case 2.  Suppose c == 0.  We can assume b == 1.  (Why?)  So, we try to see when the remaining coefficients could possibly be 0.

Eliminate[{(2 (b^2) + 2 (a^2) α + 4 a c β) == 0,  
        (-6 (a^2) + 4 a c α + 2 (c^2) β) == 0, 
        c == 0, b == 1}, {a, b, c}]

No solutions!  Do we believe it?  Hmmm.  Yes, it is obvious.  (Why?) Whew!!!!  Q.E.F.

So we have proved:

Theorem.  A cubic of the form -(x^3)+α (x^2) z+(y^2) z+β x (z^2) is singular if, and only if,  β == 0 or (α^2)+4β==0.

And note that in each of the two cases we identified the double point.

The second normal form

Proof of the theorem:  The second version of the normal form uses a projective transformation from a previous type of cubic of the crossing points on the x-axis by means of a carefully chosen translation together with a change of scale on the y axis.  First we give the general form of the matrix of such a transformation:

\(ClearAll[a, b, c, d, e, f, g, M, Subscript]; 

    M = MQP[{w, u + w, v + w, v + u + w}, 

        		{a\ u + b\ w, \((1 + a)\)\ u + b\ w, c\ v + a\ u + b\ w, 
          c\ v + \((1 + a)\)\ u + b\ w}]; 
M // MatrixForm\)

Then, by "intuiting" the right substitutions for a and c and by multiplying M by a scalar, we simplify (Subscript[f, 1]).  Clearly, the parameter b is not 0 if M is to be non singular.

\(f\_1 = \(-x\^3\) + \((1 + e)\)\ x\^2\ z + y\^2\ z - e\ x\ z\^2; 

    f\_2 = Map[Factor, 
        Tidy[\(TL[M\/2\^\(2/3\)]\)[f\_1] /. {
              a -> \(-\(1\/3\)\)\ \((1 + e)\), c -> 2\/\@b}], {2}]
        \)

Now, we can simplify the first coefficient involving b by solving this equation for e:

Solve[4 (1 - e + (e^2)) == 3 (b^2) (Subscript[g, 2]), {e}]

Let us try one of these substitutions and some algebra:

(Subscript[f, 2]) = 
      Map[Factor, 
        Tidy[Together[
            (Subscript[f, 2]) /. e -> 
                (1/2) (1 + (Sqrt[3]) (Sqrt[-1 + (b^2) (Subscript[g, 2])]))]], {2}]

Amazing!   It is the same polynomial with a use of different names for part of the coefficients: we got rid of any mention of e and confined b to the one coefficient.  The question is whether that last coefficient can become any other number (Subscript[g, 3])with a suitable choice of b?   Mathematica's algebra, unfortunately, is rather too much of a black box to be able to see exactly how the conclusion is reached.  For instance, if we ask whether b can be eliminated from the following equation, we find:

Eliminate[{
        (((-4 + (b^2) (Subscript[g, 2])) (Sqrt[-1 + (b^2) (Subscript[g, 2])]))/(3 (Sqrt[3]) 
              (b^3))) == (Subscript[g, 3])}, {b}]

we get a go-ahead.  But, when we try to see the solution, we get very long expressions:

Solve[
      (-4 + (b^2) (Subscript[g, 2])) 
          (Sqrt[-1 + (b^2) (Subscript[g, 2])])/(3 (Sqrt[3]) (b^3)) == (Subscript[g, 3]), {b}]

These six solutions are hard to interpret.  In particular, it looks as though the quantity (Subscript[g, 2]^3) - 27 (Subscript[g, 3]^2) has to be non zero.  We have to find a way to check up on this in another context.

So we conclude — somewhat by faith, alas — that by a suitable choice of b and e the normal form can be made into the following polynomial:

(Subscript[f, 3]) = {-4, 0, 0, 0, 0, 0, 1, (Subscript[g, 2]), 0, (Subscript[g, 3])} . Bxyz[3]

As an equation for a cubic, we usually write:

(y^2) z == (y^2) z - (Subscript[f, 3])

Intermediate Question.  Could such a cubic be singular?

Answer:  We had best make a direct attack again.

check = Tidy[PD[(Subscript[f, 3]), (((a u + b v + c w))^2)]]

Case 1.  We try b == 0 and c == 1.

check /. {b -> 0, c -> 1}

Eliminate[{ (-24 (a^2) + 2 (Subscript[g, 2])) == 0,  
        (4 a (Subscript[g, 2]) + 6 (Subscript[g, 3])) == 0}, {a}]

Ah, that looks familiar!

Case 2.  We try b == 1 and c == 0.

check /. {b -> 1, c -> 0}

Never vanishes!  The investigation is complete.  Singularity happens only when (Subscript[g, 2]^3) - 27 (Subscript[g, 3]^2) is 0.  Q.E.D.

Here is something else we should ask.

Question.  Can we get any better information about the Hessian?

Answer:  All we can do is to try.  Here is the Hessian:

(Subscript[h, 3]) = Tidy[-(1/8) Det[MHP[(Subscript[f, 3])]]]

Here is the dual curve (= envelope):

(Subscript[d, 3]) = Envel[(Subscript[f, 3])]

Case 1.  If (Subscript[g, 2]) == 0, then the Hessian factors into three non-concurrent lines.

-12 x (y - (Sqrt[3]) z (Sqrt[(Subscript[g, 3])])) (y + (Sqrt[3]) z (Sqrt[(Subscript[g, 3])])) // Expand

Here are the intersections.

\(PE[\ x, \ \((y - \@3\ z\ \@g\_3)\)]
\)\(PE[\ x, \ \((y + \@3\ z\ \@g\_3)\)]
\)PE[ y - (Sqrt[3]) z (Sqrt[(Subscript[g, 3])]),  (y + (Sqrt[3]) z (Sqrt[(Subscript[g, 3])]))]

But none of the lines is a tangent!  (Why?  Look:)

\(\((PD[#\^6, d\_3]&)\)/@{\(-12\)\ x, y - \@3\ z\ \@g\_3, 
          y + \@3\ z\ \@g\_3} /. g\_2 -> 0\)

And none of the intersections is on the curve.

\(\(PD[f\_3 /. g\_2 -> 0, #\^3]&\)\ /@
      \ {w + \@3\ v\ \@g\_3, w - \@3\ v\ \@g\_3, 
2\ \@3\ u\ \@g\_3}\)

Ha, ha!  The curve must have 9 inflection points!

Case 2.  If (Subscript[g, 2]) is non zero, then we projectively transform the Hessian.

\(Tidy[
      \(-\(h\_3\/g\_2\%2\)\) /. {x -> g\_2\ z, z -> x, 
          y -> \(\@g\_2\ y\)\/\@12}]\)

Ho,ho!  Now, we proved earlier that a cubic of the form -(x^3) + (y^2) z + (x^2) z α + x (z^2) β is singular if, and only if,  β == 0 or (α^2)+4β==0.  Since (Subscript[g, 2]) is non zero, we need only check the vanishing of:

(α^2) + 4 β/.{α->-((36  (Subscript[g, 3]))/(Subscript[g, 2])),β -> -12 (Subscript[g, 2])}//Factor

Rah! Rah! Rah!  We already know why it is nonzero, so the Hessian is non singular!  Q.E.F.

Therefore, by investigating normal forms we have proved a key conclusion:

Theorem.  The non-singular cubic always has nine inflections.

One other thought:

Question.  Just to be sure, should we not ask whether we can  get back from the second normal form to the first?

Answer:  To follow the backward path, we need to compare the polynomial:
	-4 (x^3) + (y^2) z + x (z^2) (Subscript[g, 2]) + (z^3) (Subscript[g, 3])
to the polynomial we found by transformation above:
	-4 (x^3) + (y^2) z + 
          ((4 (1 - e + (e^2)) x (z^2))/(3 (b^2))) + 
          ((4 (-2 + e) (1 + e) (-1 + 2 e) 
              (z^3))/(27 (b^3)))

We find that we need is to have:
4 (1 - e + (e^2)) == (b^2) 3 (Subscript[g, 2]) and 4 (-2 + e) (1 + e) (-1 + 2 e) ==  
          (b^3) 27 (Subscript[g, 3]).
Let us eliminate b from this equation.

ClearAll[e];
equ=
Factor/@Eliminate[{4 (1 - e + (e^2)) == (b^2) 3 (Subscript[g, 2]) , 4 (-2 + e) (1 + e) 
                        (-1 + 2 e) ==  (b^3) 27 (Subscript[g, 3])},{b}]

That is not so bad.  This 6th-degree equation allows us to solve for e in terms of the coefficients (Subscript[g, 2]) and (Subscript[g, 3]).  We can try to find out how such solutions should look with a slightly simpler notation.

ans = 
      Solve[(((-2 + e))^2) (((1 + e))^2) (((-1 + 2 e))^2) r == 
          108 (((1 - e + (e^2)))^3) s, {e}]

Ugh!  We look at the solution without I in hopes the algebra is better.

(Subscript[e, 1]) = Together[e /. ans[[5]]]

By looking at the various parts of this expression, we find many can factor.  So, we can make a replacement (possibly by running this command twice).

(Subscript[e, 1]) = 
      (Subscript[e, 1]) /. {-(r^5) s + 81 (r^4) (s^2) - 2187 (r^3) (s^3) + 
              19683 (r^2) (s^4) -> -(r^2) (((r - 27 s))^3) s, 
          (r^4) - 567 (r^3) s + 8748 (r^2) (s^2) + 157464 r (s^3) -> 
            r (r - 27 s) ((r^2) - 540 r s - 5832 (s^2)), 
          (r^2) - 54 r s + 729 (s^2) -> (((r - 27 s))^2), 
          5 (r^2) - 27 r s - 2916 (s^2) -> 
            (r - 27 s) (5 r + 108 s), 
          (r^3) + 189 (r^2) s - 5832 r (s^2) -> 
            r (r - 27 s) (r + 216 s), 
          (r^3) - 540 (r^2) s - 5832 r (s^2) -> 
            r ((r^2) - 540 r s - 5832 (s^2))}

Still not too good.  We can introduce an abbreviation to shorten things.

(Subscript[e, 1]) = (Subscript[e, 1]) /. {(r^2) - 540 r s - 5832 (s^2) -> t}

What is under the one radical factors.

(-1152 (Sqrt[-(r^2) (((r - 27 s))^3) s]) 
            ((Sqrt[3]) r - 27 (Sqrt[3]) s) - 48 r (r - 27 s) t - 
          48 r (r - 27 s) (r + 216 s) 
            (((24 (Sqrt[3]) (Sqrt[-(r^2) (((r - 27 s))^3) s]) + r t))^(1/
                3)) + 16 (((r - 27 s))^2) 
            (((24 (Sqrt[3]) (Sqrt[-(r^2) (((r - 27 s))^3) s]) + r t))^(2/
                3)) + 16 (r - 27 s) (5 r + 108 s) 
            (((24 (Sqrt[3]) (Sqrt[-(r^2) (((r - 27 s))^3) s]) + r t))^(2/
                3))) // Factor

Hmmmmm.  Maybe this could lead to some simplifications.  But it does not seem worthwhile to continue.   We conclude it is possible to go back to the other equation and solve for e.  Q.E.F.

We go back to the original equation.

epoly = Expand[First[equ] - Last[equ]]

Here is another view of the coefficients.

CoefficientList[epoly, {e}] // TableForm

Note that the equation for e should not have 0, ComplexInfinity, or 1 as a root.  This means that neither the leading, last, or sum of the coefficients of epoly should be zero.  These come down to simple expressions:

epoly /. e -> 0 // Factor

epoly /. e -> 1 // Factor

Last[Together[(epoly/(e^6))]] /. e -> 0 // Expand // Factor

The quantity (Subscript[g, 2]^3) - 27 (Subscript[g, 3]^2) is called the discriminant of the cubic polynomial: 4 (x^3)-(Subscript[g, 2]) x-(Subscript[g, 3]).  The non vanishing means that this polynomial has three distinct roots, that is to say, the cubic curve cuts the x-axis in three distinct points — which is of course what we needed to have a non-singular curve as we already argued.

Note that the determination of e is not unique, as epoly is a polynomial of degree 6.  Because the polynomial is symmetric in its coefficients, it is clear that if e is a root, then so is (1/e).  Let us see the effect of the transformations e -> 1 - e  and e -> ((e - 1)/e)on the roots of the polynomial:

epoly

epoly == Expand[(e^6) (epoly /. e -> (1/e))]

epoly == Expand[epoly /. e -> 1 - e]

epoly == Expand[(e^6) (epoly /. e -> ((e - 1)/e)) ]

This proves that the roots of epoly  ==  0 are the set of six numbers associated with a crossratio of four points (in all orders).  To find an expression for e we can solve for the intersections with the x-axis.  The algebra does not seem too wonderful.

Finally, there is an invariant associated with e called the modulus of the curve.  We note the the equation for e can also be written as:

((4 (((1 - e + (e^2)))^3))/((((e + 1))^2) (((2 e - 1))^2) 
              (((e - 2))^2))) == ((Subscript[g, 2]^3)/(27 (Subscript[g, 3]^2))).
So this means all the six roots give this quotient on the left a constant value (different from 1).  (Why?)  And curves with a different set of crossratios give this quantity a different value.  So we conclude:

Theorem.  Two non-singular cubics are projectively equivalent if, and only if, they have the same modulus.

By the way, the modulus can be written in a different way.

((4 (((1 - e + (e^2)))^3))/((((e + 1))^2) (((2 e - 1))^2) 
          (((e - 2))^2))) // Apart

The third normal form

Proof of the theorem:  The third version of the normal form is proved by using several — not very obvious — projective transformations from an intermediate normal form which we get by positioning the inflection points.  We start with a general (non-singular) cubic.

ClearAll[g, h, k, a, b, Subscript]; 
    g = {(Subscript[a, 1]), (Subscript[a, 2]), (Subscript[a, 3]), (Subscript[a, 4]), (Subscript[a, 5]), (Subscript[a, 6]), (Subscript[a, 7]), (Subscript[a, 8]), (Subscript[a, 9]), (Subscript[a, 10])} . 
        Bxyz[3]

From previous work, we know there must be at least three collinear inflection points.  The line joining them and the three tangents at the inflection points will form a non-degenerate quadrilateral.  We are going to imagine moving that figure so that the inflection points are at infinity and the sides of the resulting quadrilateral are the lines x, y, z, and x + y + z.  This will mean that the inflection points are u, v, and u - v.  Moreover, w is the intersection of the tangents at u and v.  Thinking that we had already moved g so this would be so, the following four quantities must vanish:

{PD[g, (u^3)], PD[g, (v^3)], PD[g, (u^2) w], PD[g, (v^2) w]}

Let us record this simplification:

(Subscript[g, 1]) = 
      g /. { (Subscript[a, 1]) -> 0, (Subscript[a, 4]) -> 0, (Subscript[a, 5]) -> 0, (Subscript[a, 7]) -> 0}

Since u - v must be on the curve, and since the point v - w lies on the tangent x + y + z, the following two quantities must also vanish:

{PD[(Subscript[g, 1]), (((u - v))^3)], PD[(Subscript[g, 1]), (((u - v))^2) (v - w)]}

We see this implies that (Subscript[a, 2]) == (Subscript[a, 3]) == (Subscript[a, 6]).

Solve[{-6 (Subscript[a, 2]) + 6 (Subscript[a, 3]) == 0, 2 (Subscript[a, 2]) - 4 (Subscript[a, 3]) + 2 (Subscript[a, 6]) == 0}, {
        (Subscript[a, 3]), (Subscript[a, 6])}]

So we can make a further simplification:

(Subscript[g, 2]) = (Subscript[g, 1]) /. {(Subscript[a, 3]) -> (Subscript[a, 2]), (Subscript[a, 6]) -> (Subscript[a, 2])}

Note that (Subscript[a, 2]) cannot vanish, since otherwise the curve would be degenerate.  The form is not simple enough yet — because we have not really said that we have inflection points!  To have inflections where we want them, the following three quantities must vanish:

{Det[MHP[PD[(Subscript[g, 2]), u]]], Det[MHP[PD[(Subscript[g, 2]), v]]], 
      Factor[Det[MHP[PD[(Subscript[g, 2]), u - v]]]]}

Hmmmm.  If two are 0, then so is the third.  Why?  Ah, yes, the line joining two inflection points must cut the cubic at a third inflection point.  In any case, we see both (Subscript[a, 8]) and (Subscript[a, 9]) have to go away.  We make another simplification:

(Subscript[g, 3]) = (Subscript[g, 2]) /. {(Subscript[a, 8]) -> 0, (Subscript[a, 9]) -> 0}

That is better!  Part of the polynomial factors:

(x^2) y (Subscript[a, 2]) + x (y^2) (Subscript[a, 2]) + x y z (Subscript[a, 2]) // Factor

So, if we divide by (Subscript[a, 2]), and call (Subscript[a, 10])/(Subscript[a, 2]) by another name, we see our original polynomial can be written in the form:

(Subscript[g, 4]) = d (z^3) + x y (x + y + z);

That is a good normal form in itself!  Here is what such curves look like:

ImplicitPlot[{(Subscript[g, 4]) == 0} /. {d -> -(1/2), z -> 1}, {
        x, -3, 3}, {y, -3, 3}, PlotPoints -> 100];

And we can see the three inflection points off at infinity (well, almost).

Now a linear substitution can be arranged to balance the three variables better:

(Subscript[g, 5]) = 
      Tidy[27 (Subscript[g, 4]) /. {x -> (1/3) (-x + 2 y - z), 
            y -> (1/3) (2 x - y - z), z -> z}]

Of course, getting this new form under a projective transformation, will move the inflection points around.  But never mind that.  The point is that there is some algebraic magice realting to cubes using the cube roots of unity.  Here it is:

\(\((x + \((\(-\(1\/2\)\) - \(I\ \@3\)\/2)\) y)\) 
        \((x + \((\(-\(1\/2\)\) + \(I\ \@3\)\/2)\) y)\) // Expand
\)(((x + (-(1/2) - ((I (Sqrt[3]))/2)) y))^3) + 
        (((x + (-(1/2) + ((I (Sqrt[3]))/2)) y))^3) // Expand

Now, the first product comes into the part of (Subscript[g, 5]) that reads 
	-3 (x^2) z + 3 x y z - 3 (y^2) z ==  
          -3 z ((x^2) - x y + (y^2)).
The second sum of two cubes stands (except for a change of sign) exactly in our polynomial.  This kind of "factorization" suggests we try another linear sumstitution (coming from a inverse of a matrix using the cube root of unity):

(Subscript[g, 6]) = 
      Tidy[(Subscript[g, 5]) /. {
            x -> 
              -(((I + (Sqrt[3]))/(2 (Sqrt[3])))) x - 
                (((-I + (Sqrt[3]))/(2 (Sqrt[3])))) y, 
            y -> -((I/(Sqrt[3]))) x - (-(I/(Sqrt[3]))) y, 
            z -> z}]

Wow!!! All those complex numbers get hidden under the rug of algebra!   And, after a change of scale on z, we get the third normal form as desired.  We need finally to check up on the double points.

ClearAll[a, b, c, k]; 
    CL[PD[(x^3) + (y^3) + (z^3) - 3 k x y z, (((a u + b v + c w))^2)]]

Note that if one of {a, b, c} is 0, they all are.  So take these three equations and eliminate two of those variables.

Eliminate[{(a^2) - b c k == 0, (b^2) - a c k == 0, 
        (c^2) - a b k == 0}, {b, c}]

For there to be a solution k must be a cube root of unity.  Otherwise, the curve has no double point.  So we have done all that was required.  Q.E.D.

The configuration of inflection points

Using a normal form

Starting with the third normal form, we try to find all the inflection points of a cubic.  To do so we should look at the Hessian.

\(ClearAll[f, g, h, a, b, c, Subscript]; 
    f = x\^3 + y\^3 + z\^3 - 3\ k\ x\ y\ z; 

    g = Tidy/@Factor[Det[MHP[f]]]\)

If k == 0 we have x y z (= three lines).  Otherwise, we can write a version of the Hessian in the form:

h = (x^3) + (y^3) + (z^3) - ((4/(k^2)) - k) x y z

This is just what we had before!  It will be singular if this vanishes:

27  (k^6) ((((((4/(k^2)) - k)/3))^3) - 1) // Expand

Let j==(k^3), and solve for j:

Solve[64 - 48 j - 15 (j^2) - (j^3) == 0, {j}]

We see we get a singular Hessian if  (k^3) == 1 or (k^3) == -8.

Be that as it may, the inflection points will be found at the intersection of the two curves.

sol = Solve[{f == 0, h == 0, z == 1}, {x, y, z}]

Ia it safe to algebraically simplify ((((1 - (k^3)))^(1/3))/(((-1 + (k^3)))^(1/3))) to just -1?  Well, let us try that.

(Subscript[sol
        , 1]) = {{x -> -1, y -> 0, z -> 1}, {x -> 0, 
          y -> -1, z -> 1}, {x -> 0, 
          y -> (((-1))^(1/3)), z -> 1}, {x -> 0, 
          y -> -(((-1))^(2/3)), z -> 1}, {
          x -> (((-1))^(1/3)), y -> 0, z -> 1}, {
          x -> -(((-1))^(2/3)), y -> 0, z -> 1}};

Do these substitutions represent the intersections of the wo curves?

{f, h} /. (Subscript[sol, 1])

They do!  And what about the case when k == 0?

Solve[{(f /. k -> 0) == 0, x y z == 0, z == 1}, {x, y, z}]

Same solution!!!  What we have proved is the following:

Theorem.  The configuration of inflection points of any non-singular cubic is projectively equivalent the following fixed configuration of nine points:
			
			({{-u + w}, {((1/2) + ((I (Sqrt[3]))/2)) u + w}, {((1/2) - ((I (Sqrt[3]))/2)) u + w}, {-v + w}, {((1/2) + ((I (Sqrt[3]))/2)) v + w}, {((1/2) - ((I (Sqrt[3]))/2)) v + w}, {-u + v}, {((1/2) + ((I (Sqrt[3]))/2)) u + v}, {((1/2) - ((I (Sqrt[3]))/2)) u + v}})

Note especially that this configuration is definitely in the complex plane.  It is of a type that can be notated as  {{9, 4}, {3, 12}}
      ↑                     ↑
    points           lines.  
This means that there 9 distinct points and 12 lines; each of the points has exactly four of the lines going through it; and each of the lines contains exactly three of the points. Combinatorially, this is similar to taking the rows, columns, and both sets of diagonals of a 3×3 matrix of points as showing the lines.  It can be argued that this configuration does not exist in the real plane.  (There is a brief proof in the book by Veblen and Young, p. 249.)