npx claudepluginhub plurigrid/asi --plugin asiThis skill uses the workspace's default tool permissions.
> *"Pattern runs on matter: The free monad monad as a module over the cofree comonad comonad"*
Provides DisCoPy code examples for string diagrams, monoidal categories, operads, and colored operad skill composition in Python. Useful for categorical modeling and active inference.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Share bugs, ideas, or general feedback.
"Pattern runs on matter: The free monad monad as a module over the cofree comonad comonad" — Libkind & Spivak (ACT 2024)
A polynomial functor $p: \text{Set} \to \text{Set}$ is a sum of representables:
$$p \cong \sum_{i \in p(1)} y^{p[i]}$$
Where:
A lens $f: p \to q$ is a pair $(f_1, f^\sharp)$:
$$f_1: p(1) \to q(1) \quad \text{(on-positions)}$$ $$f^\sharp_i: q[f_1(i)] \to p[i] \quad \text{(on-directions, contravariant)}$$
$$\text{Poly}(p, q) \cong \prod_{i \in p(1)} \sum_{j \in q(1)} p[i]^{q[j]}$$
$$p \triangleleft q \cong \sum_{i \in p(1)} \sum_{\bar{j}: p[i] \to q(1)} y^{\sum_{a \in p[i]} q[\bar{j}(a)]}$$
Interpretation: Substitute $q$ into each "hole" of $p$.
$$p \otimes q \cong \sum_{i \in p(1)} \sum_{j \in q(1)} y^{p[i] \times q[j]}$$
Interpretation: Independent parallel execution.
$$p \times q \cong \sum_{i \in p(1)} \sum_{j \in q(1)} y^{p[i] + q[j]}$$
The carrier $t_p$ of the cofree comonoid on $p$:
$$t_p = \lim \left( 1 \xleftarrow{!} p \triangleleft 1 \xleftarrow{p \triangleleft !} p^{\triangleleft 2} \triangleleft 1 \leftarrow \cdots \right)$$
$$t_p \cong \sum_{T \in \text{tree}_p} y^{\text{vtx}(T)}$$
$$\Xi_{p,q} : \mathfrak{m}p \otimes \mathfrak{c}q \to \mathfrak{m}(p \otimes q)$$
Where:
Examples:
| Pattern | Matter | Runs On |
|---|---|---|
| Interview script | Person | Interview |
| Program | OS | Execution |
| Voting scheme | Voters | Election |
| Game rules | Players | Game |
| Musical score | Performer | Performance |
$$f^{upd}: A \times S \to S \quad \text{(update)}$$ $$f^{rdt}: S \to B \quad \text{(readout)}$$
$$f^{dyn}: A \times S \to TS \quad \text{(dynamics: } \dot{s} = f^{dyn}(a, s) \text{)}$$ $$f^{rdt}: S \to B \quad \text{(readout)}$$
For $\phi: X \to Y$: $$\phi^{in}: X^{in} \to X^{out} + Y^{in}$$ $$\phi^{out}: Y^{out} \to X^{out}$$
$$\bar{f}^{upd}(y, s) := f^{upd}(\phi^{in}(y, f^{rdt}(s)), s)$$ $$\bar{f}^{rdt}(s) := \phi^{out}(f^{rdt}(s))$$
$$d: \int G \to \mathbf{K}$$
Where $\int G$ is the Grothendieck construction.
$$O\left(\max_{x \in VG} \alpha(dx) + \kappa^{|S|} \kappa^2\right) |EG|$$
Where:
For tree-shaped decompositions ($|S| = 0$): $$O(\kappa^2) |EG|$$
$$H^n(X, \mathcal{U}, F) := \ker(\delta^n) / \text{im}(\delta^{n-1})$$
$$FX \neq \emptyset \iff H^0(X, \mathfrak{M}F) = 0$$
Interpretation: A problem has a solution iff the zeroth cohomology of its model-collecting presheaf is trivial.
While Bumpus uses $\mathbb{Z}[S]$ (free Abelianization), the methods generalize to:
A spined category $(\mathcal{C}, \Omega, \mathfrak{P})$:
For span $G \xleftarrow{g} \Omega_n \xrightarrow{h} H$: $$G \xrightarrow{\mathfrak{P}(g,h)_g} \mathfrak{P}(g,h) \xleftarrow{\mathfrak{P}(g,h)_h} H$$
Smallest set $S$ where:
$$\Delta[X] = \min { \text{width}(\delta) \mid \delta: X \hookrightarrow H \text{ pseudo-chordal}}$$
ParaLens p q x s y r = (get, put)
get : p → x → y -- forward
put : p → x → r → (s, q) -- backward
The 6 wires:
x = observed states (from past)y = output states (to future)r = utilities received (from future)s = back-propagated utilities (to past)p = strategies (parameters)q = rewards (co-parameters)(MkLens get put) >>>> (MkLens get' put') =
MkLens
(\(p, p') x -> get' p' (get p x)) -- compose forward
(\(p, p') x t ->
let (r, q') = put' p' (get p x) t -- future first
(s, q) = put p x r -- then past
in (s, (q, q')))
Key insight: Backward pass = constraint propagation / abduction.
$$E_G(x, k) := \varepsilon_G(x; A_G; k)$$
Where $\varepsilon = \bigotimes_{p \in P} \varepsilon_p$ is the joint selection function.
| Operad | Trit | Description |
|---|---|---|
| Little Disks (E₂) | +1 | Non-overlapping disk configurations |
| Cubes (E_∞) | -1 | Infinite-dimensional parallelism |
| Cactus | -1 | Trees with cycles (self-modification) |
| Thread | 0 | Linear continuations + DuckDB |
| Gravity | -1 | Moduli M_{0,n} with involutions |
| Modular | +1 | All genera, runtime polymorphism |
| Swiss-Cheese | +1 | Open/closed for forward-only learning |
GF(3) Total: $(+1) + (-1) + (-1) + (0) + (-1) + (+1) + (+1) = 0$ ✓
| Operad | Trit | Type |
|---|---|---|
| Directed (⊳) | +1 | Output → Input wiring |
| Undirected (○) | -1 | Interface matching via pullback |
| Machines | 0 | State machines with dynamics |
| Dynamical | +1 | Open ODEs |
From "Road to General Intelligence":
General intelligence must:
$$X_i = f_i(\text{PA}_i, U_i), \quad i = 1, \ldots, n$$
Where:
| Component | Role |
|---|---|
| get (forward) | Induction / forward inference |
| put (backward) | Abduction / constraint propagation |
| Selection function | Attention mechanism |
| Equilibrium checking | Reflective reasoning |
# Run polynomial functor demo
just poly-functor-demo
# Test free monad / cofree comonad pairing
just monad-test
# Run DiscoHy operads
python3 src/operads/relational_operad_interleave.py
# Run Libkind-Spivak dynamical systems
python3 src/operads/libkind_spivak_dynamics.py
# Check GF(3) conservation
just gf3-verify
lib/
├── free_monad.rb # Pattern (decision trees)
├── cofree_comonad.rb # Matter (behavior trees)
├── runs_on.rb # Module action implementation
└── discohy.hy # Hy operad implementations
src/music_topos/
├── free_monad.clj # Clojure Pattern
├── cofree_comonad.clj # Clojure Matter
├── runs_on.clj # Module action
└── operads/
├── relational_operad_interleave.py
├── libkind_spivak_dynamics.py
└── infinity_operads.py
scripts/
├── discohy_operad_1_little_disks.py
├── discohy_operad_2_cubes.py
├── discohy_operad_3_cactus.py
├── discohy_operad_4_thread.py
├── discohy_operad_5_gravity.lisp
├── discohy_operad_6_modular.bb
└── discohy_operad_7_swiss_cheese.py
acsets — Algebraic databases (schema category)discohy-streams — 7 operad variants with GF(3) balancetriad-interleave — Balanced ternary schedulingworld-hopping — Badiou triangle navigationopen-games — Bidirectional transformationsThis skill connects to the K-Dense-AI/claude-scientific-skills ecosystem:
category-theory: 139 citations in bib.duckdbpolynomial-functors: 8 citations in bib.duckdboperads: 5 citations in bib.duckdbThis skill maps to Cat# = Comod(P) as a bicomodule in the equipment structure:
Trit: 0 (ERGODIC)
Home: Prof
Poly Op: ⊗
Kan Role: Adj
Color: #26D826
The skill participates in triads satisfying:
(-1) + (0) + (+1) ≡ 0 (mod 3)
This ensures compositional coherence in the Cat# equipment structure.