sig
module Type :
sig
type 'a or_bottom = [ `Bottom | `Value of 'a ]
val ( >>- ) :
'a Bottom.Type.or_bottom ->
('a -> 'b Bottom.Type.or_bottom) -> 'b Bottom.Type.or_bottom
val ( >>-: ) :
'a Bottom.Type.or_bottom -> ('a -> 'b) -> 'b Bottom.Type.or_bottom
end
type 'a or_bottom = [ `Bottom | `Value of 'a ]
val ( >>- ) : 'a or_bottom -> ('a -> 'b or_bottom) -> 'b or_bottom
val ( >>-: ) : 'a or_bottom -> ('a -> 'b) -> 'b or_bottom
val is_bottom : 'a or_bottom -> bool
val non_bottom : 'a or_bottom -> 'a
val equal : ('a -> 'a -> bool) -> 'a or_bottom -> 'a or_bottom -> bool
val is_included :
('a -> 'a -> bool) -> 'a or_bottom -> 'a or_bottom -> bool
val join : ('a -> 'a -> 'a) -> 'a or_bottom -> 'a or_bottom -> 'a or_bottom
val join_list : ('a -> 'a -> 'a) -> 'a or_bottom list -> 'a or_bottom
val narrow :
('a -> 'a -> 'a or_bottom) ->
'a or_bottom -> 'a or_bottom -> 'a or_bottom
val pretty :
(Stdlib.Format.formatter -> 'a -> unit) ->
Stdlib.Format.formatter -> 'a or_bottom -> unit
module Make_Datatype :
functor (Domain : Datatype.S) ->
sig
type t = Domain.t or_bottom
val ty : t Type.t
val name : string
val descr : t Descr.t
val packed_descr : Structural_descr.pack
val reprs : t list
val equal : t -> t -> bool
val compare : t -> t -> int
val hash : t -> int
val pretty_code : Format.formatter -> t -> unit
val internal_pretty_code :
Type.precedence -> Format.formatter -> t -> unit
val pretty : Format.formatter -> t -> unit
val varname : t -> string
val mem_project : (Project_skeleton.t -> bool) -> t -> bool
val copy : t -> t
end
module Bound_Lattice :
functor (Lattice : Lattice_type.Join_Semi_Lattice) ->
sig
type t = Lattice.t or_bottom
val ty : t Type.t
val name : string
val descr : t Descr.t
val packed_descr : Structural_descr.pack
val reprs : t list
val equal : t -> t -> bool
val compare : t -> t -> int
val hash : t -> int
val pretty_code : Format.formatter -> t -> unit
val internal_pretty_code :
Type.precedence -> Format.formatter -> t -> unit
val pretty : Format.formatter -> t -> unit
val varname : t -> string
val mem_project : (Project_skeleton.t -> bool) -> t -> bool
val copy : t -> t
val join : t -> t -> t
val is_included : t -> t -> bool
val bottom : t
end
val to_list : 'a or_bottom -> 'a list
val bot_of_list : 'a list -> 'a list or_bottom
val list_of_bot : 'a list or_bottom -> 'a list
val all : 'a or_bottom list -> 'a list
val add_to_list : 'a or_bottom -> 'a list -> 'a list
module Top :
sig
type 'a or_top_bottom = [ `Bottom | `Top | `Value of 'a ]
val join :
('a -> 'a -> 'a) ->
'a Bottom.Top.or_top_bottom ->
'a Bottom.Top.or_top_bottom -> 'a Bottom.Top.or_top_bottom
val narrow :
('a -> 'a -> 'a or_bottom) ->
'a Bottom.Top.or_top_bottom ->
'a Bottom.Top.or_top_bottom -> 'a Bottom.Top.or_top_bottom
end
end