home / skills / plurigrid / asi / epistemic-arbitrage

epistemic-arbitrage skill

This skill enables cross-domain knowledge transfers using propagator networks to synthesize insights, accelerate learning, and uncover hidden connections

npx playbooks add skill plurigrid/asi --skill epistemic-arbitrage

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
7.8 KB
---
name: epistemic-arbitrage
description: Propagator-based parallel structure for exploiting knowledge differentials
version: 1.0.0
---


# Epistemic Arbitrage: Propagator-Based Knowledge Synthesis

Epistemic arbitrage exploits **knowledge differentials** between domains. When concept A in domain X is well-understood, but its isomorphic counterpart A' in domain Y is mysterious, we can **arbitrage** by transferring understanding.

## Core Architecture

### Propagator Networks (Radul/Sussman)

A propagator network consists of:

```
┌─────────┐     ┌─────────────┐     ┌─────────┐
│  Cell A │────▶│ Propagator  │────▶│  Cell B │
│ (known) │     │  (transfer) │     │(derived)│
└─────────┘     └─────────────┘     └─────────┘
```

- **Cells**: Containers for partial information
- **Propagators**: Functions that combine/transform information
- **Merging**: Monotonic accumulation (information only increases)

### SplitMixTernary RNG

For parallel propagation with determinism:

```ruby
class SplitMixTernary
  GOLDEN = 0x9e3779b97f4a7c15  # Golden ratio constant
  
  def initialize(seed)
    @state = seed
  end
  
  def next_ternary
    # Advance state (SplitMix64)
    @state = (@state + GOLDEN) & 0xFFFFFFFFFFFFFFFF
    z = @state
    z = ((z ^ (z >> 30)) * 0xbf58476d1ce4e5b9) & 0xFFFFFFFFFFFFFFFF
    z = ((z ^ (z >> 27)) * 0x94d049bb133111eb) & 0xFFFFFFFFFFFFFFFF
    z = z ^ (z >> 31)
    
    # Map to ternary: -1, 0, +1
    (z % 3) - 1
  end
  
  def split(index)
    # Create independent child stream
    child_seed = @state ^ (index * GOLDEN)
    SplitMixTernary.new(child_seed)
  end
end
```

## Arbitrage Patterns

### Pattern 1: Domain Transfer

```ruby
# Knowledge in domain A
cell_a = Cell.new(:music, :circle_of_fifths)
cell_a.add_info(:structure, :cyclic_group_12)
cell_a.add_info(:generator, :perfect_fifth)

# Unknown in domain B
cell_b = Cell.new(:number_theory, :modular_arithmetic)

# Propagator transfers structure
propagator = Propagator.new(:domain_transfer) do |source, target|
  if source.has?(:structure)
    target.merge(:structure, source.get(:structure))
    target.merge(:insight, "Z/12Z isomorphic to circle of fifths")
  end
end

propagator.connect(cell_a, cell_b)
propagator.fire!
```

### Pattern 2: Dual Discovery

```ruby
# Known: Fourier transform on functions
cell_time = Cell.new(:analysis, :time_domain)
cell_freq = Cell.new(:analysis, :frequency_domain)

# Propagator: Fourier duality
duality_propagator = Propagator.new(:fourier_duality) do |time, freq|
  time.each_property do |prop, val|
    dual_prop = fourier_dual(prop)  # convolution ↔ multiplication, etc.
    freq.merge(dual_prop, val)
  end
end
```

### Pattern 3: Triangle Arbitrage

When three domains have pairwise connections, exploit the triangle:

```ruby
# Three domains with partial knowledge
cell_math = Cell.new(:mathematics, :group_theory)
cell_music = Cell.new(:music, :harmony)
cell_physics = Cell.new(:physics, :symmetry)

# Pairwise propagators
math_music = Propagator.new(:pitch_class_groups)
music_physics = Propagator.new(:overtone_series)
physics_math = Propagator.new(:lie_groups)

# Triangle inequality enables arbitrage:
# d(math, physics) ≤ d(math, music) + d(music, physics)
# 
# If direct math→physics is hard, go via music!
```

## Local Scoped Propagators

### Scoping for Parallelism

Each propagator runs in a local scope with:

```ruby
class ScopedPropagator
  def initialize(name, rng_seed, &block)
    @name = name
    @rng = SplitMixTernary.new(rng_seed)
    @block = block
    @local_cells = {}
  end
  
  def fork(n)
    # Create n parallel scopes with independent RNG streams
    n.times.map do |i|
      child_rng = @rng.split(i)
      ScopedPropagator.new("#{@name}/#{i}", child_rng.state, &@block)
    end
  end
  
  def run(inputs)
    # Execute in isolated scope
    @local_cells = inputs.dup
    @block.call(self, @local_cells)
    @local_cells
  end
end
```

### Parallel Arbitrage Network

```ruby
# Master network
network = ArbitrageNetwork.new(seed: 1069)

# Add cells for each domain
network.add_cell(:category_theory, knowledge: 0.9)
network.add_cell(:music_theory, knowledge: 0.7)
network.add_cell(:physics, knowledge: 0.5)
network.add_cell(:philosophy, knowledge: 0.3)

# Add arbitrage propagators
network.add_propagator(:category_to_music, [:category_theory], [:music_theory])
network.add_propagator(:music_to_physics, [:music_theory], [:physics])
network.add_propagator(:physics_to_philosophy, [:physics], [:philosophy])

# Run in parallel (SPI-compliant)
results = network.run_parallel(n_workers: 4)
```

## Integration with Music Topos

### With World Broadcast

