let apply_to_literals_groups (subst: subst) (groups: (literal * int) list list) : literal list list =
  let (_, groups') =
    List.fold_left
      (fun (mapping, groups') literals ->
        (* just normalize with empty substitution *)
        let literals', mapping' =
          apply_to_literals' subst literals mapping
        in
          (mapping', literals' :: groups')
      )
      ([], [])
      groups
  in
    List.rev groups'