Beispiel #1
0
        /**
         * Recopila un conjunto de cláusulas de una lista de sentencias dada.
         *
         * @param cnfSentences
         *            una lista de sentencias CNF de donde vamos a recopilar cláusulas.
         * @return un conjunto de todas las cláusulas contenidas.
         * @throws ArgumentException
         *             si cualquiera de las sentencias dadas no está en CNF
         */
        public static ISet <Clause> GetClausesFrom(params Sentence[] cnfSentences)
        {
            ISet <Clause> result = new HashSet <Clause>();       //LinkedHashSet

            ClauseCollector clauseCollector = new ClauseCollector();

            foreach (Sentence cnfSentence in cnfSentences)
            {
                result = cnfSentence.Accept(clauseCollector, result);
            }

            return(result);
        }
        /**
         * Devuelve la sentencia especificada en su equivalente lógica de forma de conjunción de cláusulas.
         *
         * @param s
         *            una sentencia de lógica proposicional
         *
         * @return la sentencia de entrada convertida en su equivalente lógica de forma de conjunción de cláusulas.
         */
        public static ConjunctionOfClauses Convert(Sentence s)
        {
            ConjunctionOfClauses result = null;

            Sentence cnfSentence = ConvertToCNF.Convert(s);

            IList <Clause> clauses = new List <Clause>(); //ArrayList

            foreach (var c in ClauseCollector.GetClausesFrom(cnfSentence))
            {
                clauses.Add(c);
            }

            result = new ConjunctionOfClauses(clauses);

            return(result);
        }