Other Agda modules in this section (28)

Complete compiler-highlighted source. Follow a symbol to its declaration.

# Pasting and composition of coordinate comparisons

A coordinate square can be transported by postcomposition. Its composite
comparison records the source and target associators explicitly. The following
calculations compare successive transports and transport of a pasted square;
the external pentagon accounts for the reassociations.

```agda
{-# OPTIONS --safe --without-K #-}
open import Agda.Primitive using (Level)
open import SCT.VolumeI.Chapter01.Section01.Vocabulary
import SCT.VolumeI.Chapter01.Section01.Terminal as Terminal
import SCT.VolumeI.Chapter01.Section01.Products as Products
import SCT.VolumeI.Chapter01.Section02.Coherence as Coherence
import SCT.VolumeI.Chapter01.Section02.Specialization as Specialization
import SCT.VolumeI.Chapter01.Section03.IdentificationCalculus.Structural as Structural
import SCT.VolumeI.Chapter01.Section03.IdentificationCalculus.FunctorCoherence as FunctorCoherence

import SCT.VolumeI.Chapter01.Section03.IdentificationCalculus.CoordinateNaturality as CoordinateNaturality
import SCT.VolumeI.Chapter01.Section03.ProductCalculus.PairingNaturality as PairingNaturality

module SCT.VolumeI.Chapter01.Section03.IdentificationCalculus.CoordinateComparisons
  {c m a : Level} (V : Vocabulary c m a)
  (T : Terminal.TerminalStructure V) (P : Products.ProductData V)
  (PL : Products.ProductLaws V P)
  (S : Coherence.CompositionStructure V T P)
  (VC : Coherence.VerticalCoherence V T P S)
  (W : Coherence.WhiskeringCoherence V T P S)
  (PT : Coherence.PentagonTriangleCoherence V T P S) where

open PairingNaturality V T P PL S VC W using (cancel-right)

open Vocabulary V
open Operations V
open Coherence.CompositionStructure S
open Coherence.Composition V T P S
open Coherence.WhiskeringCoherence W
open Specialization V T P PL S
open Specialization.Units V T P PL S VC
open Specialization.Whiskering V T P PL S W
open Structural V T P PL S W using (whisker-mixed-at; postWhisker-comp-at)
open FunctorCoherence V T P PL S VC W PT using (pentagon-whiskered; cancel-right-reflect)

coordinate-comparison : {R X K C D : CAT}
  (ρ : MAP R X) (f : MAP X C) (Ο€ : MAP K C) (h : MAP R K)
  β†’ (Ο€ ∘ h) =₁ (f ∘ ρ) β†’ (F : MAP C D)
  β†’ ((F ∘ Ο€) ∘ h) =₁ ((F ∘ f) ∘ ρ)
coordinate-comparison ρ f Ο€ h b F =
  (comp-assoc ρ f F) ⁻¹ βˆ™ ((F ◁ b) βˆ™ comp-assoc h Ο€ F)

open CoordinateNaturality V T P PL S VC W public using (paste-squares; coordinate-at)

private
  cancel-inverse-pair : {C D : CAT} {f g gβ€² : MAP C D}
    (q : g =₁ gβ€²) (u : f =₁ g)
    β†’ (q ⁻¹ βˆ™ (q βˆ™ u)) =β‚‚ u
  cancel-inverse-pair q u = isoComp-unitΛ‘-at u βˆ™
    (isoComp-cong (isoComp-inverseΛ‘-at q) (idIso u) βˆ™
      (isoComp-assoc-at (q ⁻¹) q u) ⁻¹)

pentagon-left-corner : {C D : CAT} {xβ‚€ x₁ xβ‚‚ x₃ xβ‚„ : MAP C D}
  (A : x₁ =₁ xβ‚„) (B : xβ‚€ =₁ x₁) (Cβ€² : x₃ =₁ xβ‚„)
  (Dβ€² : xβ‚‚ =₁ x₃) (E : xβ‚€ =₁ xβ‚‚)
  β†’ (A βˆ™ B) =β‚‚ (Cβ€² βˆ™ (Dβ€² βˆ™ E))
  β†’ (Dβ€² ⁻¹ βˆ™ (Cβ€² ⁻¹ βˆ™ A)) =β‚‚ (E βˆ™ B ⁻¹)
pentagon-left-corner A B Cβ€² Dβ€² E pentagon =
  let clear : ((A βˆ™ B) βˆ™ B ⁻¹) =β‚‚ A
      clear = isoComp-unitΚ³-at A βˆ™
        (isoComp-cong (idIso A) (isoComp-inverseΚ³-at B) βˆ™ isoComp-assoc-at A B (B ⁻¹))
      expandCorner : A =β‚‚ (Cβ€² βˆ™ (Dβ€² βˆ™ (E βˆ™ B ⁻¹)))
      expandCorner = isoComp-cong (idIso Cβ€²) (isoComp-assoc-at Dβ€² E (B ⁻¹)) βˆ™
        (isoComp-assoc-at Cβ€² (Dβ€² βˆ™ E) (B ⁻¹) βˆ™
          (isoComp-cong pentagon (idIso (B ⁻¹)) βˆ™ clear ⁻¹))
  in cancel-inverse-pair Dβ€² (E βˆ™ B ⁻¹) βˆ™
    (isoComp-cong (idIso (Dβ€² ⁻¹)) (cancel-inverse-pair Cβ€² (Dβ€² βˆ™ (E βˆ™ B ⁻¹))) βˆ™
      isoComp-cong (idIso (Dβ€² ⁻¹)) (isoComp-cong (idIso (Cβ€² ⁻¹)) expandCorner))
```

