2.A new term ConstantNum:Term ::= <Num:double> is introduced for SelfCompare and SelfEq(now use Compare and Equal with the Right term as ConstantNum).
3.Term.eval() now has double as the type of return value. Therfore, Term.eval can be used by BinaryRelations for : eg. ID checking (int) or value checking (double).
4.Subsetof:BinaryRelation is introduced to cover the case if A is a subset of B. Term.Set() is used to pass String[](or maybe just pass the HashSet) to Subsetof.eval(). It is not instantiated in the Hanoi game.
5.Constraint.check(Pillar P0, Pillar P1, boolean turn) is now devide to
public boolean Constraint.oddTurn(Pillar P0, Pillar P1) and
public boolean Constraint.evenTurn(Pillar P0, Pillar P1).
6.Hanoi.present() is now named Hanoi.printResult().