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).
3.Term.eval() now has double as the type of return value. Therefore, 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().