Logic can be seen as statements about A,B - propositions (either True or False).
A & B (A and B): both A and B is True A | B (A or B): either A or B is True
Propose we have a rule in which
A implies B:
if A then B (same as if A=True then B=True)
It is the same as:
not A or B
A is False and
not A is True, so
not A or B is True regardless of B being T or F
Proposition are essential just statements of facts.
A statement connects entities via relationships.
Entities are the variables and predicates are the relationships between the entities.
Rules are putting statements into relationships:
X is commander of C => X is leader of C
Quantification is stating a rule for defined variables. Here it is stating a rule for all X,C
isCommanderOf(X, C) => isLeaderOf(X, C)
In response to a query
isCommander(X, SquadA), C is fixed as it has been bound but X remains variable. One could now look at the bunch of rules and facts which are known in once collection of knowledge and trying to answer this query by reasoning.
Reasoning is answering or deriving new facts (which match to the query).
This is done by a process of unification inference. Unification is binding possible values of the variables. Inference is applying rules using the if A then B format (A -> B) to derive new facts.
The combination of unification and inference is called
The processor reasoning using predicate logic is fairly similar to that of just using propositions with the additional complication that there are variables that need to be bound to different values. If there are lots of facts and different rules then there are also different choices for how different variables are bound to different specific values. This leads to a degree of complexity that renders predicate logical reasoning much more difficult than simple logical inference using a bunch of propositions.