/** * Author: Georg Hofferek <georg.hofferek@iaik.tugraz.at> */ package at.iaik.suraq.test; import java.util.ArrayList; import java.util.List; import org.junit.Test; import at.iaik.suraq.smtlib.formula.AndFormula; import at.iaik.suraq.smtlib.formula.DomainEq; import at.iaik.suraq.smtlib.formula.DomainVariable; import at.iaik.suraq.smtlib.formula.EqualityFormula; import at.iaik.suraq.smtlib.formula.Formula; import at.iaik.suraq.smtlib.formula.ImpliesFormula; import at.iaik.suraq.smtlib.formula.NotFormula; import at.iaik.suraq.smtlib.formula.OrFormula; import at.iaik.suraq.smtlib.formula.PropositionalConstant; import at.iaik.suraq.smtlib.formula.Term; import at.iaik.suraq.util.FormulaSimplifier; /** * @author Georg Hofferek <georg.hofferek@iaik.tugraz.at> * */ public class TestAbcSimplification { @Test public void test() throws Exception { List<Term> terms = new ArrayList<Term>(); List<Formula> formulas = new ArrayList<Formula>(); DomainVariable a = DomainVariable.create("a"); DomainVariable b = DomainVariable.create("b"); DomainVariable c = DomainVariable.create("c"); DomainVariable d = DomainVariable.create("d"); DomainVariable e = DomainVariable.create("e"); terms.clear(); terms.add(a); terms.add(b); DomainEq aEqb = (DomainEq) EqualityFormula.create(terms, true); terms.clear(); terms.add(b); terms.add(c); DomainEq bEqc = (DomainEq) EqualityFormula.create(terms, true); terms.clear(); terms.add(c); terms.add(d); DomainEq cEqd = (DomainEq) EqualityFormula.create(terms, true); terms.clear(); terms.add(d); terms.add(e); DomainEq dEqe = (DomainEq) EqualityFormula.create(terms, true); formulas.clear(); formulas.add(aEqb); formulas.add(PropositionalConstant.create(false)); AndFormula and1 = AndFormula.generate(formulas); formulas.clear(); formulas.add(cEqd); formulas.add(PropositionalConstant.create(true)); AndFormula and2 = AndFormula.generate(formulas); formulas.clear(); formulas.add(NotFormula.create(bEqc)); formulas.add(dEqe); AndFormula and3 = AndFormula.generate(formulas); formulas.clear(); formulas.add(cEqd); formulas.add(cEqd); AndFormula and4 = AndFormula.generate(formulas); formulas.clear(); formulas.add(and1); formulas.add(and2); OrFormula or1 = OrFormula.generate(formulas); formulas.clear(); formulas.add(NotFormula.create(and3)); formulas.add(and4); OrFormula or2 = OrFormula.generate(formulas); ImpliesFormula impl = ImpliesFormula.create(or1, or2); formulas.clear(); formulas.add(impl); formulas.add(PropositionalConstant.create(false)); OrFormula or3 = OrFormula.generate(formulas); FormulaSimplifier simplifier = new FormulaSimplifier(or3); simplifier.simplify(); boolean result = simplifier.checkSimplification(); System.out.println("Check result: " + result); } public void run() throws Exception { test(); } public static void main(String[] args) { try { TestAbcSimplification instance = new TestAbcSimplification(); instance.run(); } catch (Throwable exc) { exc.printStackTrace(); } } }