Spherical objects without a Serre functor, and their Euler characteristic #
IsSphericalObject k n E says Hom(E, E⟦i⟧) vanishes off {0, n} and is the base field at both.
From it, chiHom_self_eq computes χ(E,E) = 1 + (-1)ⁿ, and at n = 2 that discharges the
hypothesis χ(E,E) = 2 which the spherical twist's involutivity consumes — so a caller holding a
spherical object no longer supplies it by hand.
Why a second sphericity predicate, and how it relates to the first #
SerreFunctor/Objects.lean already has SerreFunctor.IsSphericalObject D n E, relative to a chosen
Serre functor, carrying a fourth clause S(E) ≅ E⟦n⟧. This one is deliberately weaker: a
general k-linear pretriangulated category has no Serre functor at all, and the Euler computation
needs none. Rather than leave two parallel predicates, of_serreFunctor projects the Serre-relative
one onto this one, so the Euler computation proved here is available there too. The projection is
one-way and must stay so: nothing here reconstructs a Serre functor.
Trap: n = 0 makes the Euler computation false, not vacuous #
The structure is perfectly inhabitable at n = 0 — vanishing's two side conditions collapse into
one, the support is {0}, and end_one and top_one say the same thing up to shiftFunctor 0.
There χ(E,E) = 1, while 1 + (-1)⁰ = 2. So chiHom_self_eq without hn : n ≠ 0 is false
rather than vacuous, and an implementer who drops the hypothesis is left with an unprovable goal —
or closes it by silently strengthening the structure, which is worse. The hypothesis is what makes
{0, n} a two-element set so the sum splits. The degenerate value is recorded separately as
chiHom_self_eq_one_of_zero.
Trap: the spelling of the vanishing clause #
vanishing reads ∀ f : E ⟶ E⟦i⟧, f = 0, and must not read IsZero (E ⟶ E⟦i⟧). That Hom is a
bare Type; IsZero there demands an object both initial and terminal, and Type has none, so the
field would be unsatisfiable, the structure uninhabitable, and every theorem below vacuously true —
while compiling and passing every gate. AlgebraicGeometry/Surface/Spherical.lean records the same
trap; the spelling is copied from it deliberately.
What is not here #
No Serre-duality argument deriving top_one from end_one: the two clauses stay independent, as
they do in the K3-specific profile. The twist itself, the Mukai lattice and the braid relation are
their own files.
An n-spherical object, with no Serre functor in sight.
Hom(E, E⟦i⟧) = 0away from degrees0andn. Stated as "every morphism is zero"; see the trap in the module docstring.End(E) ≅ k: the object is simple.Hom(E, E⟦n⟧) ≅ k. Independent ofend_oneat this generality.
Instances For
A spherical object is nonzero: a zero object has a subsingleton endomorphism space, and
end_one would make the field one too.
Hom(E, E⟦0⟧) is the base field too. The zero shift is not syntactically the identity, so
the endomorphism statement does not apply to it directly.
Sphericity transports along an isomorphism.
The Euler characteristic of a spherical object, χ(E,E) = 1 + (-1)ⁿ.
The support of i ↦ (-1)ⁱ · dim Hom(E, E⟦i⟧) sits inside {0, n}, so the finsum is a two-term
sum — and it is two terms only because n ≠ 0. See the trap in the module docstring: without hn
the statement is false at n = 0, not vacuous.
No HomFiniteBounded hypothesis: sphericity bounds the support by itself.
The degenerate value the hypothesis of chiHom_self_eq rules out.
χ(E,E) = 2 for a 2-spherical object. This is the exact hypothesis the spherical
twist's involutivity consumes, discharged rather than assumed.
The twist on K₀ is involutive at a 2-spherical object.
The twist on K₀ is bijective at a 2-spherical object.
The Serre-relative predicate projects onto this one.
One direction only, and it must stay so: this predicate has no Serre functor, so nothing here
reconstructs the S(E) ≅ E⟦n⟧ clause that is dropped.