#include "formula_profile.h"

LYMPHOSAT_MATCHER {
    const bool sat_instance =
        profile.binary_clause_fraction >= 0.372 &&
        profile.binary_clause_fraction <= 0.3815 &&
        profile.ternary_clause_fraction >= 0.609 &&
        profile.ternary_clause_fraction <= 0.6235 &&
        profile.exactly_one_intra_pair_coverage >= 0.99 &&
        profile.positive_block_candidate_len == 2 &&
        profile.binary_graph_degree_mean >= 2.49 &&
        profile.binary_graph_degree_mean <= 2.52 &&
        profile.normalized_clause_span_mean >= 0.056 &&
        profile.normalized_clause_span_mean <= 0.063 &&
        profile.all_negative_clause_fraction >= 0.112 &&
        profile.all_negative_clause_fraction <= 0.1165;

    const bool labs_mid_binary =
        profile.binary_clause_fraction >= 0.293 &&
        profile.binary_clause_fraction <= 0.301 &&
        profile.ternary_clause_fraction >= 0.458 &&
        profile.ternary_clause_fraction <= 0.462 &&
        profile.positive_block_candidate_len == 4 &&
        profile.exactly_one_intra_pair_coverage <= 0.01 &&
        profile.binary_graph_degree_mean >= 2.08 &&
        profile.binary_graph_degree_mean <= 2.15 &&
        profile.normalized_clause_span_mean >= 0.12 &&
        profile.normalized_clause_span_mean <= 0.17 &&
        profile.all_negative_clause_fraction >= 0.027 &&
        profile.all_negative_clause_fraction <= 0.034 &&
        profile.all_positive_clause_fraction <= 0.01;

    const bool labs_high_binary =
        profile.binary_clause_fraction >= 0.39 &&
        profile.binary_clause_fraction <= 0.535 &&
        profile.ternary_clause_fraction >= 0.467 &&
        profile.ternary_clause_fraction <= 0.484 &&
        profile.binary_graph_degree_mean >= 2.087 &&
        profile.binary_graph_degree_mean <= 2.172 &&
        profile.normalized_clause_span_mean >= 0.198 &&
        profile.normalized_clause_span_mean <= 0.241 &&
        profile.all_negative_clause_fraction >= 0.03 &&
        profile.all_negative_clause_fraction <= 0.063 &&
        profile.all_positive_clause_fraction <= 0.0035 &&
        profile.positive_block_candidate_len <= 4 &&
        profile.exactly_one_intra_pair_coverage <= 0.01;

    const bool labs_goal007 =
        profile.binary_clause_fraction >= 0.396 &&
        profile.binary_clause_fraction <= 0.401 &&
        profile.ternary_clause_fraction >= 0.471 &&
        profile.ternary_clause_fraction <= 0.473 &&
        profile.positive_block_candidate_len == 4 &&
        profile.exactly_one_intra_pair_coverage <= 0.01 &&
        profile.binary_graph_degree_mean >= 2.09 &&
        profile.binary_graph_degree_mean <= 2.101 &&
        profile.normalized_clause_span_mean >= 0.198 &&
        profile.normalized_clause_span_mean <= 0.2005 &&
        profile.all_negative_clause_fraction >= 0.029 &&
        profile.all_negative_clause_fraction <= 0.0315 &&
        profile.all_positive_clause_fraction <= 0.0025;

    const bool labs_sc2013_pair =
        profile.binary_clause_fraction >= 0.518 &&
        profile.binary_clause_fraction <= 0.5205 &&
        profile.ternary_clause_fraction >= 0.4805 &&
        profile.ternary_clause_fraction <= 0.4815 &&
        profile.positive_block_candidate_len == 2 &&
        profile.exactly_one_intra_pair_coverage == 0 &&
        profile.binary_graph_degree_mean >= 2.10 &&
        profile.binary_graph_degree_mean <= 2.104 &&
        profile.normalized_clause_span_mean >= 0.237 &&
        profile.normalized_clause_span_mean <= 0.241 &&
        profile.all_negative_clause_fraction >= 0.035 &&
        profile.all_negative_clause_fraction <= 0.046 &&
        profile.all_positive_clause_fraction <= 0.01 &&
        profile.mixed_clause_fraction >= 0.94;

    return sat_instance || labs_mid_binary || labs_high_binary ||
           labs_goal007 || labs_sc2013_pair;
}
