@@ -43,6 +43,7 @@ pub mod scip;
4343pub mod minizinc;
4444pub mod chuffed;
4545pub mod ortools;
46+ pub mod typed_wasm;
4647
4748/// Enumeration of all supported provers
4849#[ derive( Debug , Clone , Copy , PartialEq , Eq , Hash , Serialize , Deserialize ) ]
@@ -94,6 +95,9 @@ pub enum ProverKind {
9495 MiniZinc ,
9596 Chuffed ,
9697 ORTools ,
98+
99+ // Prover oracles (internal structural validators)
100+ TypedWasm ,
97101}
98102
99103impl std:: str:: FromStr for ProverKind {
@@ -131,6 +135,7 @@ impl std::str::FromStr for ProverKind {
131135 "minizinc" | "mzn" => Ok ( ProverKind :: MiniZinc ) ,
132136 "chuffed" => Ok ( ProverKind :: Chuffed ) ,
133137 "ortools" | "or-tools" => Ok ( ProverKind :: ORTools ) ,
138+ "typedwasm" | "typed-wasm" | "typed_wasm" | "twasm" => Ok ( ProverKind :: TypedWasm ) ,
134139 _ => Err ( anyhow:: anyhow!( "Unknown prover: {}" , s) ) ,
135140 }
136141 }
@@ -183,6 +188,7 @@ impl ProverKind {
183188 ProverKind :: MiniZinc ,
184189 ProverKind :: Chuffed ,
185190 ProverKind :: ORTools ,
191+ ProverKind :: TypedWasm ,
186192 ] ) ;
187193 provers
188194 }
@@ -220,6 +226,7 @@ impl ProverKind {
220226 ProverKind :: MiniZinc => 2 , // Constraint modelling
221227 ProverKind :: Chuffed => 2 , // CP solver
222228 ProverKind :: ORTools => 2 , // Constraint/optimization solver
229+ ProverKind :: TypedWasm => 3 , // Internal oracle, structural analysis
223230 }
224231 }
225232
@@ -262,6 +269,7 @@ impl ProverKind {
262269 ProverKind :: MiniZinc => 5 ,
263270 ProverKind :: Chuffed => 5 ,
264271 ProverKind :: ORTools => 5 ,
272+ ProverKind :: TypedWasm => 1 , // Internal oracle, tier 1 capability
265273 }
266274 }
267275
@@ -293,6 +301,7 @@ impl ProverKind {
293301 ProverKind :: MiniZinc => 1.0 , // Constraint modelling
294302 ProverKind :: Chuffed => 1.0 , // CP solver
295303 ProverKind :: ORTools => 1.5 , // Constraint/optimization
304+ ProverKind :: TypedWasm => 2.0 , // Internal oracle
296305 }
297306 }
298307
@@ -329,6 +338,7 @@ impl ProverKind {
329338 ProverKind :: MiniZinc => "minizinc" ,
330339 ProverKind :: Chuffed => "fzn-chuffed" ,
331340 ProverKind :: ORTools => "ortools_solve" ,
341+ ProverKind :: TypedWasm => "idris2" , // Validates via Idris2 ABI
332342 }
333343 }
334344}
@@ -460,6 +470,7 @@ impl ProverFactory {
460470 ProverKind :: MiniZinc => Ok ( Box :: new ( minizinc:: MiniZincBackend :: new ( config) ) ) ,
461471 ProverKind :: Chuffed => Ok ( Box :: new ( chuffed:: ChuffedBackend :: new ( config) ) ) ,
462472 ProverKind :: ORTools => Ok ( Box :: new ( ortools:: ORToolsBackend :: new ( config) ) ) ,
473+ ProverKind :: TypedWasm => Ok ( Box :: new ( typed_wasm:: TypedWasmBackend :: new ( config) ) ) ,
463474 }
464475 }
465476
@@ -493,6 +504,7 @@ impl ProverFactory {
493504 "pip" | "zpl" => Some ( ProverKind :: SCIP ) , // SCIP/ZIMPL format
494505 "mzn" | "dzn" => Some ( ProverKind :: MiniZinc ) , // MiniZinc format
495506 "fzn" => Some ( ProverKind :: Chuffed ) , // FlatZinc (Chuffed input)
507+ "twasm" => Some ( ProverKind :: TypedWasm ) , // TypedWasm program
496508 _ => None ,
497509 } )
498510 }
0 commit comments