@Test public void testIntAdd() { assertEquals(Int(6), simplify(Add(Int(1), Int(2), Int(3)))); assertEquals(Int(0), simplify(Add(Int(1), Int(2), Int(-3)))); assertEquals(Add(a, Int(4)), simplify(Add(Int(1), a, Int(3)))); assertEquals(Add(a, Int(4)), simplify(Add(Int(1), Add(a, Int(3))))); assertEquals(a, simplify(Add(Int(-3), a, Int(3)))); assertEquals(Add(a, b, a, b, c), simplify(Add(a, Add(b, Add(a, Add(b, c)))))); assertEquals(Int("4294967294"), simplify(Add(Int(Integer.MAX_VALUE), Int(Integer.MAX_VALUE)))); }
@SuppressWarnings("unchecked") public static <T extends Type> Expr<T> simplify(final Expr<T> expr, final Valuation valuation) { return (Expr<T>) TABLE.dispatch(expr, valuation); }
ExprSimplifier { @SuppressWarnings("unchecked") public static <T extends Type> Expr<T> simplify(final Expr<T> expr, final Valuation valuation) { return (Expr<T>) TABLE.dispatch(expr, valuation); } }
ExprSimplifier { @SuppressWarnings("unchecked") public static <T extends Type> Expr<T> simplify(final Expr<T> expr, final Valuation valuation) { return (Expr<T>) TABLE.dispatch(expr, valuation); } private  ExprSimplifier(); }
ExprSimplifier { @SuppressWarnings("unchecked") public static <T extends Type> Expr<T> simplify(final Expr<T> expr, final Valuation valuation) { return (Expr<T>) TABLE.dispatch(expr, valuation); } private  ExprSimplifier(); @SuppressWarnings("unchecked") static Expr<T> simplify(final Expr<T> expr, final Valuation valuation); }
ExprSimplifier { @SuppressWarnings("unchecked") public static <T extends Type> Expr<T> simplify(final Expr<T> expr, final Valuation valuation) { return (Expr<T>) TABLE.dispatch(expr, valuation); } private  ExprSimplifier(); @SuppressWarnings("unchecked") static Expr<T> simplify(final Expr<T> expr, final Valuation valuation);  }