Docs GODI Archive
Projects Blog Link DB

Search GODI:


More options
File lib/jessie/jc.cmi_pretty GODI Package apps-why
 
   jc.cmi_pretty    Sources  
module Lib :
  sig
    module Sset :
      sig
        type elt = string
        type t = Jc.Lib.Sset.t
        val empty : t
        val is_empty : t -> bool
        val mem : elt -> t -> bool
        val add : elt -> t -> t
        val singleton : elt -> t
        val remove : elt -> t -> t
        val union : t -> t -> t
        val inter : t -> t -> t
        val diff : t -> t -> t
        val compare : t -> t -> int
        val equal : t -> t -> bool
        val subset : t -> t -> bool
        val iter : (elt -> unit) -> t -> unit
        val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
        val for_all : (elt -> bool) -> t -> bool
        val exists : (elt -> bool) -> t -> bool
        val filter : (elt -> bool) -> t -> t
        val partition : (elt -> bool) -> t -> t * t
        val cardinal : t -> int
        val elements : t -> elt list
        val min_elt : t -> elt
        val max_elt : t -> elt
        val choose : t -> elt
        val split : elt -> t -> t * bool * t
      end
    val mkdir_p : string -> unit
    val file : dir:string -> file:string -> string
    val file_subdir : dir:string -> file:string -> string
    val file_copy_if_different : string -> string -> unit
  end
module Rc :
  sig
    type rc_value =
      Jc.Rc.rc_value =
        RCint of int
      | RCbool of bool
      | RCfloat of float
      | RCstring of string
      | RCident of string
      | RCkind of Output.kind
    val from_file : string -> (string * (string * rc_value) list) list
  end
module Loc :
  sig
    val report_line : Format.formatter -> Lexing.position -> unit
    type position = Lexing.position * Lexing.position
    exception Located of position * exn
    val string : position -> string
    val parse : string -> position
    val dummy_position : position
    type floc = string * int * int * int
    val dummy_floc : floc
    val extract : position -> floc
    val gen_report_line : Format.formatter -> floc -> unit
    val gen_report_position : Format.formatter -> position -> unit
    val report_position : Format.formatter -> position -> unit
    val report_obligation_position : Format.formatter -> floc -> unit
    val join : 'a * 'b -> 'a * 'b -> 'a * 'b
    val current_offset : int ref
    val reloc : Lexing.position -> Lexing.position
    val add_ident : string -> floc -> unit
    val ident : string -> floc
  end
