code: def build_graph(formula):
      ''' Builds the implication graph from the formula '''
      graph = {}
  
      for clause in formula:
          for (lit, _) in clause:
              for neg in [False, True]:
                  graph[(lit, neg)] = []
  
      for ((a_lit, a_neg), (b_lit, b_neg)) in formula:
          add_edge(graph, (a_lit, a_neg), (b_lit, not b_neg))
          add_edge(graph, (b_lit, b_neg), (a_lit, not a_neg))
  
      return grapf build_graph(formula):
      ''' Builds the implication graph from the formula '''
      graph = {}
  
      for clause in formula:
          for (lit, _) in clause:
              for neg in [False, True]:
                  graph[(lit, neg)] = []
  
      for ((a_lit, a_neg), (b_lit, b_neg)) in formula:
          add_edge(graph, (a_lit, a_neg), (b_lit, not b_neg))
          add_edge(graph, (b_lit, b_neg), (a_lit, not a_neg))
  
      return graph
docs: Builds the implication graph from the formula