Starts a good tracing interface
This commit is contained in:
@ -7,6 +7,10 @@ use std::rc::Rc;
|
||||
|
||||
use litemap::LiteMap;
|
||||
use log::info;
|
||||
use owo_colors::OwoColorize;
|
||||
use owo_colors::colors::Green;
|
||||
use owo_colors::colors::Red;
|
||||
use owo_colors::colors::css::Gray;
|
||||
|
||||
use crate::ast::Body;
|
||||
use crate::ast::Clause;
|
||||
@ -143,9 +147,15 @@ impl<'a, T: Tracer + 'a> PredicateProver<'a, T>
|
||||
) -> PredicateProver<'a, T>
|
||||
{
|
||||
//info!(target: "PredicateProver", "Proving {}", predicate);
|
||||
let predicate_prover = tracer.begin_proof(ProofType::Predicate);
|
||||
predicate_prover.print_step(format!(
|
||||
"{} '{}'",
|
||||
"Proving predicate".fg::<Green>(),
|
||||
predicate
|
||||
));
|
||||
PredicateProver {
|
||||
module,
|
||||
tracer: tracer.begin_proof(ProofType::Predicate),
|
||||
tracer: predicate_prover,
|
||||
predicate,
|
||||
constraints,
|
||||
current_clause: 0,
|
||||
@ -209,16 +219,23 @@ impl<'a, T: Tracer + 'a> Iterator for PredicateProver<'a, T>
|
||||
let clause = &self.module.clauses[self.current_clause]
|
||||
.make_unique(self.global_counter.clone());
|
||||
//info!(target: "PredicateProver", "Unifying '{}' against '{}'", self.predicate, clause);
|
||||
self.tracer.print_step(format!(
|
||||
"🭆 Unifying '{}' aginst '{}'",
|
||||
self.predicate, clause
|
||||
));
|
||||
let uni = self.predicate.matches(&clause.head);
|
||||
let full_constraints = uni.and_then(|x| x.and(&self.constraints));
|
||||
|
||||
if let Some(c) = &full_constraints
|
||||
{
|
||||
//info!(target: "PredicateProver", " => {}", c);
|
||||
self.tracer
|
||||
.print_step(format!("🭧 ↳ {}: {}", "Matches".fg::<Green>(), c));
|
||||
}
|
||||
else
|
||||
{
|
||||
//info!(target: "PredicateProver", " => (Can't unify)");
|
||||
self.tracer
|
||||
.print_step(format!("🭧 ↳ {}", "Contradictory".fg::<Red>()));
|
||||
}
|
||||
match full_constraints
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user