Skip to content

Commit f53f3a5

Browse files
hyperpolymathclaude
andcommitted
fix: compilation errors, rustfmt stable compat, cargo fmt across codebase
- Fix tamarin.rs: construct Definition structs instead of pushing Strings - Fix main.rs: add 14 missing ProverKind match arms (SeaHorn through ABC) - Fix resolvers.rs: remove double-semicolon syntax error - Remove unused imports (cadical, kissat, minisat, spin_checker) - rustfmt.toml: comment out nightly-only options for stable Rust compat - cargo fmt applied across 100+ files - 389 tests passing, zero warnings Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 87bf8ea commit f53f3a5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

112 files changed

+8225
-3882
lines changed

.machine_readable/6a2/STATE.a2ml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,16 @@ status = "active"
1111
[project-context]
1212
name = "echidna"
1313
completion-percentage = 100
14-
phase = "v1.5.0 Released - Production Ready"
14+
phase = "v1.6.0 Released - Production Ready"
15+
16+
[session-2026-03-23]
17+
summary = "Compilation fixes and code cleanup for stable Rust"
18+
changes = [
19+
"Fixed tamarin.rs Definition type (added missing struct fields)",
20+
"Fixed non-exhaustive match arms in main.rs",
21+
"Removed unused imports across codebase",
22+
"Fixed rustfmt.toml for stable Rust (removed unstable options)",
23+
"Fixed resolvers.rs syntax error",
24+
"Applied cargo fmt across entire codebase",
25+
"389 tests passing",
26+
]

CHANGELOG.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,24 @@ All notable changes to ECHIDNA will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [1.6.1] - 2026-03-23
9+
10+
### Fixed
11+
12+
- Fixed `tamarin.rs` Definition type (added missing struct fields)
13+
- Fixed non-exhaustive match arms in `main.rs`
14+
- Removed unused imports across codebase
15+
- Fixed `rustfmt.toml` for stable Rust (removed unstable options)
16+
- Fixed `resolvers.rs` syntax error
17+
- Applied `cargo fmt` across entire codebase
18+
19+
### Changed
20+
21+
- 389 tests passing (up from 306+)
22+
- Project now compiles cleanly on stable Rust toolchain
23+
24+
---
25+
826
## [1.6.0] - 2026-03-08
927

1028
### Major Features
@@ -145,6 +163,7 @@ Complete implementation of 13-component trust-hardening system:
145163

146164
---
147165

166+
[1.6.1]: https://github.com/hyperpolymath/echidna/compare/v1.6.0...v1.6.1
148167
[1.6.0]: https://github.com/hyperpolymath/echidna/compare/v1.5.0...v1.6.0
149168
[1.5.0]: https://github.com/hyperpolymath/echidna/compare/v1.0.0...v1.5.0
150169
[1.0.0]: https://github.com/hyperpolymath/echidna/releases/tag/v1.0.0

CLAUDE.md

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,18 @@ This document provides guidelines and context for working with Claude Code on th
44

55
## Project Overview
66

7-
**ECHIDNA** (Extensible Cognitive Hybrid Intelligence for Deductive Neural Assistance) is a trust-hardened neurosymbolic theorem proving platform supporting 30 prover backends with a comprehensive verification pipeline.
7+
**ECHIDNA** (Extensible Cognitive Hybrid Intelligence for Deductive Neural Assistance) is a trust-hardened neurosymbolic theorem proving platform supporting 48 prover backends with a comprehensive verification pipeline.
88

99
**Repository**: https://github.com/hyperpolymath/echidna
10-
**Version**: 1.5.0
10+
**Version**: 1.6.0
1111
**License**: PMPL-1.0-or-later
1212

1313
## Repository Structure
1414

