Skip to content
codescent logo

Codescent Skill

codescent

A **codescent object** is the 2-categorical analogue of a coequalizer. While coequalizers identify elements under an equivalence relation, codescent objects identify 1-cells under a coherent system of 2-cells. They are the fundamental tool for:

plurigrid/asi0installs67starsOther

SKILL.md

Full skill instructions

Codescent Skill

"The codescent object of the simplicial bar resolution of a pseudoalgebra is a strict algebra equivalent to it." — Steve Lack (2002)

Trit: -1 (MINUS - validator) Color: #2626D8 (Blue) Status: Production Ready


Overview

A codescent object is the 2-categorical analogue of a coequalizer. While coequalizers identify elements under an equivalence relation, codescent objects identify 1-cells under a coherent system of 2-cells. They are the fundamental tool for:

  1. Strictifying pseudo T-algebras to strict ones
  2. Computing bicolimits in categories of T-algebras
  3. Verifying coherence — checking that all diagrams involving associators and unitors commute

Mathematical Definition

A codescent diagram is a truncated cosimplicial object:

    d₀            d₀           d₀
    →             →            →
  A ⇉ B  ⇛  C     (objects, 1-cells, 2-cells)
    →             →
    d₁            d₁

with 2-cells:
  σ₀ : d₁d₀ → d₀d₀   (face coherence)
  σ₁ : d₁d₁ → d₀d₁   (face coherence)
  τ  : d₀s₀ → id      (degeneracy coherence)

subject to cocycle conditions:
  σ₀(d₀) ∘ σ₁(d₀) = σ₀(d₁)  (cocycle)
  σ₀(s₀) = τ(d₀)             (normalization)
  σ₁(s₀) = τ(d₁)             (normalization)

The CODESCENT OBJECT is the 2-colimit of this data:
  Cods(A ⇉ B ⇛ C) = universal A equipped with
    q : B → Cods
    q ∘ d₀ = q ∘ d₁  (up to specified isomorphism)
    satisfying cocycle conditions

Codescent vs Coequalizer

┌──────────────────────────────────────────────────────────────┐
│                                                              │
│  1-CATEGORICAL (Coequalizer):                                │
│                                                              │
│    X ⟹ Y → Q                                                │
│    f,g    q                                                  │
│                                                              │
│    q ∘ f = q ∘ g   (equality)                                │
│                                                              │
│  2-CATEGORICAL (Codescent):                                  │
│                                                              │
│    A ⇉ B ⇛ C → Cods                                         │
│         d₀,d₁  σ    q                                       │
│                                                              │
│    q ∘ d₀ ≅ q ∘ d₁   (isomorphism, not equality)            │
│    + coherence 2-cells satisfying cocycle conditions         │
│                                                              │
│  Key difference: codescent tracks WHY things are equal,      │
│  not just THAT they are equal.                               │
│                                                              │
└──────────────────────────────────────────────────────────────┘

The Bar Resolution

The canonical source of codescent diagrams is the bar resolution of a pseudo T-algebra:

Given pseudo T-algebra (A, a, ā, ...):

  Bar resolution:
    T³A ⇛ T²A ⇉ TA → A

  where:
    d₀ = μA : T²A → TA       (multiplication)
    d₁ = Ta  : T²A → TA      (apply pseudo action)
    σ  = ā   : Ta ∘ μ → μ ∘ T²a  (associator 2-cell)

  Codescent of this = strict T-algebra equivalent to (A, a, ā)

GF(3) Mapping

ConceptTritRoleJustification
Codescent object-1 (MINUS)ValidatorVerifies coherence, constrains structure
Bar resolution0 (ERGODIC)CoordinatorProduces the codescent diagram
Strictification+1 (PLUS)GeneratorOutput: strict algebra

Codescent is fundamentally a validation operation: it checks whether coherence data (associators, unitors) satisfies the cocycle conditions, and produces the strictified result only when these conditions hold.

Why This Skill Was Missing

Codescent was partially covered but not properly treated:

  1. coequalizers handles 1-categorical quotients but not 2-dimensional codescent with its coherence 2-cells
  2. 2-monad describes the BKP theorems that use codescent but doesn't own the construction
  3. topos-adhesive-rewriting uses pushouts and coequalizers for rewriting but at the 1-categorical level
  4. flexible-algebra depends on codescent (flexibility = retract of codescent object) but doesn't construct it

Gap: No skill owned the 2-categorical colimit construction with its cocycle conditions, bar resolution input, and coherence verification. The coequalizers skill explicitly handles quotients by equivalence relations, but codescent handles quotients by coherent systems of isomorphisms — a strictly more refined operation.

Julia/​Catlab Integration

using Catlab.CategoricalAlgebra

@present SchCodescent(FreeSchema) begin
    # Truncated cosimplicial data
    Level0::Ob   # A
    Level1::Ob   # B
    Level2::Ob   # C
    TwoCell::Ob  # Coherence 2-cells

    # Face maps
    d0_01::Hom(Level0, Level1)   # d₀ : A → B
    d1_01::Hom(Level0, Level1)   # d₁ : A → B
    d0_12::Hom(Level1, Level2)   # d₀ : B → C
    d1_12::Hom(Level1, Level2)   # d₁ : B → C
    d2_12::Hom(Level1, Level2)   # d₂ : B → C

    # Degeneracy
    s0::Hom(Level1, Level0)      # s₀ : B → A

    # Coherence 2-cells (face/​degeneracy coherence)
    sigma_source::Hom(TwoCell, Level2)
    sigma_target::Hom(TwoCell, Level2)

    # Codescent object
    CodescentObj::Ob
    cods_map::Hom(Level1, CodescentObj)  # q : B → Cods

    CocycleStatus::AttrType  # {satisfied, violated}
    cocycle::Attr(TwoCell, CocycleStatus)
