#include "formula_profile.h"

LYMPHOSAT_MATCHER {
    const auto dom = profile.dominant_clause_len;
    const auto exo = profile.exactly_one_intra_pair_coverage;
    const auto bin = profile.binary_clause_fraction;
    const auto pos = profile.all_positive_clause_fraction;
    const auto posblk = profile.positive_block_clause_fraction;
    const auto pol = profile.polarity_balance_mean;
    const auto span = profile.normalized_clause_span_mean;
    const auto deg = profile.binary_graph_degree_mean;
    const auto cand = profile.positive_block_candidate_len;
    const auto count = profile.positive_block_candidate_count;

    // Exact cliquecoloring buckets that survived the evaluator pass.
    if (count == 12 && cand == 8 && dom == 3 && exo == 1 &&
        bin > 0.204 && bin < 0.205 && pos > 0.0030 && pos < 0.0033 &&
        pol > 0.905 && pol < 0.9075 && span > 0.354 && span < 0.356 &&
        deg > 13.2 && deg < 13.5) {
        return true;
    }
    if (count == 14 && cand == 7 && dom == 3 && exo == 1 &&
        bin > 0.197 && bin < 0.1985 && pos > 0.0030 && pos < 0.0032 &&
        pol > 0.893 && pol < 0.895 && span > 0.364 && span < 0.367 &&
        deg > 13.3 && deg < 13.6) {
        return true;
    }
    if (count == 14 && cand == 8 && dom == 3 && exo == 1 && bin > 0.19 &&
        bin < 0.1915 && pos > 0.0025 && pos < 0.0028 && pol > 0.90 &&
        pol < 0.907 && span > 0.361 && span < 0.363 && deg > 14 &&
        deg < 14.5) {
        return true;
    }
    if (count == 16 && cand == 6 && dom == 3 && exo == 1 &&
        bin > 0.18 && bin < 0.20 && pos > 0.0030 && pos < 0.0034 &&
        pol > 0.87 && pol < 0.88 && span > 0.37 && span < 0.375 &&
        deg > 13.0 && deg < 14.0) {
        return true;
    }
    if (count == 16 && cand == 7 && dom == 3 && exo == 1 &&
        bin > 0.18 && bin < 0.20 && pos > 0.0024 && pos < 0.0030 &&
        pol > 0.88 && pol < 0.90 && span > 0.36 && span < 0.38 &&
        deg > 14.0 && deg < 15.0) {
        return true;
    }
    if (count == 18 && cand == 6 && dom == 3 && exo == 1 &&
        bin > 0.18 && bin < 0.192 && pos > 0.0026 && pos < 0.0030 &&
        pol > 0.87 && pol < 0.873 && span > 0.377 && span < 0.379 &&
        deg > 14.5 && deg < 15.0) {
        return true;
    }
    if (count == 24 && cand == 5 && dom == 3 && exo == 1 &&
        bin > 0.188 && bin < 0.1895 && pos > 0.0024 && pos < 0.0027 &&
        pol > 0.833 && pol < 0.836 && span > 0.388 && span < 0.3895 &&
        deg > 17.0 && deg < 17.2) {
        return true;
    }
    if (count == 30 && cand == 4 && dom == 3 && exo == 1 &&
        bin > 0.201 && bin < 0.203 && pos > 0.0025 && pos < 0.0028 &&
        pol > 0.780 && pol < 0.7825 && span > 0.391 && span < 0.3925 &&
        deg > 19.6 && deg < 19.8) {
        return true;
    }
    if (count == 32 && cand == 4 && dom == 3 && exo == 1 &&
        bin > 0.199 && bin < 0.2015 && pos > 0.0023 && pos < 0.0027 &&
        pol > 0.776 && pol < 0.7785 && span > 0.392 && span < 0.3935 &&
        deg > 20.7 && deg < 20.9) {
        return true;
    }
    if (count == 20 && cand == 5 && dom == 3 && exo == 1 && bin > 0.197 &&
        bin < 0.198 && pos > 0.0031 && pos < 0.0032 && pol > 0.84 &&
        pol < 0.843 && span > 0.383 && span < 0.384 && deg > 14.8 &&
        deg < 15.0) {
        return true;
    }

    // One exact fclqcolor profile that is structurally distinct.
    if (count == 1304 && cand == 3 && dom == 3 && exo == 0 &&
        bin > 0.190 && bin < 0.191 && pos > 0.201 && pos < 0.202 &&
        posblk > 0.144 && posblk < 0.145 && pol > 0.906 && pol < 0.907 &&
        span > 0.465 && span < 0.466 && deg > 14.4 && deg < 14.5) {
        return true;
    }

    return false;
}
