def is_chain()

in iep/programs.py [0:0]


def is_chain(program_list):
  visited = [False for fn in program_list]
  cur_idx = len(program_list) - 1
  while True:
    visited[cur_idx] = True
    inputs = program_list[cur_idx]['inputs']
    if len(inputs) == 0:
      break
    elif len(inputs) == 1:
      cur_idx = inputs[0]
    elif len(inputs) > 1:
      return False
  return all(visited)