2020-02-02 19:20:16 +01:00
|
|
|
use structopt::StructOpt as _;
|
|
|
|
|
|
|
|
#[derive(Debug, structopt::StructOpt)]
|
|
|
|
#[structopt(name = "anthem", about = "Use first-order theorem provers with answer set programs.")]
|
2020-02-03 22:20:13 +01:00
|
|
|
enum Command
|
2020-02-02 19:20:16 +01:00
|
|
|
{
|
2020-02-03 22:20:13 +01:00
|
|
|
#[structopt(about = "Verifies a logic program against a specification")]
|
|
|
|
VerifyProgram
|
|
|
|
{
|
|
|
|
#[structopt(parse(from_os_str))]
|
|
|
|
input: Vec<std::path::PathBuf>,
|
|
|
|
}
|
2020-02-02 19:20:16 +01:00
|
|
|
}
|
|
|
|
|
2020-02-01 17:13:43 +01:00
|
|
|
fn main()
|
2020-01-24 13:32:43 +01:00
|
|
|
{
|
2020-01-31 17:19:44 +01:00
|
|
|
pretty_env_logger::init();
|
|
|
|
|
2020-02-03 22:20:13 +01:00
|
|
|
let command = Command::from_args();
|
2020-02-01 19:20:46 +01:00
|
|
|
|
2020-02-03 22:20:13 +01:00
|
|
|
match command
|
2020-02-02 17:57:27 +01:00
|
|
|
{
|
2020-02-03 22:20:13 +01:00
|
|
|
Command::VerifyProgram{input} =>
|
|
|
|
{
|
|
|
|
if let Err(error) = anthem::translate::verify_properties::translate(&input)
|
|
|
|
{
|
|
|
|
log::error!("could not translate input program: {}", error);
|
|
|
|
std::process::exit(1)
|
|
|
|
}
|
|
|
|
},
|
2020-02-02 17:57:27 +01:00
|
|
|
}
|
2020-01-24 13:32:43 +01:00
|
|
|
}
|