#include "formula_profile.h"

LYMPHOSAT_MATCHER {
    const bool standard_grid =
        profile.exactly_one_intra_pair_coverage >= 0.99 &&
        profile.dominant_clause_len == 4 &&
        profile.dominant_clause_len_fraction > 0.78 &&
        profile.binary_graph_degree_mean >= 2.95 &&
        profile.binary_graph_degree_max <= 3 &&
        profile.positive_block_candidate_len == 4 &&
        profile.mixed_clause_fraction == 0.0 &&
        profile.all_positive_clause_fraction < 0.04 &&
        profile.all_negative_clause_fraction > 0.96;

    const bool debugged_mis =
        profile.binary_clause_fraction >= 0.506 &&
        profile.binary_clause_fraction <= 0.511 &&
        profile.dominant_clause_len_fraction >= 0.506 &&
        profile.dominant_clause_len_fraction <= 0.511 &&
        profile.all_positive_clause_fraction >= 0.005 &&
        profile.all_positive_clause_fraction <= 0.0085 &&
        profile.all_negative_clause_fraction >= 0.005 &&
        profile.all_negative_clause_fraction <= 0.01 &&
        profile.mixed_clause_fraction >= 0.98 &&
        profile.binary_graph_degree_mean >= 2.02 &&
        profile.binary_graph_degree_mean <= 2.05 &&
        profile.binary_graph_degree_max == 5 &&
        profile.positive_block_candidate_len == 2 &&
        profile.unit_clause_fraction >= 0.0025 &&
        profile.unit_clause_fraction <= 0.004 &&
        profile.occurrence_stddev >= 9.0 &&
        profile.polarity_balance_mean <= 0.03;

    const bool sc2011_variant =
        profile.exactly_one_intra_pair_coverage >= 0.99 &&
        profile.dominant_clause_len == 4 &&
        profile.dominant_clause_len_fraction > 0.95 &&
        profile.binary_graph_degree_mean >= 2.95 &&
        profile.binary_graph_degree_max <= 3 &&
        profile.positive_block_candidate_len == 4 &&
        profile.binary_clause_fraction < 0.03 &&
        profile.mixed_clause_fraction > 0.03;

    return standard_grid || debugged_mis || sc2011_variant;
}
