tensorlogic_compiler/optimize/
mod.rs

1//! Expression optimization passes.
2//!
3//! This module provides various optimization passes for TLExpr expressions:
4//!
5//! - **Negation optimization**: Apply De Morgan's laws and eliminate double negations
6//! - **Constant folding**: Evaluate constant expressions at compile time
7//! - **Algebraic simplification**: Apply mathematical identities (x+0=x, x*1=x, etc.)
8//! - **Pipeline**: Multi-pass optimization combining all passes intelligently
9//!
10//! # Quick Start
11//!
12//! For most use cases, use the unified optimization pipeline:
13//!
14//! ```
15//! use tensorlogic_compiler::optimize::{OptimizationPipeline, PipelineConfig};
16//! use tensorlogic_ir::{TLExpr, Term};
17//!
18//! let pipeline = OptimizationPipeline::new();
19//! let expr = TLExpr::add(
20//!     TLExpr::mul(TLExpr::Constant(2.0), TLExpr::Constant(3.0)),
21//!     TLExpr::Constant(0.0)
22//! );
23//! let (optimized, stats) = pipeline.optimize(&expr);
24//! ```
25//!
26//! For fine-grained control, use individual passes:
27//!
28//! ```
29//! use tensorlogic_compiler::optimize::{fold_constants, simplify_algebraic};
30//! use tensorlogic_ir::TLExpr;
31//!
32//! let expr = TLExpr::add(TLExpr::Constant(2.0), TLExpr::Constant(3.0));
33//! let (step1, _) = fold_constants(&expr);
34//! let (optimized, _) = simplify_algebraic(&step1);
35//! ```
36
37pub mod algebraic;
38pub mod constant_folding;
39pub mod negation;
40pub mod pipeline;
41
42pub use algebraic::{simplify_algebraic, AlgebraicSimplificationStats};
43pub use constant_folding::{fold_constants, ConstantFoldingStats};
44pub use negation::{optimize_negations, NegationOptStats};
45pub use pipeline::{IterationStats, OptimizationPipeline, PipelineConfig, PipelineStats};