-
Notifications
You must be signed in to change notification settings - Fork 0
/
vampire.txt
1299 lines (1257 loc) · 52.3 KB
/
vampire.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
************************************************************
************************* Global *************************
************************************************************
--cores
When running in portfolio modes (including casc or smtcomp modes) specify
the number of cores, set to 0 to use maximum
default: 1
--instruction_limit (-i)
Limit the number (in millions) of executed instructions (excluding the
kernel ones).
default: 0
--memory_limit (-m)
Memory limit in MB
default: 1024
--mode
Select the mode of operation. Choices are:
-vampire: the standard mode of operation for first-order theorem proving
-portfolio: a portfolio mode running a specified schedule (see schedule)
-casc, casc_sat, smtcomp - like portfolio mode, with competition specific
presets for schedule, etc.
-preprocess,axiom_selection,clausify: modes for producing output
for other solvers.
-tpreprocess,tclausify: output modes for theory input (clauses are quantified
with sort information).
-output,profile: output information about the problem
Some modes are not currently maintained (get in touch if interested):
-bpa: perform bound propagation
-consequence_elimination: perform consequence elimination
-random_strategy: attempts to randomize the option values
default: vampire
values: axiom_selection,casc,casc_hol,casc_sat,casc_ltb,clausify,consequence_elimination,
model_check,output,portfolio,preprocess,preprocess2,profile,
random_strategy,smtcomp,spider,tclausify,tpreprocess,vampire
--randomize_seed_for_portfolio_workers
In portfolio mode, let each worker process start from its own independent
random seed.
default: on
--schedule (-sched)
Schedule to be run by the portfolio mode. casc and smtcomp usually point
to the most recent schedule in that category. file loads the schedule from
a file specified in --schedule_file. Note that some old schedules may contain
option values that are no longer supported - see ignore_missing.
default: casc
values: casc,casc_2019,casc_sat,casc_sat_2019,casc_hol_2020,file,induction,
integer_induction,ltb_default_2017,ltb_hh4_2017,ltb_hll_2017,
ltb_isa_2017,ltb_mzr_2017,smtcomp,smtcomp_2018,snake_tptp_uns,
snake_tptp_sat,struct_induction
--schedule_file
Path to the input schedule file. Each line contains an encoded strategy.
Disabled unless `--schedule file` is set.
default: <empty>
--slowness
The factor by which is multiplied the time limit of each configuration
in casc/casc_sat/smtcomp/portfolio mode
default: 1
--superposition (-sup)
Control superposition. Turning off this core inference leads to an incomplete
calculus on equational problems.
default: on
--time_limit (-t)
Time limit in wall clock seconds, you can use d,s,m,h,D suffixes also i.e.
60s, 5m. Setting it to 0 effectively gives no time limit.
default: 600d
************************************************************
********************** Higher-order **********************
************************************************************
--add_comb_axioms (-aca)
Add combinator axioms
default: off
--add_proxy_axioms (-apa)
Add logical proxy axioms
default: off
--bool_eq_trick (-bet)
Replace an equality between boolean terms such as: t = s with a disequality
t != vnot(s) The theory is that this can help with EqRes
default: off
--cases (-c)
Alternative to FOOL Paramodulation that replaces all Boolean subterms in
one step
default: off
--cases_simp (-cs)
FOOL Paramodulation with two conclusion as a simplification
default: off
--choice_ax (-cha)
Adds the cnf form of the Hilbert choice axiom
default: off
--choice_reasoning (-chr)
Reason about choice by adding relevant instances of the axiom
default: off
--cnf_on_the_fly (-cnfonf)
Various options linked to clausification on the fly
default: eager
values: eager,lazy_gen,lazy_simp,lazy_not_gen,lazy_not_gen_be_off,
lazy_not_be_gen,off
--combinatory_sup (-csup)
Switches on a specific ordering and that orients combinator axioms left-right.
Also turns on a number of special inference rules
default: off
--complex_bool_reasoning (-cbe)
Switches on primitive instantiation and elimination of Leibniz equality
default: on
--complex_var_cond (-cvc)
Use the more complex variable condition provided in the SKIKBO paper.
More terms are comparable with this ordering, but it has worst caseexponential
complexity
default: off
--equality_to_equiv (-e2e)
Equality between boolean terms changed to equivalence
t1 : $o = t2 : $o is changed to t1 <=> t2
default: off
--func_ext (-fe)
Deal with extensionality using abstraction, axiom or neither
default: abstraction
values: off,axiom,abstraction
--injectivity (-inj)
Attempts to identify injective functions and postulates a left-inverse
default: off
--lam_free_hol (-lfh)
Reason about lambda-free hol. See paper by Vukmirovic et al.
default: off
--max_XX_narrows (-mXXn)
Maximum number of BXX', CXX' and SXX' narrows thatcan be carried out 0
means that there is no limit.
default: 0
--narrow (-narr)
Controls the set of combinator equations to use in narrowing
default: all
values: all,sk,ski,off
--new_taut_del (-ntd)
Delete clauses with literals of the form false != true or t = true \/ t
= false
default: off
--pragmatic (-prag)
Modifies various parameters to help Vampire solve 'hard' higher-order
default: off
--prim_inst_set (-piset)
Controls the set of equations to use in primitive instantiation
default: all_but_not_eq
values: all,all_but_not_eq,false_true_not,small_set
--priority_to_long_reducts (-ptlr)
give priority to clauses produced by lengthy reductions
default: off
************************************************************
************************** Help **************************
************************************************************
--bad_option
What should be done if a bad option value (wrt hard and soft constraints)
is encountered:
- hard: will cause a user error
- soft: will only report the error (unless it is unsafe)
- forced: <under development>
- off: will ignore safe errors
Note that unsafe errors will always lead to a user error
default: soft
values: hard,forced,off,soft
--explain_option (-explain)
Use to explain a single option i.e. -explain explain
default: <empty>
--help (-h)
Display the help message
default: off
--show_options
List all available options
default: off
*************************************************************
************************** Input **************************
*************************************************************
--forbidden_options
If some of the specified options are set to a forbidden state, vampire
will fail to start, or in portfolio modes it will skip such strategies.
The expected syntax is <opt1>=<val1>:<opt2>:<val2>:...:<optn>=<valN>
default: <empty>
--forced_options
Options in the format <opt1>=<val1>:<opt2>=<val2>:...:<optn>=<valN> that
override the option values set by other means (also inside portfolio mode
strategies)
default: <empty>
--guess_the_goal (-gtg)
Use heuristics to guess formulas that correspond to the goal. Doesn't really
make sense if there is already a goal but it will still do something. This
is really designed for use with SMTLIB problems that don't have goals
default: off
values: off,all,exists_top,exists_all,exists_sym,position
--guess_the_goal_limit (-gtgl)
The maximum number of input units a symbol appears for it to be considered
in a goal
default: 1
--include
Path prefix for the 'include' TPTP directive
default: <empty>
--input_syntax
Input syntax. Historic input syntaxes have been removed as they are not
actively maintained. Contact developers for help with these.
default: auto
values: smtlib2,tptp,auto
--random_seed
Some parts of vampire use random numbers. This seed allows for reproducibility
of results. By default the seed is not changed.
default: 1
--random_strategy_seed
Sets the seed for generating random strategies. This option necessary because
--random_seed <value> will be included as fixed value in the generated
random strategy, hence won't have any effect on the random strategy generation.
The default value is derived from the current time.
default: 1683429016
*************************************************************
********************** Preprocessing **********************
*************************************************************
--blocked_clause_elimination (-bce)
Eliminate blocked clauses after clausification.
default: off
--definition_reuse (-dr)
Reuse definition symbols in a similar fashion to Skolem reuse.
default: off
--equality_proxy (-ep)
Applies the equality proxy transformation to the problem. It works as follows:
- All literals s=t are replaced by E(s,t)
- All literals s!=t are replaced by ~E(s,t)
- If S the symmetry clause ~E(x,y) \/ E(y,x) is added
- If T the transitivity clause ~E(x,y) \/ ~E(y,z) \/ E(x,z) is added
- If C the congruence clauses are added as follows:
for predicates p that are not E or equality add
~E(x1,y1) \/ ... \/ ~E(xN,yN) \/ ~p(x1,...,xN) \/ p(y1,...,yN)
for non-constant functions f add
~E(x1,y1) \/ ... \/ ~E(xN,yN) \/ E(f(x1,...,xN),f(y1,...,yN))
R stands for reflexivity
default: off
values: R,RS,RST,RSTC,off
--equality_resolution_with_deletion (-erd)
Perform equality resolution with deletion.
default: on
--function_definition_elimination (-fde)
Attempts to eliminate function definitions. A function definition is a
unit clause of the form f(x1,..,xn) = t where x1,..,xn are the pairwise
distinct free variables of t and f does not appear in t. If 'all', definitions
are eliminated by replacing every occurrence of f(s1,..,sn) by t{x1 ->
s1, .., xn -> sn}. If 'unused' only unused definitions are removed.
default: all
values: all,none,unused
--general_splitting (-gsp)
Splits clauses in order to reduce number of different variables in each
clause. A clause C[X] \/ D[Y] with subclauses C and D over non-equal sets
of variables X and Y can be split into S(Z) \/ C[X] and ~S(Z) \/ D[Y] where
Z is the intersection of X and Y.
default: off
--ignore_conjecture_in_preprocessing (-icip)
Make sure we do not delete the conjecture in preprocessing even if it can
be deleted.
default: off
--inequality_splitting (-ins)
When greater than zero, ins defines a weight threshold w such that any
clause C \/ s!=t where s (or conversely t) is ground and has weight greater
or equal than w is replaced by C \/ p(s) with the additional unit clause
~p(t) being added for fresh predicate p.
default: 0
--inline_let (-ile)
Always inline let-expressions.
default: off
--mono_ep (-mep)
Use the monomorphic version of equality proxy transformation.
default: on
--naming (-nm)
Introduce names for subformulas. Given a subformula F(x1,..,xk) of formula
G a new predicate symbol is introduced as a name for F(x1,..,xk) by adding
the axiom n(x1,..,xk) <=> F(x1,..,xk) and replacing F(x1,..,xk) with n(x1,..,xk)
in G. The value indicates how many times a subformula must be used before
it is named.
default: 8
--newcnf (-newcnf)
Use NewCNF algorithm to do naming, preprocessing and clausification.
default: off
--normalize (-norm)
Normalize the problem so that the ordering of clauses etc does not effect
proof search.
default: off
--random_polarities (-rp)
As part of preprocessing, randomly (though consistently) flip polarities
of non-equality predicates in the whole CNF.
default: off
--shuffle_input (-si)
Randomly shuffle the input problem. (Runs after and thus destroys normalize.)
default: off
--sine_depth (-sd)
Limit number of iterations of the transitive closure algorithm that selects
formulas based on SInE's D-relation (see SInE description). 0 means no
limit, 1 is a maximal limit (least selected axioms), 2 allows two iterations,
etc...
default: 0
--sine_generality_threshold (-sgt)
Generality of a symbol is the number of input formulas in which a symbol
appears. If the generality of a symbol is smaller than the threshold, it
is always added into the D-relation with formulas in which it appears.
default: 0
--sine_selection (-ss)
If 'axioms', all formulas that are not annotated as 'axiom' (i.e. conjectures
and hypotheses) are initially selected, and the SInE selection is performed
on those annotated as 'axiom'. If 'included', all formulas that are directly
in the problem file are initially selected, and the SInE selection is performed
on formulas from included files. The 'included' value corresponds to the
behaviour of the original SInE implementation.
default: off
values: axioms,included,off
--sine_tolerance (-st)
SInE tolerance parameter (sometimes referred to as 'benevolence')
default: 1
--skolem_reuse (-skr)
Attempt to reuse Skolem symbols.
Symbols are re-used if they represent identical formulae up to renaming.
default: off
--sos (-sos)
Set of support strategy. All formulas annotated as axioms are put directly
among active clauses, without performing any inferences between them. If
all, select all literals of set-of-support clauses, otherwise use the default
literal selector. If theory then only apply to theory axioms introduced
by vampire (all literals are selected).
default: off
values: all,off,on,theory
--sos_theory_limit (-sstl)
When sos=theory, limit the depth of descendants a theory axiom can have.
default: 0
--theory_axioms (-tha)
Include theory axioms for detected interpreted symbols
default: on
values: on,off,some
--theory_flattening (-thf)
Flatten clauses to separate theory and non-theory parts in the input. This
is often quickly undone in proof search.
default: off
--unused_predicate_definition_removal (-updr)
Attempt to remove predicate definitions. A predicate definition is a formula
of the form ![X1,..,Xn] : (p(X1,..,XN) <=> F) where p is not equality and
does not occur in F and X1,..,XN are the free variables of F. If p has
only positive (negative) occurrences then <=> in the definition can be
replaced by => (<=). If p does not occur in the rest of the problem the
definition can be removed.
default: on
************************************************************
*********************** Saturation ***********************
************************************************************
--activation_limit (-al)
Terminate saturation after this many iterations of the main loop. 0 means
no limit.
default: 0
--age_weight_ratio (-awr)
Ratio in which clauses are being selected for activation i.e. a:w means
that for every a clauses selected based on age there will be w selected
based on weight.
default left: 1
default right: 1
--age_weight_ratio_shape (-awrs)
How to change the age/weight ratio during proof search.
default: constant
values: constant,decay,converge
--age_weight_ratio_shape_frequency (-awrsf)
How frequently the age/weight ratio shape is to change: i.e. if set to
'decay' at a frequency of 100, the age/weight ratio will change every 100
age/weight choices.
default: 100
--increased_numeral_weight (-inw)
This option only applies if the problem has interpreted numbers. The weight
of integer constants depends on the logarithm of their absolute value (instead
of being 1)
default: off
--introduced_symbol_precedence (-isp)
Decides where to place symbols introduced during proof search in the symbol
precedence
default: top
values: top,bottom
--literal_comparison_mode (-lcm)
Vampire uses term orderings which use an ordering of predicates. Standard
places equality (and certain other special predicates) first and all others
second. Predicate depends on symbol precedence (see symbol_precedence).
Reverse reverses the order.
default: standard
values: predicate,reverse,standard
--literal_maximality_aftercheck (-lma)
For efficiency we perform maximality checks before applying substitutions.
Sometimes this can lead to generating more clauses than needed for completeness.
Set this on to add the checks afterwards as well.
default: off
--lookahaed_delay (-lsd)
Delay the use of lookahead selection by this many selections the idea is
that lookahead selection may behave erratically at the start
default: 0
--lrs_estimate_correction_coef (-lecc)
Make lrs more (<1.0) or less (>1.0) agressive by multiplying by this coef
its estimate of how many clauses are still reachable.
default: 1
--nongoal_weight_coefficient (-nwc)
coefficient that will multiply the weight of theory clauses (those marked
as 'axiom' in TPTP)
default: 1
--positive_literal_split_queue (-plsq)
Turn on experiments: clause selection with multiple queues containing different
clauses (split by number of positive literals in clause)
default: off
--positive_literal_split_queue_cutoffs (-plsqc)
The cutoff-values for the positive-literal-split-queues (the cutoff value
for the last queue is omitted, since it has to be infinity).
default: 0
--positive_literal_split_queue_layered_arrangement (-plsql)
If turned on, use a layered arrangement to split clauses into queues. Otherwise
use a tammet-style-arrangement.
default: off
--positive_literal_split_queue_ratios (-plsqr)
The ratios for picking clauses from the positive-literal-split-queues using
weighted round robin. If a queue is empty, the clause will be picked from
the next non-empty queue to the right. Note that this option implicitly
also sets the number of queues.
default: 1,4
--restrict_nwc_to_goal_constants (-rnwc)
restrict nongoal_weight_coefficient to those containing goal constants
default: off
--saturation_algorithm (-sa)
Select the saturation algorithm:
- discount:
- otter:
- limited resource:
- instance generation: a simple implementation of instantiation calculus
(global_subsumption, unit_resulting_resolution and age_weight_ratio)
- fmb : finite model building for satisfiable problems.
- z3 : pass the preprocessed problem to z3, will terminate if the resulting
problem is not ground.
inst_gen, z3 and fmb aren't influenced by options for the saturation algorithm,
apart from those under the relevant heading
default: lrs
values: discount,fmb,inst_gen,lrs,otter
--selection (-s)
Selection methods 2,3,4,10,11 are complete by virtue of extending Maximal
i.e. they select the best among maximal. Methods 1002,1003,1004,1010,1011
relax this restriction and are therefore not complete.
0 - Total (select everything)
1 - Maximal
2 - ColoredFirst, MaximalSize then Lexicographical
3 - ColoredFirst, NoPositiveEquality, LeastTopLevelVariables,
LeastDistinctVariables then Lexicographical
4 - ColoredFirst, NoPositiveEquality, LeastTopLevelVariables,
LeastVariables, MaximalSize then Lexicographical
10 - ColoredFirst, NegativeEquality, MaximalSize, Negative then Lexicographical
11 - Lookahead
666 - Random
1002 - Incomplete version of 2
1003 - Incomplete version of 3
1004 - Incomplete version of 4
1010 - Incomplete version of 10
1011 - Incomplete version of 11
1666 - Incomplete version of 666
Or negated, which means that reversePolarity is true i.e. for selection
we treat all negative non-equality literals as positive and vice versa
(can only apply to non-equality literals).
default: 10
--sine_level_split_queue (-slsq)
Turn on experiments: clause selection with multiple queues containing different
clauses (split by sine-level of clause)
default: off
--sine_level_split_queue_cutoffs (-slsqc)
The cutoff-values for the sine-level-split-queues (the cutoff value for
the last queue is omitted, since it has to be infinity).
default: 0
--sine_level_split_queue_layered_arrangement (-slsql)
If turned on, use a layered arrangement to split clauses into queues. Otherwise
use a tammet-style-arrangement.
default: on
--sine_level_split_queue_ratios (-slsqr)
The ratios for picking clauses from the sine-level-split-queues using weighted
round robin. If a queue is empty, the clause will be picked from the next
non-empty queue to the right. Note that this option implicitly also sets
the number of queues.
default: 1,1
--sine_to_age (-s2a)
Use SInE levels to postpone introducing clauses more distant from the conjecture
to proof search by artificially making them younger (age := sine_level).
default: off
--sine_to_age_generality_threshold (-s2agt)
Like sine_generality_threshold but influences sine_to_age, sine_to_pred_levels,
and sine_level_split_queue rather than sine_selection.
default: 0
--sine_to_age_tolerance (-s2at)
Like sine_tolerance but influences sine_to_age, sine_to_pred_levels, and
sine_level_split_queue rather than sine_selection.
default: 1
--sine_to_pred_levels (-s2pl)
Assign levels to predicate symbols as they are used to trigger axioms during
SInE computation. Then use them as predicateLevels determining the ordering.
'on' means conjecture symbols are larger, 'no' means the opposite. (equality
keeps its standard lowest level).
default: off
values: no,off,on
--symbol_precedence (-sp)
Vampire uses term orderings which require a precedence relation between
symbols.
Arity orders symbols by their arity (and reverse_arity takes the reverse
of this) and occurence orders symbols by the order they appear in the problem.
Then we have a few precedence generating schemes adopted from E: frequency
- sort by frequency making rare symbols large, reverse does the opposite,
(For the weighted versions, each symbol occurence counts as many times
as is the length of the clause in which it occurs.) unary_first is like
arity, except that unary symbols are maximal (and ties are broken by frequency),
unary_frequency is like frequency, except that unary symbols are maximal,
const_max makes constants the largest, then falls back to arity, const_min
makes constants the smallest, then falls back to reverse_arity, const_frequency
makes constants the smallest, then falls back to frequency.
default: arity
values: arity,occurrence,reverse_arity,unary_first,const_max,const_min,scramble,
frequency,unary_frequency,const_frequency,reverse_frequency,
weighted_frequency,reverse_weighted_frequency
--symbol_precedence_boost (-spb)
Boost the symbol precedence of symbols occurring in certain kinds of clauses
in the input.
Additionally, non_intro/intro suppress/boost the precedence of symbols
introduced during preprocessing (i.e., mainly, the naming predicates and
the skolems).
default: none
values: none,goal,units,goal_then_units,non_intro,intro
--term_ordering (-to)
The term ordering used by Vampire to orient equations and order literals
default: kbo
values: kbo,lpo
--theory_split_queue (-thsq)
Turn on clause selection using multiple queues containing different clauses
(split by amount of theory reasoning)
default: off
--theory_split_queue_cutoffs (-thsqc)
The cutoff-values for the split-queues (the cutoff value for the last queue
has to be omitted, as it is always infinity). Any split-queue contains
all clauses which are assigned a feature-value less or equal to the cutoff-value
of the queue. If no custom value for this option is set, the implementation
will use cutoffs 0,4*d,10*d,infinity (where d denotes the theory split
queue expected ratio denominator).
default: 0
--theory_split_queue_expected_ratio_denom (-thsqd)
The denominator n such that we expect the final proof to have a ratio of
theory-axioms to all-axioms of 1/n.
default: 8
--theory_split_queue_layered_arrangement (-thsql)
If turned on, use a layered arrangement to split clauses into queues. Otherwise
use a tammet-style-arrangement.
default: on
--theory_split_queue_ratios (-thsqr)
The ratios for picking clauses from the split-queues using weighted round
robin. If a queue is empty, the clause will be picked from the next non-empty
queue to the right. Note that this option implicitly also sets the number
of queues.
default: 1,1
************************************************************
********************** LRS Specific **********************
************************************************************
--lrs_first_time_check
Percentage of time limit at which the LRS algorithm will for the first
time estimate the number of reachable clauses.
default: 5
--lrs_weight_limit_only (-lwlo)
If off, the lrs sets both age and weight limit according to clause reachability,
otherwise it sets the age limit to 0 and only the weight limit reflects
reachable clauses
default: off
--simulated_time_limit (-stl)
Time limit in seconds for the purpose of reachability estimations of the
LRS saturation algorithm (if 0, the actual time limit is used)
default: 0d
************************************************************
*********************** Inferences ***********************
************************************************************
--arithmetic_subterm_generalizations (-asg)
Enables various generalization rules for arithmetic terms as
described in the paper Making Theory Reasoning Simpler ( https://easychair.org/publications/preprint/K2hb
). In some rare cases the conclusion may be not strictly simpler
than the hypothesis. With `force` we ignore these cases, violating the
ordering and just simplifying anyways. With `cautious` we will
generate a new clause instead of simplifying in these cases.
default: off
values: force,cautious,off
--backward_demodulation (-bd)
Oriented rewriting of kept clauses by newly derived unit equalities
s = t L[sθ] \/ C
--------------------- where sθ > tθ (replaces RHS)
L[tθ] \/ C
default: all
values: all,off,preordered
--backward_subsumption (-bs)
Perform subsumption deletion of kept clauses by newly derived clauses.
Unit_only means that the subsumption will be performed only by unit clauses
default: off
values: off,on,unit_only
--backward_subsumption_demodulation (-bsd)
Perform backward subsumption demodulation.
default: off
--backward_subsumption_demodulation_max_matches (-bsdmm)
Maximum number of multi-literal matches to consider in backward subsumption
demodulation. 0 means to try all matches (until first success).
default: 0
--backward_subsumption_resolution (-bsr)
Perform subsumption resolution on kept clauses using newly derived clauses.
Unit_only means that the subsumption resolution will be performed only
by unit clauses
default: off
values: off,on,unit_only
--binary_resolution (-br)
Standard binary resolution i.e.
C \/ t D \/ s
---------------------
(C \/ D)θ
where θ = mgu(t,-s) and t selected
default: on
--cancellation (-canc)
Enables the rule cancellation around additions as described in the paper
Making Theory Reasoning Simpler ( https://easychair.org/publications/preprint/K2hb
). In some rare cases the conclusion may
be not strictly simpler than the hypothesis. With `force` we ignore these
cases, violating the ordering and just simplifying
anyways. With `cautious` we will generate a new clause instead
of simplifying in these cases.
default: off
values: force,cautious,off
--condensation (-cond)
Perform condensation. If 'fast' is specified, we only perform condensations
that are easy to check for.
default: off
values: fast,off,on
--demodulation_redundancy_check (-drc)
The following cases of backward and forward demodulation do not preserve
completeness:
s = t s = t1 \/ C s = t s != t1 \/ C
--------------------- ---------------------
t = t1 \/ C t != t1 \/ C
where t > t1 and s = t > C (RHS replaced)
With `on`, we check this condition and don't demodulate if we could violate
completeness.
With `encompass`, we treat demodulations (both forward and backward) as
encompassment demodulations (as defined by Duarte and Korovin in 2022's
IJCAR paper).
With `off`, we skip the checks, save time, but become incomplete.
default: on
values: off,encompass,on
--equational_tautology_removal (-etr)
A reduction which uses congruence closure to remove logically valid clauses.
default: off
--extensionality_allow_pos_eq
If extensionality resolution equals filter, this dictates whether we allow
other positive equalities when recognising extensionality clauses
default: off
--extensionality_max_length
Sets the maximum length (number of literals) an extensionality clause can
have when doing recognition for extensionality resolution. If zero there
is no maximum.
default: 0
--extensionality_resolution (-er)
Turns on the following inference rule:
x=y \/ C s != t \/ D
-----------------------
C{x → s, y → t} \/ D
Where s!=t is selected in s!=t \/D and x=y \/ C is a recognised as an extensionality
clause - how clauses are recognised depends on the value of this option.
If filter we attempt to recognise all extensionality clauses i.e. those
that have exactly one X=Y, no inequality of the same sort as X-Y (and optionally
no equality except X=Y, see extensionality_allow_pos_eq).
If known we only recognise a known set of extensionality clauses. At the
moment this includes the standard and subset-based formulations of the
set extensionality axiom, as well as the array extensionality axiom.
If tagged we only use formulas tagged as extensionality clauses.
default: off
values: filter,known,tagged,off
--fool_paramodulation (-foolp)
Turns on the following inference rule:
C[s]
--------------------,
C[true] \/ s = false
where s is a boolean term that is not a variable, true or false, C[true]
is the C clause with s substituted by true. This rule is needed for efficient
treatment of boolean terms.
default: off
--forward_demodulation (-fd)
Oriented rewriting of newly derived clauses by kept unit equalities
s = t L[sθ] \/ C
--------------------- where sθ > tθ
L[tθ] \/ C
If 'preordered' is set, only equalities s = t where s > t are used for
rewriting.
default: all
values: all,off,preordered
--forward_literal_rewriting (-flr)
Perform forward literal rewriting.
default: off
--forward_subsumption (-fs)
Perform forward subsumption deletion.
default: on
--forward_subsumption_demodulation (-fsd)
Perform forward subsumption demodulation.
default: off
--forward_subsumption_demodulation_max_matches (-fsdmm)
Maximum number of multi-literal matches to consider in forward subsumption
demodulation. 0 means to try all matches (until first success).
default: 0
--forward_subsumption_resolution (-fsr)
Perform forward subsumption resolution.
default: on
--gaussian_variable_elimination (-gve)
Enable the immediate simplification "Gaussian Variable Elimination":
s != t \/ C[X]
-------------- if s != t can be rewritten to X != r
C[r]
Example:
6 * X0 != 2 * X1 | p(X0, X1)
-------------------------------
p(2 * X1 / 6, X1)
For a more detailed description see the paper Making Theory Reasoning Simpler
( https://easychair.org/publications/preprint/K2hb ). In some
rare cases the conclusion may be not strictly simpler than the hypothesis.
With `force` we ignore these cases, violating the ordering and just simplifying
anyways. With `cautious` we will generate a new clause instead
of simplifying in these cases.
default: off
values: force,cautious,off
--global_subsumption (-gs)
Perform global subsumption. Use a set of groundings of generated clauses
G to replace C \/ L by C if the grounding of C is implied by G. A SAT solver
is used for ground reasoning.
default: off
--global_subsumption_avatar_assumptions (-gsaa)
When running global subsumption and AVATAR at the same time we need to
include information about the current AVATAR model. When this is off we
ignore clauses with AVATAR assumptions for GS. When it is from_current
we assume the assumptions in the current clause. When it is full_model
we assume the full model from AVATAR. See paper Global Subsumption Revisited
(Briefly).
default: off
values: off,from_current,full_model
--global_subsumption_explicit_minim (-gsem)
no description provided!
default: randomized
values: off,on,randomized
--global_subsumption_sat_solver_power (-gsssp)
Explicitly minimize the result of global subsumption reduction.
default: propagation_only
values: propagation_only,full
--high_school (-hsm)
Enables high school education for vampire. (i.e.: sets -gve cautious, -asg
cautious, -ev cautious, -canc cautious, -pum on )
default: off
--hyper_superposition
Simplifying inference that attempts to do several rewritings at once if
it will eliminate literals of the original clause (now we aim just for
elimination by equality resolution)
default: off
--induction (-ind)
Apply structural and/or integer induction on datatypes and integers.
default: none
values: none,struct,int,both
--induction_choice (-indc)
Where to apply induction. Goal only applies to constants in goal, goal_plus
extends this with skolem constants introduced by induction. Consider using
guess_the_goal for problems in SMTLIB as they do not come with a conjecture
default: all
values: all,goal,goal_plus
--induction_gen (-indgen)
Apply induction with generalization (on both all & selected occurrences)
default: off
--induction_max_depth (-indmd)
Set maximum depth of induction where 0 means no max.
default: 0
--induction_neg_only (-indn)
Only apply induction to negative literals
default: on
--induction_on_complex_terms (-indoct)
Apply induction on complex (ground) terms vs. only on constants
default: off
--induction_strengthen_hypothesis (-indstrhyp)
Strengthen induction formulas with the remaining skolem constants replaced
with universally quantified variables in hypotheses
default: off
--induction_unit_only (-indu)
Only apply induction to unit clauses
default: on
--inner_rewriting (-irw)
C[t_1] | t1 != t2 ==> C[t_2] | t1 != t2 when t1>t2
default: off
--instantiation (-inst)
Heuristically instantiate variables. Often wastes a lot of effort. Consider
using thi instead.
default: off
values: off,on
--int_induction_default_bound (-intinddb)
Always apply integer induction with bound 0
default: off
--int_induction_interval (-intindint)
Whether integer induction is applied over infinite or finite intervals,
or both
default: both
values: infinite,finite,both
--int_induction_kind (-iik)
The kind of integer induction applied
default: one
values: one,two,all
--int_induction_strictness_comp (-intindstcomp)
Exclude induction term t/literal l combinations from integer induction.
Induction is not applied to _comparison_ literals l:
- none: no exclusion
- toplevel_not_in_other: t is a top-level argument of l,
but it does not occur in the other argument of l
- only_one_occurrence: t has only one occurrence in l
- not_in_both: t does not occur in both arguments of l
- always: induction on l is not allowed at all
default: toplevel_not_in_other
values: none,toplevel_not_in_other,only_one_occurrence,not_in_both,always
--int_induction_strictness_eq (-intindsteq)
Exclude induction term t/literal l combinations from integer induction.
Induction is not applied to _equality_ literals l:
- none: no exclusion
- toplevel_not_in_other: t is a top-level argument of l,
but it does not occur in the other argument of l
- only_one_occurrence: t has only one occurrence in l
- not_in_both: t does not occur in both arguments of l
- always: induction on l is not allowed at all
default: none
values: none,toplevel_not_in_other,only_one_occurrence,not_in_both,always
--int_induction_strictness_term (-intindstterm)
Exclude induction term t/literal l combinations from integer induction.
Induction is not applied to the induction term t:
- none: no exclusion
- interpreted_constant: t is an interpreted constant
- no_skolems: t does not contain a skolem function
default: interpreted_constant
values: none,interpreted_constant,no_skolems
--max_induction_gen_subset_size (-indgenss)
Set maximum number of occurrences of the induction term to be generalized,
where 0 means no max. (Regular induction will be applied without this restriction.)
default: 3
--non_unit_induction (-nui)
Induction on certain clauses or clause sets instead of just unit clauses
default: off
--normalize_inequalities (-norm_ineq)
Enable normalizing of inequalities like s < t ==> 0 < t - s.
default: off
--push_unary_minus (-pum)
Enable the immediate simplifications:
-(t + s) ==> -t + -s
-(-t) ==> t
default: off
--simultaneous_superposition (-sims)
Rewrite the whole RHS clause during superposition, not just the target
literal.
default: on
--structural_induction_kind (-sik)
The kind of structural induction applied
default: one
values: one,two,three,all
--superposition_from_variables (-sfv)
Perform superposition from variables.
default: on
--term_algebra_acyclicity (-tac)
Activates the cyclicity rule for term algebras (such as algebraic datatypes
in SMT-LIB):
- off : the cyclicity rule is not enforced (this is sound but incomplete)
- axiom : the cyclicity rule is axiomatized with a transitive predicate
describing the subterm relation over terms
- rule : the cyclicity rule is enforced by a specific hyper-resolution
rule
- light : the cyclicity rule is enforced by rule generating disequality
between a term and its known subterms
default: off
values: off,axiom,rule,light
--term_algebra_rules (-tar)
Activates some rules that improve reasoning with term algebras (such as
algebraic datatypes in SMT-LIB):
If the problem does not contain any term algebra symbols, activating this
options has no effect
- distinctness rule:
f(...) = g(...) \/ A
--------------------
A
where f and g are distinct term algebra constructors
- distinctness tautology deletion: clauses of the form f(...) ~= g(...)
\/ A are deleted
- injectivity rule:
f(s1 ... sn) = f(t1 ... tn) \/ A
--------------------------------
s1 = t1 \/ A
...
sn = tn \/ A
default: on
--unification_with_abstraction (-uwa)
During unification, if two terms s and t fail to unify we will introduce
a constraint s!=t and carry on. For example, resolving p(1) \/ C with ~p(a+2)
would produce C \/ 1 !=a+2. This is controlled by a check on the terms.
The expected use case is in theory reasoning. The possible values are:-
off: do not introduce a constraint
- interpreted_only: only if s and t have interpreted top symbols
- one_side_interpreted: only if one of s or t have interpreted top symbols
- one_side_constant: only if one of s or t is an interpreted constant (e.g.
a number)
- all: always apply
- ground: only if both s and t are ground
See Unification with Abstraction and Theory Instantiation in Saturation-Based
Reasoning for further details.
default: off
values: off,interpreted_only,one_side_interpreted,one_side_constant,all,
ground
--unit_resulting_resolution (-urr)
Uses unit resulting resolution only to derive empty clauses (may be useful
for splitting)
default: off
values: ec_only,off,on
--use_ac_eval (-uace)
Evaluate associative and commutative operators e.g. + and *.
default: on
************************************************************
************************* AVATAR *************************
************************************************************
--avatar (-av)
Use AVATAR splitting.
default: on
--avatar_add_complementary (-aac)
no description provided!
default: ground
values: ground,none
--avatar_buffered_solver (-abs)
Added buffering functionality to the SAT solver used in AVATAR.
default: off
--avatar_congruence_closure (-acc)
Use a congruence closure decision procedure on top of the AVATAR SAT solver.
This ensures that models produced by AVATAR satisfy the theory of uninterpreted
functions.
default: off
values: model,off,on
--avatar_delete_deactivated (-add)
no description provided!
default: on
values: on,large,off
--avatar_eager_removal (-aer)
If a component was in the model and then becomes 'don't care' eagerly remove
that component from the first-order solver. Note: only has any impact when
amm is used.
default: on
--avatar_fast_restart (-afr)
no description provided!
default: off
--avatar_flush_period (-afp)
after given number of generated clauses without deriving an empty clause,
the splitting component selection is shuffled. If equal to zero, shuffling
is never performed.
default: 0
--avatar_flush_quotient (-afq)
after each flush, the avatar_flush_period is multiplied by the quotient
default: 1.5
--avatar_literal_polarity_advice (-alpa)
Override SAT-solver's default polarity/phase setting for variables abstracting
clause components.
default: none
values: false,true,none,random
--avatar_minimize_model (-amm)
Minimize the SAT-solver model by replacing concrete values with don't-cares
provided <all> the sat clauses (or only the split clauses with <sco>) remain
provably satisfied by the partial model.
default: all
values: off,sco,all
--avatar_nonsplittable_components (-anc)
Decide what to do with a nonsplittable component:
-known: SAT clauses will be learnt from non-splittable clauses that have
corresponding components (if there is a component C with name SAT l, clause
C | {l1,..ln} will give SAT clause ~l1 \/ … \/ ~ln \/ l). When we add
the sat clause, we discard the original FO clause C | {l1,..ln} and let
the component selection update model, possibly adding the component clause
C | {l}.
-all: like known, except when we see a non-splittable clause that doesn't
have a name, we introduce the name for it.
-all_dependent: like all, but we don't introduce names for non-splittable
clauses that don't depend on any components
default: known
values: all,all_dependent,known,none
--avatar_split_queue (-avsq)
Turn on experiments: clause selection with multiple queues containing different