An inverse for a particular morphism composes with it to form the identity.
It's useful to separate out the inverse itself from a full isomorphism, that way we can talk about a morphism with some structure having some property, and then how the inverse might gain an analogous property.
This is useful e.g. to say that a natural transformation + inverse to the carrier (without assuming naturality yet) is a natural isomorphism.
- inv : A y x
Instances For
Any inverse is as good as any other!
Equations
- ⋯ = ⋯
Instances For
Inverses naturally compose.
Instances For
Represents an isomorphism in some category.
An isomorphism is a morphism with an inverse.
- out : A x y
- inv : Category.Inverse self.out
Instances For
To compare isomorphisms, it suffices to compare the primary morphisms.
This is because any two inverses of a given morphism are equal.
Equations
- ⋯ = ⋯
Instances For
There's a natural isomorphism from an object to itself.
Equations
- Category.Iso.id = { out := Category.Struct.id, inv := { inv := Category.Struct.id, inv_pre := ⋯, inv_post := ⋯ } }
Instances For
We can construct an isomorphism from an equality.
Equations
- Category.Iso.from_eq h = ⋯.mpr Category.Iso.id
Instances For
We can compose isomorphisms as well.
Instances For
Equations
- Category.Iso.categoryStruct = { id := fun {x : OA} => Category.Iso.id, comp := fun {a b c : OA} (f : Category.Iso A a b) (g : Category.Iso A b c) => f.comp g }
Equations
- ⋯ = ⋯
Instances For
Isomorphisms assemble into a category.
Equations
- Category.Iso.category = Category.mk ⋯ ⋯ ⋯
A short abbreviation for natural isomorphisms.
We define these as simply being isomorphisms in the category of natural transformations.
This immediately gives us the fact that they form a category, making this a better definition.
Equations
- Category.NatIso A B = Category.Iso (Category.Nat A B)
Instances For
Equations
- Category.«term_≅_» = Lean.ParserDescr.trailingNode `Category.«term_≅_» 82 83 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≅ ") (Lean.ParserDescr.cat `term 82))
Instances For
Two functors that are equal are certainly isomorphic.
This turns out to be useful, because we have on-the-nose equality for equations involving the identity functor, but want to work with isomorphisms instead, usually.
Equations
- Category.NatIso.from_eq h_eq = Category.Iso.from_eq h_eq
Instances For
Construct a natural isomorphism from a transformation and a bundle of inverses.
The key proof involved here is that naturality of the bundle of inverses follows simply from the underlying transformation being natural.
Equations
- Category.NatIso.from_inverse φ inverse_on = { out := φ, inv := { inv := { on := fun (x : OA) => (inverse_on x).inv, natural := ⋯ }, inv_pre := ⋯, inv_post := ⋯ } }
Instances For
Natural isomorphisms have a corresponding notion of horizontal composition.
Equations
- h_F.hcomp h_G = { out := h_F.out.hcomp h_G.out, inv := { inv := h_F.inv.inv.hcomp h_G.inv.inv, inv_pre := ⋯, inv_post := ⋯ } }