91
Tutorial: logic programming Markus Krötzsch Institute AIFB, Universität Karlsruhe [email protected] Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 1 / 37

Tutorial: logic programming - korrekt.orgkorrekt.org/talks/Logic-Programming.pdf · Tutorial: logic programming Markus Krötzsch Institute AIFB, Universität Karlsruhe [email protected]

Embed Size (px)

Citation preview

Tutorial: logic programming

Markus Krötzsch

Institute AIFB, Universität [email protected]

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 1 / 37

Outline

1 Basics

2 Propositional logic programs

3 Definite logic programs

4 Normal programs

5 F-Logic

6 Summary

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 2 / 37

Outline

1 Basics

2 Propositional logic programs

3 Definite logic programs

4 Normal programs

5 F-Logic

6 Summary

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 3 / 37

Rules

A (logic programming) rule is a formula of the form

B1 ∧ B2 ∧ . . . ∧ Bn︸ ︷︷ ︸

Body

→ H1 ∨ H2 ∨ . . . ∨ Hm︸ ︷︷ ︸

Head

Bi and Hj are usually literals, i.e. negated or non-negated logicalatoms

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 4 / 37

Rules

A (logic programming) rule is a formula of the form

B1 ∧ B2 ∧ . . . ∧ Bn︸ ︷︷ ︸

Body

→ H1 ∨ H2 ∨ . . . ∨ Hm︸ ︷︷ ︸

Head

Bi and Hj are usually literals, i.e. negated or non-negated logicalatoms

Disjunctions in the body are not needed:

A ∨ B → C ⇒A → CB → C

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 4 / 37

Rules

A (logic programming) rule is a formula of the form

B1 ∧ B2 ∧ . . . ∧ Bn︸ ︷︷ ︸

Body

→ H1 ∨ H2 ∨ . . . ∨ Hm︸ ︷︷ ︸

Head

Bi and Hj are usually literals, i.e. negated or non-negated logicalatoms

Disjunctions in the body are not needed:

A ∨ B → C ⇒A → CB → C

Conjunctions in the head are not needed:

A → B ∧ C ⇒A → BA → C

