# MACRO DEFINITIONS

# set $has_z3 to false, if you want to sample without it
> $has_z3 ~cat true:1

# PREPROCESSING

# blocked_clause_elimination
> bce ~cat off:5,on:1

# equality_proxy
intent=unsat > ep ~cat off:70,RST:2,R:3,RSTC:2,RS:3
# mono_ep
ep!=off > mep ~cat on:10,off:1

# equality_resolution_with_deletion
> erd ~cat on:10,off:1

# function_definition_elimination
> fde ~cat all:5,none:1,unused:1

# general_splitting
> gsp ~cat off:8,on:1

# newcnf
> newcnf ~cat on:9,off:25

# inline_let -- this is probably irrelevant on TPTP anyway
newcnf=on > ile ~cat off:10,on:1

# naming
> $nm ~cat Z:1,NZ:5
$nm=Z > nm ~cat 0:1
$nm=NZ > nm ~sgd 0.07,2

# inequality_splitting
> $ins ~cat Z:2,NZ:1
$ins=Z > ins ~cat 0:1
$ins=NZ > ins ~sgd 0.4,1

# random_polarities
> rp ~cat off:3,on:1

# twee_goal_transformation
> tgt ~cat off:10,ground:6,full:5

# sine_selection
intent=unsat > ss ~cat off:1182,included:135,axioms:392

# sine_depth
intent=unsat ss!=off > sd ~cat 0:45,1:13,2:12,3:5,4:4,5:4,7:3,10:2,12:1,15:1

# sine_generality_threshold
intent=unsat ss!=off > sgt ~cat 0:7,5:1,10:1,15:1,20:1,30:1,50:1,100:1

# sine_tolerance
intent=unsat ss!=off > st ~cat -1.0:50,1.0:150,1.5:37,2.0:60,2.5:20,3.0:70,3.5:15,4.0:60,4.5:15,5.0:50,5.5:10,6.0:30,7.0:20

# unused_predicate_definition_removal
> updr ~cat on:16,off:1

# SATURATION

# saturation_algorithms
intent=unsat ep=off > sa ~cat fmb:10,lrs:600,discount:572,otter:236
intent=unsat ep!=off > sa ~cat lrs:600,discount:572,otter:236
intent=sat > sa ~cat fmb:22,otter:60,discount:28

# set_of_support
intent=unsat sa!=fmb > sos ~cat off:80,on:17,all:10

# lrs_first_time_check
> $lftc ~cat N:5,Y:1
sa=lrs $lftc=Y > lftc ~ui 5,95

# literal selection
> $s_pos ~cat Y:4,N:1
intent=unsat sa!=fmb $s_pos=Y > s ~cat 0:11,1:31,2:52,3:21,4:22,10:300,11:131,20:11,21:66,22:11,30:6,31:14,32:4,33:10,34:3,35:8,666:50,1002:141,1003:14,1004:23,1010:145,1011:357,1666:50
intent=unsat sa!=fmb $s_pos=N > s ~cat -1:31,-2:52,-3:21,-4:22,-10:300,-11:131,-20:11,-21:66,-22:11,-30:6,-31:14,-32:4,-33:10,-34:3,-35:8,-666:50,-1002:141,-1003:14,-1004:23,-1010:145,-1011:357,-1666:50

intent=sat sa!=fmb $s_pos=Y > s ~cat 0:11,1:31,2:52,3:21,4:22,10:300,11:131,20:11,21:66,22:11,30:6,31:14,32:4,33:10,34:3,35:8,666:50
intent=sat sa!=fmb $s_pos=N > s ~cat -1:31,-2:52,-3:21,-4:22,-10:300,-11:131,-20:11,-21:66,-22:11,-30:6,-31:14,-32:4,-33:10,-34:3,-35:8,-666:50

# lookahaed_delay
> $ls ~cat off:1
sa!=fmb s=11 > $ls ~cat on:1
sa!=fmb s=-11 > $ls ~cat on:1
sa!=fmb s=1011 > $ls ~cat on:1
sa!=fmb s=-1011 > $ls ~cat on:1

sa!=fmb $ls=on > lsd ~cat 0:20,1:1,5:1,10:1,20:1,50:1,100:1

