Module Types


module Types: sig .. end
This file handles everything related to types : ctype are types from Cil, ie. C program, ltype are logic types ie. from ACSL. Both have to be translated into Fol types.

exception Unsupported of string
val prop_type : Fol.pure_type
val bool_type : Fol.pure_type
val memory_type : Fol.pure_type
val pointer_type : Fol.pure_type -> Fol.pure_type
val generic_pointer_type : unit -> Fol.pure_type
val array_type : Fol.pure_type -> Fol.pure_type
val struct_field_type : Fol.pure_type -> Fol.pure_type
val union_field_type : Fol.pure_type -> Fol.pure_type
val dummy_ctype : Cil_types.typ
val dummy_ltype : Cil_types.logic_type
val dummy_type : Fol.pure_type
val type_table : (int, Fol.pure_type) Hashtbl.t
val export_types : 'a Fol.gen_decl list -> 'a Fol.gen_decl list
val mk_int_ctype : 'a -> Fol.pure_type
TODO : use machine configuration from Cil ?
val mk_float_ctype : 'a -> Fol.pure_type
val mk_ctype : Cil_types.typ -> Fol.pure_type
Raises Unsupported for unsupported C types (function types for instance)
val is_bool_ltype : Cil_types.logic_type -> bool
val is_ptr_ltype : Cil_types.logic_type -> bool
val mk_ltype : Cil_types.logic_type -> Fol.pure_type
Raises Unsupported for unsupported logic types
val mk_field_type : Cil_types.fieldinfo -> Fol.pure_type
val ctype_array_elem : Cil_types.typ -> Cil_types.typ
val ctype_ptr_subtype : Cil_types.typ -> Cil_types.typ
val ctype_ptr : Cil_types.typ -> Cil_types.typ
val ltype_ptr : Cil_types.logic_type -> Cil_types.logic_type
Raises Unsupported when the type translation is unsupported
val ltype_array_elem : Cil_types.logic_type -> Cil_types.logic_type
val ltype_ptr_subtype : Cil_types.logic_type -> Cil_types.logic_type
val mk_ctype_ptr : Cil_types.typ -> Fol.pure_type
val mk_ltype_ptr : Cil_types.logic_type -> Fol.pure_type