pub fn random_boolean_data_expression<R: Rng>(rng: &mut R, variables: &[IdDecl]) -> DataExpr {
.filter(|v| matches!(&v.sort, SortExpression::Simple(s) if matches!(s, Sort::Int | Sort::Nat | Sort::Pos)))
let mut candidates: Vec<DataExpr> = booleans.iter().map(|v| DataExpr::Id(v.identifier.clone())).collect();
pub fn random_integer_data_expression<R: Rng>(rng: &mut R, variables: &[IdDecl]) -> DataExpr {
.filter(|v| matches!(&v.sort, SortExpression::Simple(s) if matches!(s, Sort::Int | Sort::Nat | Sort::Pos)))
let mut candidates: Vec<DataExpr> = integers.iter().map(|v| DataExpr::Id(v.identifier.clone())).collect();