Other Agda modules in this section (54)
- AbsoluteObjects
- Contractible
- CoproductDomain
- CoreOfFun
- Currying
- Evaluation
- EvaluationCalculus.CoreViaFunctorCategories
- EvaluationCalculus.EvaluatedAssociativitySquare
- EvaluationCalculus.EvaluatedProjectionNormalization
- EvaluationCalculus.EvaluatedRightUnit
- EvaluationCalculus.EvaluatedSeparationChange
- EvaluationCalculus.EvaluatedUnitSquare
- EvaluationCalculus.EvaluationNaturality
- EvaluationCalculus.IsomorphismLifting
- EvaluationCalculus.IteratedCompatibility
- EvaluationCalculus.MappingCompatibility
- EvaluationCalculus.MappingProofs
- EvaluationCalculus.MappingSubstitution
- EvaluationCalculus.MappingTests
- EvaluationCalculus.NestedCoordinateNaturality
- EvaluationCalculus.PostcompositionUnitFrame
- EvaluationCalculus.PrecompositionMiddleEvaluation
- EvaluationCalculus.PrecompositionMiddleRestriction
- EvaluationCalculus.PrecompositionOuterFrame
- EvaluationCalculus.PrecompositionProductFrameComparison
- EvaluationCalculus.PrecompositionRestrictedOuterFrame
- EvaluationCalculus.PrecompositionTriangleFrames
- EvaluationCalculus.PrecompositionUnitEvaluation
- EvaluationCalculus.ProductSeparationUnits
- EvaluationCalculus.Representation
- EvaluationCalculus.RestrictedFrameNaturality
- EvaluationCalculus.RestrictedFrames
- EvaluationCalculus.SubstitutionCoherence
- EvaluationCalculus.UncurryingAction
- EvaluationCalculus.UncurryingUnits
- Everything
- ExponentialLaw
- FunctorCategories
- FunctorProducts
- FunctorPullbacks
- Functoriality
- MappingComparison
- PullbackCalculus.ConeCurrying
- PullbackCalculus.ConeReflection
- PullbackCalculus.ConeUncurrying
- PullbackCalculus.ConeUncurryingNormalization
- PullbackCalculus.ConeUncurryingPre
- PullbackCalculus.MappedCones
- PullbackCalculus.PullbackMappingTests
- PullbackCalculus.UncurryingCones
- PullbackCalculus.UncurryingSquares
- Setup
- TerminalDomain
- Uniqueness
Complete compiler-highlighted source. Follow a symbol to its declaration.
# Common middle frames for postcomposition triangles The two routes through a triangle of postcomposition functors have the same middle endpoint comparison. This is an instance of substitution coherence for uncurrying and naturality of whiskering. ```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 module SCT.VolumeI.Chapter01.Section07.EvaluationCalculus.PostcompositionTriangleFrames {c m a : Level} (đŻ : Theory c m a) (M : Mapping.MappingAnimae đŻ) (â± : Categories.FunctorCategories đŻ M) where open import SCT.VolumeI.Chapter01.Section07.Setup đŻ M â± public open import SCT.VolumeI.Chapter01.Section07.EvaluationCalculus.MappingSubstitution đŻ M â± using (funPost-uncurry-restrict) import SCT.VolumeI.Chapter01.Section03.IdentificationCalculus.Structural as Structural open Structural vocabulary terminal products productLaws composition whiskering using (whisker-mixed-at) import SCT.VolumeI.Chapter01.Section03.ProductCalculus.PairingNaturality as PN open PN vocabulary terminal products productLaws composition vertical whiskering using (cancel-right) module At {C D : CAT} (K : CAT) (l : MAP C D) (r : MAP D C) where L : MAP (Fun K C) (Fun K D) L = funPost l R : MAP (Fun K D) (Fun K C) R = funPost r e : MAP (Fun K C Ă K) C e = funEval d : MAP (Fun K D Ă K) D d = funEval ÎČl : funUncurry L =â (l â e) ÎČl = funPost-ÎČ l ÎČr : funUncurry R =â (r â d) ÎČr = funPost-ÎČ r Ï : MAP (Fun K C Ă K) (Fun K D Ă K) Ï = productMap L (id K) u : funUncurry (R â L) =â (r â (l â e)) u = (r â ÎČl) â funPost-uncurry r L v : funUncurry (L â R) =â (l â (r â d)) v = (l â ÎČr) â funPost-uncurry l R middle : funUncurry ((L â R) â L) =â (l â (r â (l â e))) middle = (l â u) â (funPost-uncurry l (R â L) â funUncurryIso (comp-assoc L R L)) restricted : funUncurry ((L â R) â L) =â (l â (r â (l â e))) restricted = (l â (r â ÎČl)) â (((l â comp-assoc Ï d r) â comp-assoc Ï (r â d) l) â ((v â· Ï) â funUncurry-restrict (L â R) L)) private lead = l â (r â ÎČl) first = l â comp-assoc Ï d r beta = l â (ÎČr â· Ï) restriction = l â funUncurry-restrict R L post = funPost-uncurry l (R â L) assoc = funUncurryIso (comp-assoc L R L) after = comp-assoc Ï (funUncurry R) l shifted = comp-assoc Ï (r â d) l image = (l â ÎČr) â· Ï other = funPost-uncurry l R â· Ï last = funUncurry-restrict (L â R) L abstract expanded-unit : (l â u) =â (lead â (first â (beta â restriction))) expanded-unit = isoComp-cong (idIso lead) (isoComp-cong (idIso first) (postWhisker-isoComp-at l (ÎČr â· Ï) (funUncurry-restrict R L)) â postWhisker-isoComp-at l (comp-assoc Ï d r) ((ÎČr â· Ï) â funUncurry-restrict R L)) â postWhisker-isoComp-at l (r â ÎČl) (funPost-uncurry r L) tail : (beta â (after â (other â last))) =â (shifted â ((v â· Ï) â last)) tail = isoComp-cong (idIso shifted) (isoComp-cong ((preWhisker-isoComp-at (l â ÎČr) (funPost-uncurry l R) Ï) â»Âč) (idIso last) â (isoComp-assoc-at image other last) â»Âč) â isoComp-assoc-at shifted image (other â last) â isoComp-cong ((whisker-mixed-at (ÎČr) Ï l) â»Âč) (idIso (other â last)) â (isoComp-assoc-at beta after (other â last)) â»Âč comparison : middle =â restricted comparison = isoComp-cong (idIso lead) ((isoComp-assoc-at first shifted ((v â· Ï) â last)) â»Âč) â isoComp-cong (idIso lead) (isoComp-cong (idIso first) tail) â isoComp-cong (idIso lead) (isoComp-cong (idIso first) (isoComp-cong (idIso beta) (funPost-uncurry-restrict l R L))) â isoComp-cong (idIso lead) (isoComp-cong (idIso first) (isoComp-assoc-at beta restriction (post â assoc)) â isoComp-assoc-at first (beta â restriction) (post â assoc)) â isoComp-assoc-at lead (first â (beta â restriction)) (post â assoc) â isoComp-cong expanded-unit (idIso (post â assoc)) post-comparison : (middle â funUncurryIso ((comp-assoc L R L) â»Âč)) =â ((l â u) â funPost-uncurry l (R â L)) post-comparison = cancel-right (funUncurryIso (comp-assoc L R L)) ((l â u) â funPost-uncurry l (R â L)) â isoComp-cong ((isoComp-assoc-at (l â u) (funPost-uncurry l (R â L)) (funUncurryIso (comp-assoc L R L))) â»Âč) (funUncurryIso-inverse (comp-assoc L R L)) ```