# Special cubic fourfolds

Cubic fourfolds are degree-3 smooth hypersurfaces in $\mathbf P^5$. They can be constructed using `complete_intersection`

.

```
julia> Y = complete_intersection(proj(5), 3)
AbsVariety of dim 4
julia> basis(Y)
5-element Vector{Vector{IntersectionTheory.ChRingElem}}:
[1]
[h]
[h^2]
[h^3]
[h^4]
```

We see that a generic $Y$ only contains classes that are complete intersections.

Special cubic fourfolds are those that contain a surface not homologous to a complete intersection, i.e. they have extra algebraic classes. We can construct a surface $S$ as follows.

```
julia> S, (h, c1, c2) = variety(2, ["h", "c1", "c2"], [1, 1, 2])
(AbsVariety of dim 2, IntersectionTheory.ChRingElem[h, c1, c2])
julia> S.T = bundle(S, 2, 1 + c1 + c2)
AbsBundle of rank 2 on AbsVariety of dim 2
julia> trim!(S.ring);
julia> basis(S)
ERROR: BoundsError: attempt to access 3-element Vector{Vector{IntersectionTheory.ChRingElem}} at index [0]
```

Here we first built a generic 2-dimensional variety with some classes, then we specified its tangent bundle. The step `trim!`

is to get rid of classes that have codimension larger than 2.

Now we build the inclusion.

```
julia> i = hom(S, Y, [h])
AbsVarietyHom from AbsVariety of dim 2 to AbsVariety of dim 4
```

The self-intersection number of $S$ in $Y$ is equal to the top Chern class of the normal bundle, while this latter can be accessed as the negative of the relative tangent bundle of $i$.

```
julia> ctop(-i.T)
6*h^2 - 3*h*c1 + c1^2 - c2
```

Since we saw that there is no algebraic class in $Y$ for the surface $S$, the classes on $S$ cannot be pushforward to $Y$.

```
julia> pushforward(i, S(1))
ERROR: UndefRefError: access to undefined reference
```

To overcome this we may use the argument `inclusion=true`

when building the inclusion. The returned inclusion will then have its codomain a modified version of $Y$, with extra classes added.

```
julia> j = hom(S, Y, [h], inclusion=true, symbol="s")
AbsVarietyHom from AbsVariety of dim 2 to AbsVariety of dim 4
julia> Y₁ = j.codomain
AbsVariety of dim 4
julia> basis(Y₁)
ERROR: BoundsError: attempt to access 5-element Vector{Vector{IntersectionTheory.ChRingElem}} at index [0]
```

Now we can pushforward classes on $S$.

```
julia> pushforward(j, S(1))
s
julia> pushforward(j, ctop(-j.T))
s^2
```

## Cubic fourfolds containing a degree-5 del Pezzo surface

We compute with a more explicit surface. A degree-5 del Pezzo surface can be constructed as the projective plane blown up at 4 points.

```
julia> S = blowup_points(4, proj(2))
AbsVariety of dim 2
julia> basis(S)
3-element Vector{Vector{IntersectionTheory.ChRingElem}}:
[1]
[h, e₁, e₂, e₃, e₄]
[h^2]
```

It can be embedded in a special cubic fourfold $Y_1$ via the anti-canonical linear system.

```
julia> K = canonical_class(S)
e₄ + e₃ + e₂ + e₁ - 3*h
julia> chi(OO(S, -K))
6
julia> i = hom(S, Y, [-K], inclusion=true, symbol="s")
AbsVarietyHom from AbsVariety of dim 2 to AbsVariety of dim 4
julia> Y₁ = i.codomain
AbsVariety of dim 4
```

The cubic fourfold is rational in this case: a rational map to $\mathbf P^4$ can be given by the linear system of quadric hypersurfaces containing $S$. Numerically, we compute the blowup of $Y_1$ along $S$ and study the divisor $2h-e$.

```
julia> Bl, E = blowup(i)
(AbsVariety of dim 4, AbsVariety of dim 3)
julia> h = pullback(Bl → Y₁, Y₁.O1)
h
julia> e = pushforward(E → Bl, E(1))
e
julia> integral((2h - e)^4)
1
julia> chi(OO(Bl, 2h - e))
5
```