Successive postcomposition is governed by three squares: the source
pentagon, associator naturality, and the target pentagon.

```agda
private
  post-inverse : {X C D : CAT} (F : MAP C D) {u v : MAP X C} (Ξ± : u =₁ v)
    β†’ (F ◁ Ξ± ⁻¹) =β‚‚ ((F ◁ Ξ±) ⁻¹)
  post-inverse F {u} Ξ± = cancel-right-reflect (F ◁ Ξ±)
    ((isoComp-inverseΛ‘-at (F ◁ Ξ±)) ⁻¹ βˆ™
    (postWhisker-idIso F u βˆ™
    ((postWhisker F ◁ isoComp-inverseΛ‘-at Ξ±) βˆ™
      (postWhisker-isoComp-at F (α ⁻¹) α) ⁻¹)))

coordinate-outer-comp : {R X K C D E : CAT}
  (ρ : MAP R X) (s : MAP X C) (Ο€ : MAP K C) (h : MAP R K)
  (b : (Ο€ ∘ h) =₁ (s ∘ ρ)) (g : MAP C D) (f : MAP D E)
  β†’
      ((comp-assoc s g f β–· ρ) βˆ™ coordinate-comparison ρ s Ο€ h b (f ∘ g)) =β‚‚
      (coordinate-comparison ρ (g ∘ s) (g ∘ Ο€) h
        (coordinate-comparison ρ s Ο€ h b g) f βˆ™ (comp-assoc Ο€ g f β–· h))
coordinate-outer-comp ρ s Ο€ h b g f =
  let inputLeft = comp-assoc h Ο€ (f ∘ g)
      middleLeft = (f ∘ g) ◁ b
      outputLeft = (comp-assoc ρ s (f ∘ g)) ⁻¹
      inputRight = (f ◁ comp-assoc h Ο€ g) βˆ™ comp-assoc h (g ∘ Ο€) f
      middleRight = f ◁ (g ◁ b)
      outputRight = (comp-assoc ρ (g ∘ s) f) ⁻¹ βˆ™ (f ◁ (comp-assoc ρ s g) ⁻¹)
      atSource = comp-assoc Ο€ g f β–· h
      afterInput = comp-assoc (Ο€ ∘ h) g f
      beforeOutput = comp-assoc (s ∘ ρ) g f
      atTarget = comp-assoc s g f β–· ρ

      inputSquare : (inputRight βˆ™ atSource) =β‚‚ (afterInput βˆ™ inputLeft)
      inputSquare = (pentagon-whiskered h Ο€ g f) ⁻¹ βˆ™
        isoComp-assoc-at (f ◁ comp-assoc h Ο€ g) (comp-assoc h (g ∘ Ο€) f) atSource

      middleSquare : (middleRight βˆ™ afterInput) =β‚‚ (beforeOutput βˆ™ middleLeft)
      middleSquare = (postWhisker-comp-at b g f) ⁻¹

      outputSquare : (outputRight βˆ™ beforeOutput) =β‚‚ (atTarget βˆ™ outputLeft)
      outputSquare = pentagon-left-corner beforeOutput (comp-assoc ρ s (f ∘ g))
          (f ◁ comp-assoc ρ s g) (comp-assoc ρ (g ∘ s) f) atTarget
          (pentagon-whiskered ρ s g f) βˆ™
        (isoComp-assoc-at ((comp-assoc ρ (g ∘ s) f) ⁻¹)
          ((f ◁ comp-assoc ρ s g) ⁻¹) beforeOutput βˆ™
        isoComp-cong
          (isoComp-cong (idIso ((comp-assoc ρ (g ∘ s) f) ⁻¹)) (post-inverse f (comp-assoc ρ s g)))
          (idIso beforeOutput))

      assembled : ((outputRight βˆ™ (middleRight βˆ™ inputRight)) βˆ™ atSource) =β‚‚
        (atTarget βˆ™ (outputLeft βˆ™ (middleLeft βˆ™ inputLeft)))
      assembled = paste-squares (middleLeft βˆ™ inputLeft) (middleRight βˆ™ inputRight)
        outputLeft outputRight atSource beforeOutput atTarget
        (paste-squares inputLeft inputRight middleLeft middleRight
          atSource afterInput beforeOutput inputSquare middleSquare) outputSquare

      outside = (comp-assoc ρ (g ∘ s) f) ⁻¹
      firstImage = f ◁ (comp-assoc ρ s g) ⁻¹
      lastImage = f ◁ comp-assoc h Ο€ g
      finalInput = comp-assoc h (g ∘ Ο€) f
      mergeImages : (firstImage βˆ™ (middleRight βˆ™ lastImage)) =β‚‚
        (f ◁ coordinate-comparison ρ s Ο€ h b g)
      mergeImages = (postWhisker-isoComp-at f ((comp-assoc ρ s g) ⁻¹)
          ((g ◁ b) βˆ™ comp-assoc h Ο€ g)) ⁻¹ βˆ™
        isoComp-cong (idIso firstImage) ((postWhisker-isoComp-at f (g ◁ b) (comp-assoc h Ο€ g)) ⁻¹)

      normalizeRight : (outputRight βˆ™ (middleRight βˆ™ inputRight)) =β‚‚
        (coordinate-comparison ρ (g ∘ s) (g ∘ Ο€) h (coordinate-comparison ρ s Ο€ h b g) f)
      normalizeRight = isoComp-cong (idIso outside)
        (isoComp-cong mergeImages (idIso finalInput) βˆ™
        ((isoComp-assoc-at firstImage (middleRight βˆ™ lastImage) finalInput) ⁻¹ βˆ™
          isoComp-cong (idIso firstImage) ((isoComp-assoc-at middleRight lastImage finalInput) ⁻¹))) βˆ™
        isoComp-assoc-at outside firstImage (middleRight βˆ™ (lastImage βˆ™ finalInput))
  in isoComp-cong normalizeRight (idIso atSource) βˆ™ assembled ⁻¹
```

