19
On SAT technologies for dependency management and beyond Daniel Le Berre Anne Parrain CRIL-CNRS UMR 8188, Universit´ e d’Artois, Lens, FRANCE {leberre,parrain}@cril.univ-artois.fr ASPL’08, Limerick - September 12, 2008

On SAT technologies I Project started late 2003 as an implementation in Java of the MiniSAT specification. I Library updated continuously with latest SAT improvements I See it in

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: On SAT technologies I Project started late 2003 as an implementation in Java of the MiniSAT specification. I Library updated continuously with latest SAT improvements I See it in

On SAT technologiesfor dependency management and beyond

Daniel Le Berre Anne Parrain

CRIL-CNRS UMR 8188, Universite d’Artois, Lens, FRANCE{leberre,parrain}@cril.univ-artois.fr

ASPL’08, Limerick - September 12, 2008

Page 2: On SAT technologies I Project started late 2003 as an implementation in Java of the MiniSAT specification. I Library updated continuously with latest SAT improvements I See it in

What can SAT solvers do for you today ?Many problems can be solved using a reduction into SAT

1996- Planning (SATPLAN,Blackbox)

1998- Software Specification (Nitpick, Alloy)

1999- Bounded Model Checking, Equivalence checking,Formal Verification, etc.

2005- Checking the consistency of a Linux distribution(EDOS)

2005- Design and debug feature models.

2006- Haplotyping inference (Bioinformatics)

2007- Cleaning up databases ?

2008- Resolve Eclipse or Maven dependencies ?

2008- Improve Linux distributions update/upgrade(Mancoosi)

2/19

Page 3: On SAT technologies I Project started late 2003 as an implementation in Java of the MiniSAT specification. I Library updated continuously with latest SAT improvements I See it in

Pure SAT is not sufficient to solve many problemsThings are getting harder

I SAT is a decision problem : answer is yes/no.I For very constrained problems, a proof of satisfiability is

usually a sufficient answer for users : SAT solvers providethem.

I Bounded Model Checking : the proof is a bugI Planning : the proof is a plan

I For underconstrained problems, there are many solutions.Users look for the best solution : optimization problem.

3/19

Page 4: On SAT technologies I Project started late 2003 as an implementation in Java of the MiniSAT specification. I Library updated continuously with latest SAT improvements I See it in

Binate Covering ProblemWe really need this !

I Append to the set of clauses an objective function.

min/max :n∑

i=1

ai .xi

I ai integral coefficientI boolean variables xi interpreted with truth value ∈ {0, 1}.I xi = 1− xi .I A note about complexity

I SAT is NP-CompleteI Binate Covering Problem is NP-Hard

I In practice, it is usually faster to answer SAT than UNSAT.I Can be solved by adding new constraints of the form∑n

i=1 ai .xi < k with k the current best know value for theobjective function (Linear search, SAT, SAT, ...SAT, UNSATpattern)

4/19

Page 5: On SAT technologies I Project started late 2003 as an implementation in Java of the MiniSAT specification. I Library updated continuously with latest SAT improvements I See it in

Preferences for managing dependenciesExamples of Eclipse, Maven, Linux needs

I “I prefer to have solutions including the latest versions of theplugin”

I “I prefer to install the packages closer to the root”

I “I prefer to install the minimum number of packages”

I “I prefer to install the smaller set of packages in size”

In some cases, this cannot be easily mapped into a single objectivefunction : we enter multi-objective optimization, a whole field ofresearch in Artificial Intelligence and Operation Research

5/19

Page 6: On SAT technologies I Project started late 2003 as an implementation in Java of the MiniSAT specification. I Library updated continuously with latest SAT improvements I See it in

What users want : explanations !

I If the answer is an unexpected no, most users would like toknow what went wrong !

I Some SAT solvers can reduce the source of inconsistency to asubset of the clauses : UNSAT cores, Minimal UnsatisfiedSubformula, ...

I Not as easy to use as the SAT solver : usually scripts on topof a solver (zCore, AMUS).

I Specific code (Minisat 1.13 p, no 2.0 release)

I Unsat core on CNF is sometimes different from unsat core inthe original problem : Alloy 4 can detect which parts of thespecification are inconsistent thanks to Minisat proof logging.

6/19

Page 7: On SAT technologies I Project started late 2003 as an implementation in Java of the MiniSAT specification. I Library updated continuously with latest SAT improvements I See it in

What developers want : nice SAT packages !Are current SAT solvers real tools or research toys ?

I Full featured : unsat core, proof logging, optimization support,custom constraints support, etc.

I Supported software : tutorial, forum, mailing lists, etc.

I Easy to use : good API support, easier input language,verbose ouput, translation to CNF helpers.

I In their language

7/19

Page 8: On SAT technologies I Project started late 2003 as an implementation in Java of the MiniSAT specification. I Library updated continuously with latest SAT improvements I See it in

What SAT researchers want : nice problems !

I theoretically well defined structure

I challenging benchmarks

I your problems expressed in our words :)

8/19

Page 9: On SAT technologies I Project started late 2003 as an implementation in Java of the MiniSAT specification. I Library updated continuously with latest SAT improvements I See it in

Thanks for your attention

Questions ?

9/19

Page 10: On SAT technologies I Project started late 2003 as an implementation in Java of the MiniSAT specification. I Library updated continuously with latest SAT improvements I See it in

The SAT4J project http://www.sat4j.org/“Java users deserve SAT technology too”

I An open source (EPL/LGPL) library of SAT solvers in JavaI Project started late 2003 as an implementation in Java of the

