Composing two transports #
actStabAut transports a stability condition along one autoequivalence. This
file proves that doing it twice is the same as doing it once along the
composite — the associativity clause of a group action, without asserting that
there is a group.
Two halves, and only one of them has content:
- the slicing half is definitional.
Slicing.mapEquivreindexes byΦ.inverse, and(Φ.trans Ψ).inverseisΨ.inverse ⋙ Φ.inverseon the nose, somapEquiv_transisSlicing.extapplied torfl; - the charge half is where the composite lattice map appears. If
Φcarrieslam₁andΨcarrieslam₂, thenΦ.trans Ψcarrieslam₁.comp lam₂— note the order:hlamis stated for the quasi-inverse, and inverses reverse, solam₁is applied last.
Equivalence.trans and instance search #
(Φ.trans Ψ).functor is reducibly Φ.functor ⋙ Ψ.functor, but instance
search does not unfold Equivalence.trans to find it, so
(Φ.trans Ψ).functor.Additive fails to synthesize. The six inferInstanceAs
instances below supply what search cannot reach. They are stated once here and
are what let mapEquiv (Φ.trans Ψ) be written at all.
What this file does not assert #
- No new group and no new
MulAction. This is one equation between two transports, stated for a barelam : Λ →+ Λ. The bundled version already exists:GroupAction.AutPairQuot v(Stability/ClassMap.lean) is a group with aMulActiononWithClassMap C v, whoseact_mulis this equation for pairs whoselamis invertible. This file is the strictly more general unbundled statement — a non-invertiblelamstill transports — and the kernel-tracking consumer (KernelAutoequivalence.actStab_trans) needs it in this form. - Nothing about the composite of two stability conditions, which is not a thing; only about applying two transports in sequence.
- No claim that
lam₁.comp lam₂is the unique lattice map compatible withΦ.trans Ψ; uniqueness would needvsurjective.
Equations
- CategoryTheory.Triangulated.transFunctorCommShift Φ Ψ = { commShiftIso := CategoryTheory.Triangulated.transFunctorCommShift._aux_1 Φ Ψ, commShiftIso_zero := ⋯, commShiftIso_add := ⋯ }
Equations
- CategoryTheory.Triangulated.transInverseCommShift Φ Ψ = { commShiftIso := CategoryTheory.Triangulated.transInverseCommShift._aux_1 Φ Ψ, commShiftIso_zero := ⋯, commShiftIso_add := ⋯ }
Reindexing twice is reindexing along the composite.
Definitional: mapEquiv reindexes by Φ.inverse, and (Φ.trans Ψ).inverse is
Ψ.inverse ⋙ Φ.inverse on the nose. The bundled counterpart is
TriEquiv.act_comp (Slicing/Quotient.lean) — the same Slicing.ext-on-rfl
argument for a TriEquiv instead of a bare Equivalence.
Pin note: "on the nose" is Mathlib's literal inverse := f.inverse ⋙ e.inverse
in the definition of Equivalence.trans. If a Mathlib bump redefines
Equivalence.trans, this rfl — and KernelAutoequivalence.actStab_trans
behind it — is the first thing to break. Re-check here if the pin moves.
The composite carries the composite lattice map.
The order is the one the quasi-inverse forces: (Φ.trans Ψ).inverse is
Ψ.inverse ⋙ Φ.inverse, so lam₂ acts first and lam₁ last.
Transporting twice is transporting once along the composite.
The associativity clause of an action, stated as a single equation. The
lattice map of the composite is lam₁.comp lam₂, supplied by hlam_trans, so
no new hypothesis enters.