code: def adjoint_scatter(
      adj_sum_op, adj_prod_op, out_adj, op, subs, source, reduced_vars
  ):
      return (
          (
              source,
              out_adj(**dict(subs)).reduce(adj_sum_op, reduced_vars),
          ),
      )
  
imports: from collections import defaultdict
  from collections.abc import Hashable
  from funsor.cnf import Contraction
  from funsor.interpretations import Interpretation, reflect
  from funsor.interpreter import stack_reinterpret
  from funsor.ops import AssociativeOp
  from funsor.registry import KeyedRegistry
  from funsor.terms import Approximate, Binary, Cat, Funsor, Reduce, Scatter, Slice, Subs, substitute, to_funsor
  from .None import instrument, interpreter, ops
label_desc: Use image node_id 12 for calling a global function with example usage: adjoint_scatter(adj_sum_op, adj_prod_op, out_adj, op, subs, source, reduced_vars) and returns: source,  out_adj