73 lines
1.8 KiB
Rust
73 lines
1.8 KiB
Rust
extern crate pest;
|
|
#[macro_use]
|
|
extern crate pest_derive;
|
|
|
|
mod vm;
|
|
|
|
use pyo3::prelude::*;
|
|
|
|
#[pyclass]
|
|
struct Prover {}
|
|
|
|
#[pymethods]
|
|
impl Prover {
|
|
#[new]
|
|
fn py_new(
|
|
a_set: String,
|
|
b_set: String,
|
|
relationship: String,
|
|
conjecture: String,
|
|
) -> PyResult<Self> {
|
|
let relationship = match vm::parsing::parse_relation(&relationship) {
|
|
Ok(relationship) => relationship,
|
|
Err(msg) => {
|
|
return Err(pyo3::exceptions::PyValueError::new_err(format!(
|
|
"When parsing `relationship`:\n{}",
|
|
msg
|
|
)));
|
|
}
|
|
};
|
|
|
|
let a_set = match vm::parsing::parse_relation(&a_set) {
|
|
Ok(a_set) => a_set,
|
|
Err(msg) => {
|
|
return Err(pyo3::exceptions::PyValueError::new_err(format!(
|
|
"When parsing `a_set`:\n{}",
|
|
msg
|
|
)));
|
|
}
|
|
};
|
|
|
|
let b_set = match vm::parsing::parse_relation(&b_set) {
|
|
Ok(b_set) => b_set,
|
|
Err(msg) => {
|
|
return Err(pyo3::exceptions::PyValueError::new_err(format!(
|
|
"When parsing `b_set`:\n{}",
|
|
msg
|
|
)));
|
|
}
|
|
};
|
|
|
|
let conjecture = match vm::parsing::parse_arithmetic(&conjecture) {
|
|
Ok(conjecture) => conjecture,
|
|
Err(msg) => {
|
|
return Err(pyo3::exceptions::PyValueError::new_err(format!(
|
|
"When parsing `conjecture`:\n{}",
|
|
msg
|
|
)));
|
|
}
|
|
};
|
|
|
|
todo!();
|
|
Ok(Prover {})
|
|
}
|
|
}
|
|
|
|
/// A python module to brute force lower bounds per Ambainis & Co.'s adversarial
|
|
/// method.
|
|
#[pymodule]
|
|
fn adversary(_py: Python, m: &PyModule) -> PyResult<()> {
|
|
m.add_class::<Prover>()?;
|
|
Ok(())
|
|
}
|