pub(crate) fn evaluate_goal<'tcx>(
    tcx: TyCtxt<'tcx>,
    obligation: CanonicalChalkEnvironmentAndGoal<'tcx>
) -> Result<&'tcx Canonical<'tcx, QueryResponse<'tcx, ()>>, NoSolution>