# age_weight_ratio
sa!=fmb > $awr ~cat A:1,W:1,AW:98
sa!=fmb $awr=A > awr ~set 1:0
sa!=fmb $awr=W > awr ~set 0:1
sa!=fmb $awr=AW > awr ~u2r -10;4;:

# random_awr
sa!=fmb > rawr ~cat on:4,off:1

# lrs_weight_limit_only
sa=lrs > lwlo ~cat off:5,on:1

# lrs_retroactive_deletes
sa=lrs > lrd ~cat off:1,on:1

# lrs_estimate_correction_coef
# > $lecc ~cat 1:1
# sa=lrs > $lecc ~cat 1:10,666:1
# sa=lrs $lecc=1 > lecc ~cat 1.0:1
# sa=lrs $lecc!=1 > lecc ~uf 0.5,2.0
# TODO: leaving out weird timing dependent options

# nongoal_weight_coefficient
sa!=fmb > $nwc ~cat 1:2,666:1
sa!=fmb $nwc=1 > nwc ~cat 1:1
sa!=fmb $nwc!=1 > nwc ~uf 0.5,15.0
# TODO: we will most likely want a new distribution here for ($nwc!=1) just above!

# restrict_nwc_to_goal_constants
sa!=fmb nwc!=1 > rnwc ~cat off:5,on:1

# literal_maximality_aftercheck
sa!=fmb > lma ~cat off:500,on:83

# POSITIVE LITERAL SPLIT QUEUE
sa!=fmb > plsq ~cat off:4,on:1

# positive_literal_split_queue_layered_arrangement
plsq=on > plsql ~cat on:66,off:162

# positive_literal_split_queue_cutoffs
plsq=on > plsqc ~cat 0:117,1:92,2:19,3:5,4:1

# positive_literal_split_queue_ratios
plsq=on > plsqr ~u2r -5;7;,

# INFERENCES

# superposition (don't turn this off at home!)
intent=unsat sa!=fmb > sup ~cat on:100,off:1

# simultaneous_superposition
sa!=fmb sup=on > sims ~cat on:50,off:1

# superposition_from_variables
intent=unsat sa!=fmb sup=on > sfv ~cat on:38,off:1

# code_tree_subsumption
sa!=fmb > cts ~cat on:3,off:1

# forward_subsumption
sa!=fmb > fs ~cat on:500,off:31

# forward_subsumption_resolution
sa!=fmb fs=off > fsr ~cat off:1
sa!=fmb fs=on  > fsr ~cat on:500,off:193

# forward_subsumption_demodulation
sa!=fmb > fsd ~cat off:500,on:90

# forward_subsumption_demodulation_max_matches
sa!=fmb fsd=on > fsdmm ~cat 0:10,1:3,2:2,3:1

# backward_demodulation
sa!=fmb > bd ~cat all:500,off:245,preordered:91

# backward_subsumption
sa!=fmb fs!=off > bs ~cat off:500,unit_only:74,on:64

# backward_subsumption_resolution
sa!=fmb > bsr ~cat off:500,unit_only:118,on:75

# backward_subsumption_demodulation
sa!=fmb > bsd ~cat off:500,on:74

# backward_subsumption_demodulation_max_matches
sa!=fmb bsd=on > bsdmm ~cat 0:10,1:3,2:2,3:1

# condensation
sa!=fmb > cond ~cat off:500,on:89,fast:61

# equational_tautology_removal
sa!=fmb > etr ~cat off:500,on:30

# extensionality_resolution
sa!=fmb ins=0 > er ~cat off:500,known:25,filter:26

# extensionality_allow_pos_eq
sa!=fmb er=filter > eape ~cat off:3,on:1

# extensionality_max_length
sa!=fmb er!=off > erml ~cat 0:3,2:1,3:1

# fool_paramodulation
sa!=fmb > foolp ~cat off:10,on:1

# forward_demodulation
sa!=fmb > fd ~cat all:500,off:41,preordered:168

# demodulation_redundancy_check
> $drc ~cat 0:1
fd!=off > $drc ~cat 1:1
bd!=off > $drc ~cat 1:1
intent=unsat sa!=fmb $drc=1 > drc ~cat encompass:500,ordering:500,off:354
intent=sat sa!=fmb $drc=1 > drc ~cat ordering:643,encompass:554

