code: def __declare(self, *facts):
          
          if any(f.has_field_constraints() for f in facts):
              raise TypeError(
                  "Declared facts cannot contain conditional elements")
          elif any(f.has_nested_accessor() for f in facts):
              raise KeyError(
                  "Cannot declare facts containing double underscores as keys.")
          else:
              last_inserted = None
              for fact in facts:
                  last_inserted = self.facts.declare(fact)
  
              if not self.running:
                  added, removed = self.get_activations()
                  self.strategy.update_agenda(self.agenda, added, removed)
  
              return last_inserted
docs: Internal declaration method. Used for ``declare`` and ``deffacts``