types — CalabiYauLite, ExtremalContraction, and ContractionType#
Core data types for cybir.
Provides CalabiYauLite, ExtremalContraction, ContractionType, CoxeterGroup, and InsufficientGVError.
- class CalabiYauLite(int_nums, c2=None, kahler_cone=None, mori_cone=None, polytope=None, charges=None, indices=None, eff_cone=None, triangulation=None, fan=None, gv_invariants=None, label=None, curve_signs=None, tip=None)#
Bases:
objectLightweight container for Calabi-Yau phase data.
Stores precomputed intersection numbers, second Chern class, cones, and charge matrices. Interface-compatible with the dbrane-tools
CalabiYauLiteclass, with additional fields for GV invariants and a phase label.Mutable during construction; call
freeze()to make immutable after the EKC orchestrator finishes building.- Parameters:
int_nums (numpy.ndarray) – Triple intersection numbers \(\kappa_{ijk}\).
c2 (numpy.ndarray, optional) – Second Chern class \(c_2 \cdot D_i\).
kahler_cone (optional) – Kahler cone (
cytools.Cone).mori_cone (optional) – Mori cone (
cytools.Cone).polytope (optional) – The underlying polytope.
charges (optional) – CY charge matrix.
indices (optional) – CY labels list.
eff_cone (optional) – Effective cone (
cytools.Cone).triangulation (optional) – A
cytools.triangulation.Triangulation.fan (optional) – A
cytools.vector_config.fan.Fan.gv_invariants (optional) – Reference to a CYTools Invariants object.
label (optional) – Phase identifier for the adjacency graph.
- property c2#
Second Chern class \(c_2 \cdot D_i\).
- property charges#
CY charge matrix.
- property curve_signs#
+1/-1}.
Records the sign of
tip @ curvefor each known flop curve. Persisted during BFS construction for use in orbit expansion and on-demand GV reconstruction (D-15).- Type:
Curve-sign dictionary {curve_tuple
- property eff_cone#
Effective cone (
cytools.Cone).
- property fan#
A
cytools.vector_config.fan.Fan.
- flop(curve, gv_series, label=None)#
Create a new phase by flopping across a wall.
Thin wrapper around
cybir.core.flop.flop_phase().- Parameters:
curve (numpy.ndarray) – Flopping curve class.
gv_series (list[int]) – GV series for the flopping curve.
label (str, optional) – Label for the new phase.
- Returns:
CalabiYauLite – New phase with transformed intersection numbers and c2.
- freeze()#
Make this object immutable.
Called by the EKC orchestrator after construction is complete. After freezing, any attempt to set an attribute raises
AttributeError.
- property gv_invariants#
Reference to a CYTools Invariants object.
- property indices#
CY labels list.
- property int_nums#
Triple intersection numbers \(\kappa_{ijk}\).
- property kahler_cone#
Kahler cone (
cytools.Cone).
- property label#
Phase identifier for the adjacency graph.
- property mori_cone#
Mori cone (
cytools.Cone).
- property polytope#
The underlying polytope.
- property tip#
Interior point of the Kahler cone.
Persisted during BFS construction for use in orbit expansion and curve-sign computation (D-15).
- property triangulation#
A
cytools.triangulation.Triangulation.
- class ContractionType(*values)#
Bases:
EnumType of extremal birational contraction.
Eight types following the classification in arXiv:2212.10573: asymptotic, CFT, su(2) enhancement, su(2) enhancement at non-generic complex structure, symmetric flop, gross flop, generic flop, plus an
UNRESOLVEDsentinel for walls that require higher GV degree than the ceiling allows.- display_name(notation='paper')#
Return human-readable name in the given notation.
- Parameters:
notation (str) – Either
"paper"(default) for arXiv notation or"wilson"for Wilson’s Type I/II/III convention.- Returns:
str
- class CoxeterGroup(factors, order_matrix, reflections)#
Bases:
objectCoxeter group data from orbit expansion.
- Parameters:
factors (
tuple) – Tuple of (family, rank, order) tuples, one per irreducible component.order_matrix (
object) – The Coxeter order matrix m_ij (numpy.ndarray).reflections (
tuple) – The generator reflection matrices as a tuple of numpy arrays.
- property order#
Total group order \(|W|\) (product of factor orders).
- property rank#
Total rank (sum of factor ranks).
- class ExtremalContraction(contraction_curve, contraction_type=None, gv_invariant=None, effective_gv=None, zero_vol_divisor=None, coxeter_reflection=None, gv_series=None, gv_eff_1=None, cone_face=None, toric_origin=None)#
Bases:
objectAn extremal birational contraction between two CY3 phases.
Represents a wall in the extended Kahler cone where a curve shrinks to zero volume. Frozen by default after construction.
- Parameters:
contraction_curve (numpy.ndarray) – The curve class that shrinks at this wall.
contraction_type (ContractionType, optional) – Classification of this contraction.
gv_invariant (int, optional) – Gopakumar-Vafa invariant for the flopping curve.
effective_gv (int, optional) – Effective GV invariant (accounting for multiplicity).
zero_vol_divisor (numpy.ndarray, optional) – Divisor that shrinks at this wall.
coxeter_reflection (numpy.ndarray, optional) – Coxeter reflection matrix for this contraction.
gv_series (list of int, optional) – GV series \([n^0_{[\mathcal{C}]}, n^0_{2[\mathcal{C}]}, \ldots]\).
gv_eff_1 (int, optional) – Linear effective GV invariant \(\sum_k k \, n^0_{k[\mathcal{C}]}\).
cone_face (optional) – Reference to the Mori cone face associated with this contraction.
toric_origin (str, optional) – Toric origin tag (e.g.
"flop") when this contraction was identified from toric data.
- property cone_face#
Mori cone face associated with this contraction.
- property contraction_curve#
The curve class that shrinks at this wall.
- property contraction_type#
Classification of this contraction.
- property coxeter_reflection#
Coxeter reflection matrix for this contraction.
- property effective_gv#
Effective GV invariant (accounting for multiplicity).
- property gv_eff_1#
Linear effective GV invariant \(\sum_k k \, n^0_{k[\mathcal{C}]}\).
- property gv_invariant#
Gopakumar-Vafa invariant for the flopping curve.
- property gv_series#
GV series \([n^0_{[\mathcal{C}]}, n^0_{2[\mathcal{C}]}, \ldots]\).
- property toric_origin#
Toric origin tag for this contraction, if any.
- property zero_vol_divisor#
Divisor that shrinks at this wall.
- exception InsufficientGVError#
Bases:
RuntimeErrorRaised when GV series has not been computed to high enough degree.
- class PartialClassification(zero_vol_divisor, coxeter_reflection, is_asymptotic, is_cft, determined, remaining_options, needs_for_disambiguation)#
Bases:
objectGeometric-only classification of an extremal contraction curve.
Returned by
cybir.diagnose_curve()when called withcompute_gvs=Falseand no GV series provided. Captures everything determinable from triple intersection numbers, the second Chern class, and the curve class alone – no GV invariants required.The geometric checks (asymptotic, CFT, zero-volume divisor existence, Coxeter-reflection integrality) are sufficient to fully classify the contraction in some cases. When they are not,
determinedisNoneandremaining_optionslists which contraction types remain possible after geometric narrowing; computing GVs is required to disambiguate among them.- Parameters:
zero_vol_divisor (
object) – Integer divisor with \(D \cdot \mathcal{C} < 0\), orNoneif no zero-volume divisor exists or the null space is higher-dimensional. Seecybir.core.classify.zero_vol_divisor().coxeter_reflection (
object) – Coxeter reflection matrix on the lattice when a zero-volume divisor exists;Noneotherwise.is_asymptotic (
bool) –Trueif the projected triple intersection numbers vanish.is_cft (
bool) –Trueif the projected intersection-number matrix is rank-deficient.determined (
object) – Set when geometry alone pins the type down (ASYMPTOTIC,CFT, orFLOPfrom no-zvd / non-integer-reflection paths).Nonewhen GVs are needed to disambiguate.remaining_options (
tuple) – Contraction types still possible. Length 1 whendeterminedis set; longer when GVs are needed.needs_for_disambiguation (
str) – Short prose explanation of what GV data would resolve the remaining options. Empty string whendeterminedis set.
Examples
>>> from cybir import diagnose_curve >>> partial = diagnose_curve(cy, [1, 0, -1], compute_gvs=False) >>> if partial.determined is not None: ... print(f"Classified as {partial.determined.name} from geometry alone") ... else: ... print(f"GVs needed; possibilities: {partial.remaining_options}")