CertificateCertificates for Kind 2. This contains the base type as well as some combinators for certificates.
type t = int * Term.tThe type of certificates
type symbols = {vars : UfSymbol.t list;Names of state variables for the system
*)phi : string;Name of function symbol for k-inductive invariant
*)init : string;Name of function symbol for init
*)prop : string;Name of function symbol for property
*)trans : string;Name of function symbol for transition relation
*)}type out = {k : int;k of certificate
*)names : symbols;names for I, T, P and PHI
*)dirname : string;Directory where certificates and proofs are produced
*)proofname : string;Name for the final CPC proof
*)base : string;File name for base case check
*)induction : string;File name for inductive case check
*)implication : string;File name for implication of property check
*)}The type of certificates outputs, these are file names for the intermediate SMT-LIB 2 certificates
type invariant = {k : int;name : string;dirname : string;phi_file : string;base : string;File name for base case check
*)induction : string;File name for inductive case check
*)implication : string;File name for implication of property check
*)for_system : system;kind2_system : system;jkind_system : system;obs_system : system;}Merge certificates into one. The resulting certificate is a certificate for the conjunction of the original invariants.
Split a certificate following the boolean strucutre of its inductive invariant
val size : t -> intGives a measure to compare the size of the inductive invariants contained in a certificate.