### Question:
XOr extends LTLFormula { @Override protected LTLFormula lower(){ for(int i = 0; i < children.size(); ++i){ children.set(i,children.get(i).lower()); } ArrayList<LTLFormula> nextChildren; LTLFormula left = children.get(0); for(int i = 1; i < children.size(); ++i){ nextChildren = new ArrayList<LTLFormula>(2); LTLFormula right = children.get(i); nextChildren.add(new Negation(left.copy())); nextChildren.add(right.copy()); LTLFormula And1 = new And(nextChildren); nextChildren = new ArrayList<LTLFormula>(2); nextChildren.add(left); nextChildren.add(new Negation(right)); LTLFormula And2 = new And(nextChildren); nextChildren = new ArrayList<LTLFormula>(2); nextChildren.add(And1); nextChildren.add(And2); left = new Or(nextChildren); } return left; } XOr(ArrayList<LTLFormula> children); @Override LTLType getLTLType(); @Override LTLFormula normalize(); @Override LTLFormula copy(); static void main(String[] args);  }### Answer:
@Test public void testLower() { LTLFormula expected = OrTest.makeOr(AndTest.makeAnd(new Negation(a), b), AndTest.makeAnd(a, new Negation(b))); assertEquals(expected, a_xor_b.simplify()); }