(root)/
gcc-13.2.0/
gcc/
testsuite/
gnat.dg/
predicate12.ads
package Predicate12 is

   subtype Index_Type is Positive range 1 .. 100;
   type Array_Type is array(Index_Type) of Integer;

   type Search_Engine is interface;

   procedure Search
     (S           : in  Search_Engine;
      Search_Item : in  Integer;
      Items       : in  Array_Type;
      Found       : out Boolean;
      Result      : out Index_Type) is abstract
     with
       Pre'Class =>
         (for all J in Items'Range =>
           (for all K in J + 1 .. Items'Last => Items(J) <= Items(K))),
       Post'Class =>
         (if Found then Search_Item = Items(Result)
                   else (for all J in Items'Range => Items(J) /= Search_Item));

   type Binary_Search_Engine is new Search_Engine with null record;

   procedure Search
     (S           : in  Binary_Search_Engine;
      Search_Item : in  Integer;
      Items       : in  Array_Type;
      Found       : out Boolean;
      Result      : out Index_Type) is null;

   type Forward_Search_Engine is new Search_Engine with null record;

   procedure Search
     (S           : in  Forward_Search_Engine;
      Search_Item : in  Integer;
      Items       : in  Array_Type;
      Found       : out Boolean;
      Result      : out Index_Type) is null;

   procedure Dummy;

end Predicate12;