Logic Programming Languages

Download Report

Transcript Logic Programming Languages

Logic Programming
Tarik Booker
What will we cover?
 Introduction
 Definitions
 Predicate
Calculus
 Prolog
 Applications
What is Logic Programming?
 Simply
programming that uses a form of symbolic
logic (predicate calculus) as a programming
language
 Languages
based on this type of programming are
called Logic Programming Languages
 (Also
known as declarative languages)
Definitions (1)
Predicate Calculus:
 Proposition – a logical statement that may or may
not be true
 Atomic
– consist of compound terms
 Compound Terms
– element of a mathematical
relation
– function symbol that names the relation
 Ordered list – parameters
 Functor
man(bob)
like(bob, steak)
Definitions (2)
Clausal Form: B1  B2  B3  A1  A2  A3
– right side of a clausal form
 Consequent – left side of a clausal form
 Antecedent
Semantics – there is a simple way to
determine the meaning of each statement
 Declarative
Prolog
Logic Programming Language
 Definitions:

Term – a constant, variable or structure
 Constant – only an atom (synbolic value) or an integer
 Variable – any string of letters, digits, or underscores that begins
with an uppercase letter
 Structure – atomic propositions of predicate calculus



Ex: mystruct(parameter list)
Instantiation – a binding of a value to a variable
Sample Prolog (Fact Statements)
Fact Statements:
 male(bill).
 male(jack).
 father(bill,
jack).
Which is Correct?
 Bill
is Jack’s father?
 Jack is Bill’s father?
(Answer)
 Either
way!
 There are no intrinsic semantics in Prolog (just like
Predicate Calculus)
 Can be interpreted by the programmer in any way
he/she likes.
Sample Prolog (Rule Statements)
 Consequence_1
:- Antecedent_expression
 Examples:
 female(shelley),
child(shelley).
 ancestor(mary, shelley) :- mother(mary, shelley).
(If Mary is the mother of Shelley, then Mary is the
ancestor of Shelley)
Goal Statements
 Queries
are known as goals in Prolog.
 Example:
father(jason, freddy).
father(X, freddy).
Inferencing
 You
want a goal.
 When the goal is a compound proposition, each of
the facts (structures) is called a subgoal
 To prove a goal is true, the inferencing process
muse connect the goal to one or more facts in the
database
 Proving a subgoal is known as satisfying the
subgoal
Inferencing Example

Database contains:
father(bob).
 man(X) :- father(X).


Your goal (query):

man(bob).
Forward Chaining – bottom-up resolution (start with facts,
find goal)
 Backward Chaining – top-down resolution(start with goal,
find facts)

Inferencing (2)
Forward Chaining: better when the number of possible
correct answers is large
 Backward Chaining: better when there is a reasonable
small set of candidate answers
 When goal has more than one structure, we must search:

Depth-first – finds a proof for the first subgoal beforw working
on the others
 Breadth-first – works on all subgoals in parallel
 Prolog uses depth-first, because it utilizes fewer resources
 Backing up in a goal to a previously proven subgoal is known as
backtracking

Applications of Logic Programming
 Relational
Database Management Systems
 Expert Systems – emulate human expertise in
some particular domain
 Natural Language Processing
Resources Used
Sebesta, Robert W.
Concepts of Programming Languages
(4th Edition)