code: def __or(*funcs):
      "factory for compounding termination conditions with *or*"
  
      def term(solver, info=False):  # FIXME: 'self' doesn't flatten
          stop = {}
          [stop.update({f: f(solver, info)}) for f in funcs]
          _any = any(stop.values())
          if not info:
              return _any
          [stop.pop(cond) for (cond, met) in stop.items() if not met]
          if info == "self":
              return tuple(stop.keys())
          return "; ".join(set("; ".join(stop.values()).split("; ")))
  
      return term
  
imports: from mystic.termination import And, Or, When
label_desc: Use image node_id 2 for calling a global function with example usage: __or() and returns: term, str, _any, tuple