For a pasted coordinate square, compatibility of postwhiskering with
composition and the mixed whiskering square give the corresponding
comparison of the two image pastings.

```agda
cancel-inverse-tail : {X Y : CAT} {a b c : MAP X Y}
  (Ξ± : b =₁ c) (Ξ² : b =₁ a)
  β†’ ((Ξ± βˆ™ Ξ² ⁻¹) βˆ™ Ξ²) =β‚‚ Ξ±
cancel-inverse-tail Ξ± Ξ² = isoComp-unitΚ³-at Ξ± βˆ™
  (isoComp-cong (idIso Ξ±) (isoComp-inverseΛ‘-at Ξ²) βˆ™ isoComp-assoc-at Ξ± (Ξ² ⁻¹) Ξ²)

post-pasting : {Q R K A B : CAT}
  (F : MAP A B) (Ο€ : MAP K A) (h : MAP R K) (k : MAP Q R)
  {q : MAP R A} {v : MAP Q A}
  (b : (Ο€ ∘ h) =₁ q) (c : (q ∘ k) =₁ v)
  β†’
      ((F ◁ (c βˆ™ ((b β–· k) βˆ™ (comp-assoc k h Ο€) ⁻¹))) βˆ™
        (comp-assoc (h ∘ k) Ο€ F βˆ™ comp-assoc k h (F ∘ Ο€))) =β‚‚
      ((F ◁ c) βˆ™ (comp-assoc k q F βˆ™ (((F ◁ b) βˆ™ comp-assoc h Ο€ F) β–· k)))
post-pasting F Ο€ h k {q} b c =
  let A = comp-assoc k h Ο€
      B = comp-assoc k (Ο€ ∘ h) F
      C = comp-assoc h Ο€ F β–· k
      D = comp-assoc k q F
      e = F ◁ c
      d = F ◁ (b β–· k)
      p = F ◁ (c βˆ™ ((b β–· k) βˆ™ A ⁻¹))
      cancellation = cancel-inverse-tail (c βˆ™ (b β–· k)) A βˆ™
        isoComp-cong ((isoComp-assoc-at c (b β–· k) (A ⁻¹)) ⁻¹) (idIso A)
      join = postWhisker-isoComp-at F c (b β–· k) βˆ™
        ((postWhisker F ◁ cancellation) βˆ™
          (postWhisker-isoComp-at F (c βˆ™ ((b β–· k) βˆ™ A ⁻¹)) A) ⁻¹)
      mixed = (whisker-mixed-at b k F) ⁻¹
      finish = isoComp-cong (idIso e)
        (isoComp-cong (idIso D)
          ((preWhisker-isoComp-at (F ◁ b) (comp-assoc h Ο€ F) k) ⁻¹) βˆ™
          isoComp-assoc-at D ((F ◁ b) β–· k) C)
      exchange = isoComp-cong (idIso e) (isoComp-cong mixed (idIso C)) βˆ™
        (isoComp-cong (idIso e) ((isoComp-assoc-at d B C) ⁻¹) βˆ™
          isoComp-assoc-at e d (B βˆ™ C))
  in finish βˆ™ (exchange βˆ™
    (isoComp-cong join (idIso (B βˆ™ C)) βˆ™
      ((isoComp-assoc-at p (F ◁ A) (B βˆ™ C)) ⁻¹ βˆ™
        isoComp-cong (idIso p) (pentagon-whiskered k h Ο€ F))))

cancel-forward : {X Y : CAT} {a b c : MAP X Y}
  (Ξ± : a =₁ b) (Ξ² : c =₁ b)
  β†’ (Ξ± βˆ™ (Ξ± ⁻¹ βˆ™ Ξ²)) =β‚‚ Ξ²
cancel-forward Ξ± Ξ² = isoComp-unitΛ‘-at Ξ² βˆ™
  (isoComp-cong (isoComp-inverseΚ³-at Ξ±) (idIso Ξ²) βˆ™
    (isoComp-assoc-at α (α ⁻¹) β) ⁻¹)
```