# forward_demodulation_term_ordering_diagrams
sa!=fmb fd!=off > fdtod ~cat on:1,off:1

# demodulation_only_equational
sa!=fmb $drc=1 > doe ~cat on:1,off:1

# forward_ground_joinability
sa!=fmb > fgj ~cat on:1,off:1

# forward_literal_rewriting
intent=unsat sa!=fmb > flr ~cat off:8,on:1

# function_definition_introduction
sa!=fmb > fdi ~cat 0:100,2:1,4:1,8:1,16:1,32:1,64:1,128:1,256:1,512:1,1024:1

# inner_rewriting
sa!=fmb > irw ~cat off:165,on:6

# SINE LEVELS and shit

# sine_to_age
sa!=fmb > s2a ~cat off:2,on:1

# sine_level_split_queue
sa!=fmb > slsq ~cat off:5,on:1

# sine_level_split_queue_layered_arrangement
sa!=fmb slsq=on > slsql ~cat on:1,off:1

# sine_level_split_queue_cutoffs
sa!=fmb slsq=on > slsqc ~cat 0:10,1:10,2:6,3:3,4:1

# sine_level_split_queue_ratios
sa!=fmb slsq=on > slsqr ~u2r -5;2;,

# ORDERING

# term_ordering
sa!=fmb > to ~cat kbo:13,lpo:4

# symbol_precedence
sa!=fmb > sp ~cat arity:100,const_min:72,frequency:130,const_frequency:49,reverse_frequency:55,reverse_arity:72,weighted_frequency:24,unary_first:28,occurrence:82,unary_frequency:14,const_max:18
# symbol_precedence_boost
sa!=fmb > spb ~cat none:200,units:78,goal:91,goal_then_units:93,non_intro:14,intro:12

# kbo_max_zero
sa!=fmb to=kbo > kmz ~cat off:200,on:1
# kbo_weight_scheme
sa!=fmb to=kbo > kws ~cat const:50,inv_arity_squared:6,precedence:28,arity_squared:1,inv_arity:5,inv_frequency:8,frequency:2

# literal_comparison_mode
intent=unsat sa!=fmb > lcm ~cat standard:500,reverse:66,predicate:51
intent=sat sa!=fmb > lcm ~cat standard:500,reverse:66,predicate:51

# sine_to_pred_levels
sa!=fmb lcm=standard > s2pl ~cat off:50,on:2,no:3

# SINE LEVELS - configure (must come after sine_to_age & slsq & s2pl)

# set $s2a as the disjunction: s2a=on | slsq=on | s2pl!=off
> $s2a ~cat off:1
s2a=on    > $s2a ~cat on:1
slsq=on   > $s2a ~cat on:1
s2pl!=off > $s2a ~cat on:1

# now configure (stealing the values from sine proper, which is not ideal, but should do)

# sine_to_age_generality_threshold
$s2a=on > s2agt ~cat 0:7,5:1,10:1,15:1,20:1,30:1,50:1,100:1

# sine_to_age_tolerance
$s2a=on > s2at ~cat -1.0:50,1.0:150,1.5:37,2.0:60,2.5:20,3.0:70,3.5:15,4.0:60,4.5:15,5.0:50,5.5:10,6.0:30,7.0:20

# AVATAR
sa!=fmb > av ~cat on:15,off:4

# partial_redundancy_check
sa!=fmb > prc ~cat on:3,off:5

# partial_redundancy_ordering_constraints
sa!=fmb prc=on > proc ~cat on:1,off:1

# partial_redundancy_avatar_constraints
sa!=fmb av=on prc=on > prac ~cat on:1,off:1

# partial_redundancy_literal_constraints
sa!=fmb prc=on > prlc ~cat on:1,off:1

# sat_solver
sa!=fmb $has_z3=true av=on > sas ~cat minisat:10,cadical:7,z3:3
sa!=fmb $has_z3!=true av=on > sas ~cat minisat:10,cadical:7
sa=fmb > sas ~cat minisat:7,cadical:10

# avatar_add_complementary
sa!=fmb av=on > aac ~cat none:147,ground:600

