Skip to content
cccskills
FreePublished on GitHub

coequalizers

Quotient redundant skill paths via coequalizers, preserving GF(3) conservation

The English summary is being prepared. Showing the original description.

See how to install

Files included (44)

  • SKILL.md8.7 KB
  • all_skill_trits.csv13.2 KB
  • analyze_meta_bundles.jl9.2 KB
  • analyze_meta_bundles.org9.9 KB
  • analyze_pairs_and_triplets.jl10.4 KB
  • analyze_pairs_and_triplets.org11.2 KB
  • assign_all_trits.jl14.3 KB
  • assign_all_trits.org15.0 KB
  • coequalizers.org13.0 KB
  • CONCOMITANT_SKILLS.md2.7 KB
  • EXECUTION_RESULTS.md6.7 KB
  • EXECUTION_SUMMARY.md7.2 KB
  • FINAL_SYNTHESIS.md12.1 KB
  • geodesics/analyze_meta_bundles.geodesic.jl10.9 KB
  • geodesics/analyze_pairs_and_triplets.geodesic.jl12.1 KB
  • geodesics/assign_all_trits.geodesic.jl15.9 KB
  • geodesics/coequalizers.geodesic.jl17.1 KB
  • geodesics/run_full_world_cycle.geodesic.jl12.8 KB
  • geodesics/run_world_cycle.geodesic.jl6.6 KB
  • geodesics/SkillCoequalizers.geodesic.jl17.2 KB
  • geodesics/test_execution_corrected.geodesic.jl5.9 KB
  • geodesics/test_execution.geodesic.jl7.5 KB
  • geodesics/WorldHopping.geodesic.jl16.5 KB
  • INTEGRATION_COMPLETE.md11.3 KB
  • MCP_WORLDS.md16.2 KB
  • MISSING_DIMENSIONS.md12.9 KB
  • PUSH_PULL_MEASUREMENT.md17.1 KB
  • run_full_world_cycle.jl11.1 KB
  • run_full_world_cycle.org11.8 KB
  • run_world_cycle.jl5.0 KB
  • run_world_cycle.org5.7 KB
  • SkillCoequalizers.jl15.5 KB
  • SkillCoequalizers.org16.2 KB
  • test_execution_corrected.jl4.2 KB
  • test_execution_corrected.org5.0 KB
  • test_execution.jl5.9 KB
  • test_execution.org6.6 KB
  • VISUALIZATION.md16.7 KB
  • WHEN_NAME_HASHING.md11.0 KB
  • WORLD_CYCLE_DIAGRAM.md12.0 KB
  • WORLD_CYCLE_RESULTS.md10.8 KB
  • WorldHopping.jl14.8 KB
  • WorldHopping.org15.6 KB
  • WORLDS.md12.6 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Coequalizers Skill

Quotient redundant skill paths via categorical coequalizers

Version: 1.0.0
Trit: 0 (ERGODIC - coordinates equivalences)
Domain: category-theory, skill-composition, colimits, behavioral-equivalence


Overview

The coequalizers skill provides:

  1. Behavioral equivalence checking via bisimulation (from temporal-coalgebra)
  2. Parallel morphism quotienting via coequalizers (colimits)
  3. Skill overlap detection and gluing (from oapply-colimit pushouts)
  4. GF(3) conservation in quotient spaces
  5. MCP integration for cross-agent skill synchronization

Core Concept

What Are Coequalizers?

A coequalizer is the colimit of two parallel morphisms:

    X ──f──→ Y
    │  g     │
    └────────→ q
             ↓
             Q  (coequalizer)

Universal property: q ∘ f = q ∘ g

In Sets: Q = Y / ~ where ~ is the smallest equivalence relation such that f(x) ~ g(x) for all x ∈ X.

For skills: If two skill paths produce behaviorally equivalent outputs, the coequalizer gives the canonical quotient.


Key Patterns from asi Repository

1. oapply-colimit: Pushout = Coproduct + Coequalizer

From /skills/oapply-colimit/SKILL.md:

function oapply(d::UndirectedWiringDiagram, xs::Vector{ResourceSharer})
    # Step 1: Coproduct of state spaces
    S = coproduct((FinSet ∘ nstates).(xs))
    
    # Step 2: Pushout identifies shared variables via COEQUALIZER
    S′ = pushout(portmap, junctions)  # ← Uses coequalizer internally
    
    # Step 3: Induced dynamics sum at junctions
    return ResourceSharer(induced_interface, induced_dynamics)
