Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Method of analytic tableaux
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
===First-order tableau with unification=== The main problem of tableau without unification is how to choose a ground term <math>t</math> for the universal quantifier rule. Indeed, every possible ground term can be used, but clearly most of them might be useless for closing the tableau. A solution to this problem is to "delay" the choice of the term to the time when the consequent of the rule allows closing at least a branch of the tableau. This can be done by using a variable instead of a term, so that <math>\forall x . \gamma(x)</math> generates <math>\gamma(x')</math>, and then allowing substitutions to later replace <math>x'</math> with a term. The rule for universal quantifiers becomes: :<math>(\forall) \frac{\forall x . \gamma(x)}{\gamma(x')}</math> where <math>x'</math> is a variable not occurring everywhere else in the tableau While the initial set of formulae is supposed not to contain free variables, a formula of the tableau may contain the free variables generated by this rule. These free variables are implicitly considered universally quantified. This rule employs a variable instead of a ground term. What is gained by this change is that these variables can be then given a value when a branch of the tableau can be closed, solving the problem of generating terms that might be useless. :{| |- | <math>(\sigma)</math> | if <math>\sigma</math> is the most general unifier of two literals <math>A</math> and <math>B</math>, where <math>A</math> and the negation of <math>B</math> occur in the same branch of the tableau, <math>\sigma</math> can be applied at the same time to all formulae of the tableau |} As an example, <math>\{\neg P(a), \forall x . P(x)\}</math> can be proved unsatisfiable by first generating <math>P(x_1)</math>; the negation of this literal is unifiable with <math>\neg P(a)</math>, the most general unifier being the substitution that replaces <math>x_1</math> with <math>a</math>; applying this substitution results in replacing <math>P(x_1)</math> with <math>P(a)</math>, which closes the tableau. This rule closes at least a branch of the tableau—the one containing the considered pair of literals. However, the substitution has to be applied to the whole tableau, not only on these two literals. This is expressed by saying that the free variables of the tableau are ''rigid'': if an occurrence of a variable is replaced by something else, all other occurrences of the same variable must be replaced in the same way. Formally, the free variables are (implicitly) universally quantified and all formulae of the tableau are within the scope of these quantifiers. Existential quantifiers are dealt with by Skolemization. Contrary to the tableau without unification, Skolem terms may not be simple constants. Indeed, formulae in a tableau with unification may contain free variables, which are implicitly considered universally quantified. As a result, a formula like <math>\exists x . \delta(x)</math> may be within the scope of universal quantifiers; if this is the case, the [[Skolem term]] is not a simple constant but a term made of a new function symbol and the free variables of the formula. :<math>(\exists) \frac{\exists x . \delta(x)}{\delta(f(x_1,\ldots,x_n))}</math> where <math>f</math> is a new function symbol and <math>x_1,\ldots,x_n</math> the free variables of <math>\delta</math> [[File:First-order tableau with unification.svg|thumb|400px|A first-order tableau with unification for {∀x.P(x), ∃x.(¬P(x)⋁¬P(f(x)))}. For clarity, formulae are numbered on the left and the formula and rule used at each step is on the right.]] This rule incorporates a simplification over a rule where <math>x_1,\ldots,x_n</math> are the free variables of the branch, not of <math>\delta</math> alone. This rule can be further simplified by the reuse of a function symbol if it has already been used in a formula that is identical to <math>\delta</math> up to variable renaming. The formula represented by a tableau is obtained in a way that is similar to the propositional case, with the additional assumption that free variables are considered universally quantified. As for the propositional case, formulae in each branch are conjoined and the resulting formulae are disjoined. In addition, all free variables of the resulting formula are universally quantified. All these quantifiers have the whole formula in their scope. In other words, if <math>F</math> is the formula obtained by disjoining the conjunction of the formulae in each branch, and <math>x_1,\ldots,x_n</math> are the free variables in it, then <math>\forall x_1,\ldots,x_n . F</math> is the formula represented by the tableau. The following considerations apply: * The assumption that free variables are universally quantified is what makes the application of a most general unifier a sound rule: since <math>\gamma(x')</math> means that <math>\gamma</math> is true for every possible value of <math>x'</math>, then <math>\gamma(t)</math> is true for the term <math>t</math> that the most general unifier replaces <math>x</math> with. * Free variables in a tableau are rigid: all occurrences of the same variable have to be replaced all with the same term. Every variable can be considered a symbol representing a term that is yet to be decided. This is a consequence of free variables being assumed universally quantified over the whole formula represented by the tableau: if the same variable occurs free in two different nodes, both occurrences are in the scope of the same quantifier. As an example, if the formulae in two nodes are <math>A(x)</math> and <math>B(x)</math>, where <math>x</math> is free in both, the formula represented by the tableau is something in the form <math>\forall x . (...A(x)...B(x)...)</math>. This formula implies that <math>(...A(x)...B(x)...)</math> is true for any value of <math>x</math>, but does not in general imply <math>(...A(t)...A(t')...)</math> for two different terms <math>t</math> and <math>t'</math>, as these two terms may in general take different values. This means that <math>x</math> cannot be replaced by two different terms in <math>A(x)</math> and <math>B(x)</math>. * Free variables in a formula to check for validity are also considered universally quantified. However, these variables cannot be left free when building a tableau, because tableau rules works on the converse of the formula but still treats free variables as universally quantified. For example, <math>P(x) \to P(c)</math> is not valid (it is not true in the model where <math>D=\{1,2\}, P(1)=\bot, P(2)=\top, c=1</math>, and the interpretation where <math>x=2</math>). Consequently, <math>\{P(x),\neg P(c)\}</math> is satisfiable (it is satisfied by the same model and interpretation). However, a closed tableau could be generated with <math>P(x)</math> and <math>\neg P(c)</math>, and substituting <math>x</math> with <math>c</math> would generate a closure. A correct procedure is to first make universal quantifiers explicit, thus generating <math>\forall x . (P(x) \to P(c))</math>. The following two variants are also correct. * Applying to the whole tableau a substitution to the free variables of the tableau is a correct rule, provided that this substitution is free for the formula representing the tableau. In other worlds, applying such a substitution leads to a tableau whose formula is still a consequence of the input set. Using most general unifiers automatically ensures that the condition of freeness for the tableau is met. * While in general every variable has to be replaced with the same term in the whole tableau, there are some special cases in which this is not necessary. Tableaux with unification can be proved complete: if a set of formulae is unsatisfiable, it has a tableau-with-unification proof. However, actually finding such a proof may be a difficult problem. Contrarily to the case without unification, applying a substitution can modify the existing part of a tableau; while applying a substitution closes at least a branch, it may make other branches impossible to close (even if the set is unsatisfiable). A solution to this problem is ''delayed instantiation'': no substitution is applied until one that closes all branches at the same time is found. With this variant, a proof for an unsatisfiable set can always be found by a suitable policy of application of the other rules. This method however requires the whole tableau to be kept in memory: the general method closes branches, which can be then discarded, while this variant does not close any branch until the end. The problem that some tableaux that can be generated are impossible to close even if the set is unsatisfiable is common to other sets of tableau expansion rules: even if some specific sequences of application of these rules allow constructing a closed tableau (if the set is unsatisfiable), some other sequences lead to tableaux that cannot be closed. General solutions for these cases are outlined in the "Searching for a tableau" section.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)