Skip to content

wip: lax slices of bicategories#617

Draft
plt-amy wants to merge 3 commits intomainfrom
aliao/lax-slice
Draft

wip: lax slices of bicategories#617
plt-amy wants to merge 3 commits intomainfrom
aliao/lax-slice

Conversation

@plt-amy
Copy link
Copy Markdown
Member

@plt-amy plt-amy commented Apr 3, 2026

Implements lax slices as in §7.1 of 2-Dimensional Categories.

@aathn since you seem to have a better head on your shoulders than me when it comes to reasoning in bicategories, I'm curious if you can make out any useful patterns in the coherences I wrote in e.g. Bislice .unitor-l? A lot of of the lax functor algebra feels very reusable, but I'm struggling to see any patterns. I'm guessing you'll have run into similar shaped problems in #612 and I've just missed the helpers…

@Lavenza
Copy link
Copy Markdown
Member

Lavenza commented Apr 3, 2026

Pull request preview

New pages
Changed pages

@aathn
Copy link
Copy Markdown
Contributor

aathn commented Apr 4, 2026

@plt-amy I'm glad that you speak so highly of my abilities, but as you know, I wrote a bicategory solver to avoid having to do the reasoning by hand 😅

So one answer would be that the proofs could be simplified by using the solver, for example (in unitor-l):

    snd = sym $ Hom.invertible→monic rem₁ _ _ $
      g ▶ F.₂ (B.ρ← _) ∘ g ▶ F.γ→ _ ∘ α→ _ ∘ θ₀ ◀ _ ∘ f ▶ F.υ→ ∘ ρ→ f
        ≡⟨ bicat! C ⟩
      g ▶ F.₂ (B.ρ← _) ∘ g ▶ F.γ→ _ ∘ g ▶ (_ ▶ F.υ→) ∘ α→ _ ∘ θ₀ ◀ id ∘ ρ→ f
        ≡⟨ ▶.pulll3 (F.right-unit p₀) ⟩
      g ▶ ρ← _ ∘ α→ _ ∘ θ₀ ◀ id ∘ ρ→ f
        ≡⟨ bicat! C ⟩
      θ₀
        ≡⟨ ▶.insertl (Fr.annihilate B.ρ≅.invr) ⟩
      g ▶ F.₂ (B.ρ← _) ∘ g ▶ F.₂ (B.ρ→ _) ∘ θ₀ α→ 
        ∎

If we had a solver which could also handle lax functor coherence, I think the proofs could be entirely automated. However, for one I'm not sure how to make a solver which handles lax functors (since the compositor and unitor are not invertible), and for another, I suppose this is not quite the answer you were looking for.

The helpers that I defined for #612 are in the Cat.Bi.Lax-functor.Base module of that PR:

  ▶-comp
    :  {X Y Z} {f : Y B.↦ Z}
     postaction C (₁ f) F∘ P₁ {X} {Y} => P₁ F∘ postaction B f
  ▶-comp .η x              = γ→ (_ , x)
  ▶-comp .is-natural x y α =
       CH.cdr (Fr.introl (preaction C (₁ y)) P₁.F-id)
    ∙∙ γ→nat _ _
    ∙∙ CH.car (P₁.F-∘ _ _ ∙ CH.eliml (Fr.elim P₁ B.compose.◀.F-id))

  ◀-comp
    :  {X Y Z} {f : X B.↦ Y}
     preaction C (₁ f) F∘ P₁ {Y} {Z} => P₁ F∘ preaction B f
  ◀-comp .η x              = γ→ (x , _)
  ◀-comp .is-natural x y α =
       CH.cdr (Fr.intror (postaction C (₁ x)) P₁.F-id)
    ∙∙ γ→nat _ _
    ∙∙ CH.car (P₁.F-∘ _ _ ∙ CH.elimr (Fr.elim P₁ B.compose.▶.F-id))

I think the naturality of these could probably be used to simplify bislice-compose, I see a similar pattern in the first steps of lmap .snd and rmap .snd.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants