From asi
Enables interactive REPL for abductive inference: generates hypotheses from observations, tests via forward simulation and roundtrips, refines iteratively for exploratory reasoning.
How this skill is triggered — by the user, by Claude, or both
Slash command
/asi:abductive-replThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> Hypothesis-Test Loops via REPL for Exploratory Abductive Inference
Hypothesis-Test Loops via REPL for Exploratory Abductive Inference
Version: 1.0.0
Trit: 0 (Ergodic - coordinates inference)
Bundle: repl
Abductive-REPL enables exploratory abductive reasoning through an interactive REPL. Given observed outcomes, it generates hypotheses, tests them, and refines understanding through iterative loops.
Observation → Generate Hypotheses → Test → Refine → Repeat
Abduction: Given effect E and rule "A implies E",
hypothesize A as possible cause.
Generate hypotheses from observed behavior.
from abductive_repl import AbductiveEngine
engine = AbductiveEngine(seed=0xf061ebbc2ca74d78)
# Observed: A specific color was generated
observed_color = RGB(216, 125, 157)
hypotheses = engine.abduce(
observation=observed_color,
search_space="invader_ids",
search_range=range(1, 10000),
top_k=5
)
# Returns ranked hypotheses:
# [
# {hypothesis: "invader_id=42069", confidence: 0.98, distance: 0.02},
# {hypothesis: "invader_id=42070", confidence: 0.45, distance: 0.55},
# ...
# ]
Interactive REPL mode for exploration.
gay> !teleport 42069
Teleporting to invader 42069...
Source color: RGB(180, 90, 120)
Derangement: cyclic_1
World color: RGB(216, 125, 157)
Tropical t: 0.69
gay> !abduce 216 125 157
Generating hypotheses for RGB(216, 125, 157)...
[1] invader_id=42069 (confidence: 0.98)
[2] invader_id=42070 (confidence: 0.45)
[3] invader_id=41999 (confidence: 0.23)
gay> !jump 1
Jumping to hypothesis 1 (invader_id=42069)...
✓ Hypothesis confirmed!
gay> !neighbors 5
Finding 5 neighbors of invader 42069...
42068: RGB(214, 123, 155) distance=0.02
42070: RGB(218, 127, 159) distance=0.02
42067: RGB(212, 121, 153) distance=0.04
...
gay> !test 100
Running abductive roundtrip tests (n=100)...
✓ 100/100 passed (100% accuracy)
Average inference time: 2.3ms
Simulate forward from hypothesis to predict observations.
simulation = engine.forward_simulate(
hypothesis="invader_id=42069",
seed=0xf061ebbc2ca74d78
)
# Returns:
# {
# id: 42069,
# source: RGB(180, 90, 120),
# derangement_idx: 1,
# tropical_t: 0.69,
# world: RGB(216, 125, 157),
# properties: {
# spi_determinism: True,
# derangement_bijectivity: True,
# tropical_idempotence: True,
# spin_consistency: True
# }
# }
Verify abductive inference accuracy.
def abductive_roundtrip_test(id: int, seed: int) -> bool:
"""
Forward simulate → Abduce back → Check if recovered
"""
# Forward
sim = forward_simulate(id, seed)
# Abduce
hypotheses = abduce(
observation=sim.world,
search_range=range(id - 100, id + 100),
top_k=1
)
# Verify
return hypotheses[0].hypothesis == f"invader_id={id}"
# Run batch
results = [abductive_roundtrip_test(i, SEED) for i in range(1, 1001)]
accuracy = sum(results) / len(results)
assert accuracy > 0.99
Iteratively refine hypotheses based on feedback.
# Initial hypothesis
hypothesis = engine.initial_hypothesis(observation)
for iteration in range(max_iterations):
# Test hypothesis
prediction = engine.predict(hypothesis)
error = distance(prediction, observation)
if error < threshold:
break
# Refine based on error
hypothesis = engine.refine(hypothesis, error, observation)
print(f"Converged after {iteration} iterations")
| Command | Description |
|---|---|
!teleport <id> | Jump to invader's world state |
!world | Show current world state |
!back | Return to previous world |
!abduce r g b | Infer invader from observed RGB |
!jump <n> | Jump to nth hypothesis |
!neighbors [r] | Explore nearby invaders (radius r) |
!test [n] | Run n abductive roundtrip tests |
!property <name> | Test specific property |
!history | Show teleportation history |
!seed [s] | Get/set RNG seed |
class SPIDeterminism:
"""Same input always produces same output."""
class DerangementBijectivity:
"""Derangement is reversible."""
class TropicalIdempotence:
"""tropical_blend(x, x, t) = x for all t."""
class SpinConsistency:
"""Spin direction preserved through transformations."""
def test_all_properties(id: int, seed: int) -> dict:
return {
"spi_determinism": test_property(SPIDeterminism(), id, seed),
"derangement_bijectivity": test_property(DerangementBijectivity(), id, seed),
"tropical_idempotence": test_property(TropicalIdempotence(), id, seed),
"spin_consistency": test_property(SpinConsistency(), id, seed)
}
| Trit | Skill | Role |
|---|---|---|
| -1 | slime-lisp | Validates REPL expressions |
| 0 | abductive-repl | Coordinates inference |
| +1 | cider-clojure | Generates evaluations |
Conservation: (-1) + (0) + (+1) = 0 ✓
# abductive-repl.yaml
inference:
search_range_default: 10000
top_k_default: 5
confidence_threshold: 0.7
max_iterations: 100
testing:
roundtrip_batch_size: 100
property_tests: true
repl:
history_file: "~/.abductive_history"
prompt: "gay> "
reproducibility:
seed: 0xf061ebbc2ca74d78
# Start abductive REPL
abduce-repl:
julia --project=Gay.jl -e 'using Gay; Gay.repl()'
# Run roundtrip tests
abduce-test n="100":
julia --project=Gay.jl -e 'using Gay; Gay.test_abductive({{n}})'
# Abduce from color
abduce-color r g b:
julia --project=Gay.jl -e 'using Gay; Gay.abduce(RGB({{r}}/255, {{g}}/255, {{b}}/255))'
world-hopping - Possible world navigationunworld - Derivation chainsgay-mcp - Color generationcider-clojure, slime-lisp, geiser-chicken - REPL backendsThis skill connects to the K-Dense-AI/claude-scientific-skills ecosystem:
general: 734 citations in bib.duckdbThis 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
The skill participates in triads satisfying:
(-1) + (0) + (+1) ≡ 0 (mod 3)
This ensures compositional coherence in the Cat# equipment structure.
npx claudepluginhub plurigrid/asi --plugin asiImplements triadic meta-skill spanning ∞-topos eternal forms, cybernetic open games with Nashator, and phenomenological witnessing for epistemic structures.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.