Dunque...

1) Pensavo, con quell'istruzione, di creare un nuovo dizionario, come posso evitare che sovrascriva?

2) Prima ci sono altre righe di codice che non ho messo perchè inutili e che inseriscono un elemento nella lista

3) Hai ragione, incollato male il codice, fate conto che sia indentato bene

Ecco il codice di applyRule:

codice:
def applyRule(self, working_memory):
         temp_wrkmry = working_memory
         for conclusion in self.conclusions: 
              temp_wrkmry = conclusion.applyConclusion(temp_wrkmry)
         return temp_wrkmry
Già che ci sono metto pure il codice di applyConclusion, non si può mai sapere, anche se qui c'è semplicemente la modifica di temp_wrkmry, che vi ricordo essere un dizionario:

codice:
def applyConclusion(self, working_memory):
         temp = working_memory
         if (self.conclusion_name == 'retract'):
             if (not temp.has_keys(self.fact.getFactName())):
                 raise FactNotFoundException(self.fact.getFactName())
             del temp[self.fact.getFactName()]
         elif (self.conclusion_name == 'assert'):
             tempFact = Fact.Fact()
             tempFact.setFactName(self.fact.getFactName())
             for att_value in self.fact.attributes:
                 if (isinstance(att_value.getValue(), str)):
                     att_value.setValue(self.rule.variables[att_value.getValue()])
                 tempFact.addValAtt(att_value)
             del temp[self.fact.getFactName()]
             temp[self.fact.getFactName()] = tempFact