```ruby
# Each mathematician is a knowledge source
broadcasters = WorldBroadcast::TripartiteSystem.new([:ramanujan, :grothendieck, :euler])

# Create cells from mathematician expertise
cells = broadcasters.agents.map do |agent|
  Cell.new(agent.profile[:domain], 
           knowledge: agent.history.size,
           operations: agent.profile[:operations])
end

# Arbitrage between mathematicians
network = ArbitrageNetwork.from_cells(cells)
network.add_all_pairwise_propagators
network.run!
```

### With Synadia

```ruby
# Publish arbitrage opportunities
network.on_arbitrage do |source, target, gain|
  SynadiaBroadcast.publish("arbitrage.opportunity", {
    from: source.domain,
    to: target.domain,
    knowledge_gain: gain
  })
end

# Subscribe to external knowledge
SynadiaBroadcast.subscribe("knowledge.*") do |msg|
  domain = msg.subject.split('.').last.to_sym
  network.cells[domain].merge(:external, msg.data)
end
```

### With Glass Bead Game

```ruby
# Arbitrage opportunities become game moves
network.on_arbitrage do |source, target, gain|
  if gain > threshold
    move = GlassBeadGame::Connect.new(
      from: Bead.new(source.domain, source.best_concept),
      to: Bead.new(target.domain, target.mystery),
      via: :epistemic_transfer,
      value: gain
    )
    game.propose_move(move)
  end
end
```

## Guarantees

1. **SPI Compliance**: Parallel execution ≡ sequential (bitwise identical)
2. **Determinism**: Same seed → same arbitrage discoveries
3. **Monotonicity**: Knowledge only increases (no forgetting)
4. **Locality**: Propagators only access explicitly connected cells
5. **Triangle Inequality**: d(A,C) ≤ d(A,B) + d(B,C) for all knowledge transfers

## Commands

```bash
just arbitrage               # Run arbitrage network
just arbitrage-domains a b   # Arbitrage between specific domains
just propagator-network      # Visualize propagator network
just knowledge-flow          # Show knowledge flow diagram
```



## Scientific Skill Interleaving

This skill connects to the K-Dense-AI/claude-scientific-skills ecosystem:

### Graph Theory
- **networkx** [○] via bicomodule
  - Universal graph hub

### Bibliography References

- `general`: 734 citations in bib.duckdb



## SDF Interleaving

This skill connects to **Software Design for Flexibility** (Hanson & Sussman, 2021):

### Primary Chapter: 10. Adventure Game Example

**Concepts**: autonomous agent, game, synthesis

### GF(3) Balanced Triad

```
epistemic-arbitrage (+) + SDF.Ch10 (+) + [balancer] (+) = 0
```

**Skill Trit**: 1 (PLUS - generation)

### Secondary Chapters

- Ch7: Propagators
- Ch3: Variations on an Arithmetic Theme
- Ch4: Pattern Matching
- Ch6: Layering

### Connection Pattern

Adventure games synthesize techniques. This skill integrates multiple patterns.
## Cat# Integration

This skill maps to **Cat# = Comod(P)** as a bicomodule in the equipment structure:

```
Trit: 0 (ERGODIC)
Home: Prof
Poly Op: ⊗
Kan Role: Adj
Color: #26D826
```

### GF(3) Naturality

The skill participates in triads satisfying:
```
(-1) + (0) + (+1) ≡ 0 (mod 3)
```

This ensures compositional coherence in the Cat# equipment structure.

Overview

This skill implements epistemic-arbitrage: a propagator-based parallel structure for exploiting knowledge differentials across domains. It uses monotonic cells and propagators plus a deterministic SplitMixTernary RNG to run parallel, reproducible transfers of structure and insight. The design emphasizes locality, determinism, and compositional patterns for moving understanding between isomorphic concepts.

How this skill works

Cells hold partial information about domains; propagators connect cells and merge derived knowledge into targets. Propagators run in scoped parallel workers seeded by a SplitMixTernary RNG so parallel execution is bitwise equivalent to sequential runs. Network-level patterns (domain transfer, dual discovery, triangle arbitrage) orchestrate multi-step transfers while ensuring monotonic knowledge accumulation and SPI-compliant determinism.

When to use it

  • When a concept is well-understood in one domain and you want to transfer that structure to an analogous, underexplored domain.
  • To synthesize insights across disciplines (e.g., math↔music↔physics) by leveraging pairwise mappings.
  • When you need deterministic, reproducible parallel exploration of hypothesis transfers.
  • To automate discovery patterns like duality mapping or triangular shortcuts between domains.
  • When building compositional systems that require strictly monotonic knowledge growth.

Best practices

  • Model knowledge as small, focused cells with explicit keys for structure, generators, and invariants.
  • Write propagators as local, side-effect-free functions that only access connected cells.
  • Seed networks deterministically and record seeds for reproducibility and auditability.
  • Use triangle-arbitrage to route around hard direct transfers via intermediate, better-understood domains.
  • Limit scope and merge conservatively to maintain monotonicity and avoid spurious overwrites.

Example use cases

  • Transfer musical structure (circle-of-fifths) into modular arithmetic insights for pattern discovery.
  • Propagate Fourier dualities between time and frequency representations to infer new transform properties.
  • Run parallel hypothesis searches for model analogies across mathematics, physics, and music.
  • Publish discovered arbitrage opportunities as events to a message bus for downstream systems or games.
  • Compose agent expertise (broadcasted profiles) into an arbitrage network to surface cross-domain moves.

FAQ

Is parallel execution deterministic?

Yes. Using SplitMixTernary seeding and SPI compliance ensures parallel runs produce the same bitwise results as sequential execution given the same seed.

How does the system prevent knowledge loss?

All merges are monotonic: propagators only add or refine information in cells, never remove it, guaranteeing non-decreasing knowledge.