Answer Set Programming (ASP):
A new Paradigm for Knowledge Representation and Constraint Programming
Some slides are taken from Baral’s talk at AAAI-05
Intelligent Agent
• Can acquire knowledge through various means such as learning from experience, observations, reading, etc., and
• Can reason with this knowledge to make plans, explain observations, achieve goals, etc.
To learn knowledge and to reason with it
• we need to know how to represent knowledge in a computer readable format.
• We need languages and corresponding methodologies to represent various kinds of knowledge.
Inadequacy of first order logic
• They are monotonic: More information one has, more consequences one gets.
• Human communication is typically based on closed world assumption.
An ExampleDoes tweety fly?
fly(x) bird(x), not abnormal(x). bird(tweety). what if we know abnormal(tweety).
Answer Set Programming (ASP) Key idea: A problem is solved by representing it by a logic program whose stable models (also
called answer sets) correspond to solutions to the problem.
The most popular form of programs—normal logic programs, consisting of rules of the form: A B1, …, Bm, not C1, …, not Cn
where A, Bjs and Cks are atoms in propositional logic;
not Ci is called a default negation.
Ground vs Non-Ground
A function-free program can be grounded
p(X) q(X), not s(X) . % Function-free
p(X) q(f(X)), not s(X). % Not function-free
Suppose we have constants a,b,c in our program, the rule
p(X) q(X), not s(X).is a compact representation of three ground
rules p(a) q(a), not s(a). p(b) q(b), not s(b). p(c) q(c), not s(c).
Semantics
Informally, a stable model M of a ground program P is a set of ground atoms such that
• Every rule is satisfied, i.e., for any rule in P
A B1, …, Bm, not C1, …, not Cn.
if Bi are satisfied in M and not Ci are also satisfied (not Cj is satisfied if Cj is not in M), then A is in M.
• Every A M can be derived from a rule by a non-circular reasoning.
Examples
P1 = { a a. } M = {a} is not a stable model (the derivation of a is based on a circular reasoning), but M={} is
P2 = {a not b.} {a} is the only stable model
P3 = {a not a.} It has no stable model
Examples
P4 = {a not b.; b not a.}
Two stable models: {a} and {b}.
Examples
P4 = {a not b.; b not a.}
Two stable models: {a} and {b}.
P5 = {a not b.; b not a.; a not a.}
{a} is the only stable model.
Does tweety fly?
• fly(X) bird(X), not ab(X). ab(X) penguin(X). bird(X) penguin(X). bird(tweety).
- One stable model which contains fly(tweety).
• But if we add– penguin(tweety).– We can no longer conclude fly(tweety) – fly(tweety) is false w.r.t. the only stable model
So, what exactly is a stable model of a normal program
Idea: you guess a set of atoms and verify it is indeed exactly the set of atoms that can be derived
The reduct of P w.r.t. M
= {h b1, …, bm |
h b1, …, bm, not c1, …, not cn is in P
and no ci is in M }
M is a stable model of P iff M is the least model of
MP
MP
Stable model For a normal program without negation (typically called
positive program), its least model is the set of its atomic consequences.
P:
a not b.
b not a.
M = {a} is a stable model, since is
{a .}
its set of (atomic) consequences is precisely M itself.
MP
Stable model
Why
a not a.
has no stable model?
• The empty set {} is not a stable model. (Why?)
• If M={a} were a stable model, the reduct of program wrt {a} is the empty set, whose set of (atomic) consequences is also empty, not the same as M.
Constraints for disallowing …
The head of a rule may be empty:
B1, …, Bm, not C1, …, not Cn.
It says no stable model may contain all Bjs and none of Cjs.
This can actually be encoded by a rule, where f is a new symbol:
f not f, B1, …, Bm, not C1, …, not Cn.
Generate-and-constrain: first generate
To specify both possibilities: a is in a solution or not, we can use a dummy a’
a not a’.
a’ not a.
Two stable models {a}, {a’}; the latter represents that a is not in solution
Generate-and-constrain: first generate
To specify all subsets of {a,b,c}, we can write
a not a’. b not b’. c not c’.
a’ not a. b’ not b. c’ not c.
Eight stable models each corresponding to a subset, e.g. {a, b’,c’} represents that a is in it, but not b, nor c.
Generate-and-constrain: then constrain
Any subset of {a,b,c} such that a and b cannot be together.
a not a’. b not b’. c not c’. a’ not a. b’ not b. c’ not c. a ,b.
• What if we want to say “whenever a is in a stable model, so is b?
3-colorability
Whether 3 colors, say red, blue, and yellow, are sufficient to color a map
A map is represented by a graph, with facts about nodes and arc as given, e.g,
vertex(a).vertex(b).arc(a,b).
3-colorabilityEvery vertex must be colored with exactly one color: color(V,r) vertex(V), not color(V,b), not color(V,y). color(V,b) vertex(V), not color(V,r), not color(V,y). color(V,y) vertex(V), not color(V,b), not color(V,r).
No adjacent vertices may be colored with the same color: vertex(V), vertex(U), arc(V,U),col(C), color(V,C), color(U,C).Of course, we need to say what colors are: col(r). col(b). col(y).
General colorability A different encoding (more general but subtler):
color(V,C) node(V), col(C), not otherColor(V,C).
otherColor(V,C) node(V), col(C), not color(V,C).
node(V), col(C1), col(C2), color(V,C1), color(V,C2), C1 C2.
node(V), col(C), not color(V,C).
node(V), node(U), V U, arc(V,U), col(C ), color(V,C), color(U,C).
Hamiltonian Cycle
Given a set of facts defining the vertices and edges of a directed graph and a starting vertex v0, find a path that visits every vertex exactly once.
Hamiltonian Cycle
Any edge could be on such a path. We use in(U,V) to represent that edge(U,V) is on such a path.
in(U,V) edge(U,V), not out(U,V).
out(U,V) edge(U,V), not in(U,V).
out(U,V) is a dummy representing edge(U,V) is not on such a path.
Hamiltonian Cycle
A path must be chained to form a sequence over the edges on it:
reachable(V) in(v0,V).
reachable(V) reachable(U), in(U,V).
Hamiltonian Cycle
A vertex cannot be visited more than once.• This can be defined as “no more than one edge on such
a path that goes into any vertex (similarly out of such an edge):
edge(U,V),in(U,V), edge(W,V)in(W,V), U W. edge(U,V),in(U,V), edge(U,W),in(U,W), V W.
Hamiltonian Cycle
Don’t forget to say that every vertex must be reached.
vertex(U), not reachable(U).
Extensions: Cardinality constraint
A cardinality constraint is of form
L {a1, …, am, not b1, …, not bk }U The constraint is satisfied by an interpretation I (a set of atoms) if
the cardinality of the subset of the literals satisfied by I is between integers L and U, inclusive.
A cardinality constraint can be used anywhere in a rule.E.g. P = { 0{a, b, not d}2 . } Is the head satisfied by interpretation {a,b}?
Cardinality constraint
Generate all subsets of {a,b,c,d} such that whenever a is in it so is b:
0{a, b, c, d}4 .
b a.
As 4 is the max number of literals that may be satisfied, you may omit it for simplicity
0{a, b, c, d} .
Cardinality constraint
Generate all subsets of {a,b,c,d} such that if a is not in it, then b is in it.
0{a, b, c, d} .
b not a.
Are they stable models?
M1= {a,b,c} M2 = {b,c,d,e}
ASP Systems
• Smodels (Helsinki Univ. of Tech.)
• DLV (Vienna Univ. of Tech.)
• ASSAT (HK Univ. of Sci. and Tech.)
• Cmodel (U. of Texas at Austin)
• Clasp (Universitat Potsdam)
The Smodels System
An efficient system for computing answer sets of normal programs (later exteneded to disjunctive programs).
Consists of two parts• Lparse: ground a program• Smodels: compute the stable models of the
grounded program, based on DPLL.
Smodels
• Syntax largely borrowed from Prolog.
a :- not b.
b :- not a.
:- a.
• A number of language constructs for convenience
Conditional Literals in Smodels
A short hand to express a set. It takes the form l : d where l is an atom and d a domain predicate.E.g. Set a vertex v to exactly one color among red, blue and yellow: 1 {setColor(v,C): color(C)}1. color(red). color(blue). color(yellow).
is equivalent to 1{setColor(v,red), setColor(v,blue), setColor(v,yellow)} 1.
N-colorability
% every vertex is colored with exactly one color.1 {setColor(V,C) : col(C) } 1 :- vertex(V).
% facts representing colorscol(1..colors).
% no adjacent vertices are colored with the same color:- vertex(V), vertex(U), arc(V,U), col(C ), U != V, setColor(V,C),
setColor(U,C).
% Typical command line % lparse -c colors=3 coloring.lp | smodels
Conditional literals in SmodelsExample
1 { p(I,J) : d(I,J) } 1.
d(I,J) :- d(I),d(J).
d(1..2).
The first rule above is equivalent to
1 {p(1,1),p(1,2),p(2,1),p(2,2) } 1.
Conditional literals in SmodelsNote the difference with the following program: 1 { p(I,J) : d(I) } 1 :- d(J). d(1..2).The first rule above is equivalent to 1 { p(I,1) : d(I) } 1 :- d(1). 1 { p(I,2) : d(I) } 1 :- d(2).which are equivalent to 1 {p(1,1),p(2,1)} 1 :- d(1). 1 {p(1,2),p(2,2)} 1 :- d(2).
Hamiltonian Cycle Revisited
Any subset of edges can be on such a path
in(U,V) edge(U,V), not out(U,V).
out(U,V) edge(U,V), not in(U,V).
Now can be programmed as:
0 {in(U,V) : edge(U,V) }.
Represent knowledge about Wumpus World
• There is exactly one wumpus in all rooms: 1 {at(I,J,wumpus) : room(I,J)} 1. room(I,J) :- col(I), row(J).
For a 4 by 4 grid, this is equivalent to exactly one atom being true in the set of 16:
1 {at(1,1,wumpus), at(1,2,wumpus),…….} 1.
One or more adjacent rooms has a pit if breeze at current room:
1 {at(Ni,Nj,pit): adjacent(I,J,Ni,Nj)} :-
room(I,J),
sensor(I,J,none,breeze).
N-queens problem#hide.#show q(X,Y). d(1..queens).1 {q(X,Y):d(Y)} 1 :- d(X). :- d(X), d(Y), d(X1), q(X,Y), q(X1,Y), X1 != X. :- d(X), d(Y), d(Y1), q(X,Y), q(X,Y1), Y1 != Y. :- d(X), d(Y), d(X1), d(Y1), q(X,Y), q(X1,Y1), X != X1, Y != Y1, abs(X - X1) == abs(Y - Y1). :- d(X), not hasq(X). hasq(X) :- d(X), d(Y), q(X,Y). % Typical command line % lparse -c queens=8 queens.lp | smodels
Weight constraints
We can replace cardinality by weights
L {l1, = w1 …, lm = wm }U
where each li is an atom or a not_atom. It’s satisfied when the sum of the satisfied li’’s is between L and U.
When all wi = 1, it becomes a cardinality constraint.