lbls.parseLabel("add"+" "+LabelRepresentation.XM_DATA.POST+ " (= m_N (+ m_M 1))");
lbls.parseLabel("remove"+" "+LabelRepresentation.XM_DATA.PRE+ " (> m_N 0)");
lbls.parseLabel("remove"+" "+LabelRepresentation.XM_DATA.POST+ " (= m_N (- m_M 1))");
Smt.loadLibrary();
Smt.closeStdOut();
Smt smt = new Smt();
AbstractState state = null;
smt.pushContext();
state = lbls.getConjunctionForPath(Arrays.asList(new String[]{"remove"}));
smt.loadData(LabelRepresentation.getAssertionFromAbstractState(state));
Assert.assertFalse(smt.check());
smt.popContext();
smt.pushContext();
state = lbls.getConjunctionForPath(Arrays.asList(new String[]{}));
smt.loadData(LabelRepresentation.getAssertionFromAbstractState(state));
Assert.assertTrue(smt.check());
smt.popContext();
smt.pushContext();
state = lbls.getConjunctionForPath(Arrays.asList(new String[]{"add","remove"}));
smt.loadData(LabelRepresentation.getAssertionFromAbstractState(state));
Assert.assertTrue(smt.check());
smt.popContext();
smt.pushContext();
state = lbls.getConjunctionForPath(Arrays.asList(new String[]{"add","remove","remove"}));
smt.loadData(LabelRepresentation.getAssertionFromAbstractState(state));
Assert.assertFalse(smt.check());
smt.popContext();
Smt.reopenStdOut();
}