---
name: limits-colimits
description: "Problem-solving strategies for limits colimits in category theory"
allowed-tools: [Bash, Read]
---

# Limits Colimits

## When to Use

Use this skill when working on limits-colimits problems in category theory.

## Decision Tree


1. **Identify Limit Type**
   - Product: limit of discrete diagram
   - Equalizer: limit of parallel pair f, g: A -> B
   - Pullback: limit of A -> C <- B
   - Terminal object: limit of empty diagram
   - Lean 4: `CategoryTheory.Limits` namespace

2. **Verify Universal Property**
   - Cone from L with projections pi_i: L -> D_i
   - For any cone from X, unique morphism u: X -> L
   - Triangles commute: pi_i . u = cone_i
   - Lean 4: `IsLimit.lift` gives the unique morphism

3. **Colimit (Dual)**
   - Coproduct: colimit of discrete diagram
   - Coequalizer: colimit of parallel pair
   - Pushout: colimit of A <- C -> B
   - Initial object: colimit of empty diagram

4. **Compute Limits Concretely**
   - In Set: product = Cartesian product
   - Equalizer = {x | f(x) = g(x)}
   - Pullback = {(a,b) | f(a) = g(b)}
   - `sympy_compute.py solve "f(a) == g(b)"`

5. **Preservation**
   - Right adjoint preserves limits
   - Left adjoint preserves colimits
   - Representable functors preserve limits
   - Lean 4: `Adjunction.rightAdjointPreservesLimits`
   - See: `.claude/skills/lean4-limits/SKILL.md` for exact syntax


## Tool Commands

### Lean4_Limit
```bash
# Lean 4: import CategoryTheory.Limits.Shapes.Products
```

### Lean4_Universal
```bash
# Lean 4: IsLimit.lift cone -- unique morphism from universal property
```

### Sympy_Pullback
```bash
uv run python -m runtime.harness scripts/sympy_compute.py solve "f(a) == g(b)"
```

### Lean4_Build
```bash
lake build  # Compiler-in-the-loop verification
```

## Cognitive Tools Reference

See `.claude/skills/math-mode/SKILL.md` for full tool documentation.
