src/HOL/SPARK/Examples/Liseq/Liseq.ads
author wenzelm
Tue, 22 Jul 2025 12:02:53 +0200
changeset 82894 a8e47bd31965
parent 41561 d1318f3c86ba
permissions -rw-r--r--
back to more basic defaults, independently on the accidental L&F: e.g. relevant for editor_style=false, and session_graph.pdf;

-------------------------------------------------------------------------------
-- Longest increasing subsequence of an array of integers
-------------------------------------------------------------------------------

package Liseq is

   type Vector is array (Integer range <>) of Integer;

   --# function Liseq_prfx(A: Vector; i: Integer) return Integer;
   --# function Liseq_ends_at(A: Vector; i: Integer) return Integer;
   --# function Max_ext(A: Vector; i, j: Integer) return Integer;

   procedure Liseq_length(A: in Vector; L: in out Vector; maxi: out Integer);
   --# derives maxi, L from A, L;
   --# pre A'First = 0 and L'First = 0 and A'Last = L'Last and A'Last < Integer'Last;
   --# post maxi = Liseq_prfx (A, A'Last+1);

end Liseq;