370 likes | 389 Views
CS498-EA Reasoning in AI Lecture #7. Professor: Eyal Amir Fall Semester 2011. Today. Until now: First-order logic basics TODAY: Resolution refutation for FOL Applications: Spatial reasoning, formal verification, mathematics, planning, NLP, …
E N D
CS498-EAReasoning in AILecture #7 Professor: Eyal Amir Fall Semester 2011
Today • Until now: • First-order logic basics • TODAY: Resolution refutation for FOL • Applications: • Spatial reasoning, formal verification, mathematics, planning, NLP, … • Our example: situation calculus & projection to the future
Resolution Theorem Proving • Given: • KB – a set of first-order sentences • Query Q – a logical sentence • Calling procedure: • Add Q to KB • Convert KB into clausal form • Run theorem prover. If we prove contradiction, return T.
Resolution Theorem Proving • Add Q to KB • Convert KB into clausal form • Run theorem prover. If we prove contradiction, return T. Deduction theorem: KB Q iff KB Q FALSE ╨ ╨
Resolution Theorem Proving • Add Q to KB • Convert KB into clausal form • Run theorem prover. If we prove contradiction, return T. Deduction theorem: KB Q iff KB Q FALSE ╨ ╨
First-Order Resolution • Resolution inference rule: C1: P(t1,…,tk) C1’(t1,…,tk) C2: P(s1,…,sk) C2’(s1,…,sk) mgu(<t1,…,tk>,<s1,…,sk>) = {r1,…,rn} -------------------------------------------- C3: (C1’ C2’) {r1,…,rn}
First-Order Resolution • Resolution algorithm (saturation): • While there are unresolved C1,C2: • Select C1, C2 in KB • If C1, C2 are resolvable, resolve them into a new clause C3 • Add C3 to KB • If C3={ } return T. • STOP C1: P(t1,…,tk) C1’(t1,…,tk) C2: P(s1,…,sk) C2’(s1,…,sk) mgu(<t1,…,tk>,<s1,…,sk>) = {r1,…,rn} -------------------------------------------- C3: (C1’ C2’) {r1,…,rn}
Resolution in Action C1: P(t1,…,tk) C1’(t1,…,tk) C2: P(s1,…,sk) C2’(s1,…,sk) mgu(<t1,…,tk>,<s1,…,sk>) = {r1,…,rn} -------------------------------------------- C3: (C1’ C2’) {r1,…,rn} On board KB Negated Query
Resolution in Action C1: P(t1,…,tk) C1’(t1,…,tk) C2: P(s1,…,sk) C2’(s1,…,sk) mgu(<t1,…,tk>,<s1,…,sk>) = {r1,…,rn} -------------------------------------------- C3: (C1’ C2’) {r1,…,rn} On board KB Negated Query
First-Order Resolution • Resolution algorithm (saturation): • While there are unresolved C1,C2: • Select C1, C2 in KB • If C1, C2 are resolvable, resolve them into a new clause C3 • Add C3 to KB • If C3={ } return T. • STOP C1: P(t1,…,tk) C1’(t1,…,tk) C2: P(s1,…,sk) C2’(s1,…,sk) mgu(<t1,…,tk>,<s1,…,sk>) = {r1,…,rn} -------------------------------------------- C3: (C1’ C2’) {r1,…,rn}
First-Order Resolution Rule (2) If C1, C2 are resolvable, resolve them into a new clause C3 If C1,C2 have two literals l1,l2 with same predicates (P) and opposite polarity, and If l1= P(t1,…,tk), l2= P(s1,…,sk), unifiable with mgu (most general unifier) {r1,…,rn}, then… C1: P(t1,…,tk) C1’(t1,…,tk) C2: P(s1,…,sk) C2’(s1,…,sk) mgu(<t1,…,tk>,<s1,…,sk>) = {r1,…,rn} -------------------------------------------- C3: (C1’ C2’) {r1,…,rn}
Unification …P(t1,…,tk),P(s1,…,sk), unifiable with mgu (most general unifier) σ={r1,…rk} • Substitution: replace vars. by terms • Term: constant, variable, or a function of terms • Composition of substitutions {x/g(w,v)} {w/A,v/f(B,z)} = {x/g(A,f(B,z),w/A,v/f(B,z)} {x/B,y/z} {x/B,y/z,x/w} {x/B,y/z,z/w} (P(x) v Q(f(x)) v P(g(B,x)) v P(f(y))) {x/B,y/z} (P(B) v Q(f(B)) v P(g(B,B)) v P(f(z)))
Unification • Unification: find a substitution σ for • C1: P(t1,…,tk) C1’(t1,…,tk) • C2: P(s1,…,sk) C2’(s1,…,sk) such that P(t1,…,tk)σ = P(s1,…,sk)σ P(A,y,g(x,y)){y/f(A)} = P(z,f(z),g(x,f(w))){z/A,w/A} σ={y/f(A),z/A,w/A} P(A,y,g(x,y)){y/f(w)} = P(z,f(w),g(x,f(w))){z/A} σ={y/f(w),z/A} Most general unifier
Unification • Substitution σ1 more general than σ2 if there is substitution γ such that σ1 γ = σ2 P(A,y,g(x,y)){y/f(A)} = P(z,f(z),g(x,f(w))){z/A,w/A} σ={y/f(A),z/A,w/A} P(A,y,g(x,y)){y/f(w)} = P(z,f(w),g(x,f(w))){z/A} σ={y/f(w),z/A} Most general unifier
Unification • Substitution σ1 more general than σ2 if there is substitution γ such that σ1 γ = σ2 σ2={y/f(A),z/A,w/A} γ={w/A} σ1={y/f(w),z/A} Most general unifier
Finding the MGU Procedure MGU(x,y) • If x=y, return { } • If x or y are vars., return MGUvar(x,y) • If x or y are const.,or Len(x)=/=Len(y), return F. • σ ← { }; For i ← 1 to Len(x) • s ← MGU(part(i,x),part(i,y)); if s=F, return F. • σ ← compose(σ,s); x ← subst(x,σ); y ← subst(y,σ); • Return σ x = P(A,y,g(x,y)) y = P(z,f(w),g(v,w))
Finding the MGU Procedure MGU(x,y) • If x=y, return { } • If x or y are vars., return MGUvar(x,y) • If x or y are const.,or Len(x)=/=Len(y), return F. • σ ← { }; For i ← 1 to Len(x) • s ← MGU(part(i,x),part(i,y)); if s=F, return F. • σ ← compose(σ,s); x ← subst(x,σ); y ← subst(y,σ); • Return σ x = P(A,y,g(x,y)) y = P(z,f(w),g(v,w))
Finding the MGU Procedure MGU(x,y) • If x=y, return { } • If x or y are vars., return MGUvar(x,y) • If x or y are const.,or Len(x)=/=Len(y), return F. • σ ← { }; For i ← 1 to Len(x) • s ← MGU(part(i,x),part(i,y)); if s=F, return F. • σ ← compose(σ,s); x ← subst(x,σ); y ← subst(y,σ); • Return σ x = P(A,y,g(x,y)) y = P(z,f(w),g(v,w))
Finding the MGU Procedure MGU(x,y) • If x=y, return { } • If x or y are vars., return MGUvar(x,y) • If x or y are const.,or Len(x)=/=Len(y), return F. • σ ← { }; For i ← 1 to Len(x) • s ← MGU(part(i,x),part(i,y)); if s=F, return F. • σ ← compose(σ,s); x ← subst(x,σ); y ← subst(y,σ); • Return σ x = P(A,y,g(x,y)) y = P(z,f(w),g(v,w))
Finding the MGU Procedure MGU(x,y) • If x=y, return { } • If x or y are vars., return MGUvar(x,y) • If x or y are const.,or Len(x)=/=Len(y), return F. • σ ← { }; For i ← 1 to Len(x) • s ← MGU(part(i,x),part(i,y)); if s=F, return F. • σ ← compose(σ,s); x ← subst(x,σ); y ← subst(y,σ); • Return σ x = P(A,y,g(x,y)) y = P(z,f(w),g(v,w))
Finding the MGU Procedure MGU(x,y) • If x=y, return { } • If x or y are vars., return MGUvar(x,y) • If x or y are const.,or Len(x)=/=Len(y), return F. • σ ← { }; For i ← 1 to Len(x) • s ← MGU(part(i,x),part(i,y)); if s=F, return F. • σ ← compose(σ,s); x ← subst(x,σ); y ← subst(y,σ); • Return σ Occurs check F x = P(A,y,g(x,y)) y = P(z,f(w),g(v,w)) part(3,x) = y part(3,y) = f(w) part(1,x) = P part(1,y) = P part(2,x) = A part(2,y) = z part(4,x) = g(x,f(w)) part(4,y) = g(v,w)
Finding the MGU: another example Procedure MGU(x,y) • If x=y, return { } • If x or y are vars., return MGUvar(x,y) • If x or y are const.,or Len(x)=/=Len(y), return F. • σ ← { }; For i ← 1 to Len(x) • s ← MGU(part(i,x),part(i,y)); if s=F, return F. • σ ← compose(σ,s); x ← subst(x,σ); y ← subst(y,σ); • Return σ x = P(A,y,g(x,y)) y = P(z,f(w),g(v,f(w)))
Finding the MGU: another example Procedure MGU(x,y) • If x=y, return { } • If x or y are vars., return MGUvar(x,y) • If x or y are const.,or Len(x)=/=Len(y), return F. • σ ← { }; For i ← 1 to Len(x) • s ← MGU(part(i,x),part(i,y)); if s=F, return F. • σ ← compose(σ,s); x ← subst(x,σ); y ← subst(y,σ); • Return σ x = P(A,y,g(x,y)) y = P(z,f(w),g(v,f(w)))
Finding the MGU: another example Procedure MGU(x,y) • If x=y, return { } • If x or y are vars., return MGUvar(x,y) • If x or y are const.,or Len(x)=/=Len(y), return F. • σ ← { }; For i ← 1 to Len(x) • s ← MGU(part(i,x),part(i,y)); if s=F, return F. • σ ← compose(σ,s); x ← subst(x,σ); y ← subst(y,σ); • Return σ x = P(A,y,g(x,y)) y = P(z,f(w),g(v,f(w)))
Finding the MGU: another example Procedure MGU(x,y) • If x=y, return { } • If x or y are vars., return MGUvar(x,y) • If x or y are const.,or Len(x)=/=Len(y), return F. • σ ← { }; For i ← 1 to Len(x) • s ← MGU(part(i,x),part(i,y)); if s=F, return F. • σ ← compose(σ,s); x ← subst(x,σ); y ← subst(y,σ); • Return σ x = P(A,y,g(x,y)) y = P(z,f(w),g(v,f(w)))
Finding the MGU: another example Procedure MGU(x,y) • If x=y, return { } • If x or y are vars., return MGUvar(x,y) • If x or y are const.,or Len(x)=/=Len(y), return F. • σ ← { }; For i ← 1 to Len(x) • s ← MGU(part(i,x),part(i,y)); if s=F, return F. • σ ← compose(σ,s); x ← subst(x,σ); y ← subst(y,σ); • Return σ x = P(A,y,g(x,y)) y = P(z,f(w),g(v,f(w)))
Finding the MGU: another example Procedure MGU(x,y) • If x=y, return { } • If x or y are vars., return MGUvar(x,y) • If x or y are const.,or Len(x)=/=Len(y), return F. • σ ← { }; For i ← 1 to Len(x) • s ← MGU(part(i,x),part(i,y)); if s=F, return F. • σ ← compose(σ,s); x ← subst(x,σ); y ← subst(y,σ); • Return σ x = P(A,y,g(x,y)) y = P(z,f(w),g(v,f(w))) part(3,x) = y part(3,y) = f(w) part(1,x) = P part(1,y) = P part(2,x) = A part(2,y) = z part(4,x) = g(x,f(w)) part(4,y) = g(v,f(w)) σ={y/f(w),z/A,v/x}
Correctness of FOL Resolution • Soundness: Resolution is sound for first-order inference • Refutation Completeness: Resolution will find the empty clause, if FALSE is entailed • No guarantee of termination (saturation), if FALSE not entailed: FOL semi-decidable
Simple Efficiency Improvements • Subsumption between clauses: • If clause C subsumes clause D (C entails D), then we can remove D from the KB. {P(A)} {P(A),P(B)} {P(A)} {~P(A)} {P(f(x),A),Q(g(x),B)} {P(f(v),y),Q(g(v),y)} • Algorithm for checking subsumption? ╨ ╨ ╨ {P(A)} {P(t)} ╨
Simple Efficiency Improvements • Subsumption within the clause: • If literal a subsumes literal b (a entails b), then we can remove a from the clause… • But, notice the variables’ scope {P(A),P(t)} {P(A),~P(B),P(t)} {P(A,x),P(y,B)} {P(x),Q(x),P(A)} {P(A)} {P(A),~P(B)} {P(A,x),P(y,B)} {P(x),Q(x),P(A)}
Properties of Resolution • Unifying two literals of length n O(n2) – because of occurs check • Finding two resolvable clauses from m clauses of length n: O(m2n2) – the simple bound • Overall algorithm: • Semi-decidable • Unbounded length of proof as function of n,m
Related to FOL Resolution • Clause selection and restriction strategies • Consequence finding • Constraint Satisfaction Problem • Reasoning with equality • DPLL in FOL • Decidable fragments of FOL • BDDs in FOL
Summary So Far • Resolution theorem proving allows us to find contradictions and explanation. • The deduction theorem tells us how to ask queries from Resolution • Next: Temporal Reasoning
Situation Calculus • A first-order language for describing the effects of actions and events over time • Constants: S0 – initial state; action constants • Functions: result(<action>,<situation>) • Predicates: “fluents” – properties that change over time at(1, S0) at(x,s) at(x+1,result(move_fwd,s)) Query: at(1+1,s’) ans(s’) ? at(1+1,s’) ans(s’)
Situation Calculus • Requires axioms describing effects and non-effects of actions/events • Can be used for planning, projection, diagnosis, filtering (tracking) • Frame Problem: the compact and natural-language-like specification of effects of actions • Qualification Problem: the preconditions of actions
Notations • Substitutions • φσσ = {x1/t1,…,xk/tk} • φσσ = [x1/t1,…,xk/tk]
Next Time • Conversion to Clausal Form • Resolution Strategies