def test_unifies(): assert not agentspeak.unifies(True, 1) assert agentspeak.unifies(3, 3.0) assert agentspeak.unifies(True, True) assert agentspeak.unifies(5, agentspeak.Wildcard()) assert agentspeak.unifies((1, 2), (1, agentspeak.Wildcard())) assert agentspeak.unifies(("hello", 2), ("hello", agentspeak.Var())) assert agentspeak.unifies(agentspeak.Var(), agentspeak.Literal("beep")) assert agentspeak.unifies(agentspeak.Literal("boop"), agentspeak.Var()) X = agentspeak.Var() assert agentspeak.unifies(agentspeak.Literal("foo", (X, X)), agentspeak.Literal("foo", (1, 1))) assert not agentspeak.unifies(agentspeak.Literal("bar", (X, X)), agentspeak.Literal("bar", (1, 2)))
def test_unifies(self): self.assertFalse(agentspeak.unifies(True, 1)) self.assertTrue(agentspeak.unifies(3, 3.0)) self.assertTrue(agentspeak.unifies(True, True)) self.assertTrue(agentspeak.unifies(5, agentspeak.Wildcard())) self.assertTrue(agentspeak.unifies((1, 2), (1, agentspeak.Wildcard()))) self.assertTrue( agentspeak.unifies(("hello", 2), ("hello", agentspeak.Var()))) self.assertTrue( agentspeak.unifies(agentspeak.Var(), agentspeak.Literal("beep"))) self.assertTrue( agentspeak.unifies(agentspeak.Literal("boop"), agentspeak.Var())) X = agentspeak.Var() self.assertTrue( agentspeak.unifies(agentspeak.Literal("foo", (X, X)), agentspeak.Literal("foo", (1, 1)))) self.assertFalse( agentspeak.unifies(agentspeak.Literal("bar", (X, X)), agentspeak.Literal("bar", (1, 2))))
def _set_belief(self, name, *args): term = agentspeak.Literal(name, tuple(args), PERCEPT_TAG) found = False for belief in list(self.beliefs[term.literal_group()]): if agentspeak.unifies(term, belief): found = True else: self.call(agentspeak.Trigger.removal, agentspeak.GoalType.belief, belief, agentspeak.runtime.Intention()) if not found: self.call(agentspeak.Trigger.addition, agentspeak.GoalType.belief, term, agentspeak.runtime.Intention())
def set_belief(self, name: str, *args): """Set an agent's belief. If it already exists, updates it.""" new_args = () for x in args: if type(x) == str: new_args += (asp.Literal(x),) else: new_args += (x,) term = asp.Literal(name, tuple(new_args), PERCEPT_TAG) found = False for belief in list(self.agent.bdi_agent.beliefs[term.literal_group()]): if asp.unifies(term, belief): found = True else: self.agent.bdi_intention_buffer.append((asp.Trigger.removal, asp.GoalType.belief, belief, asp.runtime.Intention())) if not found: self.agent.bdi_intention_buffer.append((asp.Trigger.addition, asp.GoalType.belief, term, asp.runtime.Intention()))