Prover9 Manual Version June-2006

Attributes

Several kinds of attribute can be attached to input clauses with the # operator, for example,
x * y = y * x              # label(commutativity).
x * c != e                 # answer(x) # label("the denial").
-p(c) | -q(c)              # answer("here it is").
a * b != b * a             # action(in_proof -> exit) # answer(commutativity).
x * (y * z) = y * (x * z)  # bsub_hint_wt(500).
Each attribute has a data type of string, integer, or term. A string attribute is really just a term attribute that is a constant. If a string attribute is not a legal constant, it can be enclosed in double quotes to make it so.

The accepted attributes are shown in the following table.

Name Type Inheritable Purpose
label string No Comment
answer term Yes Record substitutions and what has been proved
action term No Triggers action when clause is used
bsub_hint_add_wt integer No Used for hints
bsub_hint_wt integer No Used for hints

Inheritable attributes are passed from parent to child during most inference rules.

Label Attributes

Label attributes are simply comments that can be attached to input clauses, including hint clauses.

Answer Attributes

Answer attributes are essentially answer literals. They are inherited during application of inference rules, and if they contain variables, the variables are instantiated by the substitution used in the inference.

Answer attributes (like all other attributes) contain exactly one argument. If you wish to record substitutions for more than one variable, you must use a term that contains all of the variables, for example, a list, as in the following clause.

-p(c,x,y,z)  # answer([x,y,z]).

Action Attributes

Action attributes cause various things to happen when clauses are used in various ways. See the section on Actions.

Bsub_hint_wt and Bsub_hint_add_wt Attributes

The hint attributes are attached to hint clauses, and they are used to override the settings of the corresponding parameters. That is, if a hint matches a clause, and if the hint has a bsub_hint_wt attribute, the value of the attribute is used to calculate the weight of the clause instead of the ordinary bsub_hint_wt parameter.