A change of substitution also transports a specified projection square.
We postcompose that square, then use the pasting calculation to remove
the intermediate associators.

```agda
coordinate-at-change : {Q R K A B : CAT}
  (F : MAP A B) (Ο€ : MAP K A) (h : MAP R K) (t : MAP Q R)
  (s : MAP Q K) (Ξ΄ : (h ∘ t) =₁ s)
  {q : MAP R A} {v : MAP Q A}
  (b : (Ο€ ∘ h) =₁ q) (bβ€² : (Ο€ ∘ s) =₁ v) (c : (q ∘ t) =₁ v)
  β†’ (bβ€² βˆ™ (Ο€ ◁ Ξ΄)) =β‚‚ (c βˆ™ ((b β–· t) βˆ™ (comp-assoc t h Ο€) ⁻¹))
  β†’
      (coordinate-at F Ο€ s bβ€² βˆ™ (((F ∘ Ο€) ◁ Ξ΄) βˆ™ comp-assoc t h (F ∘ Ο€))) =β‚‚
      ((F ◁ c) βˆ™ (comp-assoc t q F βˆ™ (coordinate-at F Ο€ h b β–· t)))
coordinate-at-change F Ο€ h t s Ξ΄ b bβ€² c square =
  let leftImage = F ◁ bβ€²
      inputA = comp-assoc s Ο€ F
      change = (F ∘ Ο€) ◁ Ξ΄
      sourceA = comp-assoc t h (F ∘ Ο€)
      across = F ◁ (Ο€ ◁ Ξ΄)
      afterA = comp-assoc (h ∘ t) Ο€ F
      projected = c βˆ™ ((b β–· t) βˆ™ (comp-assoc t h Ο€) ⁻¹)
      projectImage = (postWhisker F ◁ square) βˆ™ (postWhisker-isoComp-at F bβ€² (Ο€ ◁ Ξ΄)) ⁻¹
      moveInput = isoComp-assoc-at across afterA sourceA βˆ™
        (isoComp-cong (postWhisker-comp-at Ξ΄ Ο€ F) (idIso sourceA) βˆ™
          (isoComp-assoc-at inputA change sourceA) ⁻¹)
      removeInner = isoComp-cong projectImage (idIso (afterA βˆ™ sourceA)) βˆ™
        (isoComp-assoc-at leftImage across (afterA βˆ™ sourceA)) ⁻¹
  in post-pasting F Ο€ h t b c βˆ™
    (removeInner βˆ™ (isoComp-cong (idIso leftImage) moveInput βˆ™
      isoComp-assoc-at leftImage inputA (change βˆ™ sourceA)))
```

