• No results found

6.3 Updating Defining Maps

6.3.1 Clause Labels

Now that definitions are ‘atomic’, their use can be traced through a proof to show which clauses depend on which specific definitions in the current defining map. Clause labels will be used for this: A clause label is an extra-logical set of defini- tions stored with clauses, that contains the non-ground definitions used to rewrite a clause in theapply procedure. Labels are meant to represent the use of an unsound assumption in the derivation, which is eligible for inclusion in an update set. A la- belled clause is written C | L, whereL is a possibly empty set of labels. Here labels are simply definition/domain pairs, e. g. ,(t≈α,∆).

For example, applying a non-fixed definition(f(x,y)≈α,∆)toC[f(z, 1)] ∨ ¬∆z produces labelled clauseC[α]|(f(z, 1)≈ α,∆ ∧ ∆z)(braces in label sets are typically omitted for clarity). The definition in the clause label has been modified with the unifier[x→z,y→1]used in applying the definition to the clause.

The procedures apply, clausal defined above are modified to include labels as follows:

• Inapplyeach clause initially receives an empty label, and whenever a definition Drewrites a clauseC|Lwith substitutionσthe label Lis extended withDσ.

• In clausal each definition to be flattened is labelled by itself, and labels are preserved through flattening.

Clause labels are passed through inferences and simplifications: the conclusion takes the union of labels of the premises along with any unifier (or matcher) used in the inference (or simplification). The existing calculus rules are modified in the following general way5:

C1 |L1 C2|L2 C3σ|(L1 ∪ L2)σnum

where σ is the inference substitution and σnum is its restriction to only numbering substitutions, or renamings on the variables ofL1 ∪ L2(i. e. , bijections on variables). Then every clause in a derivation from labelled clauses will be labelled with the definitions necessary to derive it. Since only non-fixed definitions are used in labels, these roughly correspond to unsound assumptions used in the proof. Specifically, these assumptions are that all instances of defined terms are equal. The application of unifiers to labels means that a clause label may identify only a subset of defined term instances which are necessarily assumed to be equal.

The following example shows how different defining maps may block or allow certain derivations.

Example 6.3.1 (Preventing inferences with definitions). Fix some finite domain ∆x,y, and let M = {(f(x,y) ≈ α,∆x,y)}. This defining map applies to a single clause

5Except for the optional non-deterministic split rule, which is disabled for this application as it can

x 6≈ f(x,y) ∨ g(x,y)6≈g(0, 0) ∨ ¬∆x,y (assumingg does not have a BG result sort), producing the labelled clause

x6≈α ∨ g(x,y)6≈g(0, 0) ∨ ¬∆x,y|(f(x,y)≈ α,∆x,y) Consider an application of equality resolution

x6≈α ∨ g(x,y)6≈g(0, 0) ∨ ¬∆x,y|(f(x,y)≈α,∆x,y) 06≈α ∨ ¬(∆x,y[x→0,y→0])|(f(0, 0)≈α,∅)

[x→0,y→0]

Notice that the unifier[x→0,y →0]applies to the label, making its domain formula ground. Equivalently, it represents an empty set. Ifx ≈0 andy ≈0 are not excluded a priori by ∆x,y, the domain part of the conclusion ¬(∆x,y[x → 0,y → 0]) simplifies to¬true, and it can be removed.

Next, let f(0, 0) be fixed by taking M0 = {(f(x,y) ≈ α,∆x,y ∧ x 6≈ 0 ∧ y 6≈ 0),(f(0, 0)≈ α0,∅)}. The new labelled clause is

x6≈α ∨ g(x,y)6≈g(0, 0) ∨ ¬(∆x,y ∧ x6≈0 ∧ y6≈0)|(f(x,y)≈α,∆x,y ∧ x6≈0 ∧ y6≈0) The only difference is that the finite domain is now restricted. Similarly, in the inference above the finite domain is replaced everywhere with the new restricted version, and, as a result, the conclusion becomes trivially true.

Hence, one way to prevent the derivation of a labelled clause is to add one of the definitions of the labels as a new definition. In general, if(d,∆) is a definition, then adding instance (d[x → n],∆[x → n]) to the defining map will also require modifying the original definition to (d,∆ ∧ x 6≈ n)6. This creates a tautological clause if the substitution [x → n] is applied to a clause with the modified domain. However, clause domains can be modified without the change being recorded in the label. For example, in (C[x → α] | L) assuming x is a finitely quantified variable, then the substitution [x → α]does not apply to the label L, as α is a parameter. If

(C[x → α] | L) is demodulated with α ≈ 5, say, then only the definition instances in L[x → 5] are really necessary. But that information is lost due to the parameter substitution.

Though such cases could probably be accounted for, for simplicity all instances of a definition in a label will be fixed in the new defining map. This is guaranteed to prevent the derivation of the given labelled clause, as at least one ancestor clause is completely removed by instantiation.

A successful proof produces either a labelled empty clause or aB-unsatisfiable set of labelledΣB-clauses. Given a derivation of an empty clause, then any instantiation of the set of clauses used to derive it will also produce an empty clause; yet another reason to addallinstances of a label definition.

In summary, adding all instances of at least one definition in the label of the empty clause in a derivation from N− should block the same proof being derived

in the next iteration. However, derivations that end with an empty clause and no invocation of the BG solver are the rare easy case. The more common case of an unsatisfiable set of labelled BG clauses is the focus of the next section. It will be necessary to select some set of definition instances such that at least one definition in each clause label in the unsatisfiable set is completely covered.