#include "formula_profile.h"

LYMPHOSAT_MATCHER {
    const bool shared_core =
        profile.binary_clause_fraction >= 0.1720 &&
        profile.binary_clause_fraction <= 0.1735 &&
        profile.ternary_clause_fraction >= 0.4730 &&
        profile.ternary_clause_fraction <= 0.4765 &&
        profile.binary_graph_degree_mean >= 1.7778 &&
        profile.binary_graph_degree_mean <= 1.7790 &&
        profile.binary_vars_touched_fraction >= 0.7504 &&
        profile.binary_vars_touched_fraction <= 0.7506;

    const bool wide_span_variant =
        profile.normalized_clause_span_mean >= 0.50 &&
        profile.normalized_clause_span_mean <= 0.515 &&
        profile.all_positive_clause_fraction >= 0.11 &&
        profile.all_positive_clause_fraction <= 0.13 &&
        profile.all_negative_clause_fraction >= 0.11 &&
        profile.all_negative_clause_fraction <= 0.13 &&
        profile.positive_block_candidate_len == 3 &&
        profile.positive_block_clause_fraction >= 0.0575 &&
        profile.positive_block_clause_fraction <= 0.0625;

    const bool short_span_variant =
        profile.normalized_clause_span_mean >= 0.143 &&
        profile.normalized_clause_span_mean <= 0.1455 &&
        profile.all_positive_clause_fraction <= 0.011 &&
        profile.all_negative_clause_fraction <= 0.044 &&
        profile.positive_block_candidate_len >= 24 &&
        profile.positive_block_clause_fraction <= 0.0002 &&
        profile.exactly_one_intra_pair_coverage == 0;

    return shared_core && (wide_span_variant || short_span_variant);
}
