public class Test {
    public static void main(String[] args) {
      
        Node n1 = new Mult( new Var("a"), new Var("a"));
        Expr e1 = new Expr(new Mult(n1, new Var("b")));
        Assignation ass = new Assignation();
        ass.put("a", 4.0);
        ass.put("b", 2.0);
        System.out.println(e1.eval(ass));
        e1.derive("a"); 
        System.out.println(e1.eval(ass));
        Node n2 = new Mult(new Var("a"), new Var("a"));
        Expr e2 = new Expr( new Mult(n2, new Var("b")));
        e2.derive("b"); 
        System.out.println(e2.eval(ass));
        e2.substitute("a",5.0);
        System.out.println(e2.eval(ass));
    }
}
