Expand description
§Constraint Logic Programming (CLP) Module
This module implements constraint domains, constraint propagation, and constraint satisfaction problem (CSP) solving for TensorLogic.
§Overview
Constraint Logic Programming extends logic programming with constraints over specific domains (finite domains, intervals, reals, etc.). Instead of solving problems through backtracking search alone, CLP uses:
- Constraint propagation: Automatically deduce information from constraints
- Domain reduction: Narrow down possible values for variables
- Consistency checking: Detect unsatisfiable constraints early
§Constraint Domains
This module supports several constraint domains:
§Finite Domain (FD)
- Variables range over finite sets of integers
- Constraints: equality, inequality, arithmetic relations
- Propagation: Arc consistency (AC-3), forward checking
§Interval Domain
- Variables range over continuous intervals [lower, upper]
- Constraints: linear inequalities, polynomial constraints
- Propagation: Interval arithmetic, box consistency
§Boolean Domain
- Variables are true/false
- Constraints: logical formulas (CNF, DNF)
- Propagation: Unit propagation, Boolean constraint propagation (BCP)
§Applications
- Scheduling: Resource allocation, task scheduling
- Planning: Action planning with temporal constraints
- Configuration: Product configuration with compatibility constraints
- Verification: Model checking, bounded model checking
- Optimization: Constraint-based optimization problems
§Example
use tensorlogic_ir::clp::{CspSolver, Variable, Constraint, Domain};
// Create variables
let x = Variable::new("x", Domain::finite_domain(vec![1, 2, 3]));
let y = Variable::new("y", Domain::finite_domain(vec![2, 3, 4]));
// Add constraints: x < y, x + y = 5
let mut solver = CspSolver::new();
solver.add_variable(x);
solver.add_variable(y);
solver.add_constraint(Constraint::less_than("x", "y"));
solver.add_constraint(Constraint::sum_equals(vec!["x", "y"], 5));
// Solve
let solution = solver.solve();
assert!(solution.is_some());Structs§
- CspSolver
- A constraint satisfaction problem (CSP) solver.
- Solver
Stats - Statistics about CSP solving.
- Variable
- A constraint variable with a name and domain.
Enums§
- Binary
Relation - Binary relation between two variables.
- Constraint
- A constraint between variables.
- Domain
- A constraint domain specifies the set of possible values for variables.
- Global
Constraint Type - Global constraint types (high-level patterns).
- NAry
Relation - N-ary relation among multiple variables.
- Propagation
Algorithm - Constraint propagation algorithms.
- Unary
Predicate - Unary predicate on a single variable.
- Value
Selection Heuristic - Value selection heuristics for search.
- Variable
Selection Heuristic - Variable selection heuristics for search.