From asi
Performs category-theoretic graph rewriting using DPO, SPO, SqPO pushouts on Julia C-Sets and ACSet data structures for declarative transformations.
npx claudepluginhub plurigrid/asi --plugin asiThis skill uses the workspace's default tool permissions.
**AlgebraicRewriting.jl** is a Julia library for performing category-theoretic rewrites over C-Sets and other Catlab.jl data structures.
Models relational databases as ACSets (functors from schema categories to Set) and applies DPO rewriting rules for transformations using Julia Catlab.
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.
AlgebraicRewriting.jl is a Julia library for performing category-theoretic rewrites over C-Sets and other Catlab.jl data structures.
| Type | Description | Use Case |
|---|---|---|
| DPO | Double Pushout | Safe deletion (no dangling edges) |
| SPO | Single Pushout | Greedy deletion |
| SqPO | Sesqui-Pushout | Cloning + deletion |
A rewrite rule consists of:
using AlgebraicRewriting
# Define a rule: merge two vertices
L = @acset Graph begin V=2; E=1; src=[1]; tgt=[2] end
K = @acset Graph begin V=1 end
R = @acset Graph begin V=1 end
rule = Rule(L, K, R)
G = @acset Graph begin
V = 4
E = 3
src = [1, 2, 3]
tgt = [2, 3, 4]
end
# Find matches and rewrite
matches = homomorphisms(L, G)
G′ = rewrite(rule, G, matches[1])
L ←─ K ─→ R
↓ ↓ ↓
G ←─ D ─→ H
The context D ensures no "dangling edges" after deletion.
Supports cloning via the final pullback complement:
# Clone a vertex
L = @acset Graph begin V=1 end
K = @acset Graph begin V=1 end
R = @acset Graph begin V=2 end
clone_rule = Rule(L, K, R; type=:SqPO)
# sRGB boundary learning with rewriting seed
gay_seed!(0xabfca37b6b4bc699)
# Forward mode autodiff
∂params = Enzyme.gradient(Forward, loss, params, seed)
0xabfca37b6b4bc699algebraic-rewriting (-1) ⊗ acsets-hatchery (0) ⊗ gay-monte-carlo (+1) = 0 ✓
acsets-hatchery - ACSet data structurestopos-adhesive-rewriting - Adhesive categoriesdpo-rewriting - Graph transformationworld-a - AlgebraicJulia ecosystem