Sie sind auf Seite 1von 34

SPASS: Combining Superposition, Sorts and Splitting

Christoph Weidenbach Max-Planck-Institute for Computer Science http://spass.mpi-db.mpg.de

Presented by Mooly Sagiv

Bibliography
SPASS: Combining Superposition, Sorts and Splitting C. Weidenbach Handboook of Automated Reasoning Refinements of Resolution H. de Nivelle Resolution for propositional logic A. Voronkov A Theory of Resolution L. Bachmair and H. Ganzinger Handbook of Automated Reasoning A Machine Oriented Logic Based on the Resolution Principle J.A. Robinson, JACM 1965

General
The unsatisifiability problem for FOL is undecidable
No terminating algorithm which says yes the formula is non satisfiable

The unsatisfiability problem is enumerable Resolution is such enumeration procedure Implemented in Otter, Spass, Bliksem, Vampire, Succeed in proving interesting theorems
Adapts to certain decidable logics

But predictability is an issue Limited practical usage

Clauses
A literal is an atom or its negation
positive literal = atom negative literal = negated atom

A clause is a finite multiset of literals The meaning of {A1, A2, , An} is: X1, X2, , Xn: (A1 A2 An) The goal is to refute a given finite set of clauses Prove that C1 C2 Cn D by refuting {C1, C2, , Cn, D}

Unifying Terms
Substitution: A mapping from the set of variables to the terms such that XX only for finitely many X Generalizes to terms and literals is a matcher for terms s and t if s = t is a unifier for terms s and t if s = t is the most general unifier (mgu) of s and t if:
It is a unifier of s and t For every unifier of s and t there exists a substitution such that =

Examples
Term 1 a p(a, X) p(f(X), g(Z)) p(f(X), g(Z)) Term 2 X p(Y, b) p(f(a), Y) p(f(a), Y) Unifier {X h a} {X h b,Y h a} {Xha, Y h g(Z)} {Xha, Y h g(a), Z h a}

mgu

Resolution
C and D clauses w/o overlapping variables P C with positive literals N D with negative literals There exists a substitution
P = {A} N = {A}

Then: ((C P) (D - N) )
where = mgu(P, N)

Example
1:{p(X, Y), p(Y, X)} 2:{p(X, Y), p(Y, Z) , p(X, Z)} 3: {p(X, f(X))} 4: {p(a, a)}

Resolution and Factoring


Two types of resolution
Unify literals within one clause (factoring) Unify literals within different clauses

Advantage of separation
Reduce the cost of resolution Reduce the size of clauses

