# Varia

Here are some assets/images of ADE singularities I made using surf and surfex. for a colloquium talk.

The deformations allow to see the Dynkin graph of the singularity.

If you have difficulties to install surf on a Mac or on Ubuntu, you might find some help here.

## Linear determinantal representations of cubic surfaces

In Twisted cubics and Cubic Fourfolds we compute the number of non equivalent linear determinantal representations of a cubic surfaces of given singularity type. These are, as we show, in bijection with the $$W(R_0)$$-orbits on $$R\setminus R_0$$ where $$R$$ is the root system of $$E_6$$ and where $$R_0$$ corresponds to the singularity type (classified by the Dynkin subdiagrams of $$\widetilde{E}_6$$).

With the notations of Dolgachev’s beautiful book Classical Algebraic Geometry: A Modern View, Ch. 9:

$$R_0$$ Type # $$R_0$$ Type # $$R_0$$ Type #
$$\emptyset$$ I 72 $$4A_1$$ XVI 13 $$A_1+2A_2$$ XVII 6
$$A_1$$ II 50 $$2A_1+A_2$$ XIII 12 $$A_1+A_4$$ XIV 4
$$2A_1$$ IV 34 $$A_1+A_3$$ X 10 $$A_5$$ XI 4
$$A_2$$ III 30 $$2A_2$$ IX 12 $$D_5$$ XV 2
$$3A_1$$ VIII 22 $$A_4$$ VII 8 $$A_1+A_5$$ XIX 1
$$A_1+A_2$$ VI 20 $$D_4$$ XII 6 $$3A_2$$ XXI 2
$$A_3$$ V 16 $$2A_1+A_3$$ XVIII 5 $$E_6$$ X 0

These numbers can be computed as follows, the Gap interface of Sage.

def number_orbits(RS, S):
"""
Given a root system RS and a subgroup S of the Weyl group,
returns the number of orbits for the action of S on the roots.
"""
P = RS.PositiveRoots()
N = RS.NegativeRoots()
R = gap.Concatenation('%s' % P.name(), '%s' % N.name())
ol = gap.OrbitLengthsDomain('%s' % S.name(), '%s' % R.name())
return len(ol.sage())

# E6 and its Weyl group
E6 = gap.SimpleLieAlgebra('"E"', '6', 'Rationals')
RS = E6.RootSystem()
W = RS.WeylGroup()
W_gens = W.GeneratorsOfGroup()

# The simple reflections that generate W, s[0]=[], s[1], ..., s[6]
s = [1] + W_gens.sage()
# Determine s[0] in terms of s[i] for i=1, ..., 6.
# We use sage's library combinat for that :
G = WeylGroup(['E', 6])
sr = G.simple_reflections()
reduced_word = sr[0].reduced_word()
s[0] = s[reduced_word[0]]
for i in range(1, len(reduced_word)):
s[0] = gap.eval('%s * %s' % (s[0], s[reduced_word[i]]))

# Do the calculation :
S = W.Subgroup('[%s^2]' % s[1])
print "I, Ă =", number_orbits(RS, S)
S = W.Subgroup('[%s]' % s[1])
print "II, A1 =", number_orbits(RS, S) - 1
S = W.Subgroup('[%s, %s]' % (s[1], s[3]))
print "III, A2 =", number_orbits(RS, S) - 1
S = W.Subgroup('[%s, %s]' % (s[1], s[4]))
print "IV, 2A1 =", number_orbits(RS, S) - 2
S = W.Subgroup('[%s, %s, %s]' % (s[1], s[3], s[4]))
print "V, A3 =", number_orbits(RS, S) - 1
S = W.Subgroup('[%s, %s, %s]' % (s[1], s[4], s[5]))
print "VI, A1+A2 =", number_orbits(RS, S) - 2
S = W.Subgroup('[%s, %s, %s, %s]' % (s[1], s[3], s[4], s[5]))
print "VII, A4 =", number_orbits(RS, S) - 1
S = W.Subgroup('[%s, %s, %s]' % (s[1], s[4], s[6]))
print "VIII, 3A1 =", number_orbits(RS, S) - 3
S = W.Subgroup('[%s, %s, %s, %s]' % (s[1], s[3], s[5], s[6]))
print "IX, 2A2 =", number_orbits(RS, S) - 2
S = W.Subgroup('[%s, %s, %s, %s]' % (s[1], s[4], s[5], s[6]))
print "X, A1+A3 =", number_orbits(RS, S) - 2
S = W.Subgroup('[%s, %s, %s, %s, %s]' % (s[1], s[3], s[4], s[5], s[6]))
print "XI, A5 =", number_orbits(RS, S) - 1
S = W.Subgroup('[%s, %s, %s, %s]' % (s[3], s[4], s[5], s[2]))
print "XII, D4 =", number_orbits(RS, S) - 1
S = W.Subgroup('[%s, %s, %s, %s]' % (s[1], s[2], s[5], s[6]))
print "XIII, 2A1+A2 =", number_orbits(RS, S) - 3
S = W.Subgroup('[%s, %s, %s, %s, %s]' % (s[1], s[2], s[4], s[5], s[6]))
print "XIV, A1+A4 =", number_orbits(RS, S) - 2
S = W.Subgroup('[%s, %s, %s, %s, %s]' % (s[3], s[2], s[4], s[5], s[6]))
print "XV, D5 =", number_orbits(RS, S) - 1
S = W.Subgroup('[%s, %s, %s, %s]' % (s[1], s[4], s[0], s[6]))
print "XVI, 4A1 =", number_orbits(RS, S) - 4
S = W.Subgroup('[%s, %s, %s, %s, %s]' % (s[1], s[2], s[0], s[5], s[6]))
print "XVII, A1+2A2 =", number_orbits(RS, S) - 3
S = W.Subgroup('[%s, %s, %s, %s, %s]' % (s[1], s[0], s[4], s[5], s[6]))
print "XVIII, 2A1+A3 =", number_orbits(RS, S) - 3
S = W.Subgroup('[%s, %s, %s, %s, %s, %s]' % (s[0], s[1], s[3], s[4], s[5], s[6]))
print "XIX, A1+A5 =", number_orbits(RS, S) - 2
S = W.Subgroup('[%s, %s, %s, %s, %s, %s]' % (s[1], s[2], s[3], s[4], s[5], s[6]))
print "XX, E6 =", number_orbits(RS, S) - 1
S = W.Subgroup('[%s, %s, %s, %s, %s, %s]' % (s[1], s[3], s[5], s[6], s[2], s[0]))
print "XXI, 3A2 =", number_orbits(RS, S) - 3