public void parseCNFFormula(String file) {
        setRunning(true);
        setGlobalAction(GLOBAL_ACTION_LOAD_FORMULA);
        setCurrentAction(CURRENT_ACTION_LOAD_CLAUSES);
        formula = new CNFFormula();
        testSuite = null;
        mutants.clear();
        try {
            BufferedReader in = new BufferedReader(new FileReader(file));
            String line;
            while ((line = in.readLine()) != null) {
                line = line.trim();
                if (!line.startsWith("c")) {

                    StringTokenizer st = new StringTokenizer(line, " ");

                    if (line.startsWith("p")) {
                        st.nextToken();
                        st.nextToken();
                        formula.setnVars(Integer.parseInt(st.nextToken()));
                    } else {

                        int token;
                        Clause clause = new Clause(st.countTokens());
                        while (st.hasMoreTokens() && (token = Integer.parseInt(st.nextToken())) != 0) {
                            clause.addLiteral(new Literal(token));
                        }
                        if (!clause.isEmpty()) {
                            formula.addClause(clause);
                        }
                    }

                }
            }
            in.close();
        } catch (FileNotFoundException ex) {
            Logger.getLogger(ModelMutaLog.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(ModelMutaLog.class.getName()).log(Level.SEVERE, null, ex);
        }
        setRunning(false);
        setChanged();
        notifyObservers();
    }