Open Games Skill (ERGODIC 0)
/plugin marketplace add plurigrid/asi/plugin install plurigrid-asi-skills@plurigrid/asiThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Compositional game theory via Para/Optic structure
Trit: 0 (ERGODIC)
Color: #26D826 (Green)
Role: Coordinator/Transporter
Open games are morphisms in a symmetric monoidal category:
┌───────────┐
X ──→│ │──→ Y
│ Game G │
R ←──│ │←── S
└───────────┘
Where:
Para p a b = ∃m. (m, p m a → b)
-- Existential parameter with action
Optic p s t a b = ∀f. p a (f a b) → p s (f s t)
-- Profunctor optic for bidirectional data
OpenGame s t a b =
{ play : s → a
, coplay : s → b → t
, equilibrium : s → Prop
}
G ; H = Game where
play = H.play ∘ G.play
coplay = G.coplay ∘ (id × H.coplay)
G ⊗ H = Game where
play = G.play × H.play
coplay = G.coplay × H.coplay
isEquilibrium :: OpenGame s t a b → s → Bool
isEquilibrium g s =
let a = play g s
bestResponse = argmax (\a' → utility (coplay g s (respond a')))
in a == bestResponse
eq(G ; H) = eq(G) ∧ eq(H) -- under compatibility
(defn opengame-derive
"Transport game through derivation chain"
[game derivation]
(let [; Forward: strategies through derivation
forward (compose (:play game) (:forward derivation))
; Backward: utilities through co-derivation
backward (compose (:coplay game) (:backward derivation))]
{:play forward
:coplay backward
:equilibrium (transported-equilibrium game derivation)}))
temporal-coalgebra (-1) ⊗ open-games (0) ⊗ free-monad-gen (+1) = 0 ✓
three-match (-1) ⊗ open-games (0) ⊗ operad-compose (+1) = 0 ✓
sheaf-cohomology (-1) ⊗ open-games (0) ⊗ topos-generate (+1) = 0 ✓
# Compose games sequentially
just opengame-seq G H
# Compose games in parallel
just opengame-par G H
# Check Nash equilibrium
just opengame-nash game strategy
# Transport through derivation
just opengame-derive game deriv
prisonersDilemma :: OpenGame () () (Bool, Bool) (Int, Int)
prisonersDilemma = Game {
play = \() → (Defect, Defect), -- Nash
coplay = \() (p1, p2) → payoffMatrix p1 p2
}
market :: OpenGame Price Price Quantity Quantity
market = supplyGame ⊗ demandGame
where equilibrium = supplyGame.eq ∧ demandGame.eq
OpenGame ≃ Para(Lens) ≃ Optic(→, ×)
Composition:
(A ⊸ B) ⊗ (B ⊸ C) → (A ⊸ C) -- via cut
Tensor:
(A ⊸ B) ⊗ (C ⊸ D) → (A ⊗ C ⊸ B ⊗ D)