Postcomposition also preserves the specified comparison for two successive
substitutions. The second form permits an identification of their composite
with another substitution; both forms keep the supplied square explicit.

```agda
post-iterated-comparison : {Q R X A B : CAT}
  (F : MAP A B) (H : MAP X A) (r : MAP R X) (s : MAP Q R)
  {H₁ : MAP R A} {Hβ‚‚ H₃ : MAP Q A}
  (u : (H ∘ r) =₁ H₁) (v : (H₁ ∘ s) =₁ Hβ‚‚)
  (w : (H ∘ (r ∘ s)) =₁ H₃) (z : Hβ‚‚ =₁ H₃)
  β†’ (w βˆ™ comp-assoc s r H) =β‚‚ (z βˆ™ (v βˆ™ (u β–· s)))
  β†’
      (((F ◁ w) βˆ™ comp-assoc (r ∘ s) H F) βˆ™ comp-assoc s r (F ∘ H)) =β‚‚
      ((F ◁ z) βˆ™ (((F ◁ v) βˆ™ comp-assoc s H₁ F) βˆ™
        (((F ◁ u) βˆ™ comp-assoc r H F) β–· s)))
post-iterated-comparison F H r s {H₁} u v w z p =
  let A = comp-assoc s r H
      pre = u β–· s
      normalize = isoComp-assoc-at (z βˆ™ v) pre (A ⁻¹) βˆ™
        (isoComp-cong ((isoComp-assoc-at z v pre) ⁻¹) (idIso (A ⁻¹)) βˆ™
          (isoComp-cong p (idIso (A ⁻¹)) βˆ™ (cancel-right A w) ⁻¹))
      image = ((F ◁ u) βˆ™ comp-assoc r H F) β–· s
      targetA = comp-assoc s H₁ F
      finish = isoComp-cong (idIso (F ◁ z)) ((isoComp-assoc-at (F ◁ v) targetA image) ⁻¹) βˆ™
        (isoComp-assoc-at (F ◁ z) (F ◁ v) (targetA βˆ™ image) βˆ™
          isoComp-cong (postWhisker-isoComp-at F z v) (idIso (targetA βˆ™ image)))
  in finish βˆ™
    (post-pasting F H r s u (z βˆ™ v) βˆ™
      (isoComp-cong (postWhisker F ◁ normalize)
        (idIso (comp-assoc (r ∘ s) H F βˆ™ comp-assoc s r (F ∘ H))) βˆ™
        isoComp-assoc-at (F ◁ w) (comp-assoc (r ∘ s) H F) (comp-assoc s r (F ∘ H))))

post-change-comparison : {Q R X A B : CAT}
  (F : MAP A B) (H : MAP X A) (h : MAP R X) (t : MAP Q R)
  (s : MAP Q X) (Ξ΄ : (h ∘ t) =₁ s)
  {H₁ : MAP R A} {Hβ‚‚ H₃ : MAP Q A}
  (u : (H ∘ h) =₁ H₁) (v : (H₁ ∘ t) =₁ Hβ‚‚)
  (w : (H ∘ s) =₁ H₃) (z : Hβ‚‚ =₁ H₃)
  β†’ (w βˆ™ ((H ◁ Ξ΄) βˆ™ comp-assoc t h H)) =β‚‚ (z βˆ™ (v βˆ™ (u β–· t)))
  β†’
      (((F ◁ w) βˆ™ comp-assoc s H F) βˆ™ (((F ∘ H) ◁ Ξ΄) βˆ™ comp-assoc t h (F ∘ H))) =β‚‚
      ((F ◁ z) βˆ™ (((F ◁ v) βˆ™ comp-assoc t H₁ F) βˆ™
        (((F ◁ u) βˆ™ comp-assoc h H F) β–· t)))
post-change-comparison F H h t s Ξ΄ u v w z square =
  let image = F ◁ w
      inputA = comp-assoc s H F
      change = (F ∘ H) ◁ Ξ΄
      outsideA = comp-assoc t h (F ∘ H)
      across = F ◁ (H ◁ Ξ΄)
      middleA = comp-assoc (h ∘ t) H F
      normalization = (isoComp-assoc-at (F ◁ (w βˆ™ (H ◁ Ξ΄))) middleA outsideA) ⁻¹ βˆ™
        (isoComp-cong ((postWhisker-isoComp-at F w (H ◁ Ξ΄)) ⁻¹) (idIso (middleA βˆ™ outsideA)) βˆ™
        ((isoComp-assoc-at image across (middleA βˆ™ outsideA)) ⁻¹ βˆ™
        (isoComp-cong (idIso image) (isoComp-assoc-at across middleA outsideA) βˆ™
        (isoComp-cong (idIso image) (isoComp-cong (postWhisker-comp-at Ξ΄ H F) (idIso outsideA)) βˆ™
        (isoComp-cong (idIso image) ((isoComp-assoc-at inputA change outsideA) ⁻¹) βˆ™
          isoComp-assoc-at image inputA (change βˆ™ outsideA))))))
  in post-iterated-comparison F H h t u v (w βˆ™ (H ◁ Ξ΄)) z
      (square βˆ™ isoComp-assoc-at w (H ◁ Ξ΄) (comp-assoc t h H)) βˆ™ normalization

```

Successive postcomposition of a coordinate comparison is governed by the
external pentagon and naturality of the associator.

```agda
coordinate-at-outer-composition : {R K X Y Z : CAT}
  (F : MAP Y Z) (G : MAP X Y) (Ο€ : MAP K X) (t : MAP R K)
  {p : MAP R X} (b : (Ο€ ∘ t) =₁ p)
  β†’ (comp-assoc p G F βˆ™ coordinate-at (F ∘ G) Ο€ t b) =β‚‚
      ((F ◁ coordinate-at G Ο€ t b) βˆ™
        (comp-assoc t (G ∘ Ο€) F βˆ™ (comp-assoc Ο€ G F β–· t)))
coordinate-at-outer-composition F G Ο€ t {p} b =
  let A = comp-assoc p G F
      B = (F ∘ G) ◁ b
      C = comp-assoc t Ο€ (F ∘ G)
      D = F ◁ (G ◁ b)
      E = comp-assoc (Ο€ ∘ t) G F
      I = F ◁ comp-assoc t Ο€ G
      J = comp-assoc t (G ∘ Ο€) F
      K = comp-assoc Ο€ G F β–· t
  in isoComp-cong ((postWhisker-isoComp-at F (G ◁ b) (comp-assoc t Ο€ G)) ⁻¹) (idIso (J βˆ™ K)) βˆ™
    ((isoComp-assoc-at D I (J βˆ™ K)) ⁻¹ βˆ™
    (isoComp-cong (idIso D) (pentagon-whiskered t Ο€ G F) βˆ™
    (isoComp-assoc-at D E C βˆ™
    (isoComp-cong (postWhisker-comp-at b G F) (idIso C) βˆ™ (isoComp-assoc-at A B C) ⁻¹))))
```

A chosen reverse comparison can be used to solve the image square for its
upper side. The cancellation witness is an input: the statement therefore
applies to the specified reverse comparison, without replacing it by an
unspecified inverse with the same endpoints.

```agda
post-change-with-inverse : {Q R X A B : CAT}
  (F : MAP A B) (H : MAP X A) (h : MAP R X) (t : MAP Q R)
  (s : MAP Q X) (Ξ΄ : (h ∘ t) =₁ s)
  {H₁ : MAP R A} {Hβ‚‚ H₃ : MAP Q A}
  (u : (H ∘ h) =₁ H₁) (v : (H₁ ∘ t) =₁ Hβ‚‚)
  (w : (H ∘ s) =₁ H₃) (z : Hβ‚‚ =₁ H₃)
  (square : (w βˆ™ ((H ◁ Ξ΄) βˆ™ comp-assoc t h H)) =β‚‚ (z βˆ™ (v βˆ™ (u β–· t))))
  (back : (F ∘ H₁) =₁ ((F ∘ H) ∘ h))
  (inverse : (((F ◁ u) βˆ™ comp-assoc h H F) βˆ™ back) =β‚‚ idIso (F ∘ H₁))
  β†’ ((F ◁ z) βˆ™ ((F ◁ v) βˆ™ comp-assoc t H₁ F)) =β‚‚
      (((F ◁ w) βˆ™ comp-assoc s H F) βˆ™
        (((F ∘ H) ◁ Ξ΄) βˆ™ (comp-assoc t h (F ∘ H) βˆ™ (back β–· t))))
post-change-with-inverse F H h t s Ξ΄ {H₁} u v w z square back inverse =
  let A = comp-assoc t h (F ∘ H)
      forward = (F ◁ u) βˆ™ comp-assoc h H F
      before = forward β–· t
      backT = back β–· t
      target = (F ◁ z) βˆ™ ((F ◁ v) βˆ™ comp-assoc t H₁ F)
      short = (F ◁ w) βˆ™ comp-assoc s H F
      step = (F ∘ H) ◁ Ξ΄
      cancel = preWhisker-idIso (F ∘ H₁) t βˆ™
        ((preWhisker t ◁ inverse) βˆ™ (preWhisker-isoComp-at forward back t) ⁻¹)
      compare = (isoComp-assoc-at (F ◁ z) ((F ◁ v) βˆ™ comp-assoc t H₁ F) before) ⁻¹ βˆ™
        post-change-comparison F H h t s Ξ΄ u v w z square
  in isoComp-cong (idIso short) (isoComp-assoc-at step A backT) βˆ™
    (isoComp-assoc-at short (step βˆ™ A) backT βˆ™
    (isoComp-cong (compare ⁻¹) (idIso backT) βˆ™
    ((isoComp-assoc-at target before backT) ⁻¹ βˆ™
    (isoComp-cong (idIso target) (cancel ⁻¹) βˆ™ (isoComp-unitΚ³-at target) ⁻¹))))
```