MathExpr implements
		Function<Double[], Double>,
		Serializable { public ISeq<Var<Double>> vars() { return _vars.get(); } private  MathExpr(final Tree<? extends Op<Double>, ?> tree, boolean primary);  MathExpr(final Tree<? extends Op<Double>, ?> tree); ISeq<Var<Double>> vars(); TreeNode<Op<Double>> toTree(); @Override Double apply(final Double[] args); double eval(final double... args); @Override int hashCode(); @Override boolean equals(final Object obj); @Override String toString(); MathExpr simplify(
		final TreeRewriter<Op<Double>> rewriter,
		final int limit
	); MathExpr simplify(final TreeRewriter<Op<Double>> rewriter); MathExpr simplify(); static String format(final Tree<? extends Op<Double>, ?> tree); static MathExpr parse(final String expression); static TreeNode<Op<Double>> parseTree(final String expression); static double eval(final String expression, final double... args); static double eval(
		final Tree<? extends Op<Double>, ?> expression,
		final double... args
	); static int rewrite(final TreeNode<Op<Double>> tree, final int limit); static int rewrite(final TreeNode<Op<Double>> tree); static final TreeRewriter<Op<Double>> CONST_REWRITER; static final TreeRewriter<Op<Double>> ARITHMETIC_REWRITER; static final TreeRewriter<Op<Double>> REWRITER; }
@Test public void vars() { final MathExpr expr = MathExpr.parse("a*b*c + a/4 - sin(b*a) + d*d*b"); Assert.assertEquals(expr.vars().map(Var::name), ISeq.of("a", "b", "c", "d")); }