Asi catsharp-galois
CatSharp Scale Galois Connections between agent-o-rama and Plurigrid ACT via Mazzola's categorical music theory
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/catsharp-galois" ~/.claude/skills/plurigrid-asi-catsharp-galois-340ebc && rm -rf "$T"
manifest:
skills/catsharp-galois/SKILL.mdsource content
CatSharp Galois Skill
Trit: 0 (ERGODIC - bridge) Color: Yellow (#D8D826)
Overview
Establishes Galois adjunction α ⊣ γ between conceptual spaces:
α (abstract) HERE ─────────────→ ELSEWHERE ↑ │ │ │ γ (concretize) │ ┌──────────┐ │ └────│ CatSharp │────┘ │ Scale │ │ (Bridge) │ └──────────┘ GF(3): (+1) + (0) + (-1) = 0 ✓
- HERE: agent-o-rama Topos (local operations)
- ELSEWHERE: Plurigrid ACT (global cognitive category theory)
- BRIDGE: CatSharp Scale (Mazzola's categorical music theory)
CatSharp Scale Mapping
Pitch classes ℤ₁₂ map to GF(3) trits:
| Trit | Pitch Classes | Chord Type | Hue Range |
|---|---|---|---|
| +1 (PLUS) | {0, 4, 8} | Augmented triad | 0-60°, 300-360° |
| 0 (ERGODIC) | {3, 6, 9} | Diminished 7th | 60-180° |
| -1 (MINUS) | {2, 5, 7, 10, 11} | Fifths cycle | 180-300° |
Tritone: The Möbius Axis
The tritone (6 semitones) is the unique self-inverse interval:
6 + 6 = 12 ≡ 0 (mod 12)
This mirrors GF(3) Möbius inversion where μ(3)² = 1.
Galois Connection API
(defn α-abstract "Abstraction functor: agent-o-rama → Plurigrid ACT" [here-concept] (let [trit (or (:trit here-concept) (pitch-class->trit (hue->pitch-class (:H here-concept))))] {:type :elsewhere :hyperedge (case trit 1 :generation 0 :verification -1 :transformation) :source-trit trit})) (defn γ-concretize "Concretization functor: Plurigrid ACT → agent-o-rama" [elsewhere-concept] (let [trit (case (:hyperedge elsewhere-concept) :generation 1 :verification 0 :transformation -1)] {:type :here :trit trit :H (pitch-class->hue (first (trit->pitch-classes trit)))})) ;; Adjunction verification (defn verify-galois [h e] (let [αh (α-abstract h) γe (γ-concretize e)] (= (= (:hyperedge αh) (:hyperedge e)) (= (:trit h) (:trit γe)))))
Hyperedge Types
| Hyperedge | Trit | HERE Layer | ELSEWHERE Operation |
|---|---|---|---|
| :generation | +1 | α.Operadic | ACT.cogen.generate |
| :verification | 0 | α.∞-Categorical | ACT.cogen.verify |
| :transformation | -1 | α.Cohomological | ACT.cogen.transform |
Color ↔ Pitch Conversion
function hue_to_pitch_class(h::Float64)::Int mod(round(Int, h / 30.0), 12) end function pitch_class_to_hue(pc::Int)::Float64 mod(pc, 12) * 30.0 + 15.0 end function pitch_class_to_trit(pc::Int)::Int pc = mod(pc, 12) if pc ∈ [0, 4, 8] # Augmented return 1 elseif pc ∈ [3, 6, 9] # Diminished return 0 else # Fifths return -1 end end
GF(3) Triads
catsharp-galois (0) ⊗ gay-mcp (-1) ⊗ ordered-locale (+1) = 0 ✓ catsharp-galois (0) ⊗ rubato-composer (-1) ⊗ topos-of-music (+1) = 0 ✓
Commands
# Run genesis with CatSharp bridge just genesis-catsharp seed=0x42D # Verify Galois adjunction just galois-verify here=agent-o-rama elsewhere=plurigrid-act # Sonify CatSharp scale just catsharp-play pitch-classes="0 4 7"
Related Skills
(-1): SplitMix64 color generationgay-mcp
(+1): Frame structureordered-locale
(-1): Mazzola's Rubato systemrubato-composer
(+1): Full Mazzola formalizationtopos-of-music
References
- Mazzola, G. The Topos of Music (2002)
- Noll, T. "Neo-Riemannian Theory and the PLR Group"
- Heunen & van der Schaaf. "Ordered Locales" (2024)