# G4-Fluxes

\[G_4\]

-fluxes are at the heart of F-theory model building.

## Constructors

We currently support the following constructor:

`g4_flux`

— Method`g4_flux(model::AbstractFTheoryModel, class::CohomologyClass)`

Construct a G4-flux candidate on an F-theory model. This functionality is currently limited to

- Weierstrass models,
- global Tate models,
- hypersurface models.

Furthermore, our functionality requires a concrete geometry. That is, the base space as well as the ambient space must be toric varieties. In the toric ambient space $X_\Sigma$, the elliptically fibered space $Y$ that defines the F-theory model, is given by a hypersurface (cut out by the Weierstrass, Tate or hypersurface polynomial, respectively).

In this setting, we assume that a $G_4$-flux candidate is represented by a cohomology class $h$ in $H^{(2,2)} (X_\Sigma)$. The actual $G_4$-flux candidate is then obtained by restricting $h$ to $Y$.

It is worth recalling that the $G_4$-flux candidate is subject to the quantization condition $G_4 + \frac{1}{2} c_2(Y) \in H^{/2,2)}( Y_, \mathbb{Z})$ (see [Wit97]). This condition is very hard to verify. However, it is relatively easy to gather evidence for this condition to be satisfied/show that it is violated. To this end, let $D_1$, $D_2$ be two toric divisors in $X_\Sigma$, then the topological intersection number $\left[ h|_Y \right] \cdot \left[ P \right] \cdot \left[ D_1 \right] \cdot \left[ D_2 \right]$ must be an integer. Even this rather elementary check can be computationally expensive. Users can therefore decide to skip this check upon construction by setting the parameter `check`

to the value `false`

.

Another bottleneck can be the computation of the cohomology ring, which is necessary to work with cohomology classes on the toric ambient space, which in turn define the G4-flux, as explained above. The reason for this is, that by employing the theory explained in [CLS11], we can only work out the cohomology ring of simpicial and complete (i.e. compact) toric varieties. However, checking if a toric variety is complete (i.e. compact) can take a long time. If the geometry in question is involved and you already know that the variety is simplicial and complete, then we recommend to trigger the computation of the cohomology ring with `check = false`

. This will avoid this time consuming test.

An example is in order.

**Examples**

```
julia> qsm_model = literature_model(arxiv_id = "1903.00009", model_parameters = Dict("k" => 4))
Hypersurface model over a concrete base
julia> cohomology_ring(ambient_space(qsm_model), check = false);
julia> g4_class = cohomology_class(anticanonical_divisor_class(ambient_space(qsm_model)))^2;
julia> g4f = g4_flux(qsm_model, g4_class)
G4-flux candidate
julia> g4f2 = g4_flux(qsm_model, g4_class, check = false)
G4-flux candidate lacking elementary quantization checks
```

This function is part of the experimental code in Oscar. Please read here for more details.

## Attributes

We currently support the following attributes:

`model`

— Method`model(gf::G4Flux)`

Return the F-theory model for which this $G_4$-flux candidate is defined.

```
julia> qsm_model = literature_model(arxiv_id = "1903.00009", model_parameters = Dict("k" => 4))
Hypersurface model over a concrete base
julia> cohomology_ring(ambient_space(qsm_model), check = false);
julia> g4_class = cohomology_class(anticanonical_divisor_class(ambient_space(qsm_model)))^2;
julia> g4f = g4_flux(qsm_model, g4_class, check = false)
G4-flux candidate lacking elementary quantization checks
julia> model(g4f)
Hypersurface model over a concrete base
```

This function is part of the experimental code in Oscar. Please read here for more details.

`cohomology_class`

— Method`cohomology_class(gf::G4Flux)`

Return the cohomology class which defines the $G_4$-flux candidate.

```
julia> qsm_model = literature_model(arxiv_id = "1903.00009", model_parameters = Dict("k" => 4))
Hypersurface model over a concrete base
julia> cohomology_ring(ambient_space(qsm_model), check = false);
julia> g4_class = cohomology_class(anticanonical_divisor_class(ambient_space(qsm_model)))^2;
julia> g4f = g4_flux(qsm_model, g4_class, check = false)
G4-flux candidate lacking elementary quantization checks
julia> cohomology_class(g4f) == g4_class
true
```

This function is part of the experimental code in Oscar. Please read here for more details.

## Properties

We currently support the following properties:

`passes_elementary_quantization_checks`

— Method`passes_elementary_quantization_checks(gf::G4Flux)`

G4-fluxes are subject to the quantization condition [Wit97] $G_4 + \frac{1}{2} c_2(Y) \in H^{(2,2)}(Y, \mathbb{Z})$. It is hard to verify that this condition is met. However, we can execute a number of simple consistency checks, by verifying that $\int_{Y}{G_4 \wedge [D_1] \wedge [D_2]} \in \mathbb{Z}$ for any two toric divisors $D_1$, $D_2$. If all of these simple consistency checks are met, this method will return `true`

and otherwise `false`

.

It is worth mentioning that currently (July 2024), we only support this check for $G_4$-fluxes defined on Weierstrass, global Tate and hypersurface models. If this condition is not met, this method will return an error.

```
julia> qsm_model = literature_model(arxiv_id = "1903.00009", model_parameters = Dict("k" => 4))
Hypersurface model over a concrete base
julia> cohomology_ring(ambient_space(qsm_model), check = false);
julia> g4_class = cohomology_class(anticanonical_divisor_class(ambient_space(qsm_model)))^2;
julia> g4 = g4_flux(qsm_model, g4_class, check = false)
G4-flux candidate lacking elementary quantization checks
julia> passes_elementary_quantization_checks(g4)
true
```

This function is part of the experimental code in Oscar. Please read here for more details.