Skip to main content

validate_expression

Function validate_expression 

Source
pub fn validate_expression(expr: &TLExpr) -> ValidationResult
Expand description

Performs comprehensive pre-compilation validation.

This function runs all available validation passes:

  1. Arity validation (predicate consistency)
  2. Scope analysis (unbound variables)
  3. 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