Skip to content

silting

quiverlab.tautilting.silting

2-term silting bridge (Plan 45 / C4). A support tau-tilting pair (M, P) IS a 2-term silting object T(M,P) = M (+) P[1] in K^b(proj A): each module summand M_i presents as [P_1(M_i) -> P_0(M_i)] and each killed projective P_v as P_v[1] = [P_v -> 0] (AIR 2014 Thm 3.2). The count of distinct 2-term silting complexes is the fourth leg of the AIR four-way identity #s-tau-tilt = #f.f. torsion = #2-term silting = #semibricks.

Soft P43 dependency: the raw (P1_vertices, P0_vertices, d1) tuples are emitted ALWAYS (the payload the report/GUI render); the :class:ChainComplex wrapper is built only when quiverlab.modules.complexes imports (a convenience for the derived-category surface).

silting_count

silting_count(A, budget=512)

The number of distinct 2-term silting complexes over A (the fourth leg of the AIR four-way identity), via the exchange graph. By the AIR bijection this equals the number of support tau-tilting pairs; honest complete-iff contract.

Source code in src/quiverlab/tautilting/silting.py
68
69
70
71
72
73
74
75
76
def silting_count(A, budget=512):
    """The number of distinct 2-term silting complexes over ``A`` (the fourth leg of the
    AIR four-way identity), via the exchange graph. By the AIR bijection this equals the
    number of support tau-tilting pairs; honest complete-iff contract."""
    from quiverlab.tautilting.mutation import exchange_graph
    eg = exchange_graph(A, budget_pairs=budget)
    if not eg.is_complete:
        return {"count": 0, "complete": False, "status": eg.status}
    return {"count": len(eg.vertices), "complete": True, "status": "complete"}

two_term_silting

two_term_silting(pair)

The 2-term silting object of pair as {"summands": [{"P1": [v...], "P0": [v...], "d1": [[...]]}, ...], "complex": <ChainComplex | None>}. Module summands present as P_1 -> P_0; killed projectives as the shift P_v[1]. The ChainComplex is built iff modules.complexes imports.

Source code in src/quiverlab/tautilting/silting.py
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
def two_term_silting(pair):
    """The 2-term silting object of ``pair`` as ``{"summands": [{"P1": [v...], "P0": [v...],
    "d1": [[...]]}, ...], "complex": <ChainComplex | None>}``. Module summands present as
    ``P_1 -> P_0``; killed projectives as the shift ``P_v[1]``. The ChainComplex is built
    iff ``modules.complexes`` imports."""
    A = pair.algebra
    verts = list(A.quiver.vertices)
    summands = []
    for Mi in pair.summands:
        terms, dmats = minimal_resolution(Mi, 1)
        p0 = list(terms[0].vertices)
        p1 = list(terms[1].vertices) if len(terms) > 1 else []
        d1 = dmats[1] if (len(dmats) > 1 and p1) else []
        summands.append({"P1": p1, "P0": p0, "d1": d1})
    for v in sorted(pair.support, key=verts.index):
        summands.append({"P1": [v], "P0": [], "d1": []})     # P_v[1]
    complex_obj = _build_complex(pair) if ChainComplex is not None else None
    return {"summands": summands, "complex": complex_obj}