Пример #1
0
 def reflexive_closure(self):
     """
     Compute the reflexive closure of the relations in the model
     """
     states_in_model = self.states.values()
     for agent, relations in self.relations.iteritems():
         relations_as_set = set(
             [relation.to_tuple() for relation in relations])
         closure = closures.reflexive(relations_as_set, states_in_model)
         closure.difference_update(relations_as_set)
         [
             self.add_relation(
                 Relation.from_tuple((source, destination, agent)))
             for (source, destination) in closure
         ]
Пример #2
0
 def compute_closure(self, closure_function):
     """
     Compute the closure defined by closure_function.
     :param closure_function: Function that computes a closure, it should accept a set of tuples as input and
     output a set of tuples.
     """
     for agent, relations in self.relations.iteritems():
         relations_as_set = set([relation.to_tuple() for relation in relations])
         relations_as_set = set([(source, destination) for (source, destination, _) in relations_as_set])
         closure = closure_function(relations_as_set)
         closure.difference_update(relations_as_set)
         [
             self.add_relation(
                 Relation.from_tuple((source, destination, agent))
             )
             for (source, destination) in closure
         ]