end

Key insight: Pushouts decompose as coproduct + coequalizer. This is how skills with shared interfaces are glued together.

2. Bisimulation-game: Behavioral Equivalence

From /skills/bisimulation-game/SKILL.md:

def bisimilar(skill₁, skill₂, input, depth=10):
    """
    Recursively check if skills produce same observations.
    
    Two skills are bisimilar if:
    - They produce same immediate output
    - Their continuations are pairwise bisimilar
    """
    obs₁ = observe(skill₁, input)
    obs₂ = observe(skill₂, input)
    
    if obs₁ != obs₂:
        return False
    
    # Recursive check on continuations
    if depth > 0:
        for (next₁, inp₁), (next₂, inp₂) in zip(
            skill₁.continuations(input),
            skill₂.continuations(input)
        ):
            if not bisimilar(next₁, next₂, inp₁, depth-1):
                return False
    
    return True

Application: Use bisimulation to establish equivalence relation ~ before applying coequalizer.

3. Adhesive Rewriting: Incremental Query Updating

From /skills/topos-adhesive-rewriting/SKILL.md:

# Decomposition: Q ≅ Q_G +_{Q_L} Q_R
# This IS a coequalizer construction!

function quotient_system(system::SkillSystem, equivalences)
    # Build parallel morphisms from equivalence pairs
    equiv_indices = parts(system, :Equivalence)
    
    # Compute coequalizer (built into Catlab)
    quotient = coequalizer(system, equiv_indices)
    
    # Verify GF(3) conservation
    @assert verify_gf3_conservation(quotient)
    
    return quotient
end

Key: Adhesive categories (like C-Sets) have well-behaved coequalizers for incremental updates.

4. Browser-history-acset: Path Equivalence

From /skills/browser-history-acset/path_equivalence_test.jl:

# Path composition via subpart chains
@assert subpart(acs, subpart(acs, 1, :url_of), :domain_of) == 1

# Multiple visit paths may lead to same outcome
# Coequalizer identifies equivalent paths

Application: Navigation paths through skill graphs that produce same results should be identified.

5. Sheaves on Ordered Locale: Directional Restrictions

From /skills/ordered-locale/sheaves.py:

def gluing(cover: List[FrozenSet], family: Dict[FrozenSet, T]) -> Optional[T]:
    """
    Glue a compatible family over a cover.
    
    This is the sheaf condition - dual to coequalizer.
    """
    # Check compatibility on overlaps
    for U_i, U_j in pairs(cover):
        overlap = U_i & U_j
        if overlap:
            res_i = restrict(U_i, overlap, family[U_i])
            res_j = restrict(U_j, overlap, family[U_j])
            if res_i != res_j:
                return None  # Incompatible family
    
    # Glue: coequalizer of restrictions
    return reduce(lambda a, b: a | b, family.values(), frozenset())

Key: Sheaf gluing IS the dual of coequalizer. Overlapping skill contexts must agree.

6. IrreversibleMorphisms: Lossy Transformations

From /skills/compositional-acset-comparison/IrreversibleMorphisms.jl:

# Irreversible morphisms: information loss
const MORPHISM_CLASSIFICATION = Dict(
    :parent_manifest => :irreversible,     # Append-only chain
    :source_column => :irreversible,       # Lossy embedding
    # ...
)

# Coequalizers preserve irreversibility classification
# If f, g both irreversible, coeq(f,g) is irreversible

Application: Track information loss through quotients. GF(3) trit sum must be preserved.


Implementation Strategy

Schema: Skills with Equivalences

using Catlab.CategoricalAlgebra
using AlgebraicRewriting

@present SchSkillCoequalizer(FreeSchema) begin
    Skill::Ob
    Application::Ob
    Equivalence::Ob
    
    app_src::Hom(Application, Skill)
    app_tgt::Hom(Application, Skill)
    equiv_app1::Hom(Equivalence, Application)
    equiv_app2::Hom(Equivalence, Application)
    
    Trit::AttrType
    Behavior::AttrType
    
    skill_trit::Attr(Skill, Trit)
    app_behavior::Attr(Application, Behavior)
end

@acset_type SkillSystem(SchSkillCoequalizer,
    index=[:app_src, :app_tgt, :equiv_app1, :equiv_app2])

