use crate::spec::law::{AlgebraicLaw, LawViolation};
#[cfg(not(loom))]
use rayon::prelude::*;
use super::support::{check_unary_law_exhaustive_u8, check_unary_law_witnessed_u32};
use super::rebuild::{minimize_binary_violation, minimize_unary_violation};
fn persist_violation(op_id: &str, v: &LawViolation) -> std::io::Result<()> {
let mut input = Vec::with_capacity(12);
input.extend_from_slice(&v.a.to_le_bytes());
input.extend_from_slice(&v.b.to_le_bytes());
input.extend_from_slice(&v.c.to_le_bytes());
let failure = crate::spec::types::ParityFailure {
op_id: op_id.to_string(),
generator: "algebra_checker".to_string(),
input_label: format!("law_violation:{}", v.law),
input,
gpu_output: vec![],
cpu_output: v.lhs.to_le_bytes().to_vec(),
message: v.message.clone(),
spec_version: 1,
workgroup_size: 1,
};
crate::verify::regression::save(&failure).map(|_| ())
}