use baa::Value;
#[derive(Debug, Clone, Default)]
pub enum InitValue {
BitVec(baa::BitVecValue),
Array(baa::ArrayValue, Vec<baa::BitVecValue>),
#[default]
None,
}
impl TryFrom<InitValue> for Value {
type Error = ();
fn try_from(value: InitValue) -> Result<Self, Self::Error> {
match value {
InitValue::BitVec(v) => Ok(Value::BitVec(v)),
InitValue::Array(v, _) => Ok(Value::Array(v)),
InitValue::None => Err(()),
}
}
}
#[derive(Debug, Default)]
pub struct Witness {
pub init: Vec<InitValue>,
pub init_names: Vec<Option<String>>,
pub inputs: Vec<Vec<Option<Value>>>,
pub input_names: Vec<Option<String>>,
pub failed_safety: Vec<u32>,
}