module Pp :
  sig
    val print_option :
      (Format.formatter -> 'a -> unit) ->
      Format.formatter -> 'a option -> unit
    val print_option_or_default :
      string ->
      (Format.formatter -> 'a -> unit) ->
      Format.formatter -> 'a option -> unit
    val print_list :
      (Format.formatter -> unit -> unit) ->
      (Format.formatter -> 'a -> unit) -> Format.formatter -> 'a list -> unit
    val print_list_or_default :
      string ->
      (Format.formatter -> unit -> unit) ->
      (Format.formatter -> 'a -> unit) -> Format.formatter -> 'a list -> unit
    val print_list_par :
      (Format.formatter -> unit -> 'a) ->
      (Format.formatter -> 'b -> unit) -> Format.formatter -> 'b list -> unit
    val print_list_delim :
      (Format.formatter -> unit -> unit) ->
      (Format.formatter -> unit -> unit) ->
      (Format.formatter -> unit -> unit) ->
      (Format.formatter -> 'a -> unit) -> Format.formatter -> 'a list -> unit
    val space : Format.formatter -> unit -> unit
    val alt : Format.formatter -> unit -> unit
    val newline : Format.formatter -> unit -> unit
    val comma : Format.formatter -> unit -> unit
    val semi : Format.formatter -> unit -> unit
    val underscore : Format.formatter -> unit -> unit
    val arrow : Format.formatter -> unit -> unit
    val lbrace : Format.formatter -> unit -> unit
    val rbrace : Format.formatter -> unit -> unit
    val nothing : Format.formatter -> unit -> unit
    val string : Format.formatter -> string -> unit
    val constant_string : string -> Format.formatter -> unit -> unit
    val hov : int -> Format.formatter -> ('a -> unit) -> 'a -> unit
    val open_formatter : ?margin:int -> out_channel -> Format.formatter
    val close_formatter : Format.formatter -> unit
    val open_file_and_formatter :
      ?margin:int -> string -> out_channel * Format.formatter
    val close_file_and_formatter : out_channel * Format.formatter -> unit
    val print_in_file_no_close :
      ?margin:int -> (Format.formatter -> unit) -> string -> out_channel
    val print_in_file :
      ?margin:int -> (Format.formatter -> unit) -> string -> unit
  end
module Option_misc :
  sig
    val map : ('a -> 'b) -> 'a option -> 'b option
    val iter : ('a -> unit) -> 'a option -> unit
    val fold : ('a -> 'b -> 'b) -> 'a option -> 'b -> 'b
    val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b option -> 'a
  end
module Jc_type_var :
  sig
    type t = Jc.Jc_type_var.t
    val fresh : string -> t
    val find : t -> t list -> 'a list -> 'a
    val uid : t -> int
    val name : t -> string
    val uname : t -> string
  end
module Output :
  sig
    type constant =
      Jc.Output.constant =
        Prim_void
      | Prim_int of string
      | Prim_real of string
      | Prim_bool of bool
    type logic_type =
      Jc.Output.logic_type = {
      logic_type_name : string;
      logic_type_args : logic_type list;
    }
    val fprintf_logic_type : Format.formatter -> logic_type -> unit
    type term =
      Jc.Output.term =
        LConst of constant
      | LApp of string * term list
      | LVar of string
      | LVarAtLabel of string * string
      | Tnamed of string * term
      | TIf of term * term * term
    val fprintf_term : Format.formatter -> term -> unit
    type assertion =
      Jc.Output.assertion =
        LTrue
      | LFalse
      | LAnd of assertion * assertion
      | LOr of assertion * assertion
      | LIff of assertion * assertion
      | LNot of assertion
      | LImpl of assertion * assertion
      | LIf of term * assertion * assertion
      | LLet of string * term * assertion
      | LForall of string * logic_type * assertion
      | LExists of string * logic_type * assertion
      | LPred of string * term list
      | LNamed of string * assertion
    val make_or : assertion -> assertion -> assertion
    val make_and : assertion -> assertion -> assertion
    val make_or_list : assertion list -> assertion
    val make_and_list : assertion list -> assertion
    val make_impl : assertion -> assertion -> assertion
    val make_equiv : assertion -> assertion -> assertion
    val fprintf_assertion : Format.formatter -> assertion -> unit
    type why_type =
      Jc.Output.why_type =
        Prod_type of string * why_type * why_type
      | Base_type of logic_type
      | Ref_type of why_type
      | Annot_type of assertion * why_type * string list * string list *
          assertion * (string * assertion) list
    val int_type : why_type
    val bool_type : why_type
    val unit_type : why_type
    val base_type : string -> why_type
    type variant = term * string option
    type opaque = bool
    type expr =
      Jc.Output.expr =
        Cte of constant
      | Var of string
      | And of expr * expr
      | Or of expr * expr
      | Not of expr
      | Void
      | Deref of string
      | If of expr * expr * expr
      | While of expr * assertion * variant option * expr list
      | Block of expr list
      | Assign of string * expr
      | Let of string * expr * expr
      | Let_ref of string * expr * expr
      | App of expr * expr
      | Raise of string * expr option
      | Try of expr * string * string option * expr
      | Fun of (string * why_type) list * assertion * expr * assertion *
          (string * assertion) list
      | Triple of opaque * assertion * expr * assertion *
          (string * assertion) list
      | Assert of assertion * expr
      | Label of string * expr
      | BlackBox of why_type
      | Absurd
      | Loc of Lexing.position * expr
    val fprintf_expr : Format.formatter -> expr -> unit
    val make_or_expr : expr -> expr -> expr
    val make_and_expr : expr -> expr -> expr
    val make_app : string -> expr list -> expr
    val make_app_e : expr -> expr list -> expr
    val make_label : string -> expr -> expr
    val make_while : expr -> assertion -> variant option -> expr -> expr
    val make_pre : assertion -> expr -> expr
    val append : expr -> expr -> expr
    type why_decl =
      Jc.Output.why_decl =
        Param of bool * string * why_type
      | Def of string * expr
      | Logic of bool * string * (string * logic_type) list * logic_type
      | Axiom of string * assertion
      | Goal of string * assertion
      | Predicate of bool * string * (string * logic_type) list * assertion
      | Function of bool * string * (string * logic_type) list * logic_type *
          term
      | Type of string * string list
      | Exception of string * logic_type option
    val fprintf_why_decl : Format.formatter -> why_decl -> unit
    val fprintf_why_decls : Format.formatter -> why_decl list -> unit
    type kind =
      Jc.Output.kind =
        ArithOverflow
      | DownCast
      | IndexBounds
      | PointerDeref
      | UserCall
      | DivByZero
      | AllocSize
      | Pack
      | Unpack
    val locs_table :
      (string, kind option * string option * string option * Loc.position)
      Hashtbl.t
    val reg_loc :
      string ->
      ?id:string ->
      ?kind:kind -> ?name:string -> ?formula:string -> Loc.position -> string
    val print_locs : Format.formatter -> unit
  end
module Jc_version :
  sig val version : string val date : string val libdir : string end
module Jc_common_options :
  sig
    val debug : bool ref
    val verbose : bool ref
    val werror : bool ref
    val inv_sem : Jc_env.inv_sem