Other Agda modules in this section (32)
# Evaluation of a represented diagram under postcomposition

A diagram may be presented by a functor together with its actual uncurrying
identification. Applying a functor transports that presentation. Point
evaluation of the transported presentation agrees with native
postcomposition evaluation, retaining the given representation witness.

```agda
{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter02.Section01.RepresentedDiagramPostcomposition where
open import SCT.VolumeI.Chapter01.Section01.Vocabulary
open Operations
open import SCT.VolumeI.Chapter01.Section02.Coherence using (id₌; comp-assoc; module Composition)
open Composition
open import SCT.VolumeI.Chapter01.Section02.Specialization
  using (comp₌-cong; comp₌-assoc; preWhisker-comp₌)
open import SCT.VolumeI.Chapter01.Section03.Identifications.FunctorCoherence using (whisker-mixed-One)
open import SCT.VolumeI.Chapter01.Section07.FunctorCategories using (Fun)
open import SCT.VolumeI.Chapter01.Section07.Currying using (funUncurry)
open import SCT.VolumeI.Chapter01.Section07.Functoriality using (funPost; funPost-uncurry)
open import SCT.VolumeI.Chapter02.Section01.Morphisms using (insert; evAt; module AtPoint)
open import SCT.VolumeI.Chapter02.Section01.PointEvaluationPostcomposition using (module PointPostcomposition)
open import SCT.VolumeI.Chapter02.Section01.PostcompositionPointNaturality using (module PostcompositionPointsAt)

open import SCT.VolumeI.Chapter01.Section07.DiagramRepresentations using (represented-postcomposition)

module RepresentedDiagramPostcomposition {Γ : Context} {I P C D : CAT Γ}
  (F : MAP C D) (h : MAP P (Fun I C)) (H : MAP (P × I) C)
  (beta : funUncurry h =₁ H) (a : MAP One I) where
  private
    i : MAP P (P × I)
    i = insert a
    U : MAP (P × I) C
    U = funUncurry h
    phi = funPost-uncurry F h
    Q = AtPoint.uncurry-image a (funPost {C = I} F ∘ h)
    before = comp-assoc i U F
    b = (F ◁ beta) ▷ i
    f = phi ▷ i
    image = F ◁ (beta ▷ i)
    module Native = PointPostcomposition.Framed a F h (beta ▷ i)

  representation : funUncurry (funPost {C = I} F ∘ h) =₁ (F ∘ H)
  representation = represented-postcomposition {I = I} {P = P} {C = C} {D = D} F h H beta
  original-point : (evAt a ∘ h) =₁ (H ∘ i)
  original-point = AtPoint.represented-point {I = I} {C = C} a h H beta
  input-assoc : ((F ∘ H) ∘ i) =₁ (F ∘ (H ∘ i))
  input-assoc = comp-assoc i H F
  point-tail : (evAt a ∘ (funPost {C = I} F ∘ h)) =₁ ((F ∘ H) ∘ i)
  point-tail = (representation ▷ i) ∙ Q
  point : (evAt a ∘ (funPost {C = I} F ∘ h)) =₁ (F ∘ (H ∘ i))
  point = input-assoc ∙ point-tail
  native : (evAt a ∘ (funPost {C = I} F ∘ h)) =₁ (F ∘ (H ∘ i))
  native = (F ◁ original-point) ∙ PostcompositionPointsAt.point F h a

  compatibility : (input-assoc ∙ point-tail) =₂ native
  compatibility = Native.frame-image ∙
    (comp₌-cong (whisker-mixed-One beta i F) (id₌ (f ∙ Q)) ∙
      ((comp₌-assoc input-assoc b (f ∙ Q)) ⁻¹ ∙
        (comp₌-cong (id₌ input-assoc) (comp₌-assoc b f Q) ∙
          comp₌-cong (id₌ input-assoc)
            (comp₌-cong (preWhisker-comp₌ (F ◁ beta) phi i) (id₌ Q)))))
```