MiniSAT specification.I Library updated continuously with latest SAT improvementsI See it in action in the SAT competitions (2004, 2005, 2007)

and the SAT Race (2006, 2008).I Can handle several kind of constraints :

clauses a ∨ b ∨ ¬ccardinality a + b + c + ¬d ≥ 3

pseudo boolean 3 ∗ a + 2 ∗ b + 2 ∗ c + ¬d ≥ 3I Constraint Satisfaction Problem (CSP) to SAT support.I Optimization problems ([Weighted] [Partial] MAXSAT).I Target easy integration in any Java software !I Community support provided by OW2 consortium

10/19

Page 11: On SAT technologies I Project started late 2003 as an implementation in Java of the MiniSAT specification. I Library updated continuously with latest SAT improvements I See it in

SAT4J Design Overview

Page 12: On SAT technologies I Project started late 2003 as an implementation in Java of the MiniSAT specification. I Library updated continuously with latest SAT improvements I See it in

SAT4J Solver Overview : a SAT solver as a SPL

Page 13: On SAT technologies I Project started late 2003 as an implementation in Java of the MiniSAT specification. I Library updated continuously with latest SAT improvements I See it in

Context/VocabularySee http://wiki.eclipse.org/Equinox P2 Resolution for details

Artifact Something to install (a jar file for instance).

Installable Unit Metadata describing an artifact, with versionnumber, capabilities, dependencies, etc.

Capability feature provided by an installable unit

Requirement feature needed by an installable unit

Enablement filter an expression allowing to expressconditional/platform dependent requirements.

13/19

Page 14: On SAT technologies I Project started late 2003 as an implementation in Java of the MiniSAT specification. I Library updated continuously with latest SAT improvements I See it in

Equinox p2 bundle dependencies

IU: org.eclipse.swt v 3.2.0Capabilities:

{namespace=package, name=a, version=1.0.0}{namespace=foo, name=b, version=1.3.0}{namespace=package, name=c, version=4.1.0}

Requirement expressions(true) ->{namespace=package, name=r1, range=[1.0.0, 2.0.0)} and{namespace=foo, name=r1, range=[3.2.0, 4.0.0)}(& (os=linux) (ws=gtk)) ->{namespace=package, name=r2, range=[1.0.0, 2.0.0)} or{namespace=foo, name=bar, range=[3.2.0, 4.0.0)}

14/19

Page 15: On SAT technologies I Project started late 2003 as an implementation in Java of the MiniSAT specification. I Library updated continuously with latest SAT improvements I See it in

Requirements encoding

I Each requirement of an installable unit IUi is represented by asimple clause

IUi → IUj1 ∨ IUj2 ∨ ... ∨ IUjn (1)

where IUjx represents all the Installable Units (IUs) thatprovided a capability satisfying this requirement.

I Additional Unit clauses do represent the IU that the userwants to install (or already installed ones).

I p2 keeps tracks of user installed IU (vs the ones installed tosolve dependencies) to avoid uninstalling them later.

15/19

Page 16: On SAT technologies I Project started late 2003 as an implementation in Java of the MiniSAT specification. I Library updated continuously with latest SAT improvements I See it in

Incompatible cases

Some installable units cannot be installed together (e.g. singletonattribute). This is modeled either with binary negative clauses

¬IUvi ∨ ¬IUvj (2)

or with a cardinality constraint

IUv1 + IUv2 + ... + IUvn ≤ 1 (3)

where all the IUvi do represent the Installable Units providingdifferent versions of the same artifact for instance.

16/19

Page 17: On SAT technologies I Project started late 2003 as an implementation in Java of the MiniSAT specification. I Library updated continuously with latest SAT improvements I See it in

Managing multiple IU versions or sources

If an IUj1 is available in multiple versions or from different sources,we abstract it from the requirements encoding :

IUi → IUj1 ∨ IUj2 ∨ ... ∨ IUjn (4)

becomes

IUi → AIUj1 ∨ IUj2 ∨ ... ∨ IUjn (5)

AIUj1 → IUjv1 ∨ IUjv2 ∨ ... ∨ IUjvm (6)

Suppose vm to be the latest version, and v1 the oldest, we addpenalties for installing older versions in the objective function :∑1

i=m−1 2m−i .IUjvi

17/19

Page 18: On SAT technologies I Project started late 2003 as an implementation in Java of the MiniSAT specification. I Library updated continuously with latest SAT improvements I See it in

Encoding optionality

I All optional requirements of an installable unit IUi arerepresented by the following set of clauses :

IUi → IUj1 ∨ IUj2 ∨ ... ∨ IUjn ∨ NoopIUi

NoopIUi→ ¬IUj1

NoopIUi→ ¬IUj2

...

NoopIUi→ ¬IUjn

where IUjx represents all the Installable Units (IUs) thatprovided a capability satisfying this optional requirement.

I In the objective function (to minimize), we add∑n

i=1−1.IUji .I We also apply IU abstraction if multiple versions are available.

18/19

Page 19: On SAT technologies I Project started late 2003 as an implementation in Java of the MiniSAT specification. I Library updated continuously with latest SAT improvements I See it in

Encoding summary

I constraints are expressed by clauses (or cardinality constraints)I preferences on versions and optionalities are expressed by a

single objective functionI Two phase approach : only applicable requirements are

encoded.I Eclipse provisioning is an instance of the Binate Covering

problemI How to solve such problem ?

I Pure SAT : Minisat+I Pseudo Boolean : Pueblo (OPIUM choice)I ILP : GNU LPTK

I Additional constraints for Eclipse : should better be in Java(else the solver need to be recompiled and tested on allplatforms), with a license compatible with EPL.

19/19