#include "formula_profile.h"

// Example matcher for smoke tests. Real matcher packages should replace this
// with a conservative structural boundary for their target solver.
LYMPHOSAT_MATCHER {
    const auto avg = profile.avg_clause_len;
    const auto bin = profile.binary_clause_fraction;
    const auto tern = profile.ternary_clause_fraction;
    const auto pos = profile.all_positive_clause_fraction;
    const auto neg = profile.all_negative_clause_fraction;
    const auto pb = profile.positive_block_candidate_len;
    const auto span = profile.normalized_clause_span_mean;
    const auto eo = profile.exactly_one_intra_pair_coverage;
    const auto touched = profile.binary_vars_touched_fraction;
    const auto dom = profile.dominant_clause_len;
    const auto dom_frac = profile.dominant_clause_len_fraction;

    return
        avg >= 3.37 && avg <= 3.45 &&
        bin >= 0.08 && bin <= 0.14 &&
        tern >= 0.317 && tern <= 0.393 &&
        pos >= 0.033 && pos <= 0.048 &&
        neg >= 0.273 && neg <= 0.343 &&
        pb >= 2 && pb <= 3 &&
        profile.positive_block_clause_fraction >= 0.015 &&
        profile.positive_block_clause_fraction <= 0.036 &&
        eo >= 0.25 &&
        span >= 0.519 && span <= 0.56 &&
        touched >= 0.61 && touched <= 0.82 &&
        dom == 4 &&
        dom_frac >= 0.497 && dom_frac <= 0.546;
}
