vyre-conform 0.1.0

Conformance suite for vyre backends — proves byte-identical output to CPU reference
Documentation
//! Law computation worker for mandatory inference.

use std::collections::HashMap;
use std::sync::Mutex;
use crate::proof::algebra::checker::verify_laws;
use crate::proof::algebra::inference::{binary_candidate_laws, unary_candidate_laws};
use crate::spec::law::AlgebraicLaw;
/// Re-export of cross-op law inference.
pub use super::cross::infer_cross_op_laws;

fn compute_laws(op_id: &str, cpu_fn: fn(&[u8]) -> Vec<u8>, is_binary: bool) -> Vec<AlgebraicLaw> {
    let mut proven = Vec::new();
    let candidates = if is_binary {
        binary_candidate_laws()
    } else {
        unary_candidate_laws()
    };
    for law in candidates {
        try_law(op_id, cpu_fn, law, is_binary, &mut proven);
    }
    proven
}