1#[cfg(test)]
61pub mod comprehensive_tests;
62pub mod verified_contracts;
63
64pub mod csm;
65pub mod geometric_algebra;
66pub mod gromov_witten;
67pub mod higher_genus;
68pub mod intersection;
69pub mod littlewood_richardson;
70pub mod localization;
71pub mod matroid;
72pub mod moduli_space;
73pub mod namespace;
74pub mod operad;
75pub mod phantom;
76pub mod schubert;
77pub mod stability;
78pub mod tropical_curves;
79pub mod wdvv;
80
81#[cfg(feature = "tropical-schubert")]
82pub mod tropical_schubert;
83
84#[cfg(feature = "gf2")]
85pub mod finite_field;
86pub mod kazhdan_lusztig;
87#[cfg(feature = "gf2")]
88pub mod representability;
89#[cfg(feature = "gf2")]
90pub mod weight_enumerator;
91
92#[cfg(feature = "tropical-schubert")]
94pub use geometric_algebra::tropicalize_multivector;
95pub use geometric_algebra::{
96 quantum_k_theory, signatures, GeometricProjectiveSpace, GeometricSchubertClass,
97 GeometricVariety,
98};
99pub use gromov_witten::{CurveClass as GWCurveClass, GromovWittenInvariant, QuantumCohomology};
100pub use higher_genus::{
101 AdvancedCurveCounting, DTInvariant, HigherGenusCurve, JacobianData, PTInvariant,
102};
103pub use intersection::{
104 AlgebraicVariety, ChowClass, Constraint, Grassmannian, IntersectionNumber, IntersectionPoint,
105 IntersectionRing, MockMultivector, ProjectiveSpace, QuantumProduct,
106};
107pub use moduli_space::{CurveClass, ModuliSpace, TautologicalClass};
108
109pub use schubert::{FlagVariety, IntersectionResult, SchubertCalculus, SchubertClass};
111
112pub use littlewood_richardson::{
114 lr_coefficient, schubert_product, Partition, SkewShape, SkewTableau,
115};
116
117#[cfg(feature = "parallel")]
119pub use geometric_algebra::geometric_intersection_batch;
120#[cfg(feature = "parallel")]
121pub use littlewood_richardson::lr_coefficients_batch;
122#[cfg(feature = "parallel")]
123pub use namespace::{
124 capability_accessible_batch, count_configurations_batch, namespace_intersection_batch,
125};
126#[cfg(feature = "parallel")]
127pub use schubert::multi_intersect_batch;
128#[cfg(feature = "parallel")]
129pub use tropical_curves::{mikhalkin_correspondence_verify_batch, verify_mikhalkin_gw_batch};
130
131pub use namespace::{
133 capability_accessible, namespace_intersection, Capability, CapabilityId, Namespace,
134 NamespaceBuilder, NamespaceError, NamespaceIntersection, QuantumCapability,
135};
136
137pub use tropical_curves::{
139 verify_mikhalkin_gw, MikhalkinResult, TropicalCurve, TropicalEdge, TropicalIntersection,
140 TropicalModuliSpace, TropicalPoint,
141};
142
143#[cfg(all(feature = "tropical-schubert", feature = "parallel"))]
145pub use geometric_algebra::tropicalize_multivector_batch;
146#[cfg(all(feature = "tropical-schubert", feature = "parallel"))]
147pub use tropical_schubert::{tropical_convexity_batch, tropical_intersection_batch};
148#[cfg(feature = "tropical-schubert")]
149pub use tropical_schubert::{
150 tropical_convexity_check, tropical_intersection_count, TropicalResult, TropicalSchubertClass,
151};
152
153pub use phantom::{
155 BoxContainment,
157 Deficient,
158 Excess,
159 FitsInBox,
160 GrantState,
162 Granted,
163 IntersectionDimension,
165 LatticeWord,
166 PartitionValidity,
168 Pending,
169 Properties,
171 Revoked,
172 Semistandard,
173 TableauValidity,
175 Transverse,
176 UnknownDimension,
177 UnvalidatedPartition,
178 UnverifiedBox,
179 UnverifiedTableau,
180 ValidLRTableau,
182 ValidPartition,
183 ValidSchubertClass,
184};
185
186use thiserror::Error;
187
188#[derive(Error, Debug, Clone, PartialEq)]
190pub enum EnumerativeError {
191 #[error("Invalid dimension: {0}")]
193 InvalidDimension(String),
194
195 #[error("Intersection error: {0}")]
197 IntersectionError(String),
198
199 #[error("Schubert calculus error: {0}")]
201 SchubertError(String),
202
203 #[error("Gromov-Witten error: {0}")]
205 GromovWittenError(String),
206
207 #[error("Computation error: {0}")]
209 ComputationError(String),
210
211 #[error("Representability error: {0}")]
213 RepresentabilityError(String),
214
215 #[error("Code error: {0}")]
217 CodeError(String),
218
219 #[error("Invalid field size: {q} is not a prime power")]
221 InvalidFieldSize { q: u64 },
222
223 #[error("Search space too large: {description}")]
225 SearchSpaceTooLarge { description: String },
226}
227
228pub type EnumerativeResult<T> = Result<T, EnumerativeError>;
230
231pub use wdvv::WDVVEngine;
233
234pub use localization::{EquivariantLocalizer, FixedPoint, TorusWeights};
236
237pub use matroid::{Matroid, ValuatedMatroid};
239
240pub use kazhdan_lusztig::{
242 flag_f_vector, inverse_kl_polynomial, kl_is_non_negative, kl_polynomial, z_polynomial,
243};
244
245#[cfg(feature = "gf2")]
247pub use finite_field::{
248 grassmannian_poincare_polynomial, grassmannian_points, point_counts_over_extensions,
249 schubert_cell_points, schubert_poincare_polynomial, schubert_variety_points,
250 schubert_zeta_exponents,
251};
252#[cfg(feature = "gf2")]
253pub use representability::{
254 column_matroid, dual_fano_matroid, fano_matroid, has_minor, is_binary, is_regular, is_ternary,
255 standard_representation, RepresentabilityResult,
256};
257#[cfg(feature = "gf2")]
258pub use weight_enumerator::{
259 extended_golay_code, gilbert_varshamov_bound, hamming_bound, hamming_code, plotkin_bound,
260 reed_muller_code, simplex_code, singleton_bound, BinaryCode,
261};
262
263pub use csm::{CSMClass, SegreClass};
265
266pub use operad::{
268 compose_namespaces, composition_multiplicity, interfaces_compatible, ComposableNamespace,
269 Interface, InterfaceDirection,
270};
271
272pub use stability::{StabilityCondition, Wall, WallCrossingEngine};
274
275#[cfg(feature = "parallel")]
277pub use csm::{csm_of_cells_batch, euler_characteristic_batch};
278#[cfg(feature = "parallel")]
279pub use matroid::{circuits_batch, intersection_cardinality_batch, tutte_polynomial_batch};
280#[cfg(feature = "parallel")]
281pub use stability::{compute_walls_batch, stable_count_batch};
282#[cfg(feature = "parallel")]
283pub use wdvv::rational_curve_count_batch;