use lasso::Spur;
#[derive(Debug, PartialEq, Clone)]
pub enum IrTerm {
Variable(Spur),
Constant(Spur),
Description(Spur),
Unspecified,
Number(f64),
}
#[derive(Debug, PartialEq, Clone)]
pub enum IrForm {
Predicate { relation: Spur, args: Vec<IrTerm> },
ForAll(Spur, Box<IrForm>),
Exists(Spur, Box<IrForm>),
And(Box<IrForm>, Box<IrForm>),
Or(Box<IrForm>, Box<IrForm>),
Not(Box<IrForm>),
Past(Box<IrForm>),
Present(Box<IrForm>),
Future(Box<IrForm>),
Obligatory(Box<IrForm>),
Permitted(Box<IrForm>),
Count {
var: Spur,
count: u32,
body: Box<IrForm>,
},
Biconditional(Box<IrForm>, Box<IrForm>),
Xor(Box<IrForm>, Box<IrForm>),
}