PropaFP-0.1.0.0: app/PrettifySMT2.hs
module Main where
import MixedTypesNumPrelude
import Options.Applicative
import System.Directory
import PropaFP.Parsers.Smt
import PropaFP.Expression
data ProverOptions = ProverOptions
{
fileName :: String,
targetName :: String
}
proverOptions :: Parser ProverOptions
proverOptions = ProverOptions
<$> strOption
(
long "file-path"
<> short 'f'
<> help "SMT2 file to be prettified"
<> metavar "filePath"
)
<*> strOption
(
long "target-path"
<> short 't'
<> help "location to write prettified file"
<> metavar "targetPath"
)
runDRealTranslator :: ProverOptions -> IO ()
runDRealTranslator (ProverOptions filePath targetPath) =
do
-- PATH needs to include folder containing FPTaylor binary after make
-- symlink to the binary in somewhere like ~/.local/bin will NOT work reliably
mFptaylorPath <- findExecutable "fptaylor"
case mFptaylorPath of
Nothing -> putStrLn "FPTaylor executable not found in path"
Just fptaylorPath -> do
mVC <- parseVCToF filePath fptaylorPath
case mVC of
Just (vc, vm) -> writeFile targetPath (prettyShowVC vc vm)
Nothing -> error "Issue processing SMT2 file"
main :: IO ()
main =
do
runDRealTranslator =<< execParser opts
where
opts = info (proverOptions <**> helper)
( fullDesc
<> progDesc "todo"
<> header "SMT2 Prettifier" )