class_docstr: Backend program for evaluating a symbolic funsor expression.
  
  Programs depend on the funsor library only via ``funsor.ops`` and op
  registrations; program evaluation does not involve funsor interpretation or
  rewriting. Programs can be pickled and unpickled.
  
  :param iterable expr: A list of built-in constants (leaves).
  :param iterable inputs: A list of string names of program inputs (leaves).
  :param iterable operations: A list of program operations defining
      non-leaf nodes in the program dag. Each operations is a tuple ``(op,
      arg_ids)`` where op is a funsor op and ``arg_ids`` is a tuple of
      positions of values, starting from zero and counting: constants,
      inputs, and operation outputs.
class_docstr_tok: ["Backend","program","for","evaluating","a","symbolic","funsor","expression",".","Programs","depend","on","the","funsor","library","only","via","``","funsor.ops","``","and","op","registrations",";","program","evaluation","does","not","involve","funsor","interpretation","or","rewriting",".","Programs","can","be","pickled","and","unpickled",".",":","param","iterable","expr",":","A","list","of","built-in","constants","(","leaves",")",".",":","param","iterable","inputs",":","A","list","of","string","names","of","program","inputs","(","leaves",")",".",":","param","iterable","operations",":","A","list","of","program","operations","defining","non-leaf","nodes","in","the","program","dag",".","Each","operations","is","a","tuple","``","(","op",",","arg_ids",")","``","where","op","is","a","funsor","op","and","``","arg_ids","``","is","a","tuple","of","positions","of","values",",","starting","from","zero","and","counting",":","constants",",","inputs",",","and","operation","outputs","."]
code: def __init__(self, constants, inputs, operations):
      super().__init__()
      self.constants = tuple(constants)
      self.inputs = tuple(inputs)
      self.operations = tuple(operations)
      self.backend = get_backend()
  
imports: from funsor.util import get_backend, set_backend
label_desc: Use image node_id 1 to create a new OpProgram object  with example: obj = OpProgram(constants, inputs, operations)