37 lines
974 B
Rust
37 lines
974 B
Rust
use corosensei::Coroutine;
|
|
use nanolog::ast::Body;
|
|
use nanolog::ast::Module;
|
|
use nanolog::ast::Predicate;
|
|
|
|
fn main()
|
|
{
|
|
env_logger::builder()
|
|
.filter_level(log::LevelFilter::Info)
|
|
.format_timestamp(None)
|
|
.format_module_path(false)
|
|
.init();
|
|
//println!("{:#?}", Module::parse_from_file("1.pl"));
|
|
let module: Module = "
|
|
integer(zero).
|
|
integer(s(X)) :- integer(X).
|
|
add(X, zero, X).
|
|
add(X, s(Y), Z) :- add(s(X), Y, Z).
|
|
"
|
|
.into();
|
|
|
|
// let a: Predicate = "integer(s(zero))".into();
|
|
// let b: Predicate = "integer(s(X))".into();
|
|
//
|
|
// println!("{:?}", a.unify(&b));
|
|
|
|
let body: Body = "add(s(s(zero)), s(zero), s(s(s(zero))))".into();
|
|
let body: Body = "add(s(zero), s(zero), X).".into();
|
|
body.prove_in_module(&module).next().next();
|
|
|
|
// let body: Body = "integer(X).".into();
|
|
// body.prove_in_module(&module).next().next();
|
|
|
|
//println!("{}", module);
|
|
//
|
|
}
|