phemmer,
Modes Ponens, Modes Tollens, introduction...
There are others too...
Addition:
A -> (A or B)
Double Negation:
~~A -> A
Biconditional to Conditional:
(A <-> B) -> (A -> B) & (B -> A)
All that aside, given any statement, it can be converted to a conjunction of disjunctions. Given that, any conjunction of disjunction may be converted to a set of definitions for each predicate in each disjunction. Like this:
Given the two disjunctions:
A | B | C
A | D
becomes:
A <- ~B & ~C
A <- ~D
B <- ~A & ~C
C <- ~A & ~B
D <- ~A
which becomes:
A <- (~B & ~C) | ~D
B <- ~A & ~C
C <- ~A & ~B
D <- ~A
We now have a 'definition' for each predicate.
Now, let's say we were to do a query asking if A is true. First we see if A is just plain asserted in the knowledge base. In this case, it is not. So, we must go to the definition of A, which is:
(~B & ~C) | ~D.
If both ~B and ~C are asserted, then we can say that A is true. In this case, neither is asserted. So, we see if ~D is asserted, because that would also mean A is true. In this case, ~D is not asserted either, so we need to expand the definition. In this case, there is no definition for ~B, ~C, and ~D, so we are done. The answer is "I don't know".
Now, actually there is another process occuring at the same time. And that is an attempt to see if ~A is true, because if we can show that, then we can say that A is not true and stop the attempt to show that A is true. However, in this case, there is no definition for the predicate ~A, nor an assertion saying ~A is true, so that process stops.
Our answer is: "I don't know".
During the expansion of the predicate to it's definition, we make sure that we have not expanded that same predicate with the same potential variable bindings because it is pointless to prove something by attempting to prove the same thing as a subgoal. Likely the most efficient way to test this is with hash tables.
Lastly, in regards to the scientific process, I am well aware of that. However, to pursue it in such a rigorous way would take as long as applying what is known and seeing how efficient an algorithm one can come up with. It will become clear soon enough whether the problem is tractable given the intended application of it.
![](http://www.bryan.1-sh.com/gallery/images/banner2.JPG)
Edited by - bishop_pass on June 10, 2001 5:17:10 AM