Module Structure

module Structure: sig .. end

Gadt describing the structure of a tree of different data types, and providing fast accessors of its nodes. The leafs must provide a key from a Key module, see key.mli for details.


type ('_, '_) eq = 
| Eq : ('a, 'a) eq

Equality witness between types.

module type Key = sig .. end

Keys identifying datatypes.

module Make: 
functor (* : sig
end) -> Key 
module Key_Value: Key 

Keys module for the abstract values of Eva.

module Key_Location: Key 

Keys module for the abstract locations of Eva.

module Key_Domain: Key 

Keys module for the abstract domains of Eva.

module type Shape = sig .. end

A Key module with its structure type.

module Shape: 
functor (Key : Key) -> 
functor (Data : sig
type 'a t 
end) -> Shape  with type 'a key = 'a Key.key
         and type 'a data = 'a Data.t
module type Internal = sig .. end

Internal view of the tree, with the structure.

module type External = sig .. end

External view of the tree, with accessors.

module Open: 
functor (Shape : Shape) -> 
functor (Data : Internal with type 'a structure := 'a Shape.structure) -> External with type t := Data.t and type 'a key := 'a Shape.key

Opens an internal tree module into an external one.