init_abstract_semantic(add) :- %*
assert(abstract_semantic(add,b(member(_,LhsInterval),pred,_),b(member(_,RhsInterval),pred,_),b(add(b(max(LhsInterval),integer,[]),b(max(RhsInterval),integer,[])),integer,[synthesis(abstract_semantic,integer)]))) ,
assert(abstract_semantic(add,b(member(_,LhsInterval),pred,_),Y,b(add(b(max(LhsInterval),integer,[]),Y),integer,[synthesis(abstract_semantic,integer)]))) ,
assert(abstract_semantic(add,X,b(member(_,RhsInterval),pred,_),b(add(X,b(max(RhsInterval),integer,[])),integer,[synthesis(abstract_semantic,integer)]))) ,
assert(abstract_semantic(add,X,Y,b(add(X,Y),integer,[synthesis(abstract_semantic,integer)]))).
init_abstract_semantic(minus) :-
assert(abstract_semantic(minus,b(member(_,LhsInterval),pred,_),b(member(_,RhsInterval),pred,_),b(minus(b(min(LhsInterval),integer,[]),b(min(RhsInterval),integer,[])),integer,[synthesis(abstract_semantic,integer)]))) ,
assert(abstract_semantic(minus,b(member(_,LhsInterval),pred,_),Y,b(minus(b(min(LhsInterval),integer,[]),Y),integer,[synthesis(abstract_semantic,integer)]))) ,
assert(abstract_semantic(minus,X,b(member(_,RhsInterval),pred,_),b(minus(X,b(min(RhsInterval),integer,[])),integer,[synthesis(abstract_semantic,integer)]))) ,
assert(abstract_semantic(minus,X,Y,b(minus(X,Y),integer,[synthesis(abstract_semantic,integer)]))).
init_abstract_semantic(multiplication) :- %*
assert(abstract_semantic(multiplication,b(member(_,LhsInterval),pred,_),b(member(_,RhsInterval),pred,_),b(multiplication(b(max(LhsInterval),integer,[]),b(max(RhsInterval),integer,[])),integer,[synthesis(abstract_semantic,integer)]))) ,
assert(abstract_semantic(multiplication,b(member(_,LhsInterval),pred,_),Y,b(multiplication(b(max(LhsInterval),integer,[]),Y),integer,[synthesis(abstract_semantic,integer)]))) ,
assert(abstract_semantic(multiplication,X,b(member(_,RhsInterval),pred,_),b(multiplication(X,b(max(RhsInterval),integer,[])),integer,[synthesis(abstract_semantic,integer)]))) ,
assert(abstract_semantic(multiplication,X,Y,b(multiplication(X,Y),integer,[synthesis(abstract_semantic,integer)]))).
init_abstract_semantic(div) :- %*
assert(abstract_semantic(div,b(member(_,LhsInterval),pred,_),b(member(_,RhsInterval),pred,_),b(div(b(max(LhsInterval),integer,[]),b(max(RhsInterval),integer,[])),integer,[synthesis(abstract_semantic,integer)]))) ,
assert(abstract_semantic(div,b(member(_,LhsInterval),pred,_),Y,b(div(b(max(LhsInterval),integer,[]),Y),integer,[synthesis(abstract_semantic,integer)]))) ,
assert(abstract_semantic(div,X,b(member(_,RhsInterval),pred,_),b(div(X,b(max(RhsInterval),integer,[])),integer,[synthesis(abstract_semantic,integer)]))) ,
assert(abstract_semantic(div,X,Y,b(div(X,Y),integer,[synthesis(abstract_semantic,integer)]))).