package Opt8 is type Value_Number_Kind is (Int_Literal_VN, Selected_Address_VN, Membership_VN, Initial_External_Kappa_VN, Aliased_Kappa_VN, Phi_As_Kappa_VN, Multi_Target_Call_Kappa_VN, Final_Value_Of_Seq_Kappa_VN, Block_Kappa_VN); subtype Kappa_VN is Value_Number_Kind range Initial_External_Kappa_VN .. Block_Kappa_VN; type Value_Number_Id is new Positive; type Kappa_Component_Rec; type Kappa_Component_Ptr is access Kappa_Component_Rec; type Kappa_Component_Rec is record Content_VN : Value_Number_Id; Next : Kappa_Component_Ptr; end record; type Value_Number_Rec(Kind : Value_Number_Kind) is record Id: Value_Number_Id; case Kind is when Int_Literal_VN => Int_Val : Integer; when Kappa_VN => Old_Value : Kappa_Component_Rec; Possible_New_Values : Kappa_Component_Ptr; Use_Default : Boolean; when Others => null; end case; end record; type Value_Number is access all Value_Number_Rec; function VN_Complexity (Val : Value_Number; N : Natural) return Natural; end Opt8;