add rational number abstraction