/** * 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); }