Files
nanolog/src/main.rs
2026-02-07 22:15:07 +01:00

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);
//
}