package electrod

  1. Overview
  2. Docs

Relation scopes.

type relation = private
  1. | Plain_relation of TupleSet.t * TupleSet.t
    (*

    inv: inf in sup

    *)
  2. | Partial_function of int * TupleSet.t
    (*

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

    *)
  3. | Total_function of int * TupleSet.t
    (*

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

    *)
type t = private
  1. | Exact of TupleSet.t
    (*

    means: lower bound = upper bound

    *)
  2. | Inexact of relation

Constructors

val exact : TupleSet.t -> t
val plain_relation : TupleSet.t -> TupleSet.t -> relation
val partial_function : int -> TupleSet.t -> relation
val total_function : int -> TupleSet.t -> relation
val inexact : relation -> t
val included_in : TupleSet.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 -> TupleSet.t

Return the inf and sup bounds of the scope.

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

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

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

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

include Intf.Print.S with type t := t
val pp : t Fmtc.t
val to_string : t -> string
OCaml

Innovation. Community. Security.