@@ -31,6 +31,7 @@ pub mod cameleer;
3131pub mod cbmc;
3232pub mod chuffed;
3333pub mod coq;
34+ pub mod cubical_agda;
3435pub mod cvc5;
3536pub mod dafny;
3637pub mod dedukti;
@@ -58,29 +59,36 @@ pub mod minisat;
5859pub mod minizinc;
5960pub mod minlog;
6061pub mod mizar;
62+ pub mod mizar_ar;
6163pub mod naproche;
6264pub mod nitpick;
6365pub mod nunchaku;
6466pub mod nuprl;
6567pub mod nusmv;
68+ pub mod opensmt;
6669pub mod ortools;
6770pub mod prism;
71+ pub mod prover9;
6872pub mod proverif;
6973pub mod pvs;
74+ pub mod rocq;
7075pub mod scip;
7176pub mod seahorn;
7277pub mod spass;
78+ pub mod smtrat;
7379pub mod spin_checker;
7480pub mod tamarin;
7581pub mod tlaps;
7682pub mod tlc;
7783pub mod twelf;
7884pub mod typed_wasm;
7985pub mod uppaal;
86+ pub mod uppaal_stratego;
8087pub mod vampire;
8188pub mod viper;
8289pub mod why3;
8390pub mod z3;
91+ pub mod zipperposition;
8492
8593/// Enumeration of all supported provers
8694#[ derive( Debug , Clone , Copy , PartialEq , Eq , Hash , Serialize , Deserialize ) ]
@@ -307,6 +315,22 @@ pub enum ProverKind {
307315 /// Sibling to Nitpick; same negative-class story but not
308316 /// Isabelle-coupled, wider input format range.
309317 Nunchaku ,
318+ /// Cubical Agda — Agda in --cubical mode; HIT, univalence, path types.
319+ CubicalAgda ,
320+ /// Zipperposition — first-order + higher-order ATP (TPTP/TSTP output).
321+ Zipperposition ,
322+ /// Prover9 — equational/clause-based ATP (McCune); pairs with Mace4.
323+ Prover9 ,
324+ /// OpenSMT — SMT solver with Craig interpolant generation.
325+ OpenSmt ,
326+ /// SMT-RAT — nonlinear arithmetic SMT (NIA/NRA) from RWTH Aachen.
327+ SmtRat ,
328+ /// Rocq — the 2024 Coq community rename; detects `rocq` binary first.
329+ Rocq ,
330+ /// UPPAAL Stratego — strategy synthesis + stochastic model checking.
331+ UppaalStratego ,
332+ /// MizAR — automated reasoning integrated with the Mizar Mathematical Library.
333+ MizAR ,
310334}
311335
312336impl ProverKind {
@@ -517,6 +541,14 @@ impl std::str::FromStr for ProverKind {
517541 "mercury" | "mmc" => Ok ( ProverKind :: Mercury ) ,
518542 "nitpick" => Ok ( ProverKind :: Nitpick ) ,
519543 "nunchaku" => Ok ( ProverKind :: Nunchaku ) ,
544+ "cubicalagda" | "cubical-agda" | "agda-cubical" => Ok ( ProverKind :: CubicalAgda ) ,
545+ "zipperposition" => Ok ( ProverKind :: Zipperposition ) ,
546+ "prover9" => Ok ( ProverKind :: Prover9 ) ,
547+ "opensmt" | "open-smt" => Ok ( ProverKind :: OpenSmt ) ,
548+ "smtrat" | "smt-rat" => Ok ( ProverKind :: SmtRat ) ,
549+ "rocq" | "rocq-compile" => Ok ( ProverKind :: Rocq ) ,
550+ "uppaal-stratego" | "stratego" => Ok ( ProverKind :: UppaalStratego ) ,
551+ "mizar-ar" | "mizatp" | "mizar-atp" => Ok ( ProverKind :: MizAR ) ,
520552 _ => Err ( anyhow:: anyhow!( "Unknown prover: {}" , s) ) ,
521553 }
522554 }
@@ -589,6 +621,14 @@ impl ProverKind {
589621 ProverKind :: KeY ,
590622 ProverKind :: DReal ,
591623 ProverKind :: ABC ,
624+ ProverKind :: CubicalAgda ,
625+ ProverKind :: Zipperposition ,
626+ ProverKind :: Prover9 ,
627+ ProverKind :: OpenSmt ,
628+ ProverKind :: SmtRat ,
629+ ProverKind :: Rocq ,
630+ ProverKind :: UppaalStratego ,
631+ ProverKind :: MizAR ,
592632 ] ) ;
593633 provers
594634 }
@@ -624,6 +664,14 @@ impl ProverKind {
624664 ProverKind :: Mercury => 3 , // Logic programming with types/modes.
625665 ProverKind :: Nitpick => 2 , // Isabelle-wrapped counter-example finder.
626666 ProverKind :: Nunchaku => 2 , // Standalone counter-example finder.
667+ ProverKind :: CubicalAgda => 4 , // Cubical HoTT; harder than plain Agda.
668+ ProverKind :: Zipperposition => 2 , // Automated ATP.
669+ ProverKind :: Prover9 => 2 , // Classic equational ATP.
670+ ProverKind :: OpenSmt => 2 , // SMT solver.
671+ ProverKind :: SmtRat => 3 , // Nonlinear arithmetic needs careful encoding.
672+ ProverKind :: Rocq => 3 , // Same as Coq.
673+ ProverKind :: UppaalStratego => 4 , // Strategy synthesis is hard.
674+ ProverKind :: MizAR => 3 , // Mizar with ATP assist.
627675 ProverKind :: Vampire => 2 , // Automated, relatively simple
628676 ProverKind :: EProver => 2 , // Similar to Vampire
629677 ProverKind :: SPASS => 2 , // Automated FOL
@@ -744,6 +792,14 @@ impl ProverKind {
744792 ProverKind :: Mercury => 4 , // Specialised logic programming.
745793 ProverKind :: Nitpick => 5 , // Counter-example finder tier.
746794 ProverKind :: Nunchaku => 5 , // Counter-example finder tier.
795+ ProverKind :: CubicalAgda => 2 , // Tier 2: HoTT proof assistant.
796+ ProverKind :: Zipperposition => 3 , // Tier 3: HO-ATP.
797+ ProverKind :: Prover9 => 4 , // Tier 4: classic ATP.
798+ ProverKind :: OpenSmt => 3 , // Tier 3: interpolant SMT.
799+ ProverKind :: SmtRat => 5 , // Tier 5: research NL SMT.
800+ ProverKind :: Rocq => 1 , // Tier 1: Coq rename.
801+ ProverKind :: UppaalStratego => 4 , // Tier 4: strategy synthesis.
802+ ProverKind :: MizAR => 3 , // Tier 3: ATP-assisted Mizar.
747803
748804 // Tier 5: First-Order ATPs
749805 ProverKind :: Vampire => 5 ,
@@ -867,6 +923,14 @@ impl ProverKind {
867923 ProverKind :: Mercury => 2.0 , // Logic programming interpreter bridge.
868924 ProverKind :: Nitpick => 1.0 , // Thin wrapper over Isabelle.
869925 ProverKind :: Nunchaku => 1.5 , // Standalone counter-example tool.
926+ ProverKind :: CubicalAgda => 2.5 , // Thin fork of Agda backend.
927+ ProverKind :: Zipperposition => 1.5 , // TSTP-output ATP.
928+ ProverKind :: Prover9 => 1.5 , // Simple output parsing.
929+ ProverKind :: OpenSmt => 1.5 , // SMT-LIB2 like CVC5.
930+ ProverKind :: SmtRat => 1.5 , // Same pattern.
931+ ProverKind :: Rocq => 1.0 , // Alias for Coq.
932+ ProverKind :: UppaalStratego => 2.0 , // Fork of UPPAAL backend.
933+ ProverKind :: MizAR => 2.0 , // Mizar ATP integration.
870934 ProverKind :: Vampire => 1.5 , // Automated, TPTP format
871935 ProverKind :: EProver => 1.5 , // Similar to Vampire
872936 ProverKind :: SPASS => 1.5 , // DFG format
@@ -1014,6 +1078,14 @@ impl ProverKind {
10141078 ProverKind :: KeY => "key" , // KeY Java verifier (Java, headless mode)
10151079 ProverKind :: DReal => "dreal" , // dReal delta-complete SMT solver
10161080 ProverKind :: ABC => "abc" , // Berkeley ABC logic synthesis system
1081+ ProverKind :: CubicalAgda => "agda" ,
1082+ ProverKind :: Zipperposition => "zipperposition" ,
1083+ ProverKind :: Prover9 => "prover9" ,
1084+ ProverKind :: OpenSmt => "opensmt" ,
1085+ ProverKind :: SmtRat => "smtrat" ,
1086+ ProverKind :: Rocq => "rocq" ,
1087+ ProverKind :: UppaalStratego => "stratego" ,
1088+ ProverKind :: MizAR => "mizar-atp" ,
10171089 // HP ecosystem — all route through the TypeLL kernel CLI;
10181090 // the discipline field on HPEcosystemBackend selects the
10191091 // actual upstream (typell / katagoria / tropical-resource-typing).
@@ -1261,6 +1333,14 @@ impl ProverFactory {
12611333 ProverKind :: KeY => Ok ( Box :: new ( key:: KeyBackend :: new ( config) ) ) ,
12621334 ProverKind :: DReal => Ok ( Box :: new ( dreal:: DRealBackend :: new ( config) ) ) ,
12631335 ProverKind :: ABC => Ok ( Box :: new ( abc:: AbcBackend :: new ( config) ) ) ,
1336+ ProverKind :: CubicalAgda => Ok ( Box :: new ( cubical_agda:: CubicalAgdaBackend :: new ( config) ) ) ,
1337+ ProverKind :: Zipperposition => Ok ( Box :: new ( zipperposition:: ZipperpositionBackend :: new ( config) ) ) ,
1338+ ProverKind :: Prover9 => Ok ( Box :: new ( prover9:: Prover9Backend :: new ( config) ) ) ,
1339+ ProverKind :: OpenSmt => Ok ( Box :: new ( opensmt:: OpenSmtBackend :: new ( config) ) ) ,
1340+ ProverKind :: SmtRat => Ok ( Box :: new ( smtrat:: SmtRatBackend :: new ( config) ) ) ,
1341+ ProverKind :: Rocq => Ok ( Box :: new ( rocq:: RocqBackend :: new ( config) ) ) ,
1342+ ProverKind :: UppaalStratego => Ok ( Box :: new ( uppaal_stratego:: UppaalStrategoBackend :: new ( config) ) ) ,
1343+ ProverKind :: MizAR => Ok ( Box :: new ( mizar_ar:: MizARBackend :: new ( config) ) ) ,
12641344 // TypeLL and KatagoriaVerifier are real HP upstream binaries —
12651345 // they continue to dispatch through HPEcosystemBackend.
12661346 ProverKind :: TypeLL | ProverKind :: KatagoriaVerifier => Ok ( Box :: new (
0 commit comments