Asi operad-compose

Operad Composition Skill (PLUS +1)

install
source · Clone the upstream repo
git clone https://github.com/plurigrid/asi
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/plurigrid/asi "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/operad-compose" ~/.claude/skills/plurigrid-asi-operad-compose-45f709 && rm -rf "$T"
manifest: skills/operad-compose/SKILL.md
source content

Operad Composition Skill (PLUS +1)

Colored operad composition for structured generation

Trit: +1 (PLUS)
Color: #D82626 (Red)
Role: Generator/Creator

Core Concept

A colored operad O has:

  • Colors C (types)
  • Operations O(c₁,...,cₙ; c) (n-ary operations with input colors cᵢ, output color c)
  • Composition γ (operadic substitution)
  • Units 1_c ∈ O(c; c)
      c₁  c₂  c₃
       \  |  /
        \ | /
         \|/
    O(c₁,c₂,c₃; c)
          |
          c

Operadic Substitution γ

γ: O(c₁,...,cₙ; c) × O(d₁,...,dₘ; c₁) → O(d₁,...,dₘ,c₂,...,cₙ; c)

Substituting into the first input slot.

Full Composition

γ: O(c₁,...,cₙ; c) × ∏ᵢ O(dᵢ,₁,...,dᵢ,ₖᵢ; cᵢ) → O(d₁,₁,...,dₙ,ₖₙ; c)

Integration with Rubato Composer

# Musical operad for composition
struct MusicOperad
    colors::Set{Symbol}  # :melody, :rhythm, :harmony, :texture
    operations::Dict{Tuple, Vector{Symbol}}  # input colors → output color
end

# Operadic composition for music
function compose_operad(op1, op2, slot::Int)
    # op1: (c₁,...,cₙ) → c
    # op2: (d₁,...,dₘ) → cₛₗₒₜ
    # result: (c₁,...,cₛₗₒₜ₋₁,d₁,...,dₘ,cₛₗₒₜ₊₁,...,cₙ) → c
    new_inputs = vcat(
        op1.inputs[1:slot-1],
        op2.inputs,
        op1.inputs[slot+1:end]
    )
    (inputs=new_inputs, output=op1.output)
end

Gay.jl 3-Color Operad

# Colored operad with GF(3) colors
const GF3Colors = [:minus, :ergodic, :plus]  # -1, 0, +1

struct GF3Operad
    # Operations that conserve GF(3)
    operations::Vector{NamedTuple}
end

# Valid operations sum to 0 mod 3
function valid_gf3_op(inputs::Vector{Int}, output::Int)
    (sum(inputs) + output) % 3 == 0
end

# Generate all valid operations
function gf3_operations(arity::Int)
    [(inputs=ins, output=out) 
     for ins in Iterators.product(fill(-1:1, arity)...)
     for out in -1:1
     if valid_gf3_op(collect(ins), out)]
end

Little Disks Operad (E₂)

Configuration spaces of n non-overlapping disks:

E₂(n) = { (z₁,r₁),...,(zₙ,rₙ) : disks don't overlap } / scaling
  • Composition: Insert small disk configuration into a slot
  • Braiding: E₂ is braided (operations can pass through each other)
  • Applications: 2D field theories, loop spaces

May Operad for Concurrency

-- Little intervals operad for A∞ structure
data E1 n = E1 { intervals :: Vector n (Double, Double) }

-- Composition: splice intervals
compose :: E1 n -> Int -> E1 m -> E1 (n + m - 1)

GF(3) Triads

persistent-homology (-1) ⊗ open-games (0) ⊗ operad-compose (+1) = 0 ✓
clj-kondo-3color (-1) ⊗ acsets (0) ⊗ operad-compose (+1) = 0 ✓
proofgeneral-narya (-1) ⊗ glass-bead-game (0) ⊗ operad-compose (+1) = 0 ✓

Commands

# Compose operations
just operad-mult op1 op2 slot

# Generate GF(3) operations of given arity
just operad-gf3 arity

# Visualize operad tree
just operad-tree operation

# Check operad associativity
just operad-assoc op1 op2 op3

Operads in Nature

DomainOperadColors
MusicCompositionmelody, rhythm, harmony
TypesSubstitutiontypes
TopologyLittle diskspoints
LogicCut-eliminationformulas
AISkill compositioncapabilities

References

  • May, "The Geometry of Iterated Loop Spaces"
  • Loday & Vallette, "Algebraic Operads"
  • Spivak, "The Operad of Wiring Diagrams"