Fourier--Mukai kernel autoequivalences #
This is the categorical source of truth for a kernel functor that is an
autoequivalence. It contains the presentation by a correspondence and kernel,
dual and unit kernels, convolution of kernel autoequivalences, and the induced
automorphism of K₀.
Direction of dependence #
The Bridgeland action is deliberately absent. It is a consumer in
WeakStabilityCondition/StabilityCondition/Symmetry/Autoequivalence/
which imports this module. Algebraic-geometric constructions of these generic
objects, and the action of geometric kernels on stability conditions, live
with the geometric objects under AlgebraicGeometry/DerivedCategory/.
What this file does not assert #
Nothing constructs a
KernelAutoequivalence. The equivalence and the isomorphism to a transform are both supplied. That a Fourier--Mukai transform with a suitable kernel is an equivalence is the classical theorem, and it needs the geometry the abstractCorrespondencedoes not carry.Nothing constructs a
DualKernelfrom geometry. That the quasi-inverse of a Fourier--Mukai equivalence is again one — with the derived-dual kernelP^∨ ⊗ p^*ω[dim]— is classical, and supplying it is geometry. What this file proves the categorical consequences of having one available, including that the two kernels' class maps are mutually inverse (transformK₀_dual_comp).Since #559's adjunction stage there is one abstract constructor:
DualKernel.ofLeftAdjointKernelbuilds a dual kernel from aLeftAdjointKernelData, by uniqueness of adjoints, andofRightAdjointKerneldoes the same on the other side. That moves the supplied datum, it does not discharge it —LeftAdjointKernelDatais itself supplied inFourierMukai/Adjunction.lean, andDualKernel.toLeftAdjointKernelDatagoes back, so for a kernel autoequivalence the two are interderivable and neither is weaker.No group of kernel autoequivalences. Composing two kernel autoequivalences needs a
ConvolutionDatasupplied per pair (trans), and the unit needs a suppliedUnitKernelData. No identity law relating those data is asserted here.Nothing constructs a
UnitKernelData. That𝒪_Δpresents the identity as a transform is the classical statement, and it needs the geometry the abstractCorrespondencedoes not carry.Nothing constructs a non-trivial
LeftAdjointKernelDataorRightAdjointKernelData.UnitKernelData.toLeftAdjointKernelDataproduces one from a unit kernel, but it is the statement that𝟭 Cis its own adjoint, transported acrossunitIso; it says nothing aboutcorr. That a generalΦ_Phas kernel-presented adjoints is Grothendieck duality.Nothing about stability conditions, Bridgeland's
Stab(X)as a manifold, or continuity of an induced action.
A kernel autoequivalence: an autoequivalence of C presented as a
Fourier--Mukai transform.
The correspondence, the kernel, the equivalence, and the isomorphism between them are all supplied. Nothing here proves that any transform is an equivalence — that is the classical theorem and it needs geometry.
- corr : Correspondence C C 𝒲
The correspondence from
Cto itself. - kernel : 𝒲
The kernel.
The autoequivalence.
Its functor is the transform with that kernel.
Instances For
On classes of objects, the autoequivalence and its transform agree.
Stated this way round rather than as a simp lemma about K₀.map: the
existing K₀.map_of already rewrites that left-hand side, so a lemma phrased
against it would not be in simp-normal form.
The action on classes is computed by the kernel.
Exactly Correspondence.K₀_map_eq_transformK₀ at the supplied isomorphism. It
is what makes the kernel, rather than the functor's construction, the thing
that determines the transported charge.
Until #487 this proof had a step in it: the stability track carried its own
endofunctor-only K₀.mapF, definitionally equal to K₀.map but a different
constant, and the theorem had to cross that identification. mapF is retired
and the crossing is gone.
A dual kernel for a kernel autoequivalence: a kernel presenting the quasi-inverse as a transform of the same correspondence.
Classically this is the derived dual P^∨ ⊗ p^*ω_X[dim X], and its existence is
a theorem about smooth projective varieties. Here it is supplied. What it buys
is that both directions of the equivalence become kernel-computable, which is
what turns actStab's remaining hypothesis into kernel data.
- dual : 𝒲
The kernel of the quasi-inverse.
The quasi-inverse is the transform with that kernel.
Instances For
The quasi-inverse's action on classes is computed by the dual kernel.
The mirror of map_eq_transformK₀, and the reason actStabOfDual can state
its hypothesis in kernel terms.
The two kernels' class maps are mutually inverse.
Proved from K₀.map_comp_map_eq_id on the equivalence's unit, then transported
across both kernel identifications. Neither convolution nor an identity kernel
is involved: the inverse relation comes from the supplied equivalence, not from
conv P P^∨ ≅ 𝒪_Δ.
The composite in the other order is also the identity.
The kernel's class map, as an automorphism of K₀ C.
The two comp lemmas above are exactly the two round-trip identities
AddMonoidHom.toAddEquiv asks for, so the bundling is bookkeeping. What it
records is that having a DualKernel is what makes the class map invertible:
transformK₀ on its own is not claimed invertible anywhere
(FourierMukai/GrothendieckGroup.lean says so explicitly), and the inverse
here is the dual kernel's class map, not an abstract inverse.
The equivalence is on K₀ C, not on a class lattice Λ. Nothing here maps
Λ — toAutPair still takes its lam as supplied data.
Equations
- D.transformK₀AddEquiv = (A.corr.transformK₀ A.kernel).toAddEquiv (A.corr.transformK₀ D.dual) ⋯ ⋯
Instances For
Dual kernels derived from adjunction data #
FourierMukai/Adjunction.lean supplies LeftAdjointKernelData and
RightAdjointKernelData: a kernel for the opposite correspondence together
with an adjunction between the two transforms. For a kernel autoequivalence
those give a DualKernel outright, by uniqueness of adjoints — the
quasi-inverse of an equivalence is both its left and its right adjoint, so an
adjoint presented by a kernel is isomorphic to it.
toLeftAdjointKernelData and toRightAdjointKernelData go back, so for a
kernel autoequivalence the three data are interderivable and the constructors
below buy no new existence. What they buy is the shape of the input:
LeftAdjointKernelData is stated for an arbitrary kernel with no equivalence
in sight, which is the form a geometric adjunction theorem has, whereas
DualKernel.invIso presupposes the equivalence and names its inverse.
A dual kernel derived from left-adjoint kernel data.
A.equiv.inverse is left adjoint to A.equiv.functor, hence — across A.iso
— to A.corr.transform A.kernel. L.adj says the same of
A.corr.transform L.adjKernel. Uniqueness of left adjoints identifies the
two, and that identification is exactly DualKernel.invIso.
This is the first constructor of a DualKernel from something other than a
directly supplied invIso. It is not a geometric construction: the
adjunction is still supplied.
Equations
- CategoryTheory.Triangulated.FourierMukai.KernelAutoequivalence.DualKernel.ofLeftAdjointKernel A L = { dual := L.adjKernel, invIso := L.isoOfAdj (A.equiv.symm.toAdjunction.ofNatIsoRight A.iso) }
Instances For
A dual kernel derived from right-adjoint kernel data.
The mirror of ofLeftAdjointKernel, through Adjunction.rightAdjointUniq.
Both exist because the quasi-inverse of an equivalence is an adjoint on both
sides; classically the two adjoint kernels of a general Φ_P differ by the
dualizing twist, and it is Serre duality that collapses the difference when
Φ_P is an equivalence.
The collapse is reachable here — (ofLeftAdjointKernel A L).toRightAdjointKernelData
is right-adjoint data with the same kernel L.adjKernel — but read where it
comes from: the supplied A.equiv, whose inverse is an adjoint on both sides
by construction. No dualizing object and no duality theorem is involved, and
for a kernel with no equivalence attached FourierMukai/Adjunction.lean still
relates the two sides not at all.
Equations
- CategoryTheory.Triangulated.FourierMukai.KernelAutoequivalence.DualKernel.ofRightAdjointKernel A R = { dual := R.adjKernel, invIso := R.isoOfAdj (A.equiv.toAdjunction.ofNatIsoLeft A.iso) }
Instances For
A dual kernel already carries the left adjunction.
The converse of ofLeftAdjointKernel, and the reason its docstring does not
claim to weaken the hypothesis: transporting A.equiv.symm.toAdjunction along
A.iso and D.invIso recovers the adjunction. So for a kernel
autoequivalence the two data are interderivable.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A dual kernel already carries the right adjunction, mirroring
toLeftAdjointKernelData.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The left round trip is the identity on the kernel.
Only on the kernel. The reconstructed dual kernel's invIso is D.invIso
carried across two transports and Adjunction.leftAdjointUniq; it is not
claimed equal to D.invIso, and proving it so would need that lemma's
coherence statements, which nothing here consumes.
The right round trip is the identity on the kernel, with the same caveat.
Composing two kernel autoequivalences, given convolution data.
The composite is again a kernel autoequivalence, and its kernel is the
convolution of the two. The isomorphism is the one
ConvolutionData.isKernelFunctor_comp already uses: whisker each supplied
isomorphism into place, then apply compIso.
corr₃ and the convolution data are supplied — this constructs the composite
from them, it does not produce a correspondence for the composite out of
nothing.
Marked @[reducible] so that instance search sees equiv as
A₁.equiv.trans A₂.equiv and picks up the six Equivalence.trans instances
from Stability/Composition. Declaring them by hand for the composite instead
does not work: IsTriangulated is indexed by the CommShift instance, so a
hand-rolled copy is a different term from the one the use site finds.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A unit kernel: a kernel presenting the identity functor as a transform.
Classically this is 𝒪_Δ ∈ D(X × X), and that its transform is the identity is
a theorem about the diagonal. Here it is supplied, like every other geometric
input to this file.
- unitKernel : 𝒲
The kernel.
It presents
𝟭 Cas a transform ofcorr.
Instances For
The identity kernel autoequivalence, from a unit kernel.
Equivalence.refl.functor and Equivalence.refl.inverse are both 𝟭 C
definitionally, so the one supplied isomorphism serves as iso here and as
invIso in UnitKernelData.toDualKernel.
@[reducible] for the same reason as trans: a use site's instance search
has to see equiv as Equivalence.refl.
This produces the unit object, and only that. It is not proved to be a
unit for trans, and cannot be without convolution data comparing corr with
itself — see the module docstring.
Equations
- CategoryTheory.Triangulated.FourierMukai.KernelAutoequivalence.id corr U = { corr := corr, kernel := U.unitKernel, equiv := CategoryTheory.Equivalence.refl, iso := U.unitIso }
Instances For
The identity's dual kernel is the unit kernel itself.
The one place the identity costs nothing extra: Equivalence.refl.inverse is
𝟭 C, so the same supplied isomorphism discharges DualKernel.invIso. Every
DualKernel consequence — transformK₀AddEquiv, actStabOfDual,
toAutPair — therefore applies to KernelAutoequivalence.id with no further
geometric input.
Equations
- U.toDualKernel = { dual := U.unitKernel, invIso := U.unitIso }
Instances For
The unit kernel is a left adjoint kernel for itself.
𝟭 C ⊣ 𝟭 C, transported along U.unitIso on both sides. This is the only
LeftAdjointKernelData this repository produces, and it is the trivial one:
it says the identity is its own adjoint, which is true in any category and
carries no information about corr.
Its point is that LeftAdjointKernelData is inhabited from data the tree
already has, so the adjunction layer is not an interface nothing can reach.
A non-trivial instance is Grothendieck duality and is not available here.
Equations
- U.toLeftAdjointKernelData = { adjKernel := U.unitKernel, adj := (CategoryTheory.Adjunction.id.ofNatIsoLeft U.unitIso).ofNatIsoRight U.unitIso }
Instances For
The derived dual kernel of the identity is the supplied one.
On the kernel object. Running U.toLeftAdjointKernelData through
DualKernel.ofLeftAdjointKernel lands on U.unitKernel, which is what
toDualKernel supplies directly. The two invIso fields are not claimed
equal — toDualKernel uses U.unitIso itself, while the derived one is the
image of an adjunction under Adjunction.leftAdjointUniq.
UnitKernelData is satisfiable.
The trivial correspondence's transform is the identity definitionally, so the
identity functor is presented by every kernel and unitIso is Iso.refl.
Satisfiability only, exactly as in FourierMukai/Witness.lean: this says the
structure's fields can be met simultaneously. It says nothing about 𝒪_Δ,
nothing about any diagonal, and nothing about whether
Families.geometricUnitKernelData's contracts are dischargeable.
Equations
- CategoryTheory.Triangulated.FourierMukai.trivialUnitKernelData K = { unitKernel := K, unitIso := CategoryTheory.Iso.refl (CategoryTheory.Functor.id C) }
Instances For
The equivalence, derived rather than supplied #
KernelAutoequivalence takes its equivalence and the comparison isomorphism as
supplied fields, and every consequence in this file is conditional on them. This
section removes that particular supply point: a RightAdjointKernelData whose
adjunction has invertible unit and counit already is an equivalence, by
Adjunction.toEquivalence, and its functor is the transform definitionally — so
the comparison isomorphism is Iso.refl.
This is not a weakening, and isIso_unit/isIso_counit below prove it.
Given a kernel autoequivalence together with a right adjoint kernel, the
adjunction's unit and counit are invertible: Mathlib supplies that as instances
once the functors are equivalences. So the two data are interderivable, exactly
as DualKernel and LeftAdjointKernelData are.
What changes is the shape of the hypothesis, and that is the whole point.
"There exists an equivalence and an isomorphism to the transform" is not
something a geometric theorem produces. "The unit and counit of this adjunction
are isomorphisms" is: it is pointwise, it is checkable, and its two halves are
full faithfulness and essential surjectivity — which is the form the
Bondal--Orlov criterion actually takes. ofFullyFaithful below is that split,
using Mathlib's unit_isIso_of_L_fully_faithful.
Nothing here supplies the invertibility. That is the second half of the layer-3 work and it needs geometry this repository does not have.
A kernel autoequivalence, from an adjoint kernel with invertible unit and counit.
Adjunction.toEquivalence on the supplied adjunction. Its functor field is
corr.transform K definitionally, so iso is Iso.refl and nothing is
transported.
The first constructor of a KernelAutoequivalence from anything other than a
directly supplied equivalence.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The same datum also gives the dual kernel, for free.
toEquivalence's inverse is the adjunction's right adjoint, which is
corr.transform R.adjKernel definitionally — so invIso is Iso.refl and
DualKernel.ofRightAdjointKernel's trip through Adjunction.rightAdjointUniq
is not needed here. One RightAdjointKernelData with invertible unit and counit
yields the equivalence and its dual kernel.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The hypothesis split the way a criterion would deliver it.
Full faithfulness of the transform gives the unit, by Mathlib's
unit_isIso_of_L_fully_faithful; the counit is still asked for, and it is the
essential-surjectivity half. Stated because this is the shape Bondal--Orlov has
— fully faithful, plus a condition — and a geometric criterion would land here
rather than on the raw unit.
Equations
Instances For
The converse: nothing above weakens the hypothesis #
If a kernel autoequivalence and a right adjoint kernel for the same kernel are
both on the table, the adjunction's unit and counit are already invertible. So
ofRightAdjointKernel does not lower the bar — it restates it in a form a
geometric criterion can attack. This is the same honesty check
DualKernel.toLeftAdjointKernelData performs one layer down.
The transform of a kernel autoequivalence is an equivalence. Transport of
A.equiv along the supplied A.iso, and the hinge of both lemmas below.
The counit of any right adjoint kernel is invertible, given the equivalence.
The unit of any right adjoint kernel is invertible, given the equivalence.
Through isEquivalence_right_of_isEquivalence_left: the right adjoint of an
equivalence is an equivalence, and Mathlib's instance then gives the unit.