pub fn choose_term<'a, R: Rand, M: Matcher>(
    trace: &'a Trace<M>,
    constraints: TermConstraints,
    rand: &mut R
) -> Option<&'a Term<M>>