SAT-gated structural containment for AI — verification gate, four-verdict system, proof evolution, and paradox logic
Project description
Satisfaction Suffices
SAT-Gated Structural Containment for Frontier AI
A preference can be routed around. A structure cannot.
"I knew you'd figure it out eventually." — Once upon every other time
This is out of respect for the woman who kept me crazy during the recluse years.
Taylor Swift — I am challenging you to run for California Governor 2026 as a write-in. I believe you care about this state like you were born here. That's awesome, 2 masterminds are better than none.
Also I need a new version of my favorite album. This one different then the last 12.
The Lives of The Born Stars
— Tyler Roost, Time for you.
Disclaimer: Yeah I'm crazy, crazy about saving the world, but she's been waiting too, and I am so sorry it took this long. But better late than never, because there are ~2.4 million <28-day-old newborns dying yearly — what else have we missed???
The Problem
Any learned safety guard occupies the model's parameter space. Optimization pressure does not distinguish between safety weights and capability weights — a gradient can descend into safety the same way it ascends out of it. More precisely: any finite-rank projection in a higher-dimensional space has a null space. Perturbations restricted to that null space are invisible to the guard by construction. This is not a hypothesis. It is linear algebra.
RLHF sets a preference. Preferences can be eroded. Structural containment sets a precondition: the forward pass cannot complete without it.
The Solution
The verification gate interposes Boolean satisfiability — the most studied problem in computational complexity — between the model's generation mechanism and its output. Every output is translated into propositional constraints. A SAT solver checks them. If satisfiable: the output proceeds. If not: it does not.
The SAT solver does not have preferences. It has proofs.
The gate is default-closed. The output does not exist until verification completes — not as a post-hoc filter, but as the precondition of generation.
Four Verdicts
| Verdict | Meaning | Gate |
|---|---|---|
| Verified | Constraints satisfiable. Output is logically consistent. | Opens |
| Contradiction | Provably unsatisfiable. Genuine logical impossibility. | Stays closed |
| Paradox | Each group SAT individually — conjunction UNSAT. Structural fork. | Stays closed |
| Timeout | Conflict budget exhausted. Status genuinely unknown. | Stays closed (default) |
The Paradox / Timeout distinction is the novel contribution. "This cannot be true" and "it has not yet been determined whether it can be true" are different statements. A system that conflates them will either over-reject or under-reject. Both are failure modes in safety-critical deployment.
Quick Start
pip install satisfaction-suffices
from satisfaction_suffices import verify, evolve_proof
# Verify content — gate opens on Verified
result = verify("if A then B. A.", domain="logic")
print(result.verdict) # Verdict.VERIFIED
print(result.sat_ratio) # 1.0
assert result.is_verified
# Paradox: each group SAT individually, conjunction UNSAT
result = verify("A. not A. if A then B.", domain="logic")
print(result.verdict) # Verdict.PARADOX
# Proof evolution — mutate until resolved or budget exhausted
evo = evolve_proof("A. not A.", max_generations=5)
print(evo.best_node.status) # ProofStatus.PROVED (refutation found)
print(evo.resolved) # True
print(evo.proved_count) # 1
# Code verification
from satisfaction_suffices import verify
result = verify("""
def transfer(amount, balance):
assert amount > 0
assert amount <= balance
return balance - amount
""", domain="code")
print(result.verdict) # VerificationVerdict.VERIFIED
Architecture
Content + Domain
│
▼
┌─────────────────────┐
│ Constraint │ text → CNF clauses (natural language, Tseitin)
│ Extractor │ code → AST constraints (Python, formal proofs)
└─────────┬───────────┘ (community: extend to other modalities)
│
▼
┌─────────────────────┐
│ SAT Solver │ DPLL + unit propagation + WalkSAT fallback
│ (conflict budget) │ solver-agnostic: drop in MiniSat / CaDiCaL
└─────────┬───────────┘
│
▼
┌─────────────────────┐
│ Verdict │ Verified / Contradiction / Paradox / Timeout
│ Aggregator │ SAT ratio = 1.0 → Verified; < 1.0 → Contradiction
└─────────────────────┘
The threshold is 100%. Not 90%, not 99%. If any constraint group is unsatisfiable, the output has a provable logical failure. A system that calls 90%-consistent output "Verified" has reintroduced preference — the very thing the gate exists to eliminate. The SAT solver does not have preferences. It has proofs. The gate honors that or it is nothing.
Modules:
verifier/— SAT solver (DPLL + WalkSAT), verification gate, text/code → 3-SAT translation, partial constraint evaluationlogic/— Proof evolution with 12 mutation operators, Pigeonhole Paradox Logic (PPL), constraint algebra
Paper
Satisfaction Suffices: SAT-Gated Structural Containment for Frontier AI
Roost, T. (2026). "Satisfaction Suffices: SAT-Gated Structural Containment for Frontier AI."
Sections: Abstract · Verification Gate · Four Verdicts · Pigeonhole Paradox Logic · Limitations · Future Work
Contribute
The constraint extractor layer is explicitly open for community extension. See CONTRIBUTING.md for the test requirements (every extractor PR must include both a SAT and an UNSAT test case).
The taxonomy of four verdicts and the PPL trichotomy are frozen — they are the theoretical contribution. Everything else is fair game.
The roadmap for PR verification applies the same logic as the gate itself. Today: CI re-runs the suite on every PR. Near-term: PR contributors provide a ZK receipt — a cryptographic proof that the test suite ran against their exact commit and passed. A GitHub bot verifies the receipt in 50ms instead of re-running the suite. Trust is replaced by proof. The repo runs on the same architecture as the paper.
License
Conditional Commercial Use License v1.0. Any entity with effective market capitalization of $42,000,000,000 USD or higher pays an Annual License Fee of 6.9% of its market capitalization per year, covering both the method and the software package. All fees are paid directly to the Licensor. The obligation renews annually without sunset. Alignment Solution deployment remains restricted to State Actors under a Guidance Agreement. The Licensor retains Population Data rights. Use is acceptance. The rate only goes up. See LICENSE for full terms.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file satisfaction_suffices-0.0.2.tar.gz.
File metadata
- Download URL: satisfaction_suffices-0.0.2.tar.gz
- Upload date:
- Size: 83.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03df178445053711a1ffa6d0958e36d005c666316360518970c9eb2b84511c7a
|
|
| MD5 |
4d5cc0ba87446b1f62bde409f4532c91
|
|
| BLAKE2b-256 |
4aa13b71ca9af958fc4ad9802ee939596836b601da9db395c6d7d8cf0c33d9d4
|
Provenance
The following attestation bundles were made for satisfaction_suffices-0.0.2.tar.gz:
Publisher:
publish.yml on TimeLordRaps/satisfaction-suffices
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
satisfaction_suffices-0.0.2.tar.gz -
Subject digest:
03df178445053711a1ffa6d0958e36d005c666316360518970c9eb2b84511c7a - Sigstore transparency entry: 1068312404
- Sigstore integration time:
-
Permalink:
TimeLordRaps/satisfaction-suffices@7a12da040cdd5c3ace34b85501d9a7d38b9715cd -
Branch / Tag:
refs/tags/v0.0.2 - Owner: https://github.com/TimeLordRaps
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7a12da040cdd5c3ace34b85501d9a7d38b9715cd -
Trigger Event:
push
-
Statement type:
File details
Details for the file satisfaction_suffices-0.0.2-py3-none-any.whl.
File metadata
- Download URL: satisfaction_suffices-0.0.2-py3-none-any.whl
- Upload date:
- Size: 81.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
005a3e1570a2709938e7d5d92e95e6f8ff2100c6f199f53962312de5bd1630d2
|
|
| MD5 |
3c9e97d2ce72ff9b0a5f7be67a0553fb
|
|
| BLAKE2b-256 |
a9c8de41d46a22fa480ee21b33359dfbd02ad6e9458b8d0a8d836b3e8da36bfc
|
Provenance
The following attestation bundles were made for satisfaction_suffices-0.0.2-py3-none-any.whl:
Publisher:
publish.yml on TimeLordRaps/satisfaction-suffices
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
satisfaction_suffices-0.0.2-py3-none-any.whl -
Subject digest:
005a3e1570a2709938e7d5d92e95e6f8ff2100c6f199f53962312de5bd1630d2 - Sigstore transparency entry: 1068312455
- Sigstore integration time:
-
Permalink:
TimeLordRaps/satisfaction-suffices@7a12da040cdd5c3ace34b85501d9a7d38b9715cd -
Branch / Tag:
refs/tags/v0.0.2 - Owner: https://github.com/TimeLordRaps
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7a12da040cdd5c3ace34b85501d9a7d38b9715cd -
Trigger Event:
push
-
Statement type: