Starts a good tracing interface

This commit is contained in:
2026-02-09 16:40:51 +01:00
parent 0f721e34c4
commit a151b772aa
7 changed files with 54 additions and 6 deletions

View File

@ -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
{