{"id":35203912,"url":"https://github.com/hyperpolymath/echidna","last_synced_at":"2026-04-07T19:31:19.055Z","repository":{"id":325694644,"uuid":"1101572347","full_name":"hyperpolymath/echidna","owner":"hyperpolymath","description":"Neurosymbolic theorem proving platform with 12 prover backends","archived":false,"fork":false,"pushed_at":"2026-04-02T11:24:46.000Z","size":19422,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-03T01:32:05.389Z","etag":null,"topics":["agda","coq","formal-verification","hyperpolymath","lean","neurosymbolic","palimpsest","rust","starred","theorem-prover"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hyperpolymath.png","metadata":{"files":{"readme":"README.adoc","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":"docs/governance/JUST_AND_MUST_FRAMEWORK.md","roadmap":"ROADMAP.adoc","authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":".github/MAINTAINERS","copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"hyperpolymath","ko_fi":"hyperpolymath","liberapay":"hyperpolymath"}},"created_at":"2025-11-21T21:48:27.000Z","updated_at":"2026-04-02T11:24:49.000Z","dependencies_parsed_at":"2025-12-29T07:02:29.539Z","dependency_job_id":null,"html_url":"https://github.com/hyperpolymath/echidna","commit_stats":null,"previous_names":["hyperpolymath/echidna"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/hyperpolymath/echidna","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperpolymath%2Fechidna","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperpolymath%2Fechidna/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperpolymath%2Fechidna/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperpolymath%2Fechidna/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hyperpolymath","download_url":"https://codeload.github.com/hyperpolymath/echidna/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperpolymath%2Fechidna/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31526665,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agda","coq","formal-verification","hyperpolymath","lean","neurosymbolic","palimpsest","rust","starred","theorem-prover"],"created_at":"2025-12-29T13:04:25.975Z","updated_at":"2026-04-07T19:31:19.048Z","avatar_url":"https://github.com/hyperpolymath.png","language":"Rust","funding_links":["https://github.com/sponsors/hyperpolymath","https://ko-fi.com/hyperpolymath","https://liberapay.com/hyperpolymath"],"categories":[],"sub_categories":[],"readme":"// SPDX-License-Identifier: PMPL-1.0-or-later\n// SPDX-FileCopyrightText: 2025-2026 Jonathan D.A. Jewell \u003cj.d.a.jewell@open.ac.uk\u003e\n\n= ECHIDNA\n\nimage:https://img.shields.io/badge/OpenSSF-Best_Practices-green?logo=opensourcesecurity[OpenSSF Best Practices,link=\"https://www.bestpractices.dev/en/projects/new?repo_url=https://github.com/hyperpolymath/echidna\"]\nimage:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link=\"https://github.com/hyperpolymath/palimpsest-license\"]\nimage:https://img.shields.io/badge/Provers-30-green.svg[Provers: 30]\nimage:https://img.shields.io/badge/Tests-306%2B-brightgreen.svg[Tests: 306+]\nimage:https://api.thegreenwebfoundation.org/greencheckimage/nesy-prover.dev[Green Hosting,link=\"https://www.thegreenwebfoundation.org/green-web-check/?url=nesy-prover.dev\"]\n\n*E*xtensible *C*ognitive *H*ybrid *I*ntelligence for *D*eductive *N*eural *A*ssistance\n\nA neurosymbolic theorem proving platform with 30 prover backends,\ntrust-hardened verification pipeline, and multi-objective proof search.\n\n== Overview\n\nECHIDNA orchestrates 30 theorem provers, SMT solvers, first-order ATPs, and\nconstraint solvers through a unified Rust core. Every proof result passes\nthrough a trust-hardening pipeline that checks solver integrity, tracks axiom\nusage, verifies proof certificates, and assigns a 5-level confidence score.\n\nNeural premise selection (via Julia) suggests tactics, but formal provers\nalways have the final word. ECHIDNA never produces unsound proofs.\n\n== Features\n\n=== 30 Prover Backends\n\n[cols=\"1,4\", options=\"header\"]\n|===\n| Tier | Provers\n\n| *Tier 1: Interactive Proof Assistants*\n| Agda, Coq/Rocq, Lean 4, Isabelle/HOL, Idris2, F*\n\n| *Tier 2: SMT Solvers*\n| Z3, CVC5, Alt-Ergo\n\n| *Tier 3: Auto-Active Verifiers*\n| Dafny, Why3\n\n| *Tier 4: Specialised*\n| Metamath, HOL Light, Mizar, HOL4, PVS, ACL2, TLAPS, Twelf, Nuprl, Minlog, Imandra\n\n| *Tier 5: First-Order ATPs*\n| Vampire, E Prover, SPASS\n\n| *Tier 6: Constraint / Optimisation Solvers*\n| GLPK, SCIP, MiniZinc, Chuffed, OR-Tools\n|===\n\nAll 30 backends implement the `ProverBackend` trait: parse, verify, export,\ntactic suggestion, and theorem search. File extension detection covers 30+\nformats (`.v`, `.lean`, `.smt2`, `.tptp`, `.dfy`, `.mzn`, etc.).\n\n=== Trust \u0026 Safety Hardening (v1.5)\n\nThe verification pipeline applies the following checks to every proof:\n\n* *Solver Binary Integrity* (`integrity/`): SHAKE3-512 provenance hashing and\n  BLAKE3 fast runtime re-verification. Solver binaries are checked against a\n  TOML manifest at startup; tampered binaries are rejected.\n\n* *SMT Portfolio Solving* (`verification/portfolio.rs`): Cross-checks proofs\n  across multiple solvers (e.g. Z3 + CVC5 + Alt-Ergo). Flags disagreements\n  for human review. Supports SMT, ATP, and ITP solver pools.\n\n* *Proof Certificate Checking* (`verification/certificates.rs`): Verifies\n  Alethe (CVC5), DRAT/LRAT (SAT solvers), TSTP (first-order ATPs), Lean4\n  kernel, and Coq kernel certificate formats. Certificates are hashed with\n  BLAKE3 and stored for audit trails.\n\n* *Axiom Usage Tracking* (`verification/axiom_tracker.rs`): Scans proof\n  content for dangerous constructs across provers. Four danger levels:\n  - *Safe*: Standard library axioms\n  - *Noted*: Classical axioms in constructive systems (e.g. `Axiom` in Coq)\n  - *Warning*: Incomplete proof markers (`sorry`, `Admitted`, `postulate`)\n  - *Reject*: Known unsound constructs (`--type-in-type`, `mk_thm`,\n    `believe_me`)\n  Comments are not flagged.\n\n* *Solver Sandboxing* (`executor/sandbox.rs`): Runs solvers in isolated\n  environments. Three modes: Podman containers (preferred, `--network=none`,\n  read-only, memory/CPU/disk limits), bubblewrap namespaces (fallback), or\n  unsandboxed (development only, requires explicit opt-in). Auto-detection\n  selects the strongest available option.\n\n* *5-Level Trust Hierarchy* (`verification/confidence.rs`): Every proof result\n  receives a trust level:\n  - Level 1: Large-TCB system, unchecked, or dangerous axioms used\n  - Level 2: Single prover, no dangerous axioms\n  - Level 3: Single prover with verified proof certificate\n  - Level 4: Small-kernel prover (Lean, Coq, Isabelle, Agda, Metamath,\n    HOL Light, HOL4, Idris2, F*, Twelf, Nuprl, Minlog) with verified\n    certificate\n  - Level 5: Cross-checked by 2+ independent small-kernel systems with\n    certificates\n\n* *Mutation Testing* (`verification/mutation.rs`): Deliberately weakens\n  specifications (remove preconditions, weaken postconditions, negate\n  subterms, replace constants) to verify the pipeline catches them. Computes\n  a mutation score with a default 95% threshold.\n\n* *Cross-Prover Proof Exchange* (`exchange/`): Export and import proofs in\n  universal formats: OpenTheory (HOL family interop) and Dedukti/Lambdapi\n  (universal proof kernel based on lambda-Pi calculus modulo rewriting).\n\n* *Pareto Optimisation* (`verification/pareto.rs`): Multi-objective ranking\n  of proof candidates across four axes: proof time, trust level, memory\n  usage, and proof size. Computes the Pareto frontier and optionally applies\n  weighted scoring for single-best selection.\n\n* *Statistical Confidence Tracking* (`verification/statistics.rs`):\n  Per-prover, per-domain success rates and timing statistics. Bayesian timeout\n  estimation (mean + 2 sigma). Wilson score intervals for mutation score\n  confidence. Prover ranking by composite score (success rate, timeout rate,\n  speed). JSON serialisation for persistence.\n\n* *Dispatch Pipeline* (`dispatch.rs`): Orchestrates the full pipeline:\n  create prover -\u003e parse -\u003e verify -\u003e axiom scan -\u003e confidence scoring.\n  Supports single-prover and cross-checked (portfolio) modes with configurable\n  minimum trust levels.\n\n=== Additional Capabilities\n\n* *Neurosymbolic ML* (Julia layer): Logistic regression tactic prediction\n  trained on 332 proofs / 1,603 tactics. Serves predictions via HTTP (port 8090).\n* *Aspect Tagging*: Intelligent proof categorisation and domain analysis\n* *Anomaly Detection*: ML-based overconfidence detection\n* *Agentic Proof Search*: Actor-based autonomous proof exploration\n* *Chapel Parallel Layer* (optional): Coforall-based parallel proof dispatch\n* *3 API Interfaces*:\n  - GraphQL (async-graphql, port 8081)\n  - gRPC (tonic + Protocol Buffers, port 50051)\n  - REST (axum + OpenAPI/Swagger, port 8000)\n* *ReScript UI*: 33 compiled components for proof exploration (zero TypeScript)\n* *REPL*: Interactive proof session via rustyline\n\n== Quick Start\n\n=== Prerequisites\n\n* *Rust* nightly (managed via asdf)\n* *Julia* 1.10+ (for ML layer)\n* *Deno* (for ReScript UI)\n* *Podman* (NOT Docker) -- recommended for solver sandboxing\n* *Just* command runner\n\n=== Build and Test\n\n[source,bash]\n----\n# Clone\ngit clone https://github.com/hyperpolymath/echidna.git\ncd echidna\n\n# Build\njust build\n# or: cargo build\n\n# Run all tests (306+ passing)\njust test\n# or: cargo test\n\n# Run ECHIDNA REPL\njust run\n----\n\n=== Using Podman Container\n\n[source,bash]\n----\npodman build -f Containerfile -t echidna:latest .\npodman run -it echidna:latest\n----\n\n== Architecture\n\n=== Technology Stack\n\n* *Rust*: Core logic, prover backends, trust pipeline, CLI, REPL, API servers\n* *Julia*: ML inference (tactic prediction, premise selection)\n* *ReScript + Deno*: UI components\n* *Chapel*: Optional parallel proof dispatch\n\n=== Key Modules\n\n[source]\n----\nsrc/rust/\n  provers/          # 30 prover backend implementations (ProverBackend trait)\n  verification/     # Trust-hardening subsystem\n    portfolio.rs    # SMT portfolio solving / cross-checking\n    certificates.rs # Proof certificate checking (Alethe, DRAT/LRAT, TSTP)\n    axiom_tracker.rs# Axiom usage scanning and policy enforcement\n    confidence.rs   # 5-level trust hierarchy\n    mutation.rs     # Mutation testing for specifications\n    pareto.rs       # Pareto frontier computation\n    statistics.rs   # Per-prover statistical tracking\n  integrity/        # Solver binary integrity (SHAKE3-512, BLAKE3)\n  executor/         # Sandboxed solver execution (Podman, bubblewrap)\n  exchange/         # Cross-prover proof exchange (OpenTheory, Dedukti)\n  dispatch.rs       # Full trust-hardening dispatch pipeline\n  agent/            # Agentic proof search (actor model)\n  neural.rs         # Neural premise selection integration\n  aspect.rs         # Aspect tagging system\n  anomaly_detection.rs\n  proof_search.rs   # Chapel parallel proof search\n  core.rs           # Core types (Term, ProofState, Tactic, Goal, etc.)\n  parsers/          # Proof file parsers\n  ffi/              # Foreign function interface\n  server.rs         # HTTP API server\n  repl.rs           # Interactive REPL\n  main.rs           # CLI entry point\n  lib.rs            # Library root\n----\n\n=== API Usage\n\n[source,rust]\n----\nuse echidna::provers::{ProverFactory, ProverKind, ProverConfig};\n\n// Create a prover backend\nlet backend = ProverFactory::create(ProverKind::Lean, ProverConfig::default())?;\nlet state = backend.parse_string(\"theorem foo : 1 + 1 = 2 := by omega\").await?;\nlet verified = backend.verify_proof(\u0026state).await?;\n----\n\n[source,rust]\n----\nuse echidna::dispatch::{ProverDispatcher, DispatchConfig};\nuse echidna::provers::ProverKind;\n\n// Use the trust-hardening dispatch pipeline\nlet dispatcher = ProverDispatcher::with_config(DispatchConfig {\n    cross_check: true,\n    track_axioms: true,\n    ..Default::default()\n});\n\n// Cross-checked verification\nlet result = dispatcher.verify_proof_cross_checked(\n    ProverKind::Z3,\n    \"(set-logic QF_LIA)\\n(assert (\u003e x 0))\\n(check-sat)\",\n    \u0026[ProverKind::CVC5],\n).await?;\n\nprintln!(\"Verified: {}, Trust: {}\", result.verified, result.trust_level);\n----\n\n== Test Suite\n\n306+ tests passing across the codebase:\n\n* 232 unit tests (lib)\n* 38 integration tests\n* 21 property-based tests (PropTest)\n* Additional interface and neural integration tests\n\n[source,bash]\n----\ncargo test              # Run all tests\ncargo test --lib        # Unit tests only\ncargo test --test integration_tests\n----\n\n== Development\n\n=== Quality Checks\n\n[source,bash]\n----\njust check      # All quality checks\njust lint       # REUSE, rustfmt, clippy\njust security   # Trivy, cargo-audit\njust coverage   # Test coverage\njust mvp        # MVP smoke checks (reports missing provers, non-fatal)\n----\n\n== Current Status\n\n*v1.5.0 -- Trust \u0026 Safety Hardening Complete*\n\n[cols=\"1,3\", options=\"header\"]\n|===\n| Area | Status\n\n| Prover backends | 30/30 operational\n| Trust pipeline | All 13 tasks complete\n| Unit tests | 232 passing\n| Integration tests | 38 passing\n| Property tests | 21 passing (PropTest)\n| API interfaces | GraphQL, gRPC, REST\n| ML layer | Julia logistic regression\n| UI | ReScript, 33 components\n| CI/CD | 17 workflows\n|===\n\n*Planned for v2.0*:\n\n* Full API-to-prover FFI/IPC integration\n* Deep learning models (Transformers via Flux.jl)\n* Production deployment configuration\n* Tamarin/ProVerif bridge for cipherbot\n\n== Documentation\n\n* link:CONTRIBUTING.md[Contributing Guidelines]\n* link:CODE_OF_CONDUCT.md[Code of Conduct]\n* link:SECURITY.md[Security Policy]\n* link:CHANGELOG.adoc[Changelog]\n* link:ROADMAP.adoc[Roadmap]\n\n== Critical Constraints\n\n* *NO PYTHON* -- Julia for ML, Rust for systems, ReScript for UI\n* *RSR/CCCP Compliance* -- Rhodium Standard Repository guidelines\n* *Justfile PRIMARY* -- Use Just, not Make\n* *Podman not Docker* -- Always Podman\n* *License*: PMPL-1.0-or-later\n\n== License\n\nThis project is licensed under the link:LICENSE[Palimpsest Meta-Project License (PMPL-1.0-or-later)].\n\n== Citation\n\n[source,bibtex]\n----\n@software{echidna2026,\n  title = {ECHIDNA: Extensible Cognitive Hybrid Intelligence for Deductive Neural Assistance},\n  author = {Jewell, Jonathan D.A.},\n  year = {2026},\n  url = {https://github.com/hyperpolymath/echidna},\n  license = {PMPL-1.0-or-later}\n}\n----\n\n== Contact\n\n* *GitHub Issues*: https://github.com/hyperpolymath/echidna/issues\n* *Pull Requests*: https://github.com/hyperpolymath/echidna/pulls\n\n---\n\n*Version*: 1.5.0 +\n*Status*: Trust \u0026 Safety Hardening Complete +\n*Author*: Jonathan D.A. Jewell \u003cj.d.a.jewell@open.ac.uk\u003e +\n*Last Updated*: 2026-02-08\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperpolymath%2Fechidna","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhyperpolymath%2Fechidna","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperpolymath%2Fechidna/lists"}