toysolver-0.3.0: src/ToySolver/Converter/MaxSAT2WBO.hs
{-# OPTIONS_GHC -Wall #-}
-----------------------------------------------------------------------------
-- |
-- Module : ToySolver.Converter.MaxSAT2WBO
-- Copyright : (c) Masahiro Sakai 2013
-- License : BSD-style
--
-- Maintainer : masahiro.sakai@gmail.com
-- Stability : experimental
-- Portability : portable
--
-----------------------------------------------------------------------------
module ToySolver.Converter.MaxSAT2WBO
( convert
) where
import qualified Data.PseudoBoolean as PBFile
import qualified ToySolver.Text.MaxSAT as MaxSAT
convert :: MaxSAT.WCNF -> PBFile.SoftFormula
convert
MaxSAT.WCNF
{ MaxSAT.topCost = top
, MaxSAT.clauses = cs
, MaxSAT.numVars = nv
, MaxSAT.numClauses = nc
} =
PBFile.SoftFormula
{ PBFile.wboTopCost = Nothing
, PBFile.wboConstraints = map f cs
, PBFile.wboNumVars = nv
, PBFile.wboNumConstraints = nc
}
where
f (w,ls)
| w>=top = (Nothing, p) -- hard constraint
| otherwise = (Just w, p) -- soft constraint
where
p = ([(1,[l]) | l <- ls], PBFile.Ge, 1)