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 performance;
76pub mod phantom;
77pub mod schubert;
78pub mod stability;
79pub mod tropical_curves;
80pub mod wdvv;
81
82#[cfg(feature = "tropical-schubert")]
83pub mod tropical_schubert;
84
85#[cfg(feature = "gf2")]
86pub mod finite_field;
87pub mod kazhdan_lusztig;
88#[cfg(feature = "gf2")]
89pub mod representability;
90#[cfg(feature = "gf2")]
91pub mod weight_enumerator;
92
93#[cfg(feature = "tropical-schubert")]
95pub use geometric_algebra::tropicalize_multivector;
96pub use geometric_algebra::{
97 quantum_k_theory, signatures, GeometricProjectiveSpace, GeometricSchubertClass,
98 GeometricVariety,
99};
100pub use gromov_witten::{CurveClass as GWCurveClass, GromovWittenInvariant, QuantumCohomology};
101pub use higher_genus::{
102 AdvancedCurveCounting, DTInvariant, HigherGenusCurve, JacobianData, PTInvariant,
103};
104pub use intersection::{
105 AlgebraicVariety, ChowClass, Constraint, Grassmannian, IntersectionNumber, IntersectionPoint,
106 IntersectionRing, MockMultivector, ProjectiveSpace, QuantumProduct,
107};
108pub use moduli_space::{CurveClass, ModuliSpace, TautologicalClass};
109pub use performance::{
110 CurveBatchProcessor, FastIntersectionComputer, MemoryPool, SparseSchubertMatrix,
111 WasmPerformanceConfig,
112};
113
114pub use schubert::{FlagVariety, IntersectionResult, SchubertCalculus, SchubertClass};
116
117pub use littlewood_richardson::{
119 lr_coefficient, schubert_product, Partition, SkewShape, SkewTableau,
120};
121
122#[cfg(feature = "parallel")]
124pub use geometric_algebra::geometric_intersection_batch;
125#[cfg(feature = "parallel")]
126pub use littlewood_richardson::lr_coefficients_batch;
127#[cfg(feature = "parallel")]
128pub use namespace::{
129 capability_accessible_batch, count_configurations_batch, namespace_intersection_batch,
130};
131#[cfg(feature = "parallel")]
132pub use schubert::multi_intersect_batch;
133#[cfg(feature = "parallel")]
134pub use tropical_curves::{mikhalkin_correspondence_verify_batch, verify_mikhalkin_gw_batch};
135
136pub use namespace::{
138 capability_accessible, namespace_intersection, Capability, CapabilityId, Namespace,
139 NamespaceBuilder, NamespaceError, NamespaceIntersection, QuantumCapability,
140};
141
142pub use tropical_curves::{
144 verify_mikhalkin_gw, MikhalkinResult, TropicalCurve, TropicalEdge, TropicalIntersection,
145 TropicalModuliSpace, TropicalPoint,
146};
147
148#[cfg(all(feature = "tropical-schubert", feature = "parallel"))]
150pub use geometric_algebra::tropicalize_multivector_batch;
151#[cfg(all(feature = "tropical-schubert", feature = "parallel"))]
152pub use tropical_schubert::{tropical_convexity_batch, tropical_intersection_batch};
153#[cfg(feature = "tropical-schubert")]
154pub use tropical_schubert::{
155 tropical_convexity_check, tropical_intersection_count, TropicalResult, TropicalSchubertClass,
156};
157
158pub use phantom::{
160 BoxContainment,
162 Deficient,
163 Excess,
164 FitsInBox,
165 GrantState,
167 Granted,
168 IntersectionDimension,
170 LatticeWord,
171 PartitionValidity,
173 Pending,
174 Properties,
176 Revoked,
177 Semistandard,
178 TableauValidity,
180 Transverse,
181 UnknownDimension,
182 UnvalidatedPartition,
183 UnverifiedBox,
184 UnverifiedTableau,
185 ValidLRTableau,
187 ValidPartition,
188 ValidSchubertClass,
189};
190
191use thiserror::Error;
192
193#[derive(Error, Debug, Clone, PartialEq)]
195pub enum EnumerativeError {
196 #[error("Invalid dimension: {0}")]
198 InvalidDimension(String),
199
200 #[error("Intersection error: {0}")]
202 IntersectionError(String),
203
204 #[error("Schubert calculus error: {0}")]
206 SchubertError(String),
207
208 #[error("Gromov-Witten error: {0}")]
210 GromovWittenError(String),
211
212 #[error("Computation error: {0}")]
214 ComputationError(String),
215
216 #[error("Representability error: {0}")]
218 RepresentabilityError(String),
219
220 #[error("Code error: {0}")]
222 CodeError(String),
223
224 #[error("Invalid field size: {q} is not a prime power")]
226 InvalidFieldSize { q: u64 },
227
228 #[error("Search space too large: {description}")]
230 SearchSpaceTooLarge { description: String },
231}
232
233pub type EnumerativeResult<T> = Result<T, EnumerativeError>;
235
236pub use wdvv::WDVVEngine;
238
239pub use localization::{EquivariantLocalizer, FixedPoint, TorusWeights};
241
242pub use matroid::{Matroid, ValuatedMatroid};
244
245pub use kazhdan_lusztig::{
247 flag_f_vector, inverse_kl_polynomial, kl_is_non_negative, kl_polynomial, z_polynomial,
248};
249
250#[cfg(feature = "gf2")]
252pub use finite_field::{
253 grassmannian_poincare_polynomial, grassmannian_points, point_counts_over_extensions,
254 schubert_cell_points, schubert_poincare_polynomial, schubert_variety_points,
255 schubert_zeta_exponents,
256};
257#[cfg(feature = "gf2")]
258pub use representability::{
259 column_matroid, dual_fano_matroid, fano_matroid, has_minor, is_binary, is_regular, is_ternary,
260 standard_representation, RepresentabilityResult,
261};
262#[cfg(feature = "gf2")]
263pub use weight_enumerator::{
264 extended_golay_code, gilbert_varshamov_bound, hamming_bound, hamming_code, plotkin_bound,
265 reed_muller_code, simplex_code, singleton_bound, BinaryCode,
266};
267
268pub use csm::{CSMClass, SegreClass};
270
271pub use operad::{
273 compose_namespaces, composition_multiplicity, interfaces_compatible, ComposableNamespace,
274 Interface, InterfaceDirection,
275};
276
277pub use stability::{StabilityCondition, Wall, WallCrossingEngine};
279
280#[cfg(feature = "parallel")]
282pub use csm::{csm_of_cells_batch, euler_characteristic_batch};
283#[cfg(feature = "parallel")]
284pub use matroid::{circuits_batch, intersection_cardinality_batch, tutte_polynomial_batch};
285#[cfg(feature = "parallel")]
286pub use stability::{compute_walls_batch, stable_count_batch};
287#[cfg(feature = "parallel")]
288pub use wdvv::rational_curve_count_batch;
289
290