Indexed Polynomial Functor
An indexed polynomial functor is an extra-dependent version of a Polynomial Functor. We can think of these as "multivariate" polynomial functors.
These polynomials can be defined in any category as a sort of span
But we typically want to view the series of maps as a tower of Bundles. If we specialize to Category of Sets, we get the following definition.
record IxPoly (I J : Type) : Typeβ where
no-eta-equality
field
Shape : J β Type
Pos : β {j} β Shape j β Type
ix : β {j} {s : Shape j} β Pos s β I
We also recall the definition of a Morphism of Indexed Polynomial Functors:
record IxPoly-hom {I J I' J'} (u : I β I') (v : J β J') (P : IxPoly I J) (Q : IxPoly I' J') : Typeβ where
field
shape : β {j} β P .Shape j β Q .Shape (v j)
pos : β {j} (s : P .shape j) β Q .Pos (shape s) β P .Pos s
index : β {j} (s : Shape j) (q# : Q .Pos (shape s)) β u (P .ix (pos s q#)) β‘ Q .ix q#
As Fibrations
With a bit of massaging, we see that the Shape
field
comes from the Family
Fibration, and Pos
comes from the Fibrewise
Opposite of the Family
Fibration on a Total Category;
EG: the start of a Dialectica
Category
.
However, ix
is rather odd; it looks like some sort
of "cofamily fibration?"
We do have the start of a construction:
Graded : β {ΞΊ} β Displayed (B ΓαΆ Sets ΞΊ) {!!} {!!}
Graded .Ob[_] (X , S) = E.Ob[ X ] β β S β
Graded .Hom[_] (h , f) s t = β {y'} β f (s (h E.^* y')) β‘ t y'
Graded .Hom[_]-set = {!!}
Graded .id' {X , S} {s} = ap s ?
Graded ._β'_ = {!!}
Graded .idr' = {!!}
Graded .idl' = {!!}
Graded .assoc' = {!!}
However, this requires that the underlying fibration is Split.
There is a more general construction of the form:
Graded : Displayed B (oe β βe) (oe β βe)
Graded .Ob[_] X = Functor (Fibre E X) (Fibre F X)
Graded .Hom[_] f P Q = P Fβ E.base-change f => F.base-change f Fβ Q
However, this is not quite the same; we could try and use a discrete category here, but this doesn't really capture what is going on. Moreover, note that these graditions will totally trash our morphisms in .
I think a more useful perspective is to curry the function
ix
to get
ix : Ξ£ (j : J) (s : Shape j) (Pos p) β I
; this is a
bundle map in the category of sets. Moreover, one typically talks
about indexed polynomials in a Locally
Cartesian Closed Category; both of these settings are Comprehension
Categories.
This feels much more plausible:
Gradings : Displayed (β« E ΓαΆ B) βb βb
Gradings .Ob[_] ((Ξ , Ξ±) , X) = B.Hom (Ξ E.β¨Ύ Ξ±) X
Gradings .Hom[_] (total-hom v f , u) s t = u B.β s β‘ t B.β (v E.β¨ΎΛ’ f)
Gradings .Hom[_]-set _ _ _ = hlevel 2
Gradings .id' = B.idl _ β B.intror E.sub-id
Gradings ._β'_ p q =
B.pullr q
β B.extendl p
β apβ B._β_ refl (sym (E.sub-β))
Gradings .idr' _ = prop!
Gradings .idl' _ = prop!
Gradings .assoc' _ _ _ = prop!
This is exactly a Comma Category for the identity functor and the total space functor obtained from a comprehension category! Note that this goes in the opposite direction of Artin Gluing, which forms a comma category .
However, this doesn't quite line up with how indexed polynomial
morphisms work; this doesn't give us the required "twist": instead,
we want to have our morphisms be something like
u B.β s B.β (B.id E.β¨ΎΛ’ f) β‘ t B.β (v E.β¨ΎΛ’ E.Ο* v Ξ²)
.
This can be done neatly by having ourselves be displayed over the
total category of the Fibrewise
Opposite.
Random Junk
Gradings : Displayed (β« E^op ΓαΆ B) βb βb
Gradings .Ob[_] ((Ξ , Ξ±) , X) = B.Hom (Ξ E.β¨Ύ Ξ±) X
Gradings .Hom[_] {(Ξ , Ξ±) , X} {(Ξ , Ξ²) , Y} (total-hom v f , u) s t =
u B.β s B.β (B.id E.β¨ΎΛ’ f) β‘ t B.β (v E.β¨ΎΛ’ E.Ο* v Ξ²)
Gradings .Hom[_]-set _ _ _ = hlevel 2
Gradings .id' {(Ξ , Ξ±) , X} {s} =
B.id B.β s B.β (B.id E.β¨ΎΛ’ E.Ο* B.id Ξ±) β‘β¨ B.idl _ β©
s B.β (B.id E.β¨ΎΛ’ E.Ο* B.id Ξ±) β
Gradings ._β'_ {(Ξ , Ξ±) , X} {(Ξ , Ξ²) , Y} {(Ξ , Ξ³) , Z} {r} {s} {t} {total-hom v f , u} {total-hom w g , x} p q =
(u B.β x) B.β r B.β β B.id E.β¨ΎΛ’ E.hom[] (g E.β' E.hom[] (E.Ο*.universal' _ (f E.β' E.Ο* w (v E.^* Ξ³)) E.β' _)) β
β‘β¨ ap! (apβ E._β¨ΎΛ’_ (sym (B.idl _)) (E.unwrap (B.idl _))) β©
(u B.β x) B.β r B.β β (B.id B.β B.id) E.β¨ΎΛ’ (g E.β' E.hom[] (E.Ο*.universal' B.id-comm (f E.β' E.Ο* w (v E.^* Ξ³)) E.β' _)) β
β‘β¨ ap! E.sub-β β©
(u B.β x) B.β r B.β (B.id E.β¨ΎΛ’ g) B.β (B.id E.β¨ΎΛ’ E.hom[] _)
β‘β¨ B.pullr (B.pulll3 q) β©
u B.β (s B.β (w E.β¨ΎΛ’ E.Ο* w Ξ²)) B.β (B.id E.β¨ΎΛ’ E.hom[] (E.Ο*.universal' B.id-comm (f E.β' E.Ο* w (v E.^* Ξ³)) E.β' _))
β‘β¨ ap (u B.β_) (B.pullr (sym (E.sub-β))) β©
u B.β s B.β (w B.β B.id E.β¨ΎΛ’ E.Ο* w Ξ² E.β' E.hom[] (E.Ο*.universal' B.id-comm (f E.β' E.Ο* w (v E.^* Ξ³)) E.β' _))
β‘β¨ apβ (Ξ» Ο Ο β u B.β s B.β (Ο E.β¨ΎΛ’ Ο)) B.id-comm (E.cast[] \( E.unwrapr _ E.β[] E.pulll[] B.id-comm (E.Ο*.commutesp B.id-comm _) E.β[] E.pullr[] (B.idr _) (E.Ο*.commutesp (B.idr _) (E.Ο*.universal w (E.Ο* (v B.β w) Ξ³)))) β©
u B.β s B.β β B.id B.β w E.β¨ΎΛ’ f E.β' E.Ο*.universal w (E.Ο* (v B.β w) Ξ³) β
β‘β¨ ap (Ξ» Ο β u B.β s B.β Ο) (E.sub-β) β©
u B.β s B.β (B.id E.β¨ΎΛ’ f) B.β (w E.β¨ΎΛ’ E.Ο*.universal w (E.Ο* (v B.β w) Ξ³))
β‘β¨ B.pulll3 p β©
(t B.β (v E.β¨ΎΛ’ E.Ο* v Ξ³)) B.β (w E.β¨ΎΛ’ E.Ο*.universal w (E.Ο* (v B.β w) Ξ³))
β‘β¨ B.pullr (sym E.sub-β β ap (v B.β w E.β¨ΎΛ’_) (E.Ο*.commutes w (E.Ο* (v B.β w) Ξ³))) β©
t B.β (v B.β w E.β¨ΎΛ’ E.Ο* (v B.β w) Ξ³)
β
Gradings .idr' _ = prop!
Gradings .idl' _ = prop!
Gradings .assoc' _ _ _ = prop!