1generic
2package Predicate6 is
3   type Price_Kind is (Infinitely_Small, Normal, Infinitely_Large);
4   subtype Infinite_Kind is Price_Kind with Static_Predicate =>
5     Infinite_Kind in Infinitely_Small | Infinitely_Large;
6   function "not" (Kind : Infinite_Kind) return Infinite_Kind is
7     (case Kind is when Infinitely_Small => Infinitely_Large,
8        when Infinitely_Large => Infinitely_Small);
9   procedure Foo;
10end;
11