3-MATCH colored subgraph isomorphism gadget for 3-SAT reduction
Status: ✅ Production Ready Trit: -1 (MINUS - conservative/geodesic) Principle: Local constraints → Global correctness Frame: Non-backtracking geodesics with Möbius filtering
Three-Match reduces 3-SAT to 3-coloring which reduces to colored subgraph isomorphism. The 3-MATCH gadget enforces constraints LOCALLY via:
Correct by construction: If local geodesic constraints are satisfied, global 3-SAT solution is guaranteed.
# Three colors match at depth d iff:
# - Pairwise differences have 3-adic valuation ≥ d
# - No backtracking (each color unique in path)
# - GF(3) sum ≡ 0 (mod 3)
v₃(|a - b|) ≥ d ∧ v₃(|b - c|) ≥ d ∧ v₃(|c - a|) ≥ d
Three colors forming a valid local constraint:
match = ThreeMatchGeodesicGadget::ThreeMatch.new(seed: 0x42D, depth: 1)
match.color_a # => { trit: -1, hex: "#2626D8", polarity: :minus }
match.color_b # => { trit: 0, hex: "#26D826", polarity: :ergodic }
match.color_c # => { trit: 1, hex: "#D82626", polarity: :plus }
match.gf3_conserved? # => true
Prime path through color space:
geo = NonBacktrackingGeodesic.new(seed: seed, length: 8).generate!
geo.prime? # => true (no backtracking)
geo.moebius_product # => ±1 (non-zero for primes)
geo.moebius_filter # => filtered path (only primes kept)
3-SAT clause reduction:
gadget = ColoredSubgraphGadget.new(seed: seed)
gadget.add_clause(1, -2, 3) # (x₁ ∨ ¬x₂ ∨ x₃)
gadget.add_clause(-1, 2, 4) # (¬x₁ ∨ x₂ ∨ x₄)
gadget.build_gadgets!
gadget.correct_by_construction? # => true
Möbius inversion bidirectionally:
filter = BackAndForthFilter.new(seed: seed)
result = filter.full_cycle(sequence)
# Primes kept, composites filtered
# Run 3-MATCH demo
just three-match
# Test gadget correctness
just test-three-match
# Combine with unworld
just unworld-match
require 'three_match_geodesic_gadget'
# Create gadget
match = ThreeMatchGeodesicGadget::ThreeMatch.new(seed: seed)
# Verify constraints
match.gf3_conserved? # GF(3) sum = 0
match.matches_at_depth?(1) # 3-adic valuation ≥ 1
# Build geodesic
geo = ThreeMatchGeodesicGadget::NonBacktrackingGeodesic.new(
seed: seed, length: 12
).generate!
# Check primality
geo.prime? # No backtracking?
The 3-MATCH chain uses seed-chaining for gadget sequence:
chain = Unworld::ThreeMatchChain.new(genesis_seed: seed, length: 4)
chain.unworld[:matches].each do |m|
puts "#{m[:colors]} | GF(3): #{m[:gf3]}"
end
μ(n) = { 1 if n = 1
{ (-1)^k if n = p₁p₂...pₖ (distinct primes)
{ 0 if n has squared prime factor
f(n) = Σ_{d|n} g(d) ⟹ g(n) = Σ_{d|n} μ(n/d) f(d)
v₃(n) = max { k : 3^k | n }
─── 3-MATCH Gadget ───
3-MATCH(d=1): #D8267F #2CD826 #4FD826
GF(3) conserved: true
Matches at depth 1: true
─── Non-Backtracking Geodesic ───
Geodesic(PRIME, μ=1): #D8267F → #2CD826 → #4FD826 → ...
Prime path: true
Möbius product: 1
─── Colored Subgraph Gadget (3-SAT) ───
Clauses: 3
GF(3) all conserved: true
Prime geodesics: 3
Correct by construction: true
The 3-MATCH principle applies to Specter-style path caching:
Local constraint satisfaction → Global cache correctness
When path types are correct at compile time (local), cached paths are guaranteed correct (global).
# Each path element is a "color" in the gadget
path = (ALL, pred(iseven), FIRST)
# -1 0 +1 → GF(3) = 0 ✓
# The TupleNav wrapper is the "gadget envelope"
compiled = TupleNav(path) # Type-stable, 0 allocs
# Execution is "correct by construction"
result = nav_select(compiled, data, IDENTITY)
| Specter | 3-MATCH | Property |
|---------|---------|----------|
| Navigator | Color | Individual constraint |
| TupleNav | Gadget | Envelope preserving GF(3) |
| Type inference | Möbius filtering | Eliminates invalid paths |
| Inline caching | Non-backtracking | No revisiting (cached once) |
Correct-by-construction events flow through the gadget:
# Event: Path compilation (happens once)
PathCompiled(types::Tuple{...}) where all types stable
# Event: Cache hit (no recompilation)
CacheHit(compiled::TupleNav) where same types
# Event: Traversal (GF(3) conserved)
Traversal(input, output) where GF(3) sum = 0
The 93-113x speedup validates correct-by-construction:
lib/specter_optimized.jl - Correct-by-construction implementationlib/specter_chairmarks_world.jl - Validation benchmarksSkill Name: three-match Type: 3-SAT Reduction / Colored Subgraph Isomorphism / Inline Caching Trit: -1 (MINUS) GF(3): Conserved by construction Geodesics: Non-backtracking (prime paths only) Caching: Type-stable paths as non-backtracking geodesics
Part of: para-mensch-commons.
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer