This notebook presents the computations of Table 1.

[ ]:
using Oscar
  ___   ____   ____    _    ____
 / _ \ / ___| / ___|  / \  |  _ \   |  Combining ANTIC, GAP, Polymake, Singular
| | | |\___ \| |     / _ \ | |_) |  |  Type "?Oscar" for more information
| |_| | ___) | |___ / ___ \|  _ <   |  Manual: https://docs.oscar-system.org
 \___/ |____/ \____/_/   \_\_| \_\  |  Version 1.1.2

Realizing a cubic surface \(X\) as a blowup of the projective plane at 6 points in general position, there 27 lines or (-1)-curves are given by: - \(E_i\), the exceptional divisors above point \(i\) - \(F_{ij}\), the strict transformations of lines through points \(i\) and \(j\) - \(G_i\), the strict transformations of conics through all points but point \(i\)

The Picard group of \(X\) has rank 7 and is generated by the exceptional divisors as well as \(H\), the pullback of the hyperplane class of \(\mathbb{P}^2\). The (-1)-curves have the following descriptions in terms of \(E_i\) and \(H\): - \(E_i\) - \(F_{ij} = 2H-E_i-E_j\) - \(G_i = H-\sum_{j \neq i} E_j\)

The Weyl group \(W(E_6)\) acts on the 27 lines. It is the subgroup of \(S_{27}\) generated by the permutation action on the points \(\{1,\dots,6\}\) and the Cremona transformation, which is represented below as an automorphism on the Picard group.

[1]:
cremona = Matrix{Int}([2 1 1 1 0 0 0; -1 0 -1 -1 0 0 0; -1 -1 0 -1 0 0 0; -1 -1 -1 0 0 0 0; 0 0 0 0 1 0 0; 0 0 0 0 0 1 0; 0 0 0 0 0 0 1])
[1]:
7×7 Matrix{Int64}:
  2   1   1   1  0  0  0
 -1   0  -1  -1  0  0  0
 -1  -1   0  -1  0  0  0
 -1  -1  -1   0  0  0  0
  0   0   0   0  1  0  0
  0   0   0   0  0  1  0
  0   0   0   0  0  0  1

For example, we can see this action takes \(G_2\) to itself.

[24]:
cremona * [2,-1,0,-1,-1,-1,-1]
[24]:
7-element Vector{Int64}:
  2
 -1
  0
 -1
 -1
 -1
 -1
We now describe \(W(E_6)\) as a subgroup of \(S_{27}\). We order the 27 lines as following:
- \(E_1, \dots, E_6\) are indexed by \(1, \dots, 6\). - \(F_{12}, F_{13}, ..., F_{56}\) are indexed by \(7, \dots, 21\). - \(G_1, ..., G_6\) are indexed by \(22, \dots, 27\).
[ ]:
G = symmetric_group(27);
H, _ = sub(
    G,[
        cperm([1,2],[8,12],[9,13],[10,14],[11,15],[22,23]), # (12)
        cperm([2,3],[7,8],[13,16],[14,17],[15,18],[23,24]), # (23)
        cperm([3,4],[8,9],[12,13],[17,19],[18,20],[24,25]), # (34)
        cperm([4,5],[9,10],[13,14],[16,17],[20,21],[25,26]), # (45)
        cperm([5,6],[10,11],[14,15],[17,18],[19,20],[26,27]), # (56)
        cperm([1,12],[2,8],[3,7],[19,27],[20,26],[21,25]) # Cremona

]
)
[10]:
order(H)
[10]:
51840

An Eckardt point is a common intersection point of three lines. We represent it as a set of three numbers. For example, the set \(\{7,16,21\}\) corresponds to the Eckardt point \(F_{12}+F_{34}+F_{56}\). Given a set of Eckardt points, we want to compute the size of its orbit under \(W(E_6)\).

We compute the stabilizer of the set \(\{7,16,21\}\). It has order 1152. By the orbit-stabilizer theorem, its orbit has size \(51840/1152 = 45\). So there are 45 strata of type 1, i.e., strata with at least one Eckardt point.

[12]:
S = stabilizer(H, Set([7, 16, 21]));
order(S[1])
[12]:
1152

Now we consider a stratum with two Eckardt points. We compute the stabilizer of \(\{\{7,16,21\},\{7,17,20\}\}\). Unfortunately Julia does not have a built-in function for this, so we create our own functions.

[5]:
function make_set(v)
    m = Int(length(v)/3)
    st = Set()
    for i in 1:m
        push!(st,Set(v[(i-1)*3+1:i*3]))
    end
    return st
end

function stab_size(v)
    stab = 0
    for h in H
        acted = on_tuples(v, h)
        if make_set(v) == make_set(acted)
                stab += 1
        end
    end
    return stab
end
[5]:
stab_size (generic function with 1 method)

We summarize our computations in this table.

Number of Eckardt points

Size of stabilizer

Size of orbit

1

1152

45

2

192

270

3

216

240

4

72

720

6

96

540

9

1296

40

10

240

216

18

1296

40

[ ]:
# 2 Eckardt points
@show 51840/size_stab([7, 16, 21,7,17,20])

# 3 Eckardt points
@show 51840/stab_size([11,14,16,10,13,18,9,15,17])

# 4 Eckardt points
@show 51840/stab_size([11,14,16,10,13,18,9,15,17,10,15,16])

# 6 Eckardt points
@show 51840/stab_size([11,14,16,10,15,16,7,17,20,7,18,19,8,13,21,9,12,21])

# 9 Eckardt points
@show 51840/stab_size([11,14,16,9,15,17,10,13,18,1,8,24,4,20,27,3,12,23,6,21,26,2,7,22,5,19,25])

# 10 Eckardt points
@show 51840/stab_size([11,14,16,10,13,18,9,15,17,10,15,16,1,9,25,1,11,27,2,13,25,3,18,27,2,14,26,3,17,26])

# 18 Eckardt points
@show 51840/stab_size([9,14,18,9,15,17,10,13,18,10,15,16,11,13,17,11,14,16,1,7,23,1,8,24,2,7,22,2,12,24,3,8,22,3,12,23,4,19,26,4,20,27,5,19,25,5,21,27,6,20,25,6,21,26])
[ ]: