Other Agda modules in this section (188)

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

# Pairing the vertex equations of two faces

The endpoint equations for two scalar coordinates assemble into the
corner equation for their product. The edge comparisons remain the
specified pairings of their scalar frames.

```agda
{-# OPTIONS --safe --without-K #-}
open import Agda.Primitive using (Level)
open import SCT.VolumeI.Chapter01.Theory using (Theory)
import SCT.VolumeI.Chapter01.Section04.MappingAnimae as Mapping
import SCT.VolumeI.Chapter01.Section07.FunctorCategories as Categories
import SCT.VolumeI.Chapter02.Section02.EvaluationCalculus.PairedProjectionComposition as Paired
import SCT.VolumeI.Chapter01.Section04.SquareCalculus.ProjectionSquares as Projection
import SCT.VolumeI.Chapter01.Section03.ProductCalculus.PairingNaturality as PN

module SCT.VolumeI.Chapter02.Section02.SquareCalculus.PairedFaceCorners
  {c m a : Level} (š’Æ : Theory c m a) (M : Mapping.MappingAnimae š’Æ)
  (ℱ : Categories.FunctorCategories š’Æ M) where

open import SCT.VolumeI.Chapter02.Section01.EvaluationCalculus.EndpointEvaluation š’Æ M ℱ public
open PN vocabulary terminal products productLaws composition vertical whiskering using (cancel-left)
module PS = Projection š’Æ

module At {X A B K L : CAT} (F : MAP X A) (G : MAP X B)
  (d : MAP K X) (k : MAP L X) (u : Obj-abs K) (v : Obj-abs L)
  {Fā‚€ : MAP K A} {Gā‚€ : MAP K B} {F₁ : MAP L A} {G₁ : MAP L B}
  {x : Obj-abs A} {y : Obj-abs B}
  (fd : (F ∘ d) =₁ Fā‚€) (gd : (G ∘ d) =₁ Gā‚€)
  (fk : (F ∘ k) =₁ F₁) (gk : (G ∘ k) =₁ G₁)
  (fu : (Fā‚€ ∘ u) =₁ x) (gu : (Gā‚€ ∘ u) =₁ y)
  (fv : (F₁ ∘ v) =₁ x) (gv : (G₁ ∘ v) =₁ y)
  (Ī“ : (d ∘ u) =₁ (k ∘ v)) where
  module Source = Paired.At š’Æ M ℱ F G d u fd gd fu gu
  module Target = Paired.At š’Æ M ℱ F G k v fk gk fv gv
  first-before = (fu āˆ™ (fd ā–· u)) āˆ™ (comp-assoc u d F) ⁻¹
  first-after = (fv āˆ™ (fk ā–· v)) āˆ™ (comp-assoc v k F) ⁻¹
  second-before = (gu āˆ™ (gd ā–· u)) āˆ™ (comp-assoc u d G) ⁻¹
  second-after = (gv āˆ™ (gk ā–· v)) āˆ™ (comp-assoc v k G) ⁻¹
  left-boundary = (Source.first ā–· u) āˆ™ (comp-assoc u d (pair F G)) ⁻¹
  right-boundary = (Target.first ā–· v) āˆ™ (comp-assoc v k (pair F G)) ⁻¹
  point-corner = Target.second ⁻¹ āˆ™ Source.second

  abstract
    framed : (first-after āˆ™ (F ◁ Ī“)) =ā‚‚ first-before →
      (second-after āˆ™ (G ◁ Ī“)) =ā‚‚ second-before →
      (Target.composite āˆ™ (pair F G ◁ Ī“)) =ā‚‚ Source.composite
    framed first second = Source.comparison āˆ™
      (Paired.paired-square š’Æ M ℱ F G Source.left Target.left Source.right Target.right Ī“
        (isoComp-assoc-at fu (fd ā–· u) ((comp-assoc u d F) ⁻¹) āˆ™
          first āˆ™ isoComp-cong ((isoComp-assoc-at fv (fk ā–· v) ((comp-assoc v k F) ⁻¹)) ⁻¹) (idIso (F ◁ Ī“)))
        (isoComp-assoc-at gu (gd ā–· u) ((comp-assoc u d G) ⁻¹) āˆ™
          second āˆ™ isoComp-cong ((isoComp-assoc-at gv (gk ā–· v) ((comp-assoc v k G) ⁻¹)) ⁻¹) (idIso (G ◁ Ī“))) āˆ™
        isoComp-cong (Target.comparison ⁻¹) (idIso (pair F G ◁ Ī“)))

    corner : (first-after āˆ™ (F ◁ Ī“)) =ā‚‚ first-before →
      (second-after āˆ™ (G ◁ Ī“)) =ā‚‚ second-before →
      (point-corner āˆ™ left-boundary) =ā‚‚
        (right-boundary āˆ™ (pair F G ◁ Ī“))
    corner first second = cancel-left Target.second (right-boundary āˆ™ (pair F G ◁ Ī“)) āˆ™
      isoComp-cong (idIso (Target.second ⁻¹))
        (isoComp-assoc-at Target.second right-boundary (pair F G ◁ Ī“) āˆ™ (framed first second) ⁻¹) āˆ™
      isoComp-assoc-at (Target.second ⁻¹) Source.second left-boundary
```