# Toric Schemes

Toric varieties are special instances of schemes. As such, all scheme functionality is available to toric varieties.

## Content

We aim for a seamless transition among toric varieties and covered schemes.

One advantage is that we can hope for improved performance of scheme functionality by using toric backends when applicable. In addition, one can apply powerful scheme computations to toric settings, thus extending the available toolkit significantly.

The user can extract the scheme corresponding to a toric variety as follows:

`underlying_scheme`

— Method`underlying_scheme(X::AffineNormalToricVariety)`

For an affine toric scheme $X$, this returns the underlying scheme. In other words, by applying this method, you obtain a scheme that has forgotten its toric origin.

**Examples**

```
julia> C = positive_hull([1 0; 0 1])
Polyhedral cone in ambient dimension 2
julia> antv = affine_normal_toric_variety(C)
Normal toric variety
julia> Oscar.underlying_scheme(antv)
Spectrum
of quotient
of multivariate polynomial ring in 2 variables x1, x2
over rational field
by ideal (0)
```

`underlying_scheme`

— Method`underlying_scheme(X::NormalToricVariety)`

For a toric covered scheme $X$, this returns the underlying scheme. In other words, by applying this method, you obtain a scheme that has forgotten its toric origin.

**Examples**

```
julia> P2 = projective_space(NormalToricVariety, 2)
Normal toric variety
julia> Oscar.underlying_scheme(P2)
Scheme
over rational field
with default covering
described by patches
1: normal toric variety
2: normal toric variety
3: normal toric variety
in the coordinate(s)
1: [x_1_1, x_2_1]
2: [x_1_2, x_2_2]
3: [x_1_3, x_2_3]
```

We also provide functionality to forget the toric structure completely. In this sense, the following methods return the underlying covered scheme, but this scheme does not remember being a toric variety.

`forget_toric_structure`

— Method`forget_toric_structure(X::AffineNormalToricVariety)`

Returns a pair `(Y, iso)`

where `Y`

is a scheme without toric structure, together with an isomorphism `iso : Y → X`

.

**Examples**

```
julia> C = positive_hull([1 0; 0 1])
Polyhedral cone in ambient dimension 2
julia> antv = affine_normal_toric_variety(C)
Normal toric variety
julia> forget_toric_structure(antv)
(scheme(0), Hom: scheme(0) -> normal toric variety)
```

`forget_toric_structure`

— Method`forget_toric_structure(X::NormalToricVariety)`

Returns a pair `(Y, iso)`

where `Y`

is a scheme without toric structure, together with an isomorphism `iso : Y → X`

.

**Examples**

```
julia> P2 = projective_space(NormalToricVariety, 2)
Normal toric variety
julia> forget_toric_structure(P2)
(Scheme over QQ covered with 3 patches, Hom: scheme over QQ covered with 3 patches -> normal toric variety)
```

## Contact

Please direct questions about this part of OSCAR to the following people:

You can ask questions in the OSCAR Slack.

Alternatively, you can raise an issue on github.