pub fn infer<'a>( goals: &'a Terms, rules: &'a Rules, ) -> Option<(u64, HashMap<(u64, &'a str), (u64, &'a Term)>)>