(root)/
gcc-13.2.0/
gcc/
testsuite/
gnat.dg/
spark2.ads
package SPARK2 with SPARK_Mode is

   function Expon (Value, Exp : Natural) return Natural is
      (if Exp = 0 then 1
       else Value * Expon (Value, Exp - 1))
   with Ghost,
        Pre => Value <= Max_Factorial_Number and Exp <= Max_Factorial_Number,
        Annotate => (GNATprove, Terminating);  --  CRASH!

   Max_Factorial_Number : constant := 6;

   function Factorial (N : Natural) return Natural with
      Pre => N < Max_Factorial_Number,
      Post => Factorial'Result <= Expon (Max_Factorial_Number, N);

end SPARK2;