Validate the candidate artifacts with the agents in the environment.

        In larger societies this method might be costly, as it calls each
        agents' :meth:`validate`.

        :returns:
            A list of candidates that are validated by all agents in the
            environment.

def validate_candidates(self, candidates):
        """Validate the candidate artifacts with the agents in the environment.

        In larger societies this method might be costly, as it calls each
        agents' :meth:`validate`.

        :returns:
            A list of candidates that are validated by all agents in the
            environment.
        """
        valid_candidates = set(candidates)
        for a in self.get_agents(addr=False):
            vc = set(a.validate(candidates))
            valid_candidates = valid_candidates.intersection(vc)

        return list(valid_candidates)