1515
```
1616
echidna/
1717
├── src/
18-
│ ├── rust/ # Rust core (30 provers, trust pipeline)
18+
│ ├── rust/ # Rust core (48 provers, trust pipeline)
1919
│ │ ├── provers/ # 30 prover backend implementations
2020
│ │ ├── verification/ # Trust pipeline (portfolio, certificates, axioms, confidence, mutation, pareto, statistics)
2121
│ │ ├── integrity/ # Solver binary integrity (SHAKE3-512, BLAKE3)
@@ -69,12 +69,12 @@ Follow conventional commit format:
6969

7070
### Tech Stack
7171

72-
- **Rust**: Core logic, 30 prover backends, trust pipeline, CLI, REPL, API servers
72+
- **Rust**: Core logic, 48 prover backends, trust pipeline, CLI, REPL, API servers
7373
- **Julia**: ML inference (tactic prediction, premise selection, port 8090)
7474
- **ReScript + Deno**: UI components (28 files)
7575
- **Chapel**: Optional parallel proof dispatch
7676

77-
### Prover Support (30 Total - ALL IMPLEMENTED)
77+
### Prover Support (48 Total - ALL IMPLEMENTED)
7878

7979
- **Interactive Proof Assistants**: Agda, Coq/Rocq, Lean 4, Isabelle/HOL, Idris2, F*
8080
- **SMT Solvers**: Z3, CVC5, Alt-Ergo
@@ -100,7 +100,7 @@ The v1.5 trust hardening added:
100100

101101
### Key Components
102102

103-
- `src/rust/provers/mod.rs`: ProverBackend trait, ProverKind enum (30 variants), ProverFactory
103+
- `src/rust/provers/mod.rs`: ProverBackend trait, ProverKind enum (48 variants), ProverFactory
104104
- `src/rust/dispatch.rs`: Full trust-hardening dispatch pipeline
105105
- `src/rust/verification/`: Portfolio, certificates, axiom tracker, confidence, mutation, pareto, statistics
106106
- `src/rust/integrity/`: Solver binary integrity (SHAKE3-512, BLAKE3)
@@ -111,14 +111,17 @@ The v1.5 trust hardening added:
111111

112112
### Current Status
113113

114-
**Completed (v1.5.0)**:
115-
- 30/30 prover backends
114+
**Completed (v1.6.0)**:
115+
- 48/48 prover backends
116116
- Trust & safety hardening (13 tasks complete)
117-
- 306+ tests (232 unit, 38 integration, 21 property-based)
117+
- 389 tests passing
118118
- 3 API interfaces (GraphQL, gRPC, REST)
119119
- Julia ML layer (logistic regression)
120120
- ReScript UI (28 files)
121121
- 17 CI/CD workflows
122+
- Zig FFI layer (4 shared libraries)
123+
- Idris2 ABI formal proofs (7 modules, zero believe_me)
124+
- Compiles cleanly on stable Rust (cargo fmt + clippy clean)
122125

123126
**Next (v2.0)**:
124127
- FFI/IPC bridge (API interfaces to Rust prover backends)
@@ -130,7 +133,7 @@ The v1.5 trust hardening added:
130133
```bash
131134
# Build System (Justfile is PRIMARY)
132135
just build # Build the project
133-
just test # Run tests (306+)
136+
just test # Run tests (389)
134137
just check # Run all quality checkers
135138

136139
# Cargo commands
@@ -159,5 +162,5 @@ cargo fmt --check # Format check
159162

160163
---
161164

162-
**Last Updated**: 2026-02-08
165+
**Last Updated**: 2026-03-23
163166
**Maintained By**: Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>

Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@ sha2 = { version = "0.10", optional = true }
7373
# Chrono for timestamps
7474
chrono = { version = "0.4", features = ["serde"] }
7575

