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