To easily create new instances of the rational number abstraction.
To manipulate rational numbers using arithmetic operations, yielding new rational number results.
It should be possible to mix rationals and other arithmeticquantities in the same expression.
It should be possible to assign a rational number value to arational number variable.
The modification forms of assignment should be supported.
To compare one rational number to another.
It should be possible to perform input and output operations with rational numbers.