Skip to content

Commit 291d9b2

Browse files
hyperpolymathclaude
andcommitted
feat(provers): add KeYmaera X backend (Phase 3 differential dynamic logic)
Lands the worked example for Phase 3 of the ECHIDNA expansion — differential dynamic logic and hybrid systems verification. KeYmaera X is the only prover in the 128-backend roster that targets dL natively (hybrid programs, ODE evolution under domain constraints, modal box/ diamond formulas). It plugs the hybrid-systems gap that no SMT or TPTP-shaped ATP can cover. Implementation: - src/rust/provers/keymaerax.rs (313 LOC, 8 unit tests) - to_kyx: ProofState → .kyx ArchiveEntry serialiser - parse_result: stdout/stderr scanner for closed/open/refuted markers - parse_string: extracts the Problem ... End. body as a single goal - 10 integration points wired in mod.rs: pub mod, ProverKind variant (Tier 5d), name parser, all() list, complexity (4), trust tier (2, delegates QE to external CAS), ml-score (2.5), binary name (keymaerax), factory dispatch - FFI u8 = 128 (next free slot after LiquidHaskell at 127); both kind_to_u8 and kind_from_u8 updated Acceptance: - cargo build --lib clean - cargo test --lib keymaerax: 8/8 passed - cargo test --lib overall green (886 tests + 8 new) - panic-attack: 0 unsafe_blocks / 0 panic_sites / 0 unwrap_calls Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 864dbad commit 291d9b2

3 files changed

Lines changed: 421 additions & 0 deletions

File tree

src/rust/ffi/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -529,6 +529,7 @@ pub fn kind_from_u8(kind: u8) -> Option<ProverKind> {
529529
125 => Some(ProverKind::GNATprove),
530530
126 => Some(ProverKind::Stainless),
531531
127 => Some(ProverKind::LiquidHaskell),
532+
128 => Some(ProverKind::KeYmaeraX),
532533
_ => None,
533534
}
534535
}
@@ -1270,6 +1271,7 @@ pub fn kind_to_u8(kind: ProverKind) -> u8 {
12701271
ProverKind::GNATprove => 125,
12711272
ProverKind::Stainless => 126,
12721273
ProverKind::LiquidHaskell => 127,
1274+
ProverKind::KeYmaeraX => 128,
12731275
}
12741276
}
12751277

0 commit comments

Comments
 (0)