Resolution
1, A 1 I ( 1, 2 1 2 ) =mgu(A, B) p(f(a), p(f(Y)) p(f(X)) p(X) 2 2 , B

={X h f(Y)} p(f(a), p(f(f(Y))

Factoring
, A, B I ( , A) =mgu(A, B)

, A, B I ( , A )

1: {p(X), p(Y)} 2: {p(X), P(Y)}

Observation
Simple resolution is easy to implement but does not get very far Often diverges due to the inherent complexity of the problem of finding a proof
Large possibly infinite search space

Theorem provers implement refinements (restrictions) to resolution

Refinements of resolution
Block certain clauses
Subsumption & Weight strategies

Block certain literals in a clause


Ordering

Impose a structure on the resolution


Hyperresolution Linear resolution

A refinement is complete if every unsatifiable set of clauses has a derivation of the empty clause

Subsumption
Blocks complete clauses from being considered If two clauses C and D exist such that C D then any conclusion from D can also be obtained from C Becomes even more important with equality

Subsumption Deletion
1 1 R 1 2 and 1 2 2 2 1 1

A Saturation Based Theorem Prover


Start with an initial set of clauses Apply rules and add more clause until either
No more clauses can be derives (saturation)
The set of clauses is saturated w.r.t. to the inference rules

The empty clause

is derived (refutation)

Simple SPASS rules


1, A 1 I ( 1, 2 1 2 ) , , B I ( , A) , , B I ( , A ) 1 1 R 2 2 1 1 R =mgu(A, B) 2 2 , B

A Simple Resolution Based TP


A worklist algorithm Remember which inference rules have been tried Prefer reductions over inferences Prefer small clauses

A Simple Resolution Based TP


ResolutionProver1(N) Wo := ; Us := taut(strictsub(N, N)) ; while (Us and Us) { (Given, Us) = choose(Us) ; Wo := Wo {Given}; New := res(Given, Wo) fac({Given)}; New := taut(strictsub(New, New)); New := sub(sub(New, Wo), Us); Wo := sub(Wo, New); Us := sub(Us, New) New; } if (Us = ) then print Completion Found ; If ( Us) then print Proof found; forward subsumption backward subsumption Input reduction

A Simple Example
1: p(f(a) 2: p(f(X) p(X) 3: p(f(a)), p(f(X))

Fair selection
ResutionProver1 is complete when choose is fair
No clauses stays in Us forever

A simple fair selection


Chose the lightest clause smaller size Finitely many clauses of a given size in a given vocabulary

Unfair selection may also be useful


Ignore clauses which are too big Restart few times with larger bounds

Maintained Invariants
Any inference conclusion (resolution, factoring) from Wo is either a tautology or contained/subsumed by a clause in Wo, Us Wo and Us are completely inter-reduced
taut(Wo Us) = Wo Us strictsub(Wo Us, Wo Us) = Wo Us

Partial correctness
Upon termination Wo is saturated or Us

Other properties of ResolutionProver1


In case a N N is known to be satisfiable, initialized with
Wo := N; Us := (N N)

The initial order of N may be important

Subsumption
On non-trivial examples |Wo| ^ |Us| Subsumption test w.r.t. Us becomes the bottleneck (95%)

A Second Resolution Based TP


ResolutionProver2(N) Wo := ; Us := taut(strictsub(N, N)) ; while (Us and Us) { (Given, Us) = choose(Us); if (sub(Given), Wo) ) {; Wo := sub(Wo, {Given}); Wo := Wo {Given}; New := res(Given, Wo) {Given}; New := taut(strictsub(New, New)); New := sub(New, Wo); Us := Us New; }} if (Us = ) then print Completion Found ; If ( Us) then print Proof found;

Maintained Invariants
Any inference conclusion (resolution, factoring) from Wo is either a tautology or contained/subsumed by a clause in Wo, Us Wo is completely inter-reduced
taut(Wo) = Wo strictsub(Wo, Wo) = Wo

Partial correctness
Upon termination Wo is saturated or Us

Ordering
Block certain literals from consideration Impose an order < on literals Apply resolution/factoring only on maximal literals Drastically reduces the number of applied rules Completeness may be an issue Can guarantee termination for certain decidable class of logics

Resolution with ordering


1, A 1 I ( 1, 2 1 2 ) 2 2 , B

=mgu(A, B)

A is maximal in 1, A 1 B is maximal in 2 2 , B

Propositional example
1: {a, b} 2: {a, b} 3: {a, b} 4: {a, b}

a < b < a < b

Completeness
In the propositional case any order results in a complete refinement (Theorem 2.7: De Nivelle) In predicate logic the situation is more complicated C = {p(X), q(X), r(X)} where p(X)< q(X) < r(X) D = {r(0)} An order is liftable if A < B implies A B An order < on literals is descending if
A < B A1 < B 2 A < A when is not a renaming of A

For liftable and descending orders resolution is complete

Orders in Spass
Knuth-Benedix Ordering (KBO)
Invented as part of the Knuth-Benedix completion algorithm Based on orders on functions/predicates Total order on ground terms Useful with handling equalities

Recursive path ordering with Status [Dershowitz 82]


Useful for orienting distributivity

Other rules in Spass


Sort constraint resolution Hyperresolution Paramodulation Splitting

Missing
The automatic Spass loop (Table 4) The overall loop with splitting (Table 7) Data structures and algorithms

Conclusion
Resolution based decision procedures can prove interesting theorems Refinements of resolution are essential Decidability of certain classes of first order logic is possible Combing with specialized decision procedures is a challenge Other issues:
Scalability Counterexamples

Das könnte Ihnen auch gefallen