GF(3) Integration

Trit Assignment

  • Coequalizers have trit = 0 (ERGODIC)
  • They coordinate between validators (-1) and generators (+1)
  • Preserve trit sums: if inputs sum to 0 mod 3, output preserves this

Synergistic Triads

bisimulation-game (-1) ⊗ coequalizers (0) ⊗ oapply-colimit (+1) = 0 ✓
temporal-coalgebra (-1) ⊗ coequalizers (0) ⊗ topos-adhesive (+1) = 0 ✓
browser-history-acset (-1) ⊗ coequalizers (0) ⊗ ordered-locale (sheaves) (+1) = 0 ✓

Commands

just coequalizer-find SKILLS...          # Find equivalences among skills
just coequalizer-quotient SYSTEM         # Compute quotient
just coequalizer-verify GF3              # Verify GF(3) conservation
just coequalizer-disperse AGENTS...      # Sync across agents
just coequalizer-pushout SKILL1 SKILL2   # Compose with overlap

References

From asi Repository

  • oapply-colimit - Pushout = coproduct + coequalizer
  • bisimulation-game - Behavioral equivalence testing
  • topos-adhesive-rewriting - Incremental query updating via coequalizers
  • browser-history-acset - Path equivalence in ACSets
  • ordered-locale (sheaves.py) - Gluing as dual of coequalizer
  • compositional-acset-comparison (IrreversibleMorphisms.jl) - Lossy morphisms

Papers

  • Lack & Sobociński, "Adhesive and Quasiadhesive Categories" (RAIRO 2005)
  • Patterson et al., "Categorical Data Structures for Technical Computing" (Compositionality 2022)
  • Brown, "Incremental Query Updating in Adhesive Categories" (Topos Institute 2025)

Web Resources


Related Skills

  • bisimulation-game (-1) - Behavioral equivalence
  • oapply-colimit (+1) - Pushout composition
  • topos-adhesive-rewriting (+1) - Incremental updates
  • temporal-coalgebra (-1) - Coalgebraic bisimulation
  • ordered-locale (0) - Sheaf gluing

Skill Name: coequalizers
Type: Category-Theoretic Skill Composition
Trit: 0 (ERGODIC - coordinates equivalences)
GF(3): Conserved via triadic composition

SDF Interleaving

This skill connects to Software Design for Flexibility (Hanson & Sussman, 2021):

Primary Chapter: 10. Adventure Game Example

Concepts: autonomous agent, game, synthesis

GF(3) Balanced Triad

coequalizers (○) + SDF.Ch10 (+) + [balancer] (−) = 0

Skill Trit: 0 (ERGODIC - coordination)

Secondary Chapters

  • Ch8: Degeneracy
  • Ch3: Variations on an Arithmetic Theme
  • Ch1: Flexibility through Abstraction
  • Ch4: Pattern Matching

Connection Pattern

Adventure games synthesize techniques. This skill integrates multiple patterns.

CT lattice atlas

Part of: para-mensch-commons (CT lattice family).

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Model ElevenLabs voice synthesis as an ACSet schema with Unison ability handlers for typed voice operations. Use when integrating ElevenLabs TTS into category-theoretic pipelines, building typed voice synthesis workflows, or managing multi-voice narration with GF(3) conservation.

The English summary is being prepared. Showing the original description.

plurigrid/asi70Updated Jul 10, 2026

Systematic process for analyzing and modernizing legacy applications to comply with the 12-Factor App methodology. Covers code analysis, configuration externalization, dependency management, and container/Kubernetes best practices.

The English summary is being prepared. Showing the original description.

plurigrid/asi70Updated Jul 10, 2026

13c0e3

Free

Gay MCP skill at invocation 26

The English summary is being prepared. Showing the original description.

plurigrid/asi70Updated Jul 10, 2026

19d57d

Free

Gay MCP skill at invocation 5

The English summary is being prepared. Showing the original description.

plurigrid/asi70Updated Jul 10, 2026

1ea91a

Free

Gay MCP skill at invocation 27

The English summary is being prepared. Showing the original description.

plurigrid/asi70Updated Jul 10, 2026

1eab21

Free

Gay MCP skill at invocation 3

The English summary is being prepared. Showing the original description.

plurigrid/asi70Updated Jul 10, 2026

See all skills by plurigrid

Report a problem with this skill