package aima.core.logic.propositional.visitors;
import java.util.Set;
import aima.core.logic.propositional.parsing.ast.Sentence;
import aima.core.logic.propositional.parsing.ast.Symbol;
import aima.core.util.SetOps;
/**
* @author Ravi Mohan
*
*/
public class SymbolClassifier {
public Set<Symbol> getPositiveSymbolsIn(Sentence sentence) {
return new PositiveSymbolCollector().getPositiveSymbolsIn(sentence);
}
public Set<Symbol> getNegativeSymbolsIn(Sentence sentence) {
return new NegativeSymbolCollector().getNegativeSymbolsIn(sentence);
}
public Set<Symbol> getPureNegativeSymbolsIn(Sentence sentence) {
Set<Symbol> allNegatives = getNegativeSymbolsIn(sentence);
Set<Symbol> allPositives = getPositiveSymbolsIn(sentence);
return SetOps.difference(allNegatives, allPositives);
}
public Set<Symbol> getPurePositiveSymbolsIn(Sentence sentence) {
Set<Symbol> allNegatives = getNegativeSymbolsIn(sentence);
Set<Symbol> allPositives = getPositiveSymbolsIn(sentence);
return SetOps.difference(allPositives, allNegatives);
}
public Set<Symbol> getPureSymbolsIn(Sentence sentence) {
Set<Symbol> allPureNegatives = getPureNegativeSymbolsIn(sentence);
Set<Symbol> allPurePositives = getPurePositiveSymbolsIn(sentence);
return SetOps.union(allPurePositives, allPureNegatives);
}
public Set<Symbol> getImpureSymbolsIn(Sentence sentence) {
Set<Symbol> allNegatives = getNegativeSymbolsIn(sentence);
Set<Symbol> allPositives = getPositiveSymbolsIn(sentence);
return SetOps.intersection(allPositives, allNegatives);
}
public Set<Symbol> getSymbolsIn(Sentence sentence) {
return new SymbolCollector().getSymbolsIn(sentence);
}
}