code: protected ArrayList<ArrayList<String>> parseFormula(HashMap<IAtomicConceptOfLabel, String> hashConceptNumber,
                                                          Map<String, IAtomicConceptOfLabel> acolsMap, INode node) {
          ArrayList<ArrayList<String>> representation = new ArrayList<ArrayList<String>>();
          boolean saved_negation = false;
          for (StringTokenizer clauseTokenizer = new StringTokenizer(node.getNodeData().getcNodeFormula(), "&"); clauseTokenizer.hasMoreTokens();) {
              String clause = clauseTokenizer.nextToken();
              ArrayList<String> clause_vec = new ArrayList<String>();
              for (StringTokenizer varTokenizer = new StringTokenizer(clause, "|() "); varTokenizer.hasMoreTokens();) {
                  String var = varTokenizer.nextToken();
                  boolean negation = false;
                  if (var.startsWith("~")) {
                      negation = true;
                      var = var.substring(1);
                  }
                  if (var.length() < 2) {
                      saved_negation = true;
                      continue;
                  }
                  String var_num = hashConceptNumber.get(acolsMap.get(var));
                  if (negation || saved_negation) {
                      saved_negation = false;
                      var_num = "-" + var_num;
                  }
                  clause_vec.add(var_num);
              }
              representation.add(clause_vec);
          }
          return representation;
      }
docs: Parses a c@node formula replacing references to acols with references to the DIMACS variables. Uses and depends
  on CNF representation which is "conjunction of disjunctions",  that is the first level list represents
  conjunction of second-level lists representing disjunction clauses.
  
  @param hashConceptNumber HashMap acol -> variable number
  @param acolsMap          map with acol id -> acol mapping
  @param node              node
  @return formula with DIMACS variables