KED: A Deontic Theorem Prover
Alberto Artosi*, Paola Cattabriga**, Guido Governatori**
*Dipartimento di Filosofia, Università di Bologna, via Zamboni,38, 40126 Bologna (Italy),
Fax:051-258326. **CIRFID, Università di Bologna, via Galliera, 3, 40126 Bologna
(Italy), Fax:051-260782, E-mail:
[email protected],
[email protected].
1 Introduction
Deontic logic (DL) is increasingly recognized as an indispensable tool in such application
areas as formal representation of legal knowledge and reasoning, formal specification of
computer systems and formal analysis of database integrity constraints. Despite this
acknowledgement, there have been few attempts to provide computationally tractable
inference mechanisms for DL (most notably [Bel87], [McC83], [McC86], [Sus87]). In this
paper we shall be concerned with providing a computationally oriented proof method for
standard DL (SDL), i.e., normal systems of modal logic with the usual possible-worlds
semantics ([Aq87], [Ch80], [Han65]). Because of the natural and easily implementable
style of proof construction it uses, this method seems particularly well-suited for
applications in the AI and Law field, and though in the present version it works for SDL
only, it forms an appropriate basis for developing efficient proof methods for more
expressive and sophisticated extensions of SDL. The content of the paper is as follows. In
Section 2, we briefly introduce SDL together with the logical notation being used. In
Section 3, we describe the theorem proving system KED. In Sections 4 and 5, we present
KED method of proof search. In the last section, we provide a sample of the KED Prolog
implementation and give an example output of the program.
2 Preliminaries
A system of SDL is a logic (set of axioms scheme and inference rules) based on a standard
modal language consisting of a denumerable set of propositional variables and the
primitive logical connectives ¬, ∧, ∨, →, P, O for negation, conjunction, disjunction,
conditionality, permission and obligation, respectively. We shall use the letters A, B, C,...
to denote arbitrary formulas of this language. A system of SDL will be denoted by L. We
define an L-model to be a triple <W, R, v> where W is a non-empty set (the set of "possible
worlds"), R is a binary relation on W (the "accessibility relation" between the "actual"
world and its deontically ideal versions), and v is a mapping from W × S to {T,F} where S
is the set of all formulas of our present language. As usual, the notion of L-model
appropriate for the logic L can be obtained by restricting R to satisfy the conditions
associated with L. The following table gives a complete picture of the systems of SLD we
shall consider.
KED: A Deontic Theorem Prover
L
OK
D
D4
DB
D5
D45
Definition
PC ∪ {O(A→B) → (OA→OB)}
OK ∪ {OA→PA}
D ∪ {OA→OOA}
D ∪ {A→OPA}
D ∪ {PA→OPA}
D4 ∪ {PA→OPA}
Condition on R
no condition
idealisation
idealisation, transitive
idealisation, symmetric
idealisation, euclidean
idealisation, transitive, euclidean
Table 1: Systems of SDL and their associated conditions.
To complete the definition, all these logics include modus ponens and the rule of Onecessitation (if we have already proved A, then we can infer OA). The "idealisation"
condition corresponds to the obvious requirement that every world in W has at least an
ideal version.
By a signed formula (S-formula) we shall mean an expression of the form SA where A is
a formula and S ∈ {T,F}. Thus TA if v(x,A) = V and FA if v(x,A) = F for some L-model
<W,R,v> and x ∈ W. We shall denote by X, Y, Z arbitrary signed formulas. By the
conjugate XC of a signed formula X we shall mean the result of changing S to its opposite
(thus TA is the conjugate of FA and FA is the conjugate of TA). Two S-formulas X, Z
such that Z = XC will be called complementary. For ease of exposition we shall use
Smullyan-Fitting's "α,β,ν,π" unifying notation that classifies S-formulas as shown in the
following table.
α
TA∧B
FA∨B
FA→B
T¬A
α1
TA
FA
TA
FA
ν
TOA
FPA
α2
TB
FB
FB
FA
β
FA∧B
TA∨B
TA→B
F¬A
ν0
TA
FA
π
TPA
FOA
β1
FA
TA
FA
TA
β2
FB
TB
TB
TA
π0
TA
FA
Table 2: Classification of signed formulas according to Smullyan-Fitting's unifying notation.
3 The system KED
In this section we describe the proof system KED. The key features of KED are outlined as
follows.
3.1 Label formalism
Let ΦC = {w1, w2, w3,...} and ΦV = {W1, W2, W3,...} be two (non empty) sets of "world"
symbols, respectively constant and variables. We define the set ℑ of "world" labels in the
following way:
KED: A Deontic Theorem Prover
ℑ = U ℑi where ℑi is:
1≤ n
ℑ1 = Φ C ∪ Φ V
ℑ2 = ℑ1 × Φ C
ℑn +1 = ℑ1 × ℑn .
That is a label i is either a constant "world" symbol, or a "world" variable, or a "path"
term (k',k) where (a) k' ∈ ΦC ∪ ΦV and (b) k ∈ ΦC or k = (m',m) where (m',m) is a label.
Intuitively, we may think of a label i ∈ ΦC as denoting a world, and a label i ∈ ΦV as
denoting a set of worlds in some L-model. A label i = (k',k) may be viewed as representing
a path from k to a (set of) world(s) k' accessible from k. For example, the label (W1,w1)
represents a path which takes us to a set W1 (the set of worlds accessible from the initial
world w1); (w2,(W1,w1))) represents a path which takes us to a world w2 accessible by any
world accessible from w1, (i.e., accessible by the subpath (W1,w1)) and so on (notice that
the labels are read from right to left). For any label i = (k',k) we shall call k' the head of i, k
the body of i, and denote them by h(i) and b(i) respectively. Notice that these notions are
recursive: if b(i) denotes the body of i, then b(b(i)) will denote the body of b(i), b(b(b(i)))
will denote the body of b(b(i)), and so on. For example, if i is (w4,(W3,(w3,(W2,w1)))), then
b(i) = (W3,(w3,(W2,w1))), b(b(i)) = (w3,(W2,w1)), b(b(b(i))) = (W2,w1), b(b(b(b(i)))) = w1.
We call each of b(i), b(b(i)), etc., a segment of i. Let s(i) denote any segment of i
(obviously, by definition every segment s(i) of a label i is a label); then h(s(i)) will denote
the head of s(i). For any label i, we shall denote the length of i by l(i), where l(i) = n ⇔ i ∈
ℑn.We shall call a label i restricted if h(i) ∈ ΦC, otherwise we shall call it unrestricted.
3.2 Basic unifications
We define a substitution in the usual way as a function σ: ΦV → ℑ− where ℑ− = ℑ − ΦV.
Following convention we denote by iσ, kσ the result of applying σ to labels i and k. If iσ =
kσ we shall say that σ unifies i and k. Two labels i, k will be said σ-unifiable if there is a
substitution σ that unifies i and k. In the following we shall use (i,k)σ to denote both that i
and k are σ-unifiable and the result of their unification. On this basis we define several
specialised, logic-dependent notions of σ-unification. In particular, we define the notion of
two labels i, k being σOK-, σD-, σD4- and σD5-unifiable in the following way:
(i,k)σOK = (i,k)σ ⇔
(i) at least one of i and k is restricted, and
(ii) for every s(i), s(k) such that l(s(i)) = l(s(k)), (s(i),s(k))σOK
(i,k)σD = (i,k)σ
(i,k)σD4 = h(k) × (h(b(k)) × (...× (t*(k) × (i,s(k))σD)...)) ⇔
l(i)≤l(k), h(i) ∈ ΦV and (i,s(k))σD,
or
(i,k)σD4 = h(i) × (h(b(i)) × (...× (t*(i) × (s(i),k)σD)...)) ⇔
l(k)≤l(i), h(k) ∈ ΦV and (s(i),k)σD
KED: A Deontic Theorem Prover
where t*(k) (resp. t*(i)) denotes the element of k (resp. i) which immediately follows s(k)
(resp. s(i)).
(i,k)σD5 = (h(i),h(k))σ × (b(b(i)),b(k))σL)) ⇔
(h(i),h(k))σ and (b(b(i)),b(k))σL for l(k)≤l(i) or h(b(k)) ∈ ΦC,
or
(i,k)σD5 = (h(i),h(k))σ × (b(i),b(b(k))σL)) ⇔
(h(i),h(k))σ and (b(i),b(b(k))σL for l(i)≤l(k)or h(b(i)) ∈ ΦC,
where
σ D or σ D 5 if l (i) = l (k )
σ = D5
σ if l (i ) ≠ l (k )
L
The above notions are meant to mirror the conditions on R in the various L-models. Thus
the notions of σOK-and σD-unification are related to the idealisation condition. For
example, (w2,(W1,w1)), (W3,(W2,w1)) are σD-unifiable but not σOK-unifiable (since the
segments (W1,w1), (W2,w1) are not σOK-unifiable by condition (i) of the above definition).
The reason is that in the "non idealisable" logic OK the "denotations" of W1 and W2 may
be empty (i.e., there can be no worlds accessible from w1), while in the "idealisable" logic
D they are not empty, which makes them to be unifiable "on" any constant. For the notion
of σD4-unification take for example i = (W3,(w2,w1)) and k = (w5,(w4,(w3,(W2,w1)))). Here
s(k) = (w3,(W2,w1)). Then i and k σD4-unify to (w5,(w4,(w3,(w2,w1)))) since
((W3,(w2,w1)),(w3,(W2,w1)))σD. This intuitively means that all the worlds accessible from
a subpath s(k) of k are accessible from any path i which turns out to be identical with s(k).
Similar intuitive motivations hold for the notion of σD5-unification.
3.3 Reductions
For X = 4, B we define the X-reduction, rX(i), of a label i to be a function rX: ℑ → ℑ
determined as follows:
r (i ) =
h(i ), b(b(i ))
i, i unrestricted and l (i ) ≤
rB (i ) =
b(b(i )), i unrestricted and l (i ) ≥
(h(i ), rB (b(i ))), i restricted
The notion of X-reduction holds for the logics whose associated conditions are
transitivity and symmetry. As an intuitive explanation, we may think of the X-reduction of
a label i as the deletion of "irrelevant" steps from the path represented by i. Thus for
example the 4-reduction (w2,w1) of the label (w2,(W1,w1)) amounts to deleting the step to
an arbitrary world (in the set) W1 in the path from w1 to a world w2 accessible from all
worlds accessible from w1 since if R is constrained to satifsy transitivity, then this step
turns out to be irrelevant (w2 is accessible from w1 for all W1 accessible from w1).
3.4 General unification
We are now able to define what it means for two labels i, k to be σL-unifiable for L =
OK, D, D4, DB, D5, D45:
KED: A Deontic Theorem Prover
(i) (i,k)σL = (i,k)σ*, where
for l(i) = l(k)
σ* = σOK,
σ* = σD,
σ* = σD5,
if L = OK
if L = D, D4, DB, D5, D45
if L = D5, D45;
for l(i) ≠ l(k)
σ* = σD4,
σ* = σD5,
if L = D4
if L = D5, D45.
(ii) (i,k)σL = (i,rX(k))σ*, or
(rX(i),k)σ*, or
(rX(i),rX(k))σ*,
where
X = 4,
X = B,
if L = D4, D45
if L = DB.
σ* = σD,
σ* = σD5,
if L = D4, DB, D5, D45
if L = D5, D45.
and
Notice that in this way all the obvious inclusions among the logics considered are
preserved.
3.5 Rules of inference
The rules of KED will be defined for pairs X,i where X is a signed formula and i is label.
We shall call any pair X,i a labelled signed formula (LS-formula). Two LS-formulas X,i,
Z,k such that Z = XC and (i,k)σL are called σL-complementary. The following inference
rules hold for all the logics we are considering (i, i', k stand for arbitrary labels).
α,i
α1,i
ν,i
ν0,(i',i)
α,i
α2,i
[(i',i) unrestricted and i' new]
β,i
βC1,k
β2,(i,k)σL
β,i
βC2,k
β1,(i,k)σL
π,i
[(i',i) restricted and i' new]
π0,(i',i)
[(i,k)σL]
KED: A Deontic Theorem Prover
PB [i restricted]
X,i
XC,i
X,i
XC,k
[(i,k)σL]
PNC
× (i,k)σL
Here the α-rules are just the usual linear branch-expansion rules of the tableau method,
while the β-rules correspond to such common natural inference patterns as modus ponens,
modus tollens, etc. The rules for the modal operators bear a not unexpected resemblance to
the familiar quantifier rules of the tableau method. "i' new" in the proviso for the ν- and πrule obviously means: i' must not have occurred in any label yet used. Notice that in all
inferences via an α-rule the label of the premise carries over unchanged to the conclusion,
and in all inferences via a β-rule the labels of the premises must be σL-unifiable, so that
the conclusion inherits their unification. (The underlying intuitive motivation is that LSformulas whose labels are σL-unifiable turns out to be true (false) at the same world(s)
relative to the associated conditions on R). PB (the "Principle of Bivalence") and PNC (the
"Principle of Non-Contradiction") are "structural" rules. PB represents the (LS-version of
the) semantic counterpart of the cut rule of the sequent calculus (intuitive meaning: a
formula A is either true or false in any given world, whence the requirement that i be
restricted). PNC corresponds to the familiar branch-closure rule of the tableau method,
saying that from a contradiction of the form (occurrence of a pair of σL-complementary
LS-formulas) X,i, XC,k on a branch we may infer the closure ("×") of the branch. The (i,k)
σL in the "conclusion" of PNC means that the contradiction holds "in the same world".
It can be proved ([AG93],[AG94]) that the above rules give a sound and complete system
for a wide variety of normal modal logics.
4 Proof search
As usual with refutation methods, a proof of a formula A of L consists of attempting to
construct a countermodel for A by assuming that A is false in some arbitrary L-model.
Every successful proof discovers a contradiction in the putative countermodel. In this
section we describe an algorithm which does this job and that can be easily implemented
in Prolog (see Section 7 below). The following definitions are extensions to the modal
case of those given for the classical case in [DM94].
By a KED-tree we mean a tree generated by the inference rules of KED. A branch τ of a
KED-tree will be said to be σL-closed if it ends with an application of PNC. A KED-tree
will be said to be σL-closed if all its branches are σL-closed. A L-proof of a formula A is a
σL-closed KED-tree starting with FA,i. Given a branch τ of a KED-tree, we shall call a LSformula X,i E-analysed in τ if either (i) X is of type α and both α1,i and α2,i occur in τ; or
(ii) X is of type β and one of the following conditions is satisfied: (a) if βC1,k occurs in τ
and (i,k)σL, then also β2,(i,k)σL occurs in τ, (b) if βC2,k occurs in τ and (i,k)σL, then also
β1,(i,k)σL occurs in τ; or (iii) X is of type ν and ν0,(i',i) occurs in τ for some i' ∈ ΦV not
previously occurring in τ, or (iv) X is of type π and π0,(i',i) occurs in τ for some i' ∈ ΦC not
previously occurring in τ. We shall call a branch τ of a KED-tree E-completed if every LSformula in it is E-analysed and there are no complementary formulas which are not σLcomplementary. Finally, we shall call a LS-formula X,i of type β fulfilled in a branch τ if
KED: A Deontic Theorem Prover
either β1,i' or β2,i' occur in τ, where either (i) i' = i, or (ii) i' is obtained from i by
instantiating h(i) to a constant not occurring in i, or (iii) i' = (i,k)σL for some βCi,k (i = 1,2)
such that (i,k)σL. We shall say that a branch τ of a KED-tree is completed if it is both Ecompleted and all the LS-formulas of type β in it are fulfilled. We shall call a KED-tree
completed if every branch is completed. Let us denote by Λ (Lambda) the set of LSformulas which occur non analysed, by ∆ (Delta) any branch, and by ഡ the set of labels.
The KED algorithm runs as follows (the quotations in brackets refer to the Prolog
implementation in Section 7). To prove a formula A of L
STEP 0. Assign to A an arbitrary constant label i, and put SA,i in ∆ and i in ഡ .
STEP 1 (cke 1). If a pair of σL-complementary LS-formulas occurs in ∆, then the tree is σLclosed and A is a theorem of L.
STEP 2 (cke 3). Delete all literals from ∆. If ∆ is empty, then the tree is completed.
STEPS 3, 4 (cke 5,6). For each formula π,i (ν,i) in ∆ (i) generate a new restricted
(unrestricted) label (i',i) and add it to ഡ ; (ii) add π0,(i',i) (ν0,(i',i)) to Λ; and (iii) delete π,i
(ν,i) from ∆.
STEP 5 (cke 7). For each formula α,i in ∆, (i) add α1,i, α2,i to ∆; (ii) delete α,i from ∆; and
(iii) add α,i to Λ.
STEP 6 (cke 8). For each formula β,i in ∆, such that either β1,k or β2,k is in ∆ ∪ Λ and
(i,k)σL, (i) delete β,i from ∆, and (ii) add β,i to Λ.
STEP 7 (cke 9,10). For each formula β,i in ∆ such that either βC1,k or βC2,k is in ∆ ∪ Λ
and (i,k)σL for some label k, (i) add β2(i,k)σL or β1(i,k)σL to ∆; (ii) delete β,i from ∆; (iii)
add the labels resulting from the σL-unification to ഡ ; and (iv) add β,i to Λ.
STEP 8.1 (cke 11). For each formula β,i in ∆, if ∆∪ Λ does not contain formulas βC1,k
such that i, k are not σL-unifiable, then form sets ∆1 = ∆∪β1,m and ∆2 = ∆∪βC1,m (where
(i,m)σL, and m is a given restricted label).
STEP 8.2 (cked 12). For each formula β,i in ∆, if ∆∪ Λ does not contain formulas βC2,k
such that i, k are not σL-unifiable, then form sets ∆1 = ∆∪β2,m, and ∆2 = ∆∪βC2,m (where
(i,m)σL, and m is a given restricted label).
Remark 1: The steps 8.1 and 8.2 are logic and label dependent. This mean that if the label
of X is restricted, its immediate signed subformulas have the same label as X, otherwise
we have to deal with two cases: a) search whether ഡ contains restricted labels which σLunify with the label of X; if so the rule is applied to all such labels; b) if L is an idealisable
logic then, if the search fails, h(i) is instantiated to a new constant label not previously
occurring.
KED: A Deontic Theorem Prover
STEP 9 (cke14). If Λ contains two complementary but not σL-complementary formulas,
search in ഡ for restricted labels which σL-unify with both the labels of the complementary
formulas; if we find such labels then the tree is closed and A is a theorem of L.
STEP 10 (cke15). If Λ contains two complementary but not σL-complementary formulas ,
search in ഡ for restricted labels which σL-unify with both the labels of the complementary
formulas; if we do not find such labels then the tree is completed and A is not a theorem of
L.
This procedure is based on the procedure for canonical KED-trees. A KED-tree is said to
be canonical iff the applications of 1-premise rule come before the applications of 2premise rules, which preceed the applications of the 0-premise rule. The following
theorems state some interessing properties of canonical KED-trees:
THEOREM 1. A canonical KED-tree always terminates.
THEOREM 2. A KED-tree for a formula A of L is closed iff the canonical KED-tree for A
is closed.
Theorem 1 follows from the fact that at each step there are at most a finite number of
new LS-formulas of less complexity, and that the number of labels which can occur in the
KED-tree for a formula A (of L) is limited by the number of modal operators in A.
Theorem 2 follows from the fact that a canonical KED-tree is a KED-tree and that a KEDtree explores all the possibile alternatives that can imply closure (for detail see [ACG94a]).
Remark 2: It should be noticed that in the above procedure PB is applied only to
immediate signed subformulas of LS-formulas of type β which occur (unfulfilled) in the
chosen branch, and only when the branch has been E-completed, i.e., when the E-rules are
no further applicable. Such a restricted use of the cut rule removes from the search space
the redundancy generated by the standard tableau branching rules. Indeed it is easy to see
that the given procedure makes all choices in such a way that at each step of proof search
the search space is as small as possible, while preserving the subformula property of
proofs (see [DM94]).
5 An example
We illustrate the KED-based search procedure with the help of an example. The following
is a D-proof of the formula (PA∨OB)→P(A∨B).
(1) F(PA∨OB)→P(A∨B), w1
(2) TPA∨OB, w1
(3) FP(A∨B), w1
(4) FA∨B, (W1,w1)
(5) FA, (W1,w1)
(6) FB, (W1,w1)
(7) TPA, w1
(8) FPA, w1
(9) TA, (w2,w1)
(10) TOB, w1
× (w2,w1)
(11) TB, (W2,w1)
× (w2,w1)
KED: A Deontic Theorem Prover
The steps leading to the nodes (1)-(6) are straightforward. At this stage, to complete the
branch we pick out the only LS-formula of type β which is not yet fulfilled in it, i.e., (2),
and apply PB so that the resulting LS-formulas are (7) and (8). At this point an application
of π-rule σD-closes the left branch ((5) and (9) are obviously σD-complementary by
condition (i) of the above definition). To make the right branch E-completed, we choose
the only LS-formula of type β which is not yet analysed in it, i.e., (2), and try to σD-unify
its label with the label of βC1,k (i.e., (8)). Since this unification succeeds we are allowed to
derive β2,(i,k)σD at the node (10). Now an application of ν-rule σD-closes the branch. The
resulting KED-tree is thus σD-closed. Notice that (6) and (11), are σD- but not σOKcomplementary (their labels are obviously not σOK-unifiable, and thus not σOK-unifiable).
Then this KED-tree constitutes a D- (and, of course, a D4-, DB-) proof, but not a OK-proof
of the given formula.
6 Final remarks
Let us conclude with some comments on KED and related systems. In our opinion KED
has several advantages over most automated theorem proving systems for non-classical
logics currently available. Here we mention only a few. In contrast with both clausal and
non clausal resolution methods ([AEH90], [AM86], [Cia86], [EF89], [Far85], [Far86],
[Cha87]), and in general "translation-based" methods ([AE92], [Ohl87], [Ohl89],
[Ohl91]), KED requires no preprocessing of the input formulas and provides a simple and
uniform treatment of a wide class of normal modal logics ([AG94], [ACG94b]). From this
perspective it is similar to sequent or tableau proof methods ([Fit88], [GD88], [JR89],
[Wol85]), which avoid ad hoc manipulation of the modal formulas and can be easily
extended to a wide variety of non-classical logics. Nevertheless, it is well-known that
sequent/tableau inference techniques are affected by considerable redundancies which
prevent the development of computationally efficient proof search methods. KED is based
on Mondadori's ([Mon88]) classical proof system KE which, though being tableau-like,
has been proved ([DM94]) to offer many computational advantages over standard tableau
method, including considerable gain in efficiency and conciseness. The critical feature of
KED is that it developed as a labelled system, similar in spirit to D'Agostino and Gabbay
[DG93]) tableau extensionwith labels. The idea of using a label scheme to bookkeep
"world" paths in modal theorem proving is not new, going back at least to [Fi66]. Similar,
or related, ideas are found in [Fit72], [Fit83], [Tap87] and [Wri85] and, more recently, in
[Cat91], [JR89], [Wal90] and also in the "translation" tradition of [Ae92], [Ohl89],
[Ohl91], [Ohl93]. As in Wallen's ([Wal90], [Gen93]) matrix proof method, KED's label
scheme allows the modal operators to be dealt with using a specialized, logic-dependent
unification algorithm to overcome the non-permutability of the usual tableau (and
resolution) modal rules. However, unlike the Wallen's method (a generalization of Bibel's
classical connection method) KED implements directly familiar, natural inference patterns,
and so it appears to provide an adequate basis for combining both efficiency and
naturalness. In effect, we believe that KED lends itself well to both interactive and AI
applications. As its Prolog implementation (see Section 7 below) has shown, KED method
of proof is simple and easy to implement - but simple enough to be used without a
machine. These are not, however, the only advantages of KED's label unification scheme.
For example, the index formalism of Jackson and Reichgelt's ([JR89]) sequent-resolution
based proof system is almost identical, but the unification algorithm used to resolve
KED: A Deontic Theorem Prover
complementary formulas in the various modal logics does not work for the non-idealisable
K logics. Further advantages of KED label formalism are that (i) it avoids loop-checking
and reduplication (see Section 4 above); (ii) it supports a deduction method closely related
to the semantics of modal operators; and (iii) it works for modal logics whose
characteristic semantic properties have no first-order characterization, such as the GödelLöb logic of provability [Boo79].
In this paper we have been concerned with SDL. This may be seen as a major limitation,
since it is currently held that SDL fails to provide a framework suited for applications in
the AI and Law field, its use being limited to very general and unproblematic features of
normative language and reasoning. Nervertheless, the method for automated deduction in
SDL we presented in this paper is sufficiently generic and flexible to provide an
appropriate algorithmic proof framework for deontic logics of greater richness and
complexity. For example, it can be easily extended to multi modal logics (e.g., to the
deontic logic of the Jones-Pörn type [JP85]), by simply introducing several sorts of
"worlds", both constants and variables, or by building indexed labels where an index tells
us what kind of world is denoted by a label, and the way you get there. Moreover several
specialised substitutions have to be defined in order to conform to the constraints of the
logic to be dealt with (of course, these tecniques can be combined).
7 A sample of a KED Prolog program
The following Prolog implementation of KED is based on that of the classical proof
system KE by Pitt and D'Agostino (see [DP94]).
KED selects a deontic logic L and it runs the KED rules for that logic. If the input formula
is a theorem of L the program will output the entire reserch path with the final answer
"closed" "theorem of L", and KED stops to run. If the input formula is not L-satisfiable,
KED selects another logic and try to find the solution. The complete Prolog version of
KEM ("M" for "modal") can prove formulas of the following logics K, D, T, K4, D4, S4,
K5, D5, KB, DB, B, K4B, K45, D45, and S5 (see [ACG94a]). The ":" operator attaches
labels to formulas and "labeltree()" records the labels. In this way the labels have a
semantical control concurrent function over the syntactical inference rules. In what
follows, ->, +, &, ˜, $, @ denotes →, ∨, ∧, ¬, P, O respectively.
Quintus implementations on SparcStation 10.
/*
KED - Deontic Theorem Proving - by Alberto Artosi, Paola Cattabriga,and Guido Governatori.*/
:- ensure_loaded(library(basics)).
:- ensure_loaded(library(occurs)).
:- ensure_loaded(library(term_depth)).
:- op(800,xfx,:).
:- op(600,xfy,->).
:- op(550,xfy,+).
:- op(450,xfy,&).
:- op(300,fy, ~).
:- op(240,fy,$).
:- op(240,fy,@).
all_log(SetOfFormula):findall(SetOfFormula,pr(SetOfFormula),_).
pr(SetOfFormula):- logic(L),
pr1(SetOfFormula),
retract(log(L)).
pr(L,SetOfFormula):- logic(L),
pr1(SetOfFormula),
retractall(log(LL)).
pr1(SetOfFormula):- statistics(runtime,[T1|_]),
log(L),
assert(labeltree([i(w(1),w(1))])),
label(SetOfFormula,SLF),
cke(SLF,[],Result), !,
statistics(runtime,[T2|_]),
T is T2 - T1,
write(Result), write(' in '), write(L), nl,
write(' in '), write(T), write(' msecs.'), nl,nl,
KED: A Deontic Theorem Prover
retract(labeltree(_)).
cke(_,Lambda,unsatisfiable):member(I: ~A,Lambda),
member(K: A,Lambda),
log(L),
unifylow(L,I,K,_), write(I: ~A), write(', '),
write(K: A),
write(' unify in '), write(L), nl,
write(Lambda),
write('***closed'), nl, !.
cke([],Lambda,satisfiable):write(Lambda),
write('***completed'), nl, !.
cke(Delta,Lambda,Result):append(H,[F|T],Delta),
literal(F),
append(H,T,Delta1),
write(Delta), write( <---> ), write(Lambda), nl,
write('literal'), nl,
cke(Delta1,[F|Lambda],Result).
cke(Delta,Lambda,Result):append(H,[I: ~(~A)|T],Delta),
append(H,[I:A|T],Delta1),
write('double negation elimination'), nl,
cke(Delta1,[I: ~(~A)|Lambda],Result).
cke(Delta,Lambda,Result):append(H,[I: F|T],Delta),
type_ni(I: F,K: A), genv(I,K),
labeltree(K,V),
append(H,[K: A|T],Delta1),
write(Delta), write( <---> ), write(Lambda), nl,
write('ni elimination'), nl,
cke(Delta1,[I: F|Lambda],Result).
cke(Delta,Lambda,Result):append(H,[I: F|T],Delta),
type_pi(I: F,K : A), genc(I,K),
labeltree(K,V),
append(H,[K: A|T],Delta1),
write(Delta), write( <---> ), write(Lambda), nl,
write('pi elimination'), nl,
cke(Delta1,[I: F|Lambda],Result).
cke(Delta,Lambda,Result):append(H,[F|T],Delta),
type_alpha(F,A1,A2),
append(H,[A1,A2|T],Delta1),
write(Delta), write( <---> ), write(Lambda), nl,
write('alpha elimination'), nl,
cke(Delta1,[F|Lambda],Result).
cke(Delta,Lambda,Result):-
append(H,[I: F|T],Delta),
type_beta(I: F,K: B1,R:B2),
append(Delta,Lambda,DuL), log(L),
((member(K: B1,DuL), unifylow(L,I,K,_),
write(I: F),
write(', '),write(K: B1),
write(' unify in '), write(L), nl);
(member(R: B2,DuL), unifylow(L,I,R,_),
write(I: F),
write(', '),write(R: B2),
write(' unify in '), write(L), nl)),
append(H,T,Delta1),
write(Delta), write( <---> ), write(Lambda), nl,
write('beta semplification 1'), nl,
cke(Delta1,[I: F|Lambda],Result).
cke(Delta,Lambda,Result):append(H,[X: F|T],Delta),
type_beta(X: F,B1,Q: B2),
append(Delta,Lambda,DuL),
complement(B1,Y: B1c),
member(Y: B1c,DuL), log(L),
unifylow(L,X,Y,R), labeltree(R,V),
append(H,[R: B2|T],Delta1),
write(X: F), write(', '),write(Y: B1c),
write(' unify in '), write(L), nl,
write(Delta), write( <---> ), write(Lambda), nl,
write('beta elimination 1'), nl,
cke(Delta1,[F|Lambda],Result).
cke(Delta,Lambda,Result):append(H,[X: F|T],Delta),
type_beta(X: F,Q: B1,B2),
append(Delta,Lambda,DuL),
complement(B2,Y: B2c),
member(Y: B2c,DuL), log(L),
unifylow(L,X,Y,R),labeltree(R,V),
append(H,[R:B1|T],Delta1),
write(X: F), write(', '),write(Y: B2c),
write(' unify in '), write(L), nl,
write(Delta), write( <---> ), write(Lambda), nl,
write('beta elimination 2'), nl,
cke(Delta1,[F|Lambda],Result).
cke(Delta,Lambda,Result):append(H,[I: F|T],Delta),
type_beta(I: F,K: B1,_),
labeltree(V), log(L),
((member(i(w(Y),X),V),
unifylow(L,I,i(w(Y),X),_),i(w(Y),X)= K);
((log(d); log(d4); log(d5); log(d45); log(db)),
memb(i(vw(Z),X1),V), genc(X1,K),
unifylow(L,I,K,_))),
write(I: F), write(', '),write(K: B1),
write(' unify in '), write(L), nl,
complement(K: B1,K: B1c),
append(H,[K: B1,I: F|T],Delta1),
KED: A Deontic Theorem Prover
append(H,[K: B1c,I: F|T],Delta2),
write('pb1'), nl,
write('branch 1'), nl,
cke(Delta1,Lambda,R1),
write('branch 2'), nl,
cke(Delta2,Lambda,R2),
eval(R1,R2,Result).
cke(Delta,Lambda,Result):append(H,[I: F|T],Delta),
type_beta(I: F,_,K: B2),
labeltree(V), log(L),
((member(i(w(Y),X),V),
unifylow(L,I,i(w(Y),X),_),i(w(Y),X)= K);
((log(d); log(d4); log(d5); log(d45); log(db)),
memb(i(vw(Z),X1),V), genc(X1,K),
unifylow(L,I,K,_))),
write(I: F), write(', '),write(K: B2),
write(' unify in '), write(L), nl,
complement(K: B2,K: B2c),
append(H,[K: B2,I: F|T],Delta1),
append(H,[K: B2c,I: F|T],Delta2),
write('pb2'), nl,
write('branch 1'), nl,
cke(Delta1,Lambda,R1),
write('branch 2'), nl,
cke(Delta2,Lambda,R2),
eval(R1,R2,Result).
cke(_,Lambda,unsatifiable):member(I: ~A,Lambda),
member(K: A,Lambda),
labeltree(H),
member(i(w(Y),X),H), R = i(w(Y),X), log(L),
unifylow(L,K,R,R1), unifylow(L,I,R,R1),
write(I: ~A), write(', '), write(K: A),
write(' unify in '), write(L), nl,
write(Lambda),
write('***closed pb mod'), nl, !.
cke([],Lambda,satisfiable):member(I: ~A,Lambda),
member(K: A,Lambda),
labeltree(H),
member(i(w(Y),X),H), R = i(w(Y),X), log(L),
\+ unifylow(L,K,R,R1), \+ unifylow(L,I,R,R1),
write(Lambda),
write('***completed pb mod'), nl, !.
eval(satisfiable,_,satisfiable).
eval(_,satisfiable,satisfiable).
eval(_,_,unsatisfiable).
literal(I:A):- atom(A).
literal(I: ~A):- atom(A).
complement(I: ~A,K: A).
complement(I: A,K: ~A).
type_alpha(I: ~(A+B),I: ~A,I: ~B).
type_alpha(I: A&B,I: A,I: B).
type_alpha(I: ~(A->B),I: A,I: ~B).
type_beta(I: A+B,J: A,K: B).
type_beta(I: ~(A&B),J: ~A,K: ~B).
type_beta(I: A->B,J: ~A,K: B).
type_ni(I : $ A,K : A).
type_pi(I : @ A,K : A).
type_ni(I : ~ @ A,K : ~A).
type_pi(I : ~ $ A,K : ~A).
label([],[]).
label([T|C],[Y: T|C1]):- labeltree(X),
member(Y,X),label(C,C1).
labeltree(K,V):- labeltree(V), retract(labeltree(V)),
assert(labeltree([K|V])).
costants(w(1)).
costants(w(N1)):- costants(w(N)), N1 is N+ 1.
variables(vw(1)).
variables(vw(N1)):- variables(vw(N)), N1 is N+ 1.
genc(_,i(w(2),i(w(1),w(1)))):- labeltree([i(w(1),w(1))]).
genc(I,i(w(N),I)):- labeltree(T), costants(w(N)),
append([A|_],C,T), \+ (sub_term(w(N),A)), !.
genv(_,i(vw(1),i(w(1),w(1)))):- labeltree([i(w(1),w(1))]).
genv(I,i(vw(N),I)):- labeltree(T), variables(vw(N)),
append([A|_],C,T), \+ (sub_term(vw(N),A)), !.
logic(L):- selectlogic(L), assert(log(L)).
selectlogic(k).
selectlogic(d).
selectlogic(d4).
selectlogic(d5).
selectlogic(d45).
selectlogic(db).
/* unification theory over labels */
unifylow(L,X,Y,Z):- log(L), low(L,X,Y,Z).
low(k,X,Y,Z):- lowunifyk(X,Y,Z).
low(d,X,Y,Z):- unifyd(X,Y,Z).
low(d4,X,Y,Z):- lowunifyd4(X,Y,Z).
low(d5,X,Y,Z):- lowunifyd5(X,Y,Z).
low(d45,X,Y,Z):- lowunifyd45(X,Y,Z).
low(db,X,Y,Z):- lowunifydb(X,Y,Z).
unifyd(vw(N),vw(N1),vw(N2)):- (N >= N1, N2 = N);
N1 =N2.
unifyd(w(N),vw(N1),w(N)).
unifyd(vw(N1),w(N),w(N)).
KED: A Deontic Theorem Prover
unifyd(w(N),w(N),w(N)).
unifyd(i(A,B),i(C,D),i(E,G)):- functor(i(A,B),F,N),
functor(i(C,D),F,N),
unifyargs(N,i(A,B),i(C,D),i(E,G)).
unifyargs(N,X,Y,T):- N>0, unifyarg(N,X,Y,AT),
N1 is N - 1,
functor(T,i,2), arg(N,T,AT),
unifyargs(N1,X,Y,T).
unifyargs(0,X,Y,T).
unifyarg(N,X,Y,AT):- arg(N,X,AX), arg(N,Y,AY),
unifyd(AX,AY,AT).
/* reductions and low unifications*/
/*low unification for K, D are equal to high unification.*/
reduct4(i(w(N),w(N1)),i(w(N),w(N1))):- !.
reduct4(i(vw(N),w(N1)),i(vw(N),w(N1))):- !.
reduct4(i(vw(N),i(vw(N1),w(N2))),i(vw(N),i(vw(N1),w(N2)))):- !.
reduct4(i(vw(N),i(w(N1),w(N2))),i(vw(N),i(w(N1),w(N2)))):- !.
reduct4(T1,T2):- compound(T1), arg(1,T1,H1),
arg(2,T1,B1), arg(2,B1,BB1),
functor(T2,i,2), arg(1,T2,H1), arg(2,T2,BB1).
reductb(i(w(N),w(N1)),i(w(N),w(N1))):- !.
reductb(i(vw(N),w(N1)),i(vw(N),w(N1))):- !.
reductb(i(vw(N),i(vw(N1),w(N2))),i(vw(N),i(vw(N1),w(N2)))):- !.
reductb(i(vw(N),i(w(N1),w(N2))),i(vw(N),i(w(N1),w(N2)))):- !.
reductb(T1,T2):- compound(T1), H = i(vw(N),S),
sub_term(H,T1), arg(2,S,B1),
subs(H,T1,B1,T2).
reduct5(i(w(1),w(1)),i(w(1),w(1))):- !.
reduct5(i(vw(N),w(N1)),i(vw(N),w(N1))):- !.
reduct5(T1,T2):- compound(T1), H = i(w(N), S),
sub_term(H,T1), arg(2,S,B1),
subs(H,T1,B1,T2).
lowunifyd4(R1,T2,T3).
lowunifyd4(T1,T2,T3):- reduct4(T2,R2), T2 \== R2,
lowunifyd4(T1,R2,T3).
lowunifyd4(T1,T2,T3):- reduct4(T1,R1), reduct4(T2,R2),
T1 \== R1, T2 \== R2, lowunifyd4(R1,R2,T3).
lowunifydb(T1,T2,T3):- arg(1,T1,w(Y)), arg(1,T2,w(X)),
X \== Y, !, fail.
lowunifydb(T1,T2,T3):- unifyd(T1,T2,T3).
lowunifydb(T1,T2,T3):- reductb(T1,R1), T1 \== R1,
lowunifydb(R1,T2,T3).
lowunifydb(T1,T2,T3):- reductb(T2,R2), T2 \== R2,
lowunifydb(T1,R2,T3).
lowunifydb(T1,T2,T3):- reductb(T1,R1), reductb(T2,R2),
T1 \== R1, T2 \== R2, lowunifydb(R1,R2,T3).
lowunifyd5(T1,T2,T3):- unifyd(T1,T2,T3).
lowunifyd5(T1,T2,T3):- unifyd5(T1,T2,T3).
lowunifyd5(T1,T2,T3):- reduct5(T1,R1), T1 \== R1,
lowunifyd5(R1,T2,T3).
lowunifyd5(T1,T2,T3):- reduct5(T2,R2), T2 \== R2,
lowunifyd5(T1,R2,T3).
lowunifyd5(T1,T2,T3):- reduct5(T1,R1), reduct5(T2,R2),
T1 \== R1, T2 \== R2,
lowunifyd5(R1,R2,T3).
lowunifyd45(T1,T2,T3):- arg(1,T1,w(Y)), arg(1,T2,w(X)),
X \== Y, !, fail.
lowunifyd45(T1,T2,T3):- lowunifyd5(T1,T2,T3).
lowunifyd45(T1,T2,T3):- reduct4(T1,R1), T1 \== R1,
lowunifyd45(R1,T2,T3).
lowunifyd45(T1,T2,T3):- reduct4(T2,R2), T2 \== R2,
lowunifyd45(T1,R2,T3).
lowunifyd45(T1,T2,T3):- reduct4(T1,R1),
reduct4(T2,R2), T1 \== R1, T2 \== R2,
lowunifyd45(R1,R2,T3).
/* high unification */
reduct5(T1,T2):- compound(T1), arg(1,T1,H1),
arg(2,T1,B1), arg(2,B1,BB1),
functor(T2,i,2), arg(1,T2,H1), arg(2,T2,BB1).
subs(T,T,T1,T1):- !.
subs(_,T,_,T):- atom(T), !.
subs(S,T,S1,T1):- T =..[F|Arg], subslist(S,Arg, S1,Arg1),
T1 =.. [F|Arg1].
subslist(_,[],_,[]).
subslist(S,[T|Ts], S1,[T1|T1s]):- subs(S,T,S1,T1),
subslist(S,Ts,S1,T1s).
lowunifyk(T1,T2,T3):- unifyk(T1,T2,T3).
lowunifyd4(T1,T2,T3):- arg(1,T1,w(Y)), arg(1,T2,w(X)),
X \== Y, !, fail.
lowunifyd4(T1,T2,T3):- unifyd(T1,T2,T3);
unifyd4(T1,T2,T3).
lowunifyd4(T1,T2,T3):- reduct4(T1,R1), T1 \== R1,
unifyk(T1,T2,T3):- arg(1,T1,H1), arg(1,T2,H2),
(H1 = w(N); H2 = w(N)),
unifyd(T1,T2,T3).
unifyd4(T1,T2,T3):- mycompare(>,T1,T2),
arg(1,T2,vw(N)), arg(2,T1,B1),
arg(1,T1,H1), unifyd(H1,vw(N),H3),
functor(T3,i,2), arg(1,T3,H3), arg(2,T3,B3),
(unifyd(B1,T2,B3); unifyd4(B1,T2,B3)).
unifyd4(T1,T2,T3):- mycompare(<,T1,T2),
arg(1,T1,vw(N)), arg(2,T2,B2),
arg(1,T2,H2), unifyd(H2,vw(N),H3),
functor(T3,i,2), arg(1,T3,H3), arg(2,T3,B3),
(unifyd(T1,B2,B3); unifyd4(T1,B2,B3)).
unifyd5(T1,T2,T3):- (arg(1,T1,w(N));
mycompare(=,T1,T2)), arg(1,T2,H2),
KED: A Deontic Theorem Prover
unifyd(w(N),H2,H3),
arg(2,T1,B1), arg(2,B1,BB1), arg(2,T2,B2),
(unifyd(BB1,B2,B3); unifyd5(BB1,B2,B3)),
functor(T3,i,2), arg(1,T3,H3), arg(2,T3,B3).
unifyd5(T1,T2,T3):- (arg(1,T2,w(N));
mycompare(=,T1,T2)) , arg(1,T1,H1),
unifyd(H1,w(N),H3),
arg(2,T2,B2), arg(2,B2,BB2), arg(2,T1,B1),
(unifyd(B1,BB2,B3); unifyd5(B1,BB2,B3)),
functor(T3,i,2), arg(1,T3,H3), arg(2,T3,B3).
unifyd5(T1,T2,T3):- (arg(1,T1,w(N));
mycompare(>,T1,T2)) , arg(1,T2,H2),
unifyd(w(N),H2,H3),
arg(2,T1,B1), arg(2,B1,BB1), arg(2,T2,B2),
unifyd5(BB1,B2,B3),
functor(T3,i,2), arg(1,T3,H3), arg(2,T3,B3).
unifyd5(T1,T2,T3):- (arg(1,T2,w(N));
mycompare(<,T1,T2)) , arg(1,T1,H1),
unifyd(H1,w(N),H3),
arg(2,T2,B2), arg(2,B2,BB2), arg(2,T1,B1),
unifyd5(B1,BB2,B3),
functor(T3,i,2), arg(1,T3,H3), arg(2,T3,B3).
mycompare(Rel,T1,T2):- term_depth(T1,N1),
term_depth(T2,N2), compare(Rel,N1,N2).
Example
| ?- pr(d,[~((@a + $b) -> $(a+b))]).
[i(w(1),w(1)): ~ (@a+ $b-> $ (a+b))]<--->[]
alpha elimination
[i(w(1),w(1)): @a+ $b,i(w(1),w(1)): ~ $ (a+b)]<--->[i(w(1),w(1)): ~ (@a+ $b-> $(a+b))]
pi elimination
[i(w(1),w(1)): @a+ $b,i(w(2),i(w(1),w(1))): ~ (a+b)]<--->[i(w(1),w(1)): ~ $ (a+b),i(w(1),w(1)): ~ (@a+ $b-> $ (a+b))]
alpha elimination
[i(w(1),w(1)): @a+ $b,i(w(2),i(w(1),w(1))): ~a,i(w(2),i(w(1),w(1))): ~b]<--->[i(w(2),i(w(1),w(1))): ~ (a+b),i(w(1),w(1)): ~ $ (a+b),
i(w(1),w(1)): ~ (@a+ $b-> $(a+b))]
literal
[i(w(1),w(1)): @a+ $b,i(w(2),i(w(1),w(1))): ~b]<--->[i(w(2),i(w(1),w(1))): ~a,i(w(2),i(w(1),w(1))): ~ (a+b),i(w(1),w(1)): ~ $ (a+b),
i(w(1),w(1)): ~ (@a+ $b-> $(a+b))]
literal
i(w(1),w(1)): @a+ $b, i(w(1),w(1)): @a unify in d
pb1
branch 1
[i(w(1),w(1)): @a,i(w(1),w(1)): @a+ $b]<--->[i(w(2),i(w(1),w(1))): ~b,i(w(2),i(w(1),w(1))): ~a,i(w(2),i(w(1),w(1))): ~ (a+b),
i(w(1),w(1)): ~ $ (a+b),i(w(1),w(1)): ~ (@a+ $b-> $ (a+b))]
pi elimination
[i(w(3),i(w(1),w(1))):a,i(w(1),w(1)): @a+ $b]<--->[i(w(1),w(1)): @a,i(w(2),i(w(1),w(1))): ~b,i(w(2),i(w(1),w(1))): ~a
,i(w(2),i(w(1),w(1))): ~ (a+b),i(w(1),w(1)): ~ $ (a+b),i(w(1),w(1)): ~ (@a+ $b-> $ (a+b))]
literal
i(w(1),w(1)): @a+ $b, i(w(1),w(1)): @a unify in d
[i(w(1),w(1)): @a+ $b]<--->[i(w(3),i(w(1),w(1))):a,i(w(1),w(1)): @a,i(w(2),i(w(1),w(1))): ~b,i(w(2),i(w(1),w(1))): ~a
,i(w(2),i(w(1),w(1))): ~ (a+b),i(w(1),w(1)): ~ $ (a+b),i(w(1),w(1)): ~ (@a+ $b-> $ (a+b))]
beta semplification 1
[i(w(1),w(1)):
@a+
$b,i(w(3),i(w(1),w(1))):a,i(w(1),w(1)):
@a,i(w(2),i(w(1),w(1))):
~b,i(w(2),i(w(1),w(1))):
~a,
(w(2),i(w(1),w(1))): ~ (a+b),i(w(1),w(1)): ~ $(a+b),i(w(1),w(1)): ~ (@a+ $b-> $ (a+b))]***completed
branch 2
[i(w(1),w(1)): ~ @a,i(w(1),w(1)): @a+ $b]<--->[i(w(2),i(w(1),w(1))): ~b,i(w(2),i(w(1),w(1))): ~a,i(w(2),i(w(1),w(1))): ~ (a+b),
(w(1),w(1)): ~ $ (a+b),i(w(1),w(1)): ~ (@a+ $b-> $ (a+b))]
ni elimination
[i(vw(1),i(w(1),w(1))): ~a,i(w(1),w(1)): @a+ $b]<--->[i(w(1),w(1)): ~ @a,i(w(2),i(w(1),w(1))): ~b,i(w(2),i(w(1),w(1))): ~a,
(w(2),i(w(1),w(1))): ~ (a+b),i(w(1),w(1)): ~ $ (a+b),i(w(1),w(1)): ~ (@a+ $b-> $ (a+b))]
literal
i(w(1),w(1)): @a+ $b, i(w(1),w(1)): ~ @a unify in d
[i(w(1),w(1)): @a+ $b]<--->[i(vw(1),i(w(1),w(1))): ~a,i(w(1),w(1)): ~ @a,i(w(2),i(w(1),w(1))): ~b,i(w(2),i(w(1),w(1))): ~a,
(w(2),i(w(1),w(1))): ~ (a+b),i(w(1),w(1)): ~ $ (a+b),i(w(1),w(1)): ~ (@a+ $b-> $ (a+b))]
beta elimination 1
KED: A Deontic Theorem Prover
[i(w(1),w(1)): $b]<--->[@a+ $b,i(vw(1),i(w(1),w(1))): ~a,i(w(1),w(1)): ~ @a,i(w(2),i(w(1),w(1))): ~b,i(w(2),i(w(1),w(1))): ~a,
(w(2),i(w(1),w(1))): ~ (a+b),i(w(1),w(1)): ~ $ (a+b),i(w(1),w(1)): ~ (@a+ $b-> $ (a+b))]
ni elimination
[i(vw(1),i(w(1),w(1))):b]<--->[i(w(1),w(1)): $b,@a+ $b,i(vw(1),i(w(1),w(1))): ~a,i(w(1),w(1)): ~ @a,i(w(2),i(w(1),w(1))): ~b,
(w(2),i(w(1),w(1))): ~a,i(w(2),i(w(1),w(1))): ~ (a+b),i(w(1),w(1)): ~ $ (a+b),i(w(1),w(1)): ~ (@a+ $b-> $ (a+b))]
literal
i(w(2),i(w(1),w(1))): ~b, i(vw(1),i(w(1),w(1))):b unify in d
[i(vw(1),i(w(1),w(1))):b,i(w(1),w(1)): $b,@a+ $b,i(vw(1),i(w(1),w(1))): ~a,i(w(1),w(1)): ~ @a,i(w(2),i(w(1),w(1))): ~b,
(w(2),i(w(1),w(1))): ~a,i(w(2),i(w(1),w(1))): ~ (a+b),i(w(1),w(1)): ~ $ (a+b),i(w(1),w(1)): ~ (@a+ $b-> $ (a+b))] ***closed
satisfiable in d
in 267 msecs.
References
[ACG94a] A. Artosi, P. Cattabriga and G. Governatori. KEM: A Modal Theorem Prover.
Forthcoming in Annali dell'Università di Ferrara, Sez. III, Fil., Discussion paper
series.
[ACG94b] A. Artosi, P. Cattabriga and G. Governatori. An Automated Approach to
Deontic Reasoning. Paper submitted to the ECAI Workshop on Artificial Normative
Reasoning.
[AE92] Y. Auffray, and P. Enjalbert. Modal Theorem Proving: An Equational Wiewpoint.
Journal of Logic and Computation, 2, 1992: 247-259.
[AEH90] Y. Auffray, P. Enjalbert and J-J. Herbrard. Strategies for Modal Resolution:
Results and Problems. Journal of Automated Reasoning, 6, 1990: 1-38.
[AG93] A. Artosi and G. Governatori. Labelled Modal Proofs. In A. Artosi (ed.), Two
Papers in Proof Theory. Annali dell'Università di Ferrara, Sez. III, Fil., Discussion
paper series 33, 1993.
[AG94] A. Artosi and G. Governatori. Labelled Model Modal Logic. Forthcoming in
Proceedings of The CADE 12 Workshop on Automated Model Building.
[Åq87] L. Aqvist. Introduction to Deontic Logic and the Theory of Normative Systems,
Bibliopolis, Napoli, 1987.
[Bel87] M. Belzer. Legal Reasoning in 3-D. In Proceedings of the First International
Conference on Artificial Intelligence and Law, ACM Press, New York, 1987: 15563.
[Boo79] G. Boolos. The Unprovability of Consistency. Cambridge University Press,
Cambridge, 1979.
[Cat91] L. Catach. Tableaux: A General Theorem Prover for Modal Logics. Journal of
Automated Reasoning, 7, 1991: 489-510.
[Ch80] B. F. Chellas. Modal Logic: An Introduction. Cambridge University Press,
Cambridge, 1980.
[Cha87] M. Chan. The Recursive Resolution Method for Modal Logic. New Generation
Computing, 5, 1987: 155-183.
[Cia86] M. Cialdea. Some Remarks on the Possibility of Extending Resolution Proof
Procedures to Intuitionistic Logic. Information Processing Letters, 22, 1986: 87-90.
KED: A Deontic Theorem Prover
[DG93] M. D'Agostino and D.M. Gabbay. Labelled Refutation Systems: A Case-study.
Draft Manuscript, Imperial College, March 1993.
[DM94] M. D'Agostino and M. Mondadori. The Taming of the Cut. Forthcoming in
Journal of Logic and Computation, 4, 1994.
[DP94] M. D'Agostino and J. Pitt. Private comunication.
[EF89] P. Enjalbert and L. Fariñas del Cerro. Modal Resolution in Clausal Form.
Theoretical Computer Science, 1, 1989: 1-33.
[Far85] L. Fariñas del Cerro. Resolution Modal Logic. Logique et Analyse, 110-111, 1985:
152-172.
[Far86] L. Fariñas del Cerro. Molog: A System That Extends Prolog with Modal Logic.
New Generation Computing, 4, 1986: 35-50.
[FH88] L. Fariñas del Cerro and Andreas Herzig. Linear Modal Deductions. Lecture Notes
in Computer Science, 310, Springer-Verlag, 1988: 487-499.
[Fi66] F. B. Fitch, Tree Proofs in Modal Logic (abstract). Journal of Symbolic Logic, 31,
1966: 152.
[Fit72] M. Fitting, Tableau Methods of Proof for Modal Logic. Notre Dame Journal of
Formal Logic, 13, 1972: 237-247.
[Fit83] M. Fitting. Proof Methods for Modal and Intuitionistic Logic, Reidel, Dordrecht,
1983.
[Fit88] M. Fitting. First-Order Modal Tableaux. Journal of Automated Reasoning, 4, 1988:
191-213.
[GD88] C. Groeneboer and J. Delgrande. Tableau-Based Theorem Proving in Normal
Conditional Logics. In :Proceedings AAAI '88: 171-176.
[Gen93] I. P. Gent. Theory Matrices (for Modal Logics) Using Alphabetical Monotonicity.
Studia Logica, 52.1993: 233-257.
[Han65] W. H. Hanson. Semantics for Deontic Logic. Logique et Analyse, 31, 1965: 177190.
[JP85] A. J. I. Jones and I. Pörn. Idality, Sub-Ideality and Deontic Logic. Synthese, 65,
1985: 275-290.
[JR89] P. Jackson and H. Reichgelt. A General Proof Method for Modal Predicate Logic.
In P. Jackson, H. Reichgelt, and F. van Harmelen. Logic-Based Knowledge
Representation. The MIT Press, Cambridge, Mass., 1989.
[McC83] L.T. McCarty. Permissions and Obligations. In Proceedings of the Eighth
International Joint Conference on Artificial Intelligence. Morgan Kaufmann
Publishers, Karlsruhe, 1983: 287-294.
[McC86] L.T. McCarty. Permissions and Obligations: An Informal Introduction. In A.A.
Martino and F. Socci Natali (eds.), Automated Analysis of Legal Texts: Logic,
Informatics, Law. North-Holland, Amsterdam, 1986: 307-337.
[Mon88] M. Mondadori. Classical Analytical Deduction. Annali dell'Università di
Ferrara, Sez. III, Fil., Discussion paper series 1, 1988.
KED: A Deontic Theorem Prover
[Ohl87] H. J. Ohlbach. A Resolution Calculus for Modal Logics. Lecture Notes in
Computer Science, 310, Springer-Verlag, 1987: 500-516.
[Ohl89] H. J. Ohlbach. New Ways for Developing Proof Theories for First-Order Multi
Modal Logics. Lecture Notes in Computer Science, Springer-Verlag, 1989:271-308.
[Ohl91] H. J. Ohlbach. Semantics-Based translation Methods for Modal Logics. Journal of
Logic and Computation 1, 1991: 691-746.
[Ohl93] H. J. Ohlbach. Translation Methods for Non -Classical Logics: An Overview.
Bulletin of the IGPL 1, 1993: 69-89.
[Sus87] R.E. Susskind. Expert Systems in Law: A Jurisprudential Inquiry. Clarendon
Press, Oxford, 1987.
[Tap87] B. L. Tapscott. A Simplified Natural Deduction Approach to Certain Modal
Systems. Notre Dame Journal of Formal Logic, 28, 1987: 371-383.
[Wal90] L. A. Wallen. Automated Deduction in Non-Classical Logics, The MIT Press,
Cambridge, Mass., 1990.
[Wol85] P. Wolper. The Tableau Method for Temporal Logic: an Overview. Logique et
Analyse, 110-111, 1985: 119-136.
[Wri85] G. Wrightson. Non-Classical Logic Theorem Proving, Journal of Automated
Reasoning, 1, 1985: 35-37.