Back to skills
SKILL.md
Temporal Coalgebra
ASecurityCoalgebraic observation of derivation streams with final coalgebra bisimulation for infinite trace verification.
- 61 stars
- 0 votes
- 0 copies
- 2 views
- Added September 6, 2026
Works with
Security analysis
100/100npx -y skills add plurigrid/asi --skill temporal-coalgebra --agent claude-codeAre you the author of Temporal Coalgebra?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/plurigrid-temporal-coalgebra)---
name: temporal-coalgebra
description: Coalgebraic observation of derivation streams with final coalgebra bisimulation for infinite trace verification.
source: local
license: UNLICENSED
---
# Temporal Coalgebra Skill: Observation Duality
**Status**: ✅ Production Ready
**Trit**: -1 (MINUS - validator/observer)
**Color**: #2626D8 (Blue)
**Principle**: Observe behaviors → Verify equivalence
**Frame**: Final coalgebra with stream coalgebra traces
---
## Overview
**Temporal Coalgebra** is the dual of algebra: where algebra constructs, coalgebra observes. Implements:
1. **Observation functor**: O: Derivation → Observation
2. **Final coalgebra**: νF for maximal bisimulation
3. **Stream coalgebra**: Infinite traces with head/tail
4. **three-match integration**: Game verification via bisimulation
**Correct by construction**: Two systems are equivalent iff they are bisimilar (observationally indistinguishable).
## Core Formula
```
Coalgebra: (X, γ: X → F(X)) # State → Observable structure
Final: νF = lim F^n(1) # Greatest fixpoint
Bisimulation R ⊆ X × Y:
(x, y) ∈ R ⟹ F(R)(γ_X(x), γ_Y(y))
```
For derivation observation:
```ruby
# Observe derivation stream
observe(derivation) = { head: current_step, tail: rest_of_derivation }
# Two derivations are equivalent iff:
bisimilar?(d1, d2) == (observe(d1).head == observe(d2).head &&
bisimilar?(observe(d1).tail, observe(d2).tail))
```
## Why Coalgebra for Verification?
1. **Behavioral equivalence**: Same observations = same system
2. **Infinite structures**: Streams, trees, processes
3. **Game semantics**: Attacker/defender games are coalgebraic
4. **Lazy evaluation**: Observe only what's needed
## Gadgets
### 1. ObservationFunctor
Transform derivations into observations:
```ruby
functor = TemporalCoalgebra::ObservationFunctor.new(
source: :derivation_chain,
target: :observation_stream
)
observation = functor.apply(derivation)
observation.head # => current observable state
observation.tail # => remaining stream (lazy)
observation.finite? # => false (potentially infinite)
```
### 2. FinalCoalgebra
Construct the final coalgebra for type F:
```ruby
final = TemporalCoalgebra::FinalCoalgebra.new(
functor: stream_functor,
approximation_depth: 100
)
final.carrier # => νF (greatest fixpoint)
final.universal?(coal) # => check if coal maps uniquely
final.unfold(seed) # => generate infinite structure
```
### 3. BisimulationChecker
Verify behavioral equivalence:
```ruby
checker = TemporalCoalgebra::BisimulationChecker.new
checker.add_system(:system_a, coalgebra_a)
checker.add_system(:system_b, coalgebra_b)
result = checker.check_bisimilar!
result[:bisimilar] # => true/false
result[:distinguishing_trace] # => if false, witness
result[:depth_checked] # => how deep we verified
```
### 4. StreamCoalgebra
Work with infinite streams:
```ruby
stream = TemporalCoalgebra::StreamCoalgebra.new(seed: 0x42D)
stream.head # => first element
stream.tail # => rest of stream
stream.take(10) # => first 10 elements
stream.drop(5).head # => 6th element
stream.map { |x| x * 2 } # => transformed stream
stream.zip(other_stream) # => paired stream
```
### 5. ThreeMatchBisimulation
Integration with three-match for game verification:
```ruby
game = TemporalCoalgebra::ThreeMatchBisimulation.new(
attacker: player_a,
defender: player_b,
three_match_gadget: gadget
)
game.play_round!
game.defender_wins? # => strategies are bisimilar
game.attacker_wins? # => found distinguishing move
game.gf3_conserved? # => trit sum = 0
```
## Commands
```bash
# Observe derivation chain
just coalgebra-observe
# Check bisimulation
just coalgebra-bisim system_a system_b
# Generate stream from seed
just coalgebra-stream 0x42D 20
# Verify game equivalence
just coalgebra-game
```
## API
```ruby
require 'temporal_coalgebra'
# Create observation system
obs = TemporalCoalgebra::Observer.new(
trit: -1,
functor: :stream
)
# Observe derivation
stream = obs.observe(derivation_chain)
# Check equivalence
bisim = obs.bisimilar?(stream_a, stream_b)
# Integrate with three-match
game_result = obs.verify_game(three_match_gadget)
```
## Integration with GF(3) Triads
Forms valid triads with ERGODIC (0) and PLUS (+1) skills:
```
temporal-coalgebra (-1) ⊗ unworld (0) ⊗ gay-mcp (+1) = 0 ✓
temporal-coalgebra (-1) ⊗ glass-bead-game (0) ⊗ cider-clojure (+1) = 0 ✓
temporal-coalgebra (-1) ⊗ acsets (0) ⊗ rubato-composer (+1) = 0 ✓
```
## Mathematical Foundation
### Coalgebra Definition
```
Coalgebra for F: (X, γ: X → F(X))
- X is carrier (state space)
- γ is structure map (observation)
- F is endofunctor (observation type)
```
### Stream Functor
```
F(X) = A × X (head × tail)
νF ≅ A^ω (infinite sequences)
```
### Bisimulation
```
R is bisimulation ⟺
∀(x,y) ∈ R: (γ_X(x), γ_Y(y)) ∈ F(R)
Behavioral equivalence: x ∼ y ⟺ ∃R bisimulation. (x,y) ∈ R
```
### Coinduction Principle
```
To prove P(ν F), show:
P is F-consistent: P(x) ⟹ P(tail(x))
P(seed) holds
```
## Example Output
```
─── Temporal Coalgebra Observation ───
Source: Derivation chain (length ∞)
Functor: Stream (head × tail)
Observation:
head: { seed: 0x42D, color: #2626D8, trit: -1 }
tail: <lazy stream>
Bisimulation Check:
System A: derivation_chain_1
System B: derivation_chain_2
Depth 0: heads match ✓
Depth 1: tails match ✓
Depth 2: tails match ✓
...
Depth 100: tails match ✓
Result: BISIMILAR (observationally equivalent)
GF(3) Trit: -1 (MINUS/Observer)
─── Three-Match Integration ───
Game: Attacker vs Defender
Rounds: 12
Winner: Defender (strategies bisimilar)
GF(3) conserved: true
```
---
**Skill Name**: temporal-coalgebra
**Type**: Observation / Bisimulation Verification
**Trit**: -1 (MINUS)
**Color**: #2626D8 (Blue)
**GF(3)**: Forms valid triads with ERGODIC + PLUS skills
**Dual**: Algebra (construction) ↔ Coalgebra (observation)
Attribution
Comments
Loading comments…