References #
- [Steve Awodey, Natural models of homotopy type theory][Awodey2017]
Polynomial Functor #
-- TODO: there are various sorry
-carrying proofs in below which require instances of
CartesianExponentiable
for various constructions on morphisms. They need to be defined in
Poly.Exponentiable
.
P : MvPoly I O
is a multivariable polynomial with input variables in I
,
output variables in O
, and with arities E
dependent on I
.
- E : C
- B : C
- i : self.E ⟶ I
- p : self.E ⟶ self.B
- exp : CartesianExponentiable self.p
- o : self.B ⟶ O
Instances For
P : UvPoly C
is a polynomial functors in a single variable
- p : E ⟶ B
- exp : CartesianExponentiable self.p
Instances For
The identity polynomial in many variables.
Equations
- MvPoly.id I = { E := I, B := I, i := CategoryTheory.CategoryStruct.id I, p := CategoryTheory.CategoryStruct.id I, exp := CartesianExponentiable.id, o := CategoryTheory.CategoryStruct.id I }
Instances For
Equations
- MvPoly.instCartesianExponentiablePId I = CartesianExponentiable.id
Given an object X
, The unique map initial.to X : ⊥_ C ⟶ X
is exponentiable.
Equations
- MvPoly.instCartesianExponentiableTo X = { functor := { obj := sorry, map := fun {X_1 Y : CategoryTheory.Over (⊥_ C)} => sorry, map_id := ⋯, map_comp := ⋯ }, adj := sorry }
The constant polynomial in many variables: for this we need the initial object.
Equations
- MvPoly.const A = { E := ⊥_ C, B := O ⨯ A, i := CategoryTheory.Limits.initial.to I, p := CategoryTheory.Limits.initial.to (O ⨯ A), exp := inferInstance, o := CategoryTheory.Limits.prod.fst }
Instances For
The monomial polynomial in many variables.
Equations
- MvPoly.monomial i p = { E := E, B := O, i := i, p := p, exp := inferInstance, o := CategoryTheory.CategoryStruct.id O }
Instances For
The sum of two polynomials in many variables.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The product of two polynomials in many variables.
Equations
- P.prod Q = sorry
Instances For
Instances For
Equations
- P.apply = P.functor.obj
Instances For
Equations
- MvPoly.id_apply I q = { hom := id (id { left := id sorry, right := sorry, w := ⋯ }), inv := sorry, hom_inv_id := ⋯, inv_hom_id := ⋯ }
Instances For
Equations
- P.pullback_counit Q = CartesianExponentiable.adj.counit.app (CategoryTheory.Over.mk (CategoryTheory.Limits.pullback.snd P.o Q.i))
Instances For
Equations
- P.comp Q = sorry
Instances For
Equations
- ⋯ = ⋯
The constant polynomial in many variables: for this we need the initial object
Equations
- UvPoly.const S = { p := CategoryTheory.Limits.initial.to S, exp := inferInstance }
Instances For
Equations
- UvPoly.smul S P = { p := CategoryTheory.Limits.prod.map (CategoryTheory.CategoryStruct.id S) P.p, exp := sorry }
Instances For
The product of two polynomials in a single variable.
Equations
- One or more equations did not get rendered due to their size.
Instances For
For a category C
with binary products, P.functor : C ⥤ C
is the functor associated
to a single variable polynomial P : UvPoly E B
.
Instances For
Equations
- P.toMvPoly = { E := E, B := B, i := CategoryTheory.Limits.terminal.from E, p := P.p, exp := P.exp, o := CategoryTheory.Limits.terminal.from B }
Instances For
The projection morphism from ∑ b : B, X ^ (E b)
to B
.
Equations
- P.proj' X = (((Δ_ CategoryTheory.Limits.terminal.from E).comp (Π_ P.p)).obj X).hom
Instances For
Equations
- P.auxFunctor = P.toMvPoly.functor
Instances For
We use the equivalence between Over (⊤_ C)
and C
to get functor : C ⥤ C
.
Alternatively we can give a direct definition of functor
in terms of exponentials.
Equations
- P.functor' = CategoryTheory.equivOverTerminal.functor.comp (P.auxFunctor.comp CategoryTheory.equivOverTerminal.inverse)
Instances For
Instances For
The projection morphism from ∑ b : B, X ^ (E b)
to B
again.
Instances For
Essentially star is just the pushforward Beck-Chevalley natural transformation associated to
the square defined by g
, but you have to compose with various natural isomorphisms.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The identity polynomial functor in single variable.
Equations
- UvPoly.id B = { p := CategoryTheory.CategoryStruct.id B, exp := inferInstance }
Instances For
Evaluating the identity polynomial at an object X
is isomorphic to B × X
.
Equations
- UvPoly.id_apply B X = { hom := CategoryTheory.CategoryStruct.id (B ⨯ X), inv := CategoryTheory.CategoryStruct.id (B ⨯ X), hom_inv_id := ⋯, inv_hom_id := ⋯ }
Instances For
A morphism from a polynomial P
to a polynomial Q
is a pair of morphisms e : E ⟶ E'
and b : B ⟶ B'
such that the diagram
E ---P.p--> B
| |
e b
| |
v v
E' --Q.p--> B'
is a pullback square.
- e : E ⟶ E'
- b : B ⟶ B'
- is_pullback : CategoryTheory.IsPullback P.p self.e self.b Q.p
Instances For
Equations
- UvPoly.Hom.id P = { e := CategoryTheory.CategoryStruct.id E, b := CategoryTheory.CategoryStruct.id B, is_pullback := ⋯ }
Instances For
Equations
- f.comp g = { e := CategoryTheory.CategoryStruct.comp f.e g.e, b := CategoryTheory.CategoryStruct.comp f.b g.b, is_pullback := ⋯ }
Instances For
Bundling up the the polynomials over different bases to form the underlying type of the category of polynomials.
- E : C
- B : C
- poly : UvPoly self.E self.B
Instances For
Equations
- UvPoly.Total.of P = { E := E, B := B, poly := P }
Instances For
The category of polynomial functors in a single variable.
Equations
- instCategoryTotal = CategoryTheory.Category.mk ⋯ ⋯ ⋯
Equations
- Total.ofHom P Q α = { e := α.e, b := α.b, is_pullback := ⋯ }
Instances For
Equations
- UvPoly.instSMulTotal = { smul := fun (S : C) (P : UvPoly.Total C) => UvPoly.Total.of (UvPoly.smul S P.poly) }
Scaling a polynomial P
by an object S
is isomorphic to the product of const S
and the
polynomial P
.
Equations
- UvPoly.smul_eq_prod_const S P = { hom := sorry, inv := sorry, hom_inv_id := ⋯, inv_hom_id := ⋯ }
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Generic pullback #
The UP of polynomial functors is mediated by a "generic pullback" [Awodey2017, p. 10, fig. 6].
X
^
| u₂
genPb ---------------> E
fst | ┘ | p
v v
P.functor.obj X --------> B
P.proj X
Equations
- P.genPb X = CategoryTheory.Limits.pullback (P.proj X) P.p
Instances For
Equations
- UvPoly.genPb.fst P X = CategoryTheory.Limits.pullback.fst (P.proj X) P.p
Instances For
Equations
- UvPoly.genPb.u₂ P X = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.congrHom ⋯ ⋯).hom (P.polyPair (CategoryTheory.CategoryStruct.id (P.functor.obj X))).snd
Instances For
The second component of polyPair
is a comparison map of pullbacks composed with genPb.u₂
.
Universal property of the polynomial functor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
UvPoly.equiv
is natural in Γ
.
UvPoly.equiv
is natural in X
.
Equations
- UvPoly.foo f = CategoryTheory.Over.mapSquareIso P.poly.p f.b f.e Q.poly.p ⋯
Instances For
Equations
- UvPoly.bar f = CategoryTheory.asIso (CategoryTheory.Over.pullbackBeckChevalleyNatTrans P.poly.p f.b f.e Q.poly.p ⋯)
Instances For
Equations
- UvPoly.bar' f = sorry
Instances For
A map of polynomials induces a natural transformation between their associated functors.
Equations
- UvPoly.naturality f = sorry