76+
# Temporary files (used by prover backends to invoke external solvers)
77+
tempfile = "3"
78+
7679
[features]
7780
default = []
7881
chapel = [] # Enable Chapel parallel proof search (requires Zig FFI library)
@@ -83,7 +86,6 @@ verisimdb = [ # Enable VeriSimDB persistent proof storage (8-modality octads
8386

8487
[dev-dependencies]
8588
proptest = "1"
86-
tempfile = "3"
8789
tokio-test = "0.4"
8890
which = "7"
8991
pretty_assertions = "1"

build.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@ fn main() {
2323
println!("cargo:rustc-link-lib=dylib=c");
2424
} else {
2525
// Also check standard install location
26-
let alt_dir = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR"))
27-
.join("lib");
26+
let alt_dir = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("lib");
2827
if alt_dir.exists() {
2928
println!("cargo:rustc-link-search=native={}", alt_dir.display());
3029
println!("cargo:rustc-link-lib=static=echidna_chapel_ffi");

examples/aspect_tagging_demo.rs

Lines changed: 74 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
//! Example demonstrating aspect tagging system usage
55
66
use echidna::aspect::{
7-
Aspect, AspectTagger, RuleBasedTagger, CompositeTagger,
8-
AggregationStrategy, NeuralTagger, TheoremFeatures
7+
AggregationStrategy, Aspect, AspectTagger, CompositeTagger, NeuralTagger, RuleBasedTagger,
8+
TheoremFeatures,
99
};
1010
use echidna::core::Term;
1111

@@ -20,17 +20,16 @@ fn main() {
2020
let theorem_name = "nat_add_comm";
2121
let statement = Term::App {
2222
func: Box::new(Term::Const("add".to_string())),
23-
args: vec![
24-
Term::Var("n".to_string()),
25-
Term::Var("m".to_string()),
26-
],
23+
args: vec![Term::Var("n".to_string()), Term::Var("m".to_string())],
2724
};
2825

2926
let aspects = tagger.tag(theorem_name, &statement);
3027
println!(" Theorem: {}", theorem_name);
3128
println!(" Aspects: {:?}", aspects);
32-
println!(" Categories: {:?}",
33-
aspects.iter().map(|a| a.category()).collect::<Vec<_>>());
29+
println!(
30+
" Categories: {:?}",
31+
aspects.iter().map(|a| a.category()).collect::<Vec<_>>()
32+
);
3433
println!();
3534

3635
// Example 2: Dependent type theorem
@@ -156,17 +155,71 @@ fn count_all_aspects() -> usize {
156155
// Count using exhaustive match
157156
use Aspect::*;
158157
vec![
159-
PropositionalLogic, PredicateLogic, ModalLogic, TemporalLogic,
160-
HigherOrderLogic, IntuitionisticLogic, ClassicalLogic,
161-
NaturalNumbers, Integers, Rationals, Reals, Complex, NumberTheory, Arithmetic,
162-
Groups, Rings, Fields, VectorSpaces, Modules, Lattices, CategoryTheory, UniversalAlgebra,
163-
Limits, Continuity, Derivatives, Integrals, Sequences, MeasureTheory, FunctionalAnalysis,
164-
MetricSpaces, TopologicalSpaces, Compactness, Connectedness, TopologicalContinuity,
165-
SetOperations, Cardinality, Ordinals, AxiomOfChoice, ZFC,
166-
DependentTypes, Universes, InductiveTypes, CoinductiveTypes, Polymorphism, TypeEquivalence,
167-
Algorithms, Complexity, FormalVerification, ProgramSemantics, Concurrency,
168-
Cryptography, Automata, LambdaCalculus,
169-
Induction, Coinduction, Recursion, CaseAnalysis, Contradiction, DirectProof,
170-
Combinatorics, GraphTheory, Probability, GameTheory, Geometry, AbstractNonsense,
171-
].len()
158+
PropositionalLogic,
159+
PredicateLogic,
160+
ModalLogic,
161+
TemporalLogic,
162+
HigherOrderLogic,
163+
IntuitionisticLogic,
164+
ClassicalLogic,
165+
NaturalNumbers,
166+
Integers,
167+
Rationals,
168+
Reals,
169+
Complex,
170+
NumberTheory,
171+
Arithmetic,
172+
Groups,
173+
Rings,
174+
Fields,
175+
VectorSpaces,
176+
Modules,
177+
Lattices,
178+
CategoryTheory,
179+
UniversalAlgebra,
180+
Limits,
181+
Continuity,
182+
Derivatives,
183+
Integrals,
184+
Sequences,
185+
MeasureTheory,
186+
FunctionalAnalysis,
187+
MetricSpaces,
188+
TopologicalSpaces,
189+
Compactness,
190+
Connectedness,
191+
TopologicalContinuity,
192+
SetOperations,
193+
Cardinality,
194+
Ordinals,
195+
AxiomOfChoice,
196+
ZFC,
197+
DependentTypes,
198+
Universes,
199+
InductiveTypes,
200+
CoinductiveTypes,
201+
Polymorphism,
202+
TypeEquivalence,
203+
Algorithms,
204+
Complexity,
205+
FormalVerification,
206+
ProgramSemantics,
207+
Concurrency,
208+
Cryptography,
209+
Automata,
210+
LambdaCalculus,
211+
Induction,
212+
Coinduction,
213+
Recursion,
214+
CaseAnalysis,
215+
Contradiction,
216+
DirectProof,
217+
Combinatorics,
218+
GraphTheory,
219+
Probability,
220+
GameTheory,
221+
Geometry,
222+
AbstractNonsense,
223+
]
224+
.len()
172225
}

rustfmt.toml

Lines changed: 31 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,56 @@
11
# SPDX-License-Identifier: PMPL-1.0-or-later
2-
# SPDX-FileCopyrightText: 2024-2025 ECHIDNA Project Contributors
2+
# SPDX-FileCopyrightText: 2024-2026 ECHIDNA Project Contributors
33
#
44
# Rustfmt configuration for ECHIDNA
5+
# Only stable-channel options — nightly-only options are commented below.
56

67
# Edition
78
edition = "2021"
89

910
# Line width
1011
max_width = 100
11-
comment_width = 100
12-
wrap_comments = true
1312

14-
# Imports
15-
imports_granularity = "Crate"
16-
group_imports = "StdExternalCrate"
13+
# Imports (stable)
1714
reorder_imports = true
1815
reorder_modules = true
1916

20-
# Formatting
21-
fn_single_line = false
22-
where_single_line = false
17+
# Formatting (stable)
2318
force_explicit_abi = true
24-
format_code_in_doc_comments = true
25-
format_macro_matchers = true
26-
format_strings = true
2719
hard_tabs = false
2820
tab_spaces = 4
2921

3022
# Consistency
3123
newline_style = "Unix"
32-
normalize_comments = true
33-
normalize_doc_attributes = true
3424
remove_nested_parens = true
3525

3626
# Control flow
3727
match_block_trailing_comma = true
38-
overflow_delimited_expr = true
3928
use_small_heuristics = "Default"
4029

41-
# Indentation
42-
indent_style = "Block"
43-
match_arm_blocks = true
44-
trailing_comma = "Vertical"
45-
trailing_semicolon = true
46-
47-
# Spacing
48-
space_after_colon = true
49-
space_before_colon = false
50-
spaces_around_ranges = false
51-
struct_lit_single_line = true
52-
53-
# Blank lines
54-
blank_lines_lower_bound = 0
55-
blank_lines_upper_bound = 1
56-
57-
# Documentation
58-
doc_comment_code_block_width = 100
59-
60-
# Error handling
61-
error_on_line_overflow = false
62-
error_on_unformatted = false
63-
64-
# Unstable features (require nightly - commented out for stable)
65-
# unstable_features = true
66-
# format_macro_bodies = true
67-
# imports_granularity = "Module"
30+
# ── Nightly-only options (require `rustup run nightly cargo fmt`) ──
31+
# To use these, run: RUSTFMT_EDITION=nightly cargo +nightly fmt
32+
# comment_width = 100
33+
# wrap_comments = true
34+
# imports_granularity = "Crate"
35+
# group_imports = "StdExternalCrate"
36+
# fn_single_line = false
37+
# where_single_line = false
38+
# format_code_in_doc_comments = true
39+
# format_macro_matchers = true
40+
# format_strings = true
41+
# normalize_comments = true
42+
# normalize_doc_attributes = true
43+
# overflow_delimited_expr = true
44+
# indent_style = "Block"
45+
# match_arm_blocks = true
46+
# trailing_comma = "Vertical"
47+
# trailing_semicolon = true
48+
# space_after_colon = true
49+
# space_before_colon = false
50+
# spaces_around_ranges = false
51+
# struct_lit_single_line = true
52+
# blank_lines_lower_bound = 0
53+
# blank_lines_upper_bound = 1
54+
# doc_comment_code_block_width = 100
55+
# error_on_line_overflow = false
56+
# error_on_unformatted = false

0 commit comments

Comments
 (0)