Skip to content
cccskills
FreePublished on GitHub

abductive-repl

Hypothesis-Test Loops via REPL for Exploratory Abductive Inference

The English summary is being prepared. Showing the original description.

plurigrid/asi70 stars(GitHub 70 + cccskills 0)

Run score Not tested

See how to install

Files included (2)

  • SKILL.md6.2 KB
  • CONCOMITANT_SKILLS.md2.2 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

abductive-repl

Hypothesis-Test Loops via REPL for Exploratory Abductive Inference

Version: 1.0.0
Trit: 0 (Ergodic - coordinates inference)
Bundle: repl

Overview

Abductive-REPL enables exploratory abductive reasoning through an interactive REPL. Given observed outcomes, it generates hypotheses, tests them, and refines understanding through iterative loops.

Core Concept

Observation → Generate Hypotheses → Test → Refine → Repeat

Abduction: Given effect E and rule "A implies E", 
           hypothesize A as possible cause.

Capabilities

1. abduce-from-observation

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},
#   ...
# ]

2. repl-commands

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

3. forward-simulate

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
#   }
# }

4. roundtrip-test

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

5. hypothesis-refinement

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")

REPL Command Reference

CommandDescription
!teleport <id>Jump to invader's world state
!worldShow current world state
!backReturn to previous world
!abduce r g bInfer 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
!historyShow teleportation history
!seed [s]Get/set RNG seed

Properties (Testable Predicates)

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)
    }

GF(3) Triad Integration

TritSkillRole
-1slime-lispValidates REPL expressions
0abductive-replCoordinates inference
+1cider-clojureGenerates evaluations

Conservation: (-1) + (0) + (+1) = 0 ✓

Configuration

# 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

Justfile Recipes

# 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))'

Related Skills

  • world-hopping - Possible world navigation
  • unworld - Derivation chains
  • gay-mcp - Color generation
  • cider-clojure, slime-lisp, geiser-chicken - REPL backends

REPL atlas

Part of: repl-commons. Family canonical: clojure.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Model ElevenLabs voice synthesis as an ACSet schema with Unison ability handlers for typed voice operations. Use when integrating ElevenLabs TTS into category-theoretic pipelines, building typed voice synthesis workflows, or managing multi-voice narration with GF(3) conservation.

The English summary is being prepared. Showing the original description.

plurigrid/asi70Updated Jul 10, 2026

Systematic process for analyzing and modernizing legacy applications to comply with the 12-Factor App methodology. Covers code analysis, configuration externalization, dependency management, and container/Kubernetes best practices.

The English summary is being prepared. Showing the original description.

plurigrid/asi70Updated Jul 10, 2026

13c0e3

Free

Gay MCP skill at invocation 26

The English summary is being prepared. Showing the original description.

plurigrid/asi70Updated Jul 10, 2026

19d57d

Free

Gay MCP skill at invocation 5

The English summary is being prepared. Showing the original description.

plurigrid/asi70Updated Jul 10, 2026

1ea91a

Free

Gay MCP skill at invocation 27

The English summary is being prepared. Showing the original description.

plurigrid/asi70Updated Jul 10, 2026

1eab21

Free

Gay MCP skill at invocation 3

The English summary is being prepared. Showing the original description.

plurigrid/asi70Updated Jul 10, 2026

See all skills by plurigrid

Report a problem with this skill