| package Rational_Arithmetic is |

| type Whole is new Integer; |

| -- Undefine unwanted operations |

| function "/" (Left, Right: Whole) return Whole is abstract; |

| type Rational is private; |

| function "/" (Left, Right: Whole) return Rational; |

| function "-" (Left, Right: Rational) return Rational; |

| function "+" (Left: Whole ; Right: Rational) return Rational; |

| function "-" (Left: Whole ; Right: Rational) return Rational; |

| function "-" (Left: Rational; Right: Whole ) return Rational; |

| function "/" (Left: Whole ; Right: Rational) return Rational; |

| function "*" (Left: Whole ; Right: Rational) return Rational; |

| function "*" (Left: Rational; Right: Whole ) return Rational; |

| function "=" (Left: Rational; Right: Whole) return Boolean; |

| Numerator, Denominator: Whole; |