electrod

Formal analysis for the Electrod formal pivot language
IN THIS PACKAGE
Module Libelectrod . Scope
type relation = private
| Plain_relation of Tuple_set.t * Tuple_set.t(*

inv: inf in sup

*)
| Partial_function of int * Tuple_set.t(*

int is the domain arity (inv: >= 0); inf = empty

*)
| Total_function of int * Tuple_set.t(*

int is the domain arity (inv: >= 0); inf = empty

*)
type t = private
| Exact of Tuple_set.t(*

means: lower bound = upper bound

*)
| Inexact of relation

Constructors

val exact : Tuple_set.t -> t
val plain_relation : Tuple_set.t -> Tuple_set.t -> relation
val partial_function : int -> Tuple_set.t -> relation
val total_function : int -> Tuple_set.t -> relation
val inexact : relation -> t
val equal : t -> t -> bool
val included_in : Tuple_set.t -> t -> bool

included_in ts scope tells whether ts is in the scope (meaning it also contains the lower bound of the scope if the latter is inexact.)

val inf : t -> Tuple_set.t

Return the inf and sup bounds of the scope.

val sup : t -> Tuple_set.t
val must : t -> Tuple_set.t

Return the must and may (= sup - inf; computation is cached) bounds of the scope.

val may : t -> Tuple_set.t
val is_partial : t -> bool
val inferred_arity : t -> int

0 if the arity cannot be inferred (= is unknown), n > 0 otherwise.

val rename : ( Atom.t, Atom.t ) Containers.List.Assoc.t -> t -> t
include Intf.Print.S with type t := t
val pp : t Fmtc.t
val to_string : t -> string