use crate::Rule;
use crate::utilities::TermStack;
use crate::utilities::create_var_map;
#[derive(Hash, Clone, Eq, PartialEq, Ord, PartialOrd, Debug)]
pub struct EMACondition {
pub lhs_term_stack: TermStack,
pub rhs_term_stack: TermStack,
pub equality: bool,
}
pub fn extend_conditions(rule: &Rule) -> Vec<EMACondition> {
let var_map = create_var_map(&rule.lhs);
let mut conditions = vec![];
for c in &rule.conditions {
let ema_condition = EMACondition {
lhs_term_stack: TermStack::from_term(&c.lhs.copy(), &var_map),
rhs_term_stack: TermStack::from_term(&c.rhs.copy(), &var_map),
equality: c.equality,
};
conditions.push(ema_condition);
}
conditions
}