electrod

Formal analysis for the Electrod formal pivot language
IN THIS PACKAGE
type t =
| Const of {
name : Name.t;
arity : int;
scope : Scope.t;
}
| Var of {
name : Name.t;
arity : int;
scope : Scope.t;
fby : Scope.t option;
}

A relation is either static (const) or dynamic (var). In the latter case, it may either be specified in a unique scope or with a scope for the initial instant and then a scope for all other instants. The arity is compulsorily specified by the user for empty bounds and optionally otherwise.

val const : Name.t -> int -> Scope.t -> t

Constructors

val var : Name.t -> int -> Scope.t -> Scope.t option -> t
val arity : t -> int

Arity of the relation. (> 0)

val name : t -> Name.t
val equal : t -> t -> bool
val is_set : t -> bool

Tells whether the relation is a set or a relation of arity > 1.

val is_nary : t -> bool
val is_const : t -> bool
val is_var : t -> bool
val scope : t -> Scope.t

Returns the scope of a relation (for variable relations: not fby!)

val must : t -> Tuple_set.t
val may : t -> Tuple_set.t
val sup : t -> Tuple_set.t
val pp : ?print_name:bool -> Containers.Format.formatter -> t -> unit
val to_string : ?print_name:bool -> t -> string