1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
//! Boolean expressions are simple structures that represent boolean formulas explicitly.
//!
//! They can be parsed from a string representation (using `TryFrom`) and used to create
//! complex `Bdd`s:
//!
//! ```rust
//! use biodivine_lib_bdd::*;
//! let vars = BddVariableSet::new_anonymous(4);
//! let f: Bdd = vars.eval_expression_string("x_0 & !x_1 => (x_1 ^ x_3 <=> (x_0 | x_1))");
//! ```
/// **(internal)** Implements boolean expression evaluation for `BddVariableSet` and some utility methods.
mod _impl_boolean_expression;
/// **(internal)** Parsing functions for boolean expressions.
mod _impl_parser;
/// Recursive type for boolean expression tree.
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum BooleanExpression {
Const(bool),
Variable(String),
Not(Box<BooleanExpression>),
And(Box<BooleanExpression>, Box<BooleanExpression>),
Or(Box<BooleanExpression>, Box<BooleanExpression>),
Xor(Box<BooleanExpression>, Box<BooleanExpression>),
Imp(Box<BooleanExpression>, Box<BooleanExpression>),
Iff(Box<BooleanExpression>, Box<BooleanExpression>),
}