pub(crate) fn predicate_failures( program: &Program, rule: &Rule, source_atom: &Atom, bindings: &HashMap<String, Term>, ) -> Vec<String>