Slides set 9
Download
Report
Transcript Slides set 9
Logic Programming
Formal Logics- Recap
• Formulas
– w/out quantifiers
• Free Variables
• Bound Variables
• Assignments and satisfaction
• Validity and satisfiability
Formal Logics- Proofs
• Satisfaction of a formula should be proved
– Based on facts (assertions, assumptions, axioms)
and inference rules
• We are led to a notion of Proof Trees
– Why trees?
• Proofs are informative!
– E.g. assignment to an existential variable
Logic and Programming
• Can we automate the process of proving
logical statements?
• First we need a syntax for defining assertions,
rules,..
• Then we need an automated proof system
Logic and Programming
• Can we automate the process of proving logical
statements?
• First we need a syntax for defining facts, rules,
statements to-be-proved
• Then we need an automated proof system
• Note that in principle we may need to use a fact
multiple times so no a-priori bound on the proof size
Applications
• Theory behind database query languages is
based on logic
– Querying a database = looking for a satisfying
assignment to a query, based on the database
facts
• Automated Verification
– Describe (e.g. Java) program as logical rules,
constraints on behavior as query
• Automated Theorem Proving
Is it even feasible?
• Hilbert’s first decision problem: given a first
order logic formula, decide whether it is
satisfiable
• Undecidable!
Tradeoff
• Classic tradeoff between expressive power of
languages and complexity of evaluation
• There are decidable fragments of First Order
Logic which are still quite expressive
• SQL, Datalog, Description Logic, Prolog,…
Sub-cases
• We start with Relational Logic Programming
– Facts are relations between elements, relatively
simple rules allow to infer new relations
• Then move on to Full Logic Programming
– Allow function symbols etc.
Syntax
• We consider the Prolog syntax for describing
facts and rules
• Very similar to the Datalog syntax
• Other LP languages use different syntax, but
similar ideas
Facts
•
•
•
•
•
•
•
% Signature: parent(Parent, Child)/2
% Purpose: Parent is a parent of Child
parent(rina, moshe).
parent(rina, rachel).
parent(rachel, yossi).
parent(reuven, moshe).
% Signature: male(Person)/1
•
•
•
•
•
•
•
•
% Purpose: Person is a male.
male(moshe).
male(yossi).
male(reuven).
% Signature: female(Person)/1
% Purpose: Person is a female.
female(rina).
female(rachel).
Variables and constants
• Variables begin with an upper-case, constants
with lower-case
• Variables in facts are universally quantified
Rules
• father(Dad, Child) :parent(Dad, Child), male(Dad).
• ancestor (Anc, Child) :parent(Anc, X), ancestor(X, Child).
Queries
• ?- father(D,C).
– D = reuven,
– C = moshe.
• ?- father(reuven,moshe).
– true.
• ?- mother(M,C).
–
–
–
–
–
–
–
M = rina,
C = moshe ;
M = rina,
C = rachel ;
M = rachel,
C = yossi ;
fail.
Variables
• Variables in facts are universally quantified
– In queries they are existentially quantified
• father(X,Ron).
• ?- father(Y,Ron).
true
Proofs