quantum_queries/src/lib.rs

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(())
}