# avatar_congruence_closure
sa!=fmb sas!=z3 av=on > acc ~cat off:600,on:58

# avatar_minimize_model
sa!=fmb av=on > amm ~cat on:600,off:69

# avatar_delete_deactivated
sa!=fmb av=on > add ~cat on:300,large:55,off:8

# avatar_literal_polarity_advice
sa!=fmb av=on > alpa ~cat none:300,false:13,true:6,random:4

# avatar_nonsplittable_components
sa!=fmb av=on > anc ~cat known:300,all_dependent:38,all:45,none:48

# avatar_turn_off_time_frac
# sa!=fmb av=on > $atotf ~cat 1:10,666:1
# sa!=fmb av=on $atotf=1 > atotf ~cat 1:1
# sa!=fmb av=on $atotf!=1 > atotf ~uf 0.0,0.7
# TODO: leaving out weird timing dependent options

# nonliterals_in_clause_weight
sa!=fmb av=on > nicw ~cat off:600,on:76

# split_at_activation
sa!=fmb av=on > sac ~cat off:3,on:1

# Michael's clause cleaving TODO
# intent=sat av=on > cm ~cat on:1

# BACK TO INFERENCES

# unit_resulting_resolution
sa!=fmb av=on  > urr ~cat off:1200,ec_only:162,on:300,full:40
sa!=fmb av=off > urr ~cat off:1200,ec_only:162,on:340

# binary_resolution
intent=unsat sa!=fmb > br ~cat on:8,off:1
intent=sat sa!=fmb urr=on > br ~cat on:10,off:1

# AVATAR SPLIT QUEUE

# avatar_split_queue
sa!=fmb av=on > avsq ~cat off:5,on:1

# avatar_split_queue_layered_arrangement
sa!=fmb avsq=on > avsql ~cat off:4,on:1

# avatar_split_queue_cutoffs
sa!=fmb avsq=on > avsqc ~cat 0:80,1:30,2:20,3:20,4:10,5:5

# avatar_split_queue_ratios
sa!=fmb avsq=on > avsqr ~u2r -5;3;,

# GLOBAL SUBSUMPTION
# global_subsumption
sa!=fmb > gs ~cat off:5,on:1

# FMB options

# TODO: a candidate for hardwiring "on" (go an collect the data)
# fmb_use_simplifying_solver
sa=fmb sas=minisat > fmbuss ~cat off:1,on:5

# fmb_enumeration_strategy (TODO: in the multi-sorted setting, sbeam makes only sense with intent=sat)
$has_z3=true  sa=fmb > fmbes ~cat sbeam:1,smt:1,contour:1
$has_z3!=true sa=fmb > fmbes ~cat sbeam:1,contour:1

# fmb_size_weight_ratio
fmbes=contour > fmbswr ~ui 0,5

# fmb_adjust_sorts
sa=fmb fmbes!=contour > fmbas ~cat group:36,predicate:4,expand:4,off:1,function:1
sa=fmb fmbes=contour > fmbas ~cat group:36,predicate:4,off:1,function:1

# fmb_detect_sort_bounds
sa=fmb fmbas!=predicate fmbas!=function > fmbdsb ~cat off:5,on:1

# fmb_detect_sort_bounds_time_limit
fmbdsb=on > fmbdsbt ~cat 1:5,2:2,3:1

# fmb_keep_sbeam_generators
sa=fmb fmbes=sbeam > fmbksg ~cat off:2,on:1

# fmb_start_size - setting this to values > 1 is making things "finite model incomplete" (but could save time for some problems)
intent=sat sa=fmb > $fmbss ~cat 1:5,666:1
intent=sat sa=fmb $fmbss=1 > fmbss ~cat 1:1
intent=sat sa=fmb $fmbss=666 > fmbss ~sgd 0.1,1

# fmb_symmetry_symbol_order
sa=fmb > fmbsso ~cat occurrence:22,input_usage:1,preprocessed_usage:1

# fmb_symmetry_ratio
sa=fmb > fmbsr ~uf 1.0,2.5

# MISSING:
# Any theory reasoning options (including term algebras and sa=z3)
# Any induction options
# Any higher-order options (Higher-order options section)