end

Canonical Examples

SourceCodescent DiagramResult
Pseudo monoidal categoryBar(T³C ⇛ T²C ⇉ TC)Strict monoidal (Mac Lane coherence)
Pseudo T-algebraT³A ⇛ T²A ⇉ TAStrict T-algebra (BKP coherence)
Descent data on sheafČech nerveSheaf (glued section)
Homotopy colimitSimplicial resolutionColimit in model category

Bidirectional Neighbor Index

Edge-Scoped Propagator Table

EdgeDirectionScopeFires When
codescent → 2-monadoutboundscope:verifyCodescent object validates coherence
2-monad → codescentinboundscope:composePseudoalgebra needs strictification
codescent → flexible-algebraoutboundscope:verifyCodescent result checked for flexibility
flexible-algebra → codescentinboundscope:composeFlexibility requires codescent construction
codescent → doctrinal-adjunctionoutboundscope:verifyStrictification confirms doctrinal structure
doctrinal-adjunction → codescentinboundscope:verifyCoherence of lift validated by codescent
codescent → coequalizersoutboundscope:changeCodescent generalizes coequalizer to 2-dim
coequalizers → codescentinboundscope:compose1-categorical quotient lifts to codescent
codescent → sheaf-cohomologyoutboundscope:verifyDescent = dual of codescent
sheaf-cohomology → codescentinboundscope:verifyČech cocycle = codescent cocycle
codescent → segal-typesoutboundscope:verifySegal condition validated via codescent
segal-types → codescentinboundscope:composeSegal type composition uses codescent
codescent → graded-monadoutboundscope:verifyGraded codescent checks index coherence
graded-monad → codescentinboundscope:composeGraded monad strictified via codescent
codescent → topos-adhesive-rewritingoutboundscope:composeAdhesive codescent for rewriting
topos-adhesive-rewriting → codescentinboundscope:changeRewriting produces codescent data
codescent → infinity-operadsoutboundscope:verifyDendroidal codescent
infinity-operads → codescentinboundscope:compose∞-operad algebras via codescent
codescent → elements-infinity-catsoutboundscope:verify∞-categorical codescent
elements-infinity-cats → codescentinboundscope:composeModel-independent codescent

Mutual Awareness Summary

         2-monad (0)
              ↑ verify
              │
coequalizers (0) ←── CODESCENT (-1) ──→ flexible-alg (+1)
              │           │
              ↓ verify    ↓ verify
      sheaf-coh (-1)  segal-types (-1)

+ 6 additional edges to existing skills

Total edges: 20 (10 bidirectional pairs) Propagator balance: 4 scope:change + 8 scope:compose + 8 scope:verify = balanced (validator-heavy, appropriate for trit -1)

GF(3) Triads

codescent (-1) ⊗ 2-monad (0) ⊗ flexible-algebra (+1) = 0 ✓  [BKP Core]
codescent (-1) ⊗ doctrinal-adjunction (0) ⊗ synthetic-adjunctions (+1) = 0 ✓  [Adjunction-Codescent]
codescent (-1) ⊗ kan-extensions (0) ⊗ free-monad-gen (+1) = 0 ✓  [Free-Codescent]
codescent (-1) ⊗ graded-monad (0) ⊗ operad-compose (+1) = 0 ✓  [Graded-Codescent]
codescent (-1) ⊗ elements-infinity-cats (0) ⊗ rezk-types (+1) = 0 ✓  [∞-Codescent]

Commands

just codescent-compute diagram       # Compute codescent object
just codescent-bar T pseudo-alg      # Form bar resolution, compute codescent
just codescent-cocycle check         # Verify cocycle conditions
just codescent-strictify pseudo-alg  # Full strictification pipeline
just codescent-compare coeq codes    # Compare coequalizer vs codescent

References

  • Lack, S. (2002). "Codescent objects and coherence." JPAA 175:223-241
  • Blackwell, Kelly & Power (1989). "Two-dimensional monad theory." JPAA 59:1-41
  • Street, R. (1976). "Limits indexed by category-valued 2-functors." JPAA 8:149-181
  • Lack, S. (2010). "A 2-categories companion." IMA Vol. Math. Appl. 152:105-191
  • Power, J. (1989). "A general coherence result." JPAA 57:165-173

SDF Interleaving

Primary Chapter: 4. Pattern Matching

Concepts: unification, match, segment variables, pattern

GF(3) Balanced Triad

codescent (-1) + SDF.Ch4 (+1) + [balancer] (0) = 0

Skill Trit: -1 (MINUS - verification)

Connection Pattern

Pattern matching unifies structure. Codescent verifies that coherence patterns (cocycles) match — unifying pseudo-algebraic data into strict form via cocycle-checked descent.