docs: def is_entailed_by(self, other):
          """
          Given two beliefstates, returns True iff the calling instance
          implies the other beliefstate, meaning it contains at least the same
          structure (for all structures) and all values (for all defined values).
          
          Inverse of `entails`.
  
          Note: this only compares the items in the DictCell, not `pos`,
          `environment_variables` or `deferred_effects`.
          """
          for (s_key, s_val) in self:
              if s_key in other:
                  if not hasattr(other[s_key], 'implies'):
                      raise Exception("Cell for %s is missing implies()" % s_key)
                  if not other[s_key].implies(s_val):
                      return False
              else:
                  return False
          return True