pub fn validate_expression(expr: &TLExpr) -> ValidationResultExpand description
Performs comprehensive pre-compilation validation.
This function runs all available validation passes:
- Arity validation (predicate consistency)
- Scope analysis (unbound variables)
- Enhanced diagnostics (unused bindings, type conflicts)
§Arguments
expr- The expression to validate
§Returns
A ValidationResult containing all errors, warnings, and suggestions.
§Examples
use tensorlogic_compiler::passes::validate_expression;
use tensorlogic_ir::{TLExpr, Term};
// Valid expression (fully quantified)
let expr = TLExpr::exists(
"x",
"Person",
TLExpr::exists(
"y",
"Person",
TLExpr::pred("knows", vec![Term::var("x"), Term::var("y")]),
),
);
let result = validate_expression(&expr);
assert!(result.is_ok());use tensorlogic_compiler::passes::validate_expression;
use tensorlogic_ir::{TLExpr, Term};
// Expression with unbound variables
let expr = TLExpr::pred("knows", vec![Term::var("x"), Term::var("y")]);
let result = validate_expression(&expr);
assert!(result.has_errors());
assert!(result.error_count >= 2); // x and y unbound