# toric

Toric geometry: rational polyhedral cones, fans, convex polytopes, and toric ideals.

## Modules

### `RationalPolyhedralCone`

A rational polyhedral cone σ = Cone(v₁, …, vₙ) ⊆ ℝᵈ spanned by integer rays. Generators are stored in primitive (GCD-normalised), lexicographically sorted form. Supports:

- Spanning dimension (via SVD)
- Redundancy elimination
- Facet structure (via qhull)
- Intersection and face checks

### `ToricFan`

A collection of rational polyhedral cones forming a fan in ℝᵈ. Cones can be added with optional intersection-is-a-face validation. Computes the variety dimension and coordinate ring presentation.

### `ConvexPolytope<N>`

A convex lattice polytope in ℝᴺ, backed by a qhull convex-hull computation. Supports:

- Vertex enumeration
- Polar dual (requires origin in the interior)
- Affine post-composition maps
- Normal fan construction (giving a `ToricFan`)

### `CoordinateRingPresentation` / `Binomial` / `Monomial`

The coordinate ring of a toric variety presented as a polynomial ring modulo a **toric ideal** — the ideal generated by binomials xᵃ − xᵇ coming from the lattice relations among the ray generators. Computed from a single simplicial cone or assembled from a fan.

## Dependencies

- [`qhull`](https://crates.io/crates/qhull) — convex hull computations
- [`nalgebra`](https://crates.io/crates/nalgebra) — integer linear algebra (SNF, kernel)
- [`itertools`](https://crates.io/crates/itertools) — iterator utilities
