module Main where import Control.Monad import Jukebox.Options import Jukebox.Toolbox tools = mconcat [fof, cnf, monotonox, guessmodel] fof = tool info pipeline where info = Tool "fof" "Jukebox TFF-to-FOF translator" "1" "Translate from TFF (typed) to FOF (untyped)" pipeline = greetingBox info =>> allFilesBox <*> (parseProblemBox =>>= toFofBox =>>= prettyPrintProblemBox) monotonox = tool info pipeline where info = Tool "monotonox" "Monotonox" "1" "Monotonicity analysis" pipeline = greetingBox info =>> allFilesBox <*> (parseProblemBox =>>= clausifyBox =>>= oneConjectureBox =>>= monotonicityBox =>>= writeFileBox) cnf = tool info pipeline where info = Tool "cnf" "Jukebox clausifier" "1" "Clausify a problem" pipeline = greetingBox info =>> allFilesBox <*> (parseProblemBox =>>= clausifyBox =>>= oneConjectureBox =>>= prettyPrintClausesBox) guessmodel = tool info pipeline where info = Tool "guessmodel" "Infinite model guesser" "1" "Guess an infinite model" pipeline = greetingBox info =>> allFilesBox <*> (parseProblemBox =>>= guessModelBox =>>= prettyPrintProblemBox) jukebox = Tool "jukebox" "Jukebox" "1" "A first-order logic toolbox" main = join (parseCommandLine jukebox tools)