{ Lloyd-Topor translations

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 4 / 37

Clauses

In classical logic, implications are disjunctions:

B → H ≡ ¬B ∨ H

For a rule, we obtain:

B1 ∧ B2 ∧ . . . ∧ Bn → H1 ∨ H2 ∨ . . . ∨ Hm

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 5 / 37

Clauses

In classical logic, implications are disjunctions:

B → H ≡ ¬B ∨ H

For a rule, we obtain:

B1 ∧ B2 ∧ . . . ∧ Bn → H1 ∨ H2 ∨ . . . ∨ Hm

≡ ¬(B1 ∧ B2 ∧ . . . ∧ Bn) ∨ H1 ∨ H2 ∨ . . . ∨ Hm

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 5 / 37

Clauses

In classical logic, implications are disjunctions:

B → H ≡ ¬B ∨ H

For a rule, we obtain:

B1 ∧ B2 ∧ . . . ∧ Bn → H1 ∨ H2 ∨ . . . ∨ Hm

≡ ¬(B1 ∧ B2 ∧ . . . ∧ Bn) ∨ H1 ∨ H2 ∨ . . . ∨ Hm

≡ ¬B1 ∨ ¬B2 ∨ . . . ∨ ¬Bn ∨ H1 ∨ H2 ∨ . . . ∨ Hm

Disjunctions of literals are called clauses

{ rules as clauses

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 5 / 37

Outline

1 Basics

2 Propositional logic programs

3 Definite logic programs

4 Normal programs

5 F-Logic

6 Summary

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 6 / 37

Propositional logic programs

A propositional logic program . . .

is a finite set of rules which are

propositional: only propositional atoms,

definite: exactly one atom in the head.

General form: B1 ∧ B2 ∧ . . . ∧ Bn → H

Common syntax: H D B1,B2, . . . ,Bn

Fact: rule with empty body ({ body vacuously true)

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 7 / 37

Example

abc D ae D b, de D b, ce D a, b, e

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 8 / 37

Semantics of propositional programs

Standard semantics of propositional logic:

An interpretation I . . .

is a mapping ·I from formulae to {t , f }, such that

(A ∧ B)I = t iff AI = t and BI = t ,

(A ∨ B)I = t iff AI = t or BI = t ,

¬AI = t iff AI = f .

{We can view interpretations as sets of (true) atoms

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 9 / 37

Semantics of propositional programs

Standard semantics of propositional logic:

An interpretation I . . .

is a mapping ·I from formulae to {t , f }, such that

(A ∧ B)I = t iff AI = t and BI = t ,

(A ∨ B)I = t iff AI = t or BI = t ,

¬AI = t iff AI = f .

{We can view interpretations as sets of (true) atoms

Take a set of formulae F (e.g. a propositional program).

I is a model of F if FI = t for all F ∈ F .

A formula G is a consequence of F if GI = t for all models I of F .

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 9 / 37

Bottom-up computation

How can we compute the above semantics?

Observation: every rule has exactly one consequence

Idea: compute all consequences bottom-up, step by step

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 10 / 37

Bottom-up computation

How can we compute the above semantics?

Observation: every rule has exactly one consequence

Idea: compute all consequences bottom-up, step by step

The TP operator

Consider a program P. The function TP maps interpretations tointerpretations:

TP(I) = {H | P contains a rule H D B1, . . . ,Bn such that Bi ∈ I}

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 10 / 37

Bottom-up computation

How can we compute the above semantics?

Observation: every rule has exactly one consequence

Idea: compute all consequences bottom-up, step by step

The TP operator

Consider a program P. The function TP maps interpretations tointerpretations:

TP(I) = {H | P contains a rule H D B1, . . . ,Bn such that Bi ∈ I}

Step-wise computation:

T0P = ∅ Ti+1

P = TP(TiP)

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 10 / 37

Bottom-up computation (2)

Example: P =a c D a e D b, cb e D b, d e D a, b, e

{ T0P = ∅

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 11 / 37

Bottom-up computation (2)

Example: P =a c D a e D b, cb e D b, d e D a, b, e

{ T0P = ∅, T1

P = {a, b}

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 11 / 37

Bottom-up computation (2)

Example: P =a c D a e D b, cb e D b, d e D a, b, e

{ T0P = ∅, T1

P = {a, b}, T2P = {a, b , c}

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 11 / 37

Bottom-up computation (2)

Example: P =a c D a e D b, cb e D b, d e D a, b, e

{ T0P = ∅, T1

P = {a, b}, T2P = {a, b , c}, T3

P = {a, b , c, e}

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 11 / 37

Bottom-up computation (2)

Example: P =a c D a e D b, cb e D b, d e D a, b, e

{ T0P = ∅, T1

P = {a, b}, T2P = {a, b , c}, T3

P = {a, b , c, e}{ T4

P = {a, b , c, e} = T5P = T6

P = . . .

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 11 / 37

Bottom-up computation (2)

Example: P =a c D a e D b, cb e D b, d e D a, b, e

{ T0P = ∅, T1

P = {a, b}, T2P = {a, b , c}, T3

P = {a, b , c, e}{ T4

P = {a, b , c, e} = T5P = T6

P = . . .

I is a fixed point of TP if TP(I) = I

T∞P =⋃

i≥0 TiP is always the least fixed point and the least model

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 11 / 37

Goal-directed computation

Computing all consequences is not efficient.

How can we directly check whether some consequence holds?

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 12 / 37

Goal-directed computation

Computing all consequences is not efficient.

How can we directly check whether some consequence holds?

Reasoning by contradiction

F is a consequence of P iff ¬F ∧ P has no models (i.e. is unsatisfiable).

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 12 / 37

Goal-directed computation

Computing all consequences is not efficient.

How can we directly check whether some consequence holds?

Reasoning by contradiction

F is a consequence of P iff ¬F ∧ P has no models (i.e. is unsatisfiable).

Strategy:

Question: does Q1 ∧ Q2 ∧ . . . ∧Qn follow from P?

Step 1: negate query ¬(Q1 ∧ . . . ∧ Qn)

Step 2: check whether P ∧ ¬(Q1 ∧ . . . ∧Qn) is satisfiable

{ A goal is a formula of the form ¬(Q1 ∧ . . . ∧ Qn){ Goals can be written as D Q1, . . . ,Qn

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 12 / 37

Resolution

How can we check unsatisfiability?{ Check whether a contradictory statements follows!

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 13 / 37

Resolution

How can we check unsatisfiability?{ Check whether a contradictory statements follows!

What is a contradictory statement?

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 13 / 37

Resolution

How can we check unsatisfiability?{ Check whether a contradictory statements follows!

What is a contradictory statement?Recall: an implication is a disjunctionRecall: the empty implication is always false

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 13 / 37

Resolution

How can we check unsatisfiability?{ Check whether a contradictory statements follows!

What is a contradictory statement?Recall: an implication is a disjunctionRecall: the empty implication is always false{ the one and only contradictory rule is “→”

How to compute logic consequences of a program?

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 13 / 37

Resolution

How can we check unsatisfiability?{ Check whether a contradictory statements follows!

What is a contradictory statement?Recall: an implication is a disjunctionRecall: the empty implication is always false{ the one and only contradictory rule is “→”

How to compute logic consequences of a program? { Resolution

The resolution rule:A → B B → C

A → C

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 13 / 37

Resolution

How can we check unsatisfiability?{ Check whether a contradictory statements follows!

What is a contradictory statement?Recall: an implication is a disjunctionRecall: the empty implication is always false{ the one and only contradictory rule is “→”

How to compute logic consequences of a program? { Resolution

The resolution rule:A → B B → C

A → C

More generally:

A1 ∧ . . . ∧ An → Bi B1 ∧ . . . ∧ Bi ∧ . . . ∧ Bm → CA1 ∧ . . . ∧ An ∧ B1 ∧ . . . ∧ Bi−1 ∧ Bi+1 ∧ . . . ∧ Bm → C

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 13 / 37

SLD-resolution

Fact: only resolutions steps with a goal as a main premise areneeded:

A1 ∧ . . . ∧ An → Bi B1 ∧ . . . ∧ Bi ∧ . . . ∧ Bm →

A1 ∧ . . . ∧ An ∧ B1 ∧ . . . ∧ Bi−1 ∧ Bi+1 ∧ . . . ∧ Bm →

{ linear resolution: apply rules only to the latest goal

Fact: selection of Bi is “don’t care” nondeterministic{ any selectionrule can be chosen

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 14 / 37

SLD-resolution

Fact: only resolutions steps with a goal as a main premise areneeded:

A1 ∧ . . . ∧ An → Bi B1 ∧ . . . ∧ Bi ∧ . . . ∧ Bm →

A1 ∧ . . . ∧ An ∧ B1 ∧ . . . ∧ Bi−1 ∧ Bi+1 ∧ . . . ∧ Bm →

{ linear resolution: apply rules only to the latest goal

Fact: selection of Bi is “don’t care” nondeterministic{ any selectionrule can be chosen

SLD-resolutionSelection-driven, Linear resolution for Definite clauses (a “folkacronym”).

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 14 / 37

SLD-trees and backtracking

Choice of program rule to resolve upon is “don’t known” nondeterministic{ backtracking needed

(1) a (3) c D a (5) e D b, c(2) b (4) e D b, d (6) e D a, b, e

D e

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 15 / 37

SLD-trees and backtracking

Choice of program rule to resolve upon is “don’t known” nondeterministic{ backtracking needed

(1) a (3) c D a (5) e D b, c(2) b (4) e D b, d (6) e D a, b, e

D e(4)

yyssssssssss

D b , d

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 15 / 37

SLD-trees and backtracking

Choice of program rule to resolve upon is “don’t known” nondeterministic{ backtracking needed

(1) a (3) c D a (5) e D b, c(2) b (4) e D b, d (6) e D a, b, e

D e(4)

yyssssssssss

D b , d

(2)

��

D d

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 15 / 37

SLD-trees and backtracking

Choice of program rule to resolve upon is “don’t known” nondeterministic{ backtracking needed

(1) a (3) c D a (5) e D b, c(2) b (4) e D b, d (6) e D a, b, e

D e(4)

yyssssss

ssss

(5)��

D b , d

(2)

��

D b , c

D d

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 15 / 37

SLD-trees and backtracking

Choice of program rule to resolve upon is “don’t known” nondeterministic{ backtracking needed

(1) a (3) c D a (5) e D b, c(2) b (4) e D b, d (6) e D a, b, e

D e(4)

yyssssss

ssss

(5)��

D b , d

(2)

��

D b , c

(2)

��

D d D c

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 15 / 37

SLD-trees and backtracking

Choice of program rule to resolve upon is “don’t known” nondeterministic{ backtracking needed

(1) a (3) c D a (5) e D b, c(2) b (4) e D b, d (6) e D a, b, e

D e(4)

yyssssss

ssss

(5)��

D b , d

(2)

��

D b , c

(2)

��

D d D c

(3)

��

D a

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 15 / 37

SLD-trees and backtracking

Choice of program rule to resolve upon is “don’t known” nondeterministic{ backtracking needed

(1) a (3) c D a (5) e D b, c(2) b (4) e D b, d (6) e D a, b, e

D e(4)

yyssssss

ssss

(5)��

D b , d

(2)

��

D b , c

(2)

��

D d D c

(3)

��

D a

(1)��

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 15 / 37

SLD-trees and backtracking

Choice of program rule to resolve upon is “don’t known” nondeterministic{ backtracking needed

(1) a (3) c D a (5) e D b, c(2) b (4) e D b, d (6) e D a, b, e

D e(4)

yyssssss

ssss

(5)��

(6)

&&MMMMMMMMMM

D b , d

(2)

��

D b , c

(2)

��

D a, b , e

D d D c

(3)

��

D a

(1)��

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 15 / 37

SLD-trees and backtracking

Choice of program rule to resolve upon is “don’t known” nondeterministic{ backtracking needed

(1) a (3) c D a (5) e D b, c(2) b (4) e D b, d (6) e D a, b, e

D e(4)

yyssssss

ssss

(5)��

(6)

&&MMMMMMMMMM

D b , d

(2)

��

D b , c

(2)

��

D a, b , e

(1)��

D d D c

(3)

��

D b , e

(2)

��

D a

(1)��

D e

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 15 / 37

SLD-trees and backtracking

Choice of program rule to resolve upon is “don’t known” nondeterministic{ backtracking needed

(1) a (3) c D a (5) e D b, c(2) b (4) e D b, d (6) e D a, b, e

D e(4)

yyssssss

ssss

(5)��

(6)

&&MMMMMMMMMM

D b , d

(2)

��

D b , c

(2)

��

D a, b , e

(1)��

D d D c

(3)

��

D b , e

(2)

��

D a

(1)��

D e

��� . . .

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 15 / 37

Complexity of propositional programs

Computation with propositional logic programs can be done in P (which iseasy to see from the computation of TP).

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 16 / 37

Outline

1 Basics

2 Propositional logic programs

3 Definite logic programs

4 Normal programs

5 F-Logic

6 Summary

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 17 / 37

Definite logic programs

Instead of propositional atoms, we have a first order language:predicate symbols with some arity, e.g. Rconstants, e.g. a, bfunction symbols with some arity, e.g. f , gvariables, e.g. X , Y

A term is any well-formed expression built from constants, functions,and variables. Terms without variables are called ground.

An atom is an expression R(t1, . . . , tn) with R an n-ary predicate andt1, . . . , tn terms

A definite rule is a rule of the form

H D B1, . . . ,Bm

with H,B1, . . . ,Bm atoms, where m might be 0.

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 18 / 37

What do variables mean?

Variables are universally quantified on rule-level.

Example: uncle(X ,Z) D brother(X ,Y), parent(Y ,Z)

Rules with variables can be read as “macros” for rules obtained byuniformly replacing all variables with ground terms

More generally: variables can be uniformly replaced by any term{substitution

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 19 / 37

Example

number(0)number(s(X)) D number(X)

add(0,Y ,Y)add(s(X),Y ,Z) D add(X , s(Y),Z)

mul(0,Y , 0)mul(s(X),Y ,Z) D mul(X ,Y ,Z ′), add(Y ,Z ′,Z)

Example conclusions:number(s(s(s(0)))), add(s(s((0)), s(0), s(s(s(0)))), . . .

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 20 / 37

Example

number(0)number(s(X)) D number(X)

add(0,Y ,Y)add(s(X),Y ,Z) D add(X , s(Y),Z)

mul(0,Y , 0)mul(s(X),Y ,Z) D mul(X ,Y ,Z ′), add(Y ,Z ′,Z)

Example conclusions:number(s(s(s(0)))), add(s(s((0)), s(0), s(s(s(0)))), . . .

{ Definite programs can encode infinite domains (they can also enforcethem, though not in the above example).

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 20 / 37

Semantics

Definite logic program as abbreviation for infinite propositionalprogram

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 21 / 37

Semantics

Definite logic program as abbreviation for infinite propositionalprogram

Example:number(s(X)) D number(X)

{

number(s(0)) D number(0)number(s(s(0))) D number(s(0))

number(s(s(s(0)))) D number(s(s(0))). . .

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 21 / 37

Semantics

Definite logic program as abbreviation for infinite propositionalprogram

Example:number(s(X)) D number(X)

{

number(s(0)) D number(0)number(s(s(0))) D number(s(0))

number(s(s(s(0)))) D number(s(s(0))). . .

ground atoms instead of propositional atoms

interpretations as sets of (true) ground atoms{ Herbrand interpretation

TP operator defined as before (on the infinite set of ground rules)

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 21 / 37

Goal-directed computation

How can we practically compute consequences?

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 22 / 37

Goal-directed computation

How can we practically compute consequences?{ Compute (partially) ground rules “on demand”{ Two literals represent overlapping sets of ground atoms if they canbe unified.

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 22 / 37

Goal-directed computation

How can we practically compute consequences?{ Compute (partially) ground rules “on demand”{ Two literals represent overlapping sets of ground atoms if they canbe unified.

Example: R(X , f(a)) and R(g(Z),W) are unifiable

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 22 / 37

Goal-directed computation

How can we practically compute consequences?{ Compute (partially) ground rules “on demand”{ Two literals represent overlapping sets of ground atoms if they canbe unified.

Example: R(X , f(a)) and R(g(Z),W) are unifiable{ R(g(Z), f(a)) represents all ground instances both agree on{ substitution σ = {X 7→ g(Z),W 7→ f(a)}

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 22 / 37

Goal-directed computation

How can we practically compute consequences?{ Compute (partially) ground rules “on demand”{ Two literals represent overlapping sets of ground atoms if they canbe unified.

Example: R(X , f(a)) and R(g(Z),W) are unifiable{ R(g(Z), f(a)) represents all ground instances both agree on{ substitution σ = {X 7→ g(Z),W 7→ f(a)}

Resolution on non-ground rules:

A → B B ′ → C(A → C)σ

if Bσ = B ′σ

propositional SLD-resolution can be lifted

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 22 / 37

Example: SLD resolution for definite programs

(1) add(0,Y ,Y)(2) add(s(X),Y ,Z) D add(X , s(Y),Z)

Goal: D add(s(0), s(0),W)

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 23 / 37

Example: SLD resolution for definite programs

(1) add(0,Y ,Y)(2) add(s(X),Y ,Z) D add(X , s(Y),Z)

Goal: D add(s(0), s(0),W)

D add(s(0), s(0),W)

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 23 / 37

Example: SLD resolution for definite programs

(1) add(0,Y ,Y)(2) add(s(X),Y ,Z) D add(X , s(Y),Z)

Goal: D add(s(0), s(0),W)

D add(s(0), s(0),W) + (2) σ1 = {X1 7→ 0,Y1 7→ s(0),Z1 7→ W }

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 23 / 37

Example: SLD resolution for definite programs

(1) add(0,Y ,Y)(2) add(s(X),Y ,Z) D add(X , s(Y),Z)

Goal: D add(s(0), s(0),W)

D add(s(0), s(0),W) + (2) σ1 = {X1 7→ 0,Y1 7→ s(0),Z1 7→ W }

D add(0, s(s(0)),W)

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 23 / 37

Example: SLD resolution for definite programs

(1) add(0,Y ,Y)(2) add(s(X),Y ,Z) D add(X , s(Y),Z)

Goal: D add(s(0), s(0),W)

D add(s(0), s(0),W) + (2) σ1 = {X1 7→ 0,Y1 7→ s(0),Z1 7→ W }

D add(0, s(s(0)),W) + (1) σ2 = {Y2 7→ s(s(0)),W 7→ s(s(0))}

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 23 / 37

Example: SLD resolution for definite programs

(1) add(0,Y ,Y)(2) add(s(X),Y ,Z) D add(X , s(Y),Z)

Goal: D add(s(0), s(0),W)

D add(s(0), s(0),W) + (2) σ1 = {X1 7→ 0,Y1 7→ s(0),Z1 7→ W }

D add(0, s(s(0)),W) + (1) σ2 = {Y2 7→ s(s(0)),W 7→ s(s(0))}

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 23 / 37

Example: SLD resolution for definite programs

(1) add(0,Y ,Y)(2) add(s(X),Y ,Z) D add(X , s(Y),Z)

Goal: D add(s(0), s(0),W)

D add(s(0), s(0),W) + (2) σ1 = {X1 7→ 0,Y1 7→ s(0),Z1 7→ W }

D add(0, s(s(0)),W) + (1) σ2 = {Y2 7→ s(s(0)),W 7→ s(s(0))}

Result: Wσ1σ2 = s(s(0))

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 23 / 37

How hard is this computation?

Extend the earlier example:pow(X , 0, s(0))

pow(X , s(Y),Z) D pow(X ,Y ,Z ′),mul(X ,Z ′,Z)

Goal: D pow(X , s(s(s(N))),XP), pow(Y , s(s(s(N))),YP),pow(Z , s(s(s(N))),ZP), add(XP,YP,ZP)

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 24 / 37

How hard is this computation?

Extend the earlier example:pow(X , 0, s(0))

pow(X , s(Y),Z) D pow(X ,Y ,Z ′),mul(X ,Z ′,Z)

Goal: D pow(X , s(s(s(N))),XP), pow(Y , s(s(s(N))),YP),pow(Z , s(s(s(N))),ZP), add(XP,YP,ZP)

In words:“Which natural numbers satisfy the equation xn + yn = zn, for n > 2?”

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 24 / 37

How hard is this computation?

Extend the earlier example:pow(X , 0, s(0))

pow(X , s(Y),Z) D pow(X ,Y ,Z ′),mul(X ,Z ′,Z)

Goal: D pow(X , s(s(s(N))),XP), pow(Y , s(s(s(N))),YP),pow(Z , s(s(s(N))),ZP), add(XP,YP,ZP)

In words:“Which natural numbers satisfy the equation xn + yn = zn, for n > 2?”

Uh oh . . .

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 24 / 37

How hard is this computation?

Extend the earlier example:pow(X , 0, s(0))

pow(X , s(Y),Z) D pow(X ,Y ,Z ′),mul(X ,Z ′,Z)

Goal: D pow(X , s(s(s(N))),XP), pow(Y , s(s(s(N))),YP),pow(Z , s(s(s(N))),ZP), add(XP,YP,ZP)

In words:“Which natural numbers satisfy the equation xn + yn = zn, for n > 2?”

Uh oh . . .

Definite logic programming is indeed undecidable.

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 24 / 37

How hard is this computation?

Extend the earlier example:pow(X , 0, s(0))

pow(X , s(Y),Z) D pow(X ,Y ,Z ′),mul(X ,Z ′,Z)

Goal: D pow(X , s(s(s(N))),XP), pow(Y , s(s(s(N))),YP),pow(Z , s(s(s(N))),ZP), add(XP,YP,ZP)

In words:“Which natural numbers satisfy the equation xn + yn = zn, for n > 2?”

Uh oh . . .

Definite logic programming is indeed undecidable.But it is semi-decidable: all positive conclusions eventually appear

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 24 / 37

Decidable cases

Non-recursive definite programs

Termination guaranteed for logic programs without recursive rules.

Computational complexity: NET (just like OWL DL)

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 25 / 37

Decidable cases

Non-recursive definite programs

Termination guaranteed for logic programs without recursive rules.

Computational complexity: NET (just like OWL DL)

Datalog

A datalog progam is a definite program without function symbols.

Datalog is decidable

Computational complexity: ET (just like OWL Lite)even with just a single rule and no facts (“sirup”)

Data complexity: P{ useful for deductive databases

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 25 / 37

Outline

1 Basics

2 Propositional logic programs

3 Definite logic programs

4 Normal programs

5 F-Logic

6 Summary

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 26 / 37

Logical programs with negation

Normal logic programs: first-order programs with negation in the body

typically non-monotonic negation

Example:bird(tweety)

bird(tux)penguin(tux)

fly(X) D bird(X), not penguin(X)

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 27 / 37

Negation as failure

How to compute with non-monotonic negation?

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 28 / 37

Negation as failure

How to compute with non-monotonic negation?

Negation as failure:

negated statements are true if it their positive version cannot be derived{ start a new proof tree when encountering negated statements{ SLDNF-resolution (SLD + Negation as Failure)

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 28 / 37

Negation as failure

How to compute with non-monotonic negation?

Negation as failure:

negated statements are true if it their positive version cannot be derived{ start a new proof tree when encountering negated statements{ SLDNF-resolution (SLD + Negation as Failure)

operational, not declarative

implemented in Prolog (usually based on incompleteSLD-implementation, making the system unsound when usingnegation)

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 28 / 37

Semantic issues

What does the following mean?p D not qq D not p

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 29 / 37

Semantic issues

What does the following mean?p D not qq D not p

Classical semantics: p ∨ q

Negation as failure: loop proof search

Intuition(?): neither p nor q “really” hold

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 29 / 37

Semantic issues

What does the following mean?p D not qq D not p

Classical semantics: p ∨ q

Negation as failure: loop proof search

Intuition(?): neither p nor q “really” hold

{ Introduction of three-valued semantics: true, false, unknown

Example: Well-founded semantics

Many different non-monotonic semantics, usually agree on morewell-behaved programs

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 29 / 37

Expressive power

How powerful are non-monotonic semantics?

Recall: in definite programs, we could ask whether there is acounterexample to Fermat’s Last Theorem

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 30 / 37

Expressive power

How powerful are non-monotonic semantics?

Recall: in definite programs, we could ask whether there is acounterexample to Fermat’s Last Theorem

In normal logic programs, we can also ask whether there is no suchcounterexample{ Non-monotonic semantics usually striclty more powerful thanmonotonic variants

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 30 / 37

Expressive power

How powerful are non-monotonic semantics?

Recall: in definite programs, we could ask whether there is acounterexample to Fermat’s Last Theorem

In normal logic programs, we can also ask whether there is no suchcounterexample{ Non-monotonic semantics usually striclty more powerful thanmonotonic variants

Well-founded semantics: not semidecidable (captures Π11-fragment of

second order logic)

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 30 / 37

Outline

1 Basics

2 Propositional logic programs

3 Definite logic programs

4 Normal programs

5 F-Logic

6 Summary

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 31 / 37

F-Logic

“Object oriented” logic programming

different definitions of semantics: classical (first-order) and LP(non-monotonic)

no normative defintions for syntax or semantics

Implementation in ONtoobroker and Flora: assumes well-foundedsemantics (and computes unspecified parts of it){ systems cannot return all answers or all true answers, even ininfinite time

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 32 / 37

F-Logic example syntax

/* Atoms */

iokaste:woman.

laios:man.

/* Molecules */

oedipus:man[father->laios; mother->iokaste].

polyneikes:man[father->oedipus; mother->iokaste;

sister->>{antigone, ismene};

brother->>eteokles:man]

/* Rules */

FORALL X,Y X[son->>Y] <- Y:man[father->X].

FORALL X,Y X[son->>Y] <- Y:man[mother->X].

/* Queries */

FORALL X,Y <- X:man[sohn->>Y[mother->iokaste]].

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 33 / 37

F-Logic semantics

“Object oriented” notation is translated into facts:

a:C 7→ isa_(a,C)

A::B 7→ sub_(A,B)

a[B->c] 7→ att_(a,B,c)

a[B-»c] 7→ setatt_(a,B,c)

A[B=>C] 7→ atttype_(A,B,C)

A[B=»C] 7→ setatttype_(A,B,C)

Properties of auxilliary predicates such as sub_ described by axioms.

Further syntactic features treated with Lloyd-Topor translations

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 34 / 37

F-Logic semantics

“Object oriented” notation is translated into facts:

a:C 7→ isa_(a,C)

A::B 7→ sub_(A,B)

a[B->c] 7→ att_(a,B,c)

a[B-»c] 7→ setatt_(a,B,c)

A[B=>C] 7→ atttype_(A,B,C)

A[B=»C] 7→ setatttype_(A,B,C)

Properties of auxilliary predicates such as sub_ described by axioms.

Further syntactic features treated with Lloyd-Topor translations

Warning! The above is based on incomplete descriptions in Angele andLausen (2004), which merely sketch the semantics. I know of nonormative public spec of the current implementation in Ontobroker or Flora(which does not say that such documents do not exist).

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 34 / 37

Outline

1 Basics

2 Propositional logic programs

3 Definite logic programs

4 Normal programs

5 F-Logic

6 Summary

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 35 / 37

Summary

Complexity overview:Formalism Complexity Var.? Func.? Neg.?

Propositional programs P — — —Datalog ET-complete × — —Definite programs r.e.-complete × × —— without recursion NET-complete × × —Well-founded semantics Π1

1-complete × × ×

Prolog is based on definite programs

F-Logic is based on well-founded semantics + F-Logic

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 36 / 37

References

J.W. Lloyd. Foundations of Logic Programming. Springer, 1987.

E. Dantsin, T. Eiter, G. Gottlob, and A. Voronkov. Complexity andexpressive power of logic programming. ACM ComputingSurveys, 33(3): 374–425, 2001.

G. A. Ringwood. SLD: a folk acronym? ACM SIGPLAN Notices,24(5): 71–75, 1989.

J. Angele and G. Lausen. Ontologies in F-logic. In S. Staab and R.Studer, editors, Handbook on Ontologies, pages 29–50. Springer,2004.

Markus Krötzsch (AIFB Karlsruhe) Logic programming Oct 24 2006 37 / 37