Advertisement
partyboy1a

SAT-solver-sample.lua

Jan 17th, 2013
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 0.87 KB | None | 0 0
  1. -- note: this sample file requires picosat or minisat
  2. USE_PICOSAT = true
  3. USE_MINISAT = false
  4.  
  5. dofile("SAT-solver-framework.lua")
  6. NewVar("a")
  7. NewVar("b", 2)
  8. NewVar("c", {2,3})
  9. AddSimpleClause{Var.a, true}
  10. AddIfThenClause(
  11.     "if ALL", {
  12.     Var.a, true},
  13.     "then ONE", {
  14.     Var.b[1], true}
  15. )
  16. AddSimpleClause{Var.a, false, Var.b[1], false, Var.b[2], true}
  17. AddSimpleClause{Var.c[1][1], true}
  18. AddSimpleClause{Var.c[1][2], true}
  19. AddSimpleClause{Var.c[2][1], true}
  20. AddSimpleClause{Var.c[2][1], false, Var.c[2][2], false}
  21. AddIfAndOnlyIfClause(
  22.     "ALL of", {
  23.     Var.c[1][3], true},
  24.     "if and only if",
  25.     "ALL of", {
  26.     Var.c[2][3], true}
  27. )
  28. WriteSATfile()
  29. if USE_PICOSAT then
  30.     os.execute("picosat satfile.cnf >solutionfile")
  31. elseif USE_MINISAT then
  32.     os.execute("minisat satfile.cnf solutionfile")
  33. end
  34. ParseSolution()
  35. PrintSolution()
  36. print("again: c[1][1]=="..tostring(Sol.c[1][1]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement