1 :- module(cdclt_settings, [restart_policy/1,
2 static_syntax_analysis/1,
3 static_smt_symmetry_breaking/1,
4 luby_restart_unit_length/1,
5 glucose_restart_recent_lbds_threshold/1,
6 glucose_restart_margin_ratio/1,
7 glucose_restart_trail_threshold/1,
8 glucose_restart_stack_avg_factor/1,
9 discard_clause_greater_lbd/1,
10 discard_learned_clauses_frequency_constant/1,
11 discard_learned_clauses_constant_factor/1,
12 decision_heuristic/1,
13 bump_scores_for_bj_clause_only/1,
14 glue_bumping/1,
15 vsids_decay_value/1,
16 vsids_decay_frequency/1,
17 evsids_f_value/1,
18 clause_learning/1,
19 print_logs/1,
20 log_stats/1,
21 clause_minimization/1,
22 minimize_theory_explanations/1,
23 binary_boost_factor/1,
24 sat_var_assignment_timeout/1,
25 preprocessing/1]).
26
27 :- use_module(probsrc(preferences), [get_preference/2]).
28 :- use_module(probsrc(module_information), [module_info/2]).
29
30 :- module_info(group, cdclt).
31 :- module_info(description,'This module provides settings for the CDCL(T) solver.').
32
33 log_stats(false).
34 print_logs(false).
35
36 % Remove clauses that are subsumed by another clause. For instance, (A or B) subsumes (A or B or C).
37 preprocessing(subsuming).
38 % Apply Boolean resolution once and replace clauses that are subsumed by the resolvent.
39 %preprocessing(resolution_subsuming).
40
41 clause_learning(true).
42 static_syntax_analysis(X) :-
43 get_preference(cdclt_perform_static_analysis, X).
44 static_smt_symmetry_breaking(X) :-
45 get_preference(cdclt_perform_symmetry_breaking, X).
46
47 % time limit for assigning a SAT variable in ProB's deterministic propagation phase before grounding
48 sat_var_assignment_timeout(10000).
49
50 % minimize theory explanations by computing an unsatisfiable core
51 minimize_theory_explanations(true).
52
53 % factor for boosting heuristic scores of variables that occur in binary clauses
54 binary_boost_factor(1). % factor 1 means no boosting
55
56 %% Random Restarts
57 % Available restart policies: luby, glucose.
58 restart_policy(glucose).
59 % The length of a unit in the Luby sequence.
60 luby_restart_unit_length(32).
61 % The amount of conflict clauses to be considered "recent" in Glucose restarts. Small value leads to more restarts.
62 glucose_restart_recent_lbds_threshold(200).
63 % Do restart if defined proportion of recent LBDs average is greater than total average. Large value leads to more restarts.
64 glucose_restart_margin_ratio(0.8).
65 % The amount of conflicts to enable possible emptying of the recent LBD queue to favor SAT instances too.
66 glucose_restart_trail_threshold(5000).
67 % For factor f, the last stack size needs to be larger than f * recentSizes.avg() to empty the recent LBD queue.
68 glucose_restart_stack_avg_factor(1.4).
69 %%
70
71 %% Reducing Learned Clauses
72 % Maximum LBD score for learned clauses.
73 % Each learned clause is propagated at least once independent of its actual LBD score.
74 discard_clause_greater_lbd(5).
75 % Remove half of the learned clauses every "frequency_constant + constant_factor * x" conflicts, where x is the amount of reductions so far.
76 discard_learned_clauses_frequency_constant(20000).
77 discard_learned_clauses_constant_factor(500).
78 %%
79
80 % local: Generate the 1-UIP clause. Mark all its literals. Remove those implied variables which have all their antecedent literals marked.
81 % recursive: Generate the 1-UIP clause. Mark its literals. Implied variables in 1-UIP clause are candidates for removal. Search implication graph. Start from antecedent literals of candidate. Stop at marked literals or decisions. If search always ends at marked literals then the candidate can be removed.
82 % none for no minimization
83 clause_minimization(local).
84
85 %% Decision Heuristic
86 % Available decision heuristics: vsids, evsids, acids, vmtf.
87 decision_heuristic(acids).
88 bump_scores_for_bj_clause_only(false).
89 % Additionally bump glue variables (see https://www.cs.cmu.edu/~mdsolimc/phd_thesis.pdf).
90 glue_bumping(false).
91 % Decision score s is updated by s/v.
92 vsids_decay_value(2).
93 % Amount of found conflicts when to decay scores.
94 vsids_decay_frequency(128).
95 % A value between 0 and 1. Decision score s is updated by s + f^(-k).
96 evsids_f_value(0.95).
97 %%