/// `atom_count` and `propvar_count` together control the expression size: their sum determines the
/// recursion depth, and their ratio determines how often a leaf is a predicate variable instantiation
fn random_leaf<R: Rng>(rng: &mut R, freevars: &[IdDecl], config: &PbesGenConfig, negated: bool) -> PbesExpr {
let var_decl = IdDecl::new(var_name.clone(), SortExpression::Simple(Sort::Nat), Span::default());
// Bound the quantifier variable to ensure termination: forall t. t < 3 => body / exists t. t < 3 && body