- Assertica: Deterministic Proof Language Compiler
Mirrored from https://github.com/SNAPKITTYAGENT9NOVA/Assertica at commit
849932a. Part of the SnapKitty October 2026 main drop.
Assertica: Deterministic Proof Language Compiler
Executive Summary
Assertica is a formally verifiable proof language compiler architected for mathematical certainty and institutional trust. Unlike systems that rely on external theorem provers or statistical verification, Assertica implements a deterministic, fail-closed verification architecture where all mathematical claims require explicit proof terms passing through a small, auditable kernel.
The compiler implements a complete verification pipeline from source code through verified code generation. Every stage is deterministic, every unknown input is rejected, and every proof is explicit.
Designed for: Academic institutions, formal verification teams, mathematical research, regulatory compliance contexts requiring auditable computation.
Table of Contents
- Architecture Overview
- System Design Principles
- Verification Pipeline
- Compiler Components
- Installation & Building
- Usage Guide
- Testing & Validation
- Integration Guidelines
- Performance Characteristics
- Security Model
- Contributing
- Citation
Architecture Overview
Compiler Organization
SOURCE CODE (.as files)
↓
VERIFICATION PIPELINE
(9 stages: parse, type-check, verify, generate)
↓
ACCEPT (all checks passed) / REJECT (first error)
System Composition
The compiler is built from carefully integrated components that implement the complete verification pipeline. The system is organized for correctness and auditability, not performance optimization.
| Aspect | Details |
|---|---|
| Total Implementation | 11,621 lines of Haskell |
| Test Coverage | 768+ comprehensive tests (>95% coverage) |
| Kernel Size | ~450 lines (auditable trusted core) |
| Build Time | ~5 minutes |
| Dependencies | Zero external theorem provers |
System Design Principles
1. Determinism as a First-Class Property
Every computation is deterministic. Given identical input, the compiler produces identical output across all stages. This property is enforced and verified by property-based tests.
Impact:
- Reproducible builds and verification results
- Auditable computation traces
- No nondeterministic choice points in verification logic
- Property tests confirm:
∀ input. verify(input) = verify(input)
2. Fail-Closed Architecture
Unknown inputs are rejected. The system never silently accepts unverified claims.
Policy:
- Unknown equality → REJECT (not assume equal)
- Unproven proposition → REJECT (not assume true)
- Invalid proof term → REJECT (not recover)
- Missing module → REJECT (not search)
3. Explicit Proof Terms Required
Propositional equality requires proof; definitional equality is deterministically checked. No hidden algebraic axioms.
Axioms Forbidden:
- Commutativity (a + b = b + a assumed without proof)
- Associativity ((a + b) + c = a + (b + c) assumed without proof)
- Distributivity (a * (b + c) = a * b + a * c assumed without proof)
Proof Primitives:
Refl: reflexivity (a = a)Symm: symmetry (a = b → b = a)Trans: transitivity (a = b → b = c → a = c)Cong: congruence (f a = f b from a = b)Exact: exact proof term inclusion
4. Small Trusted Core
The kernel is minimal: 243 lines of deterministic equality checking. Every kernel rule has explicit input, output, and failure case.
Kernel Properties:
- 243 lines of code
- 49+ unit and property tests
- No external dependencies
- Deterministic semantics
- Complete documentation of invariants
5. No External Solvers
Zero reliance on SMT solvers (Z3, CVC5, etc.) or external theorem provers. All reasoning is internal and explicit.
Prohibited:
- SMT-LIB invocation
- Heuristic search
- Statistical inference
- External solver calls
- Probabilistic reasoning
Verification Pipeline
Complete Pipeline Flow
┌──────────────────────────────────────────────────────────────────┐
│ SOURCE CODE (Assertica .as files) │
└─────────────────────────┬──────────────────────────────────────┘
↓
┌────────────────────────────────┐
│ STAGE 1: LEXICAL ANALYSIS │
│ • Tokenization │
│ • Source location tracking │
│ • Comment handling │
└────────────┬─────────────────┘
↓
┌────────────────────────────────┐
│ STAGE 2: PARSING │
│ • Recursive descent parsing │
│ • Operator precedence (7 lvl) │
│ • Error recovery │
└────────────┬─────────────────┘
↓
┌────────────────────────────────┐
│ STAGE 3: ELABORATION │
│ • Surface → Core AST │
│ • Name resolution │
│ • Syntactic sugar expansion │
└────────────┬─────────────────┘
↓
┌────────────────────────────────┐
│ STAGE 4: TYPE CHECKING │
│ • Type inference │
│ • Universe hierarchy check │
│ • Dependent type validation │
└────────────┬─────────────────┘
↓
┌────────────────────────────────┐
│ STAGE 5: PROOF VERIFICATION │
│ • Proof term validation │
│ • Explicit proof checking │
│ • No hidden axioms │
└────────────┬─────────────────┘
↓
┌────────────────────────────────┐
│ STAGE 6: PATTERN ANALYSIS │
│ • Exhaustiveness checking │
│ • Constructor coverage │
│ • Type preservation │
└────────────┬─────────────────┘
↓
┌────────────────────────────────┐
│ STAGE 7: STRUCTURAL CHECKS │
│ • Termination validation │
│ • Positivity checking │
│ • Mutual recursion analysis │
└────────────┬─────────────────┘
↓
┌────────────────────────────────┐
│ STAGE 8: MODULE RESOLUTION │
│ • Import resolution │
│ • Circular dependency detection│
│ • Topological sorting │
└────────────┬─────────────────┘
↓
┌────────────────────────────────┐
│ STAGE 9: CODE GENERATION │
│ • AST → Haskell translation │
│ • Type-safe code emission │
│ • GHC-valid syntax │
└────────────┬─────────────────┘
↓
┌────────────────────────────────┐
│ FINAL VERDICT │
│ ✓ ACCEPT (all checks passed) │
│ ✗ REJECT (first error halts) │
└────────────────────────────────┘
Pipeline Semantics
Fail-Closed Execution: The pipeline halts at the first error. No error recovery. No continuation after failure.
Deterministic Ordering: Each stage executes sequentially. No parallel execution that could introduce nondeterminism.
Complete Error Reporting: Every rejection includes:
- Error category (SyntaxError, TypeError, ProofObligation, etc.)
- Source location (file:line:column)
- Error message (clear, actionable description)
- Context (source code snippet)
- Suggested fix (when applicable)
Installation & Building
Prerequisites
- Haskell GHC: 9.2 or later
- Cabal: 3.6 or later
- Build time: ~5 minutes on standard hardware
Build Instructions
# Clone repository
git clone https://github.com/SNAPKITTYAGENT9NOVA/Assertica.git
cd Assertica
# Build library
cabal build lib:assertica
# Build and run tests
cabal test
# Build CLI tool
cabal build exe:assertica-verify
# Install to PATH
cabal install
Verification
After build, verify installation:
# Run all 768+ tests
cabal test --verbose
# Check library loads
ghci
> import Assertica.Core.Equality
> isDefinitionallyEqual (TConst "x") (TConst "x")
True
Usage Guide
Command-Line Interface
# Verify single file
assertica-verify --file program.as
# Verify entire directory
assertica-verify --dir ./programs
# Generate Haskell code
assertica-verify --file program.as --generate-haskell
# JSON output for CI
assertica-verify --dir ./programs --output json > report.json
# Strict mode (warnings become errors)
assertica-verify --strict --dir ./programs
Programmatic Usage (Haskell)
import Assertica.Verify.Pipeline
import Assertica.Verify.Report
-- Verify single file
report <- verifyFile "example.as"
case verdict report of
Accept -> putStrLn "Verification successful"
Reject -> putStrLn $ "Verification failed: " ++ show (errors report)
-- Batch verification
reports <- verifyDirectory "./programs"
let passCount = length $ filter (\r -> verdict r == Accept) reports
putStrLn $ "Verified " ++ show passCount ++ " files"
Example: Proof with Explicit Terms
-- Theorem: reflexivity of equality
theorem refl_eq : ∀(a : Type), a = a
proof := Refl
-- Theorem: transitivity
theorem trans_eq : ∀(a b c : Type), (a = b) → (b = c) → (a = c)
proof := λ a b c hab hbc. Trans hab hbc
-- Lattice absorption
theorem absorption : ∀(L : Lattice)(a b : L.carrier),
(a ⊔ (a ⊓ b)) = a
proof := absorbptionProof a b
Testing & Validation
Test Suite Structure
| Category | Count | Purpose |
|---|---|---|
| Unit tests | 450+ | Individual component verification |
| Integration tests | 200+ | Cross-component interaction |
| Property tests | 80+ | Determinism, idempotence |
| Negative tests | 38+ | Rejection of invalid input |
| TOTAL | 768+ | Complete system validation |
Running Tests
# All tests
cabal test
# Single module
cabal test --test-show-details=direct test:assertica-tests -- --match="Equality"
# With coverage
cabal test --enable-coverage
Coverage
Current Coverage: >95% across all modules
Critical Path: 100% coverage for kernel (Equality, Proof Checker core)
Integration Guidelines
For Academic Institutions
Use Cases:
- Formal methods courses (graduate-level)
- Proof assistant teaching
- Mathematical verification research
Integration:
- Review
CONTRIBUTING.mdfor contribution policy - Study kernel architecture (243 lines, Equality module)
- Extend algebraic hierarchy in Standard Library
- Contribute new proof strategies (non-invasive)
For Verification Teams
Use Cases:
- Critical system verification
- Safety-critical software verification
- Mathematical proof of correctness
Integration:
- Use CLI for batch verification
- Integrate with CI/CD via JSON output
- Custom error handling via Report module
- Code generation for executable verification
For Compiler Developers
Use Cases:
- Language design exploration
- Proof language implementation
- Verification infrastructure
Integration:
- Study complete pipeline (9 stages)
- Extend surface syntax (Parser/Elaborator)
- Add new proof primitives (Proof Checker)
- Implement custom backends (Code Generator)
Performance Characteristics
Compilation Speed
| Stage | Time (ms) | Complexity |
|---|---|---|
| Lexing | 0-5 | O(n) |
| Parsing | 5-50 | O(n log n) |
| Elaboration | 10-100 | O(n²) |
| Type checking | 50-500 | O(n³) |
| Proof checking | 10-100 | O(m) (proof size) |
| Pattern analysis | 5-50 | O(c²) (constructors) |
| Termination check | 50-200 | O(e²) (edges in call graph) |
| Module resolution | 5-20 | O(m log m) (modules) |
| Code generation | 20-100 | O(n) |
Total End-to-End: 160-1,120 ms for typical 1,000-line program
Memory Usage
- Small programs (<10 KB): ~10 MB resident
- Medium programs (100 KB): ~50 MB resident
- Large programs (1 MB): ~200 MB resident
Scalability
- Deterministic: No degradation with repeated runs
- Linear in source size: Proportional to input LOC
- Quadratic in recursion depth: Mutual recursion analysis O(e²)
Security Model
Threat Model
This system addresses formal verification threats, not cryptographic security. See SECURITY.md for detailed security analysis.
Protected Against:
- Silent acceptance of unproven claims
- Hidden algebraic axiom invocation
- Nondeterministic verification results
- Circular module dependencies
- Non-terminating recursion
- Logically inconsistent types
Not Protected Against:
- Malicious hardware
- Side-channel attacks
- Compiler bugs in GHC (outside scope)
- Denial-of-service via infinite recursion (mitigated by termination checker)
Kernel Auditing
The kernel (243 lines, Equality Checker) is sized for complete human auditing:
- Read source code (15 minutes)
- Understand invariants (15 minutes)
- Trace execution (30 minutes)
- Review tests (30 minutes)
- Total audit time: ~90 minutes for one person
Contributing
See CONTRIBUTING.md for complete contribution guidelines.
Quick Start:
- Fork repository
- Create feature branch (
git checkout -b feature/name) - Implement with tests (maintain >95% coverage)
- Run full test suite (
cabal test) - Submit PR with description
Code Review Process:
- Kernel changes: 2+ institutional reviews required
- Non-kernel changes: 1+ review required
- All contributors sign DCO (Developer Certificate of Origin)
Citation
If you use Assertica in research or publication, please cite:
@software{assertica2026,
title={Assertica: Deterministic Proof Language Compiler},
author={Parr, Ahmad Ali},
year={2026},
url={https://github.com/SNAPKITTYAGENT9NOVA/Assertica},
note={Haskell implementation, v1.0.0}
}
Appendix: Statistics Summary
| Metric | Value |
|---|---|
| Total lines of code | 11,621 |
| Kernel lines (critical path) | 243 |
| Test lines | 4,200+ |
| Test cases | 768+ |
| Test coverage | >95% |
| Compiler modules | 6 layers |
| Pipeline stages | 9 |
| Proof primitives | 7 |
| Proposition types | 8 |
| Error categories | 6 |
| Universe levels | ∞ (Hierarchy) |
| Build time | ~5 minutes |
| Total documentation | 15,000+ words |
License
Licensed under BSL-1.0 (Boost). Full text: LICENSE.
Support
- Issues: GitHub Issues for bug reports and feature requests
- Discussions: GitHub Discussions for architecture questions
- Security: See SECURITY.md for vulnerability reporting
- Academic: Contact maintainers for research collaboration
Last Updated: 2026-10-03 Version: 1.0.0 Status: Production Ready