from__future__importannotationsfromtypingimportDict,List,Literal,Any,TYPE_CHECKINGfrompydanticimportBaseModel# Use TYPE_CHECKING to avoid circular importsifTYPE_CHECKING:fromagent_logic.core.predicatesimportPredicate# noqa: F401
[docs]defevaluate(self,context:Dict[str,List[bool]])->bool:"""Evaluates ∀x P(x) over all values in context[variable]."""returnall(self.predicate.evaluate({self.variable:v,**context})forvincontext.get(self.variable,[]))
[docs]defevaluate(self,context:Dict[str,List[bool]])->bool:"""Evaluates ∃x P(x), checking if any value satisfies predicate."""returnany(self.predicate.evaluate({self.variable:v,**context})forvincontext.get(self.variable,[]))
# Define aliases for better naming in importsForAll=UniversalQuantifierExists=ExistentialQuantifier# Add a base Quantifier type for type hintsQuantifier=UniversalQuantifier|ExistentialQuantifier