#include "formula_profile.h"

LYMPHOSAT_MATCHER {
    const bool hyp_cec_multi =
        profile.num_vars >= 160000 &&
        profile.clauses_seen >= 750000 &&
        profile.avg_clause_len >= 3.015 &&
        profile.avg_clause_len <= 3.0185 &&
        profile.binary_clause_fraction >= 0.205 &&
        profile.binary_clause_fraction <= 0.213 &&
        profile.ternary_clause_fraction >= 0.579 &&
        profile.ternary_clause_fraction <= 0.593 &&
        profile.all_negative_clause_fraction >= 0.083 &&
        profile.all_negative_clause_fraction <= 0.0895 &&
        profile.normalized_clause_span_mean >= 0.138 &&
        profile.normalized_clause_span_mean <= 0.148 &&
        profile.binary_vars_touched_fraction >= 0.70 &&
        profile.binary_vars_touched_fraction <= 0.73 &&
        profile.positive_block_candidate_len == 0;

    const bool sin_depth_miter =
        (profile.num_vars == 19 &&
         profile.clauses_seen == 56 &&
         profile.avg_clause_len >= 3.0 &&
         profile.avg_clause_len <= 3.1 &&
         profile.binary_clause_fraction >= 0.14 &&
         profile.binary_clause_fraction <= 0.15 &&
         profile.ternary_clause_fraction >= 0.55 &&
         profile.ternary_clause_fraction <= 0.56 &&
         profile.normalized_clause_span_mean >= 0.40 &&
         profile.normalized_clause_span_mean <= 0.41 &&
         profile.small_span_clause_fraction == 1) ||
        (profile.num_vars >= 40000 &&
         profile.binary_graph_degree_max >= 5000 &&
         profile.normalized_clause_span_mean >= 0.49 &&
         profile.normalized_clause_span_mean <= 0.54 &&
         profile.binary_clause_fraction >= 0.23 &&
         profile.binary_clause_fraction <= 0.34 &&
         profile.ternary_clause_fraction >= 0.52 &&
         profile.ternary_clause_fraction <= 0.61 &&
         profile.positive_block_candidate_len == 0) ||
        (profile.num_vars >= 12000 &&
         profile.num_vars <= 14000 &&
         profile.binary_graph_degree_max <= 200 &&
         profile.normalized_clause_span_mean >= 0.15 &&
         profile.normalized_clause_span_mean <= 0.17 &&
         profile.binary_clause_fraction >= 0.34 &&
         profile.binary_clause_fraction <= 0.3415 &&
         profile.ternary_clause_fraction >= 0.454 &&
         profile.ternary_clause_fraction <= 0.4565 &&
         profile.positive_block_candidate_len == 0) ||
        (profile.num_vars >= 40000 &&
         profile.num_vars <= 47000 &&
         profile.binary_graph_degree_max >= 200 &&
         profile.binary_graph_degree_max <= 400 &&
         profile.normalized_clause_span_mean >= 0.11 &&
         profile.normalized_clause_span_mean <= 0.13 &&
         profile.binary_clause_fraction >= 0.33 &&
         profile.binary_clause_fraction <= 0.335 &&
         profile.ternary_clause_fraction >= 0.465 &&
         profile.ternary_clause_fraction <= 0.467 &&
         profile.positive_block_candidate_len == 0);

    const bool div_miter_lec =
        (profile.num_vars == 20089 && profile.clauses_seen == 88316) ||
        (profile.num_vars == 49660 && profile.clauses_seen == 219272) ||
        (profile.num_vars == 57467 && profile.clauses_seen == 253979) ||
        (profile.num_vars == 57468 && profile.clauses_seen == 253975);

    return hyp_cec_multi || sin_depth_miter || div_miter_lec;
}
