Module LogicTau


module LogicTau: sig .. end
Logical Language


type tau =
| Integer (*Mathematical Z numbers*)
| Real (*Mathematical R numbers*)
| Boolean (*Finite set {true,false}*)
| Pointer (*Pointer datatype in current model (see LogicDef.register)*)
| Set of tau (*Set t: Mathematical sets with elements of type t*)
| Array of tau * tau (*Array(ta,tb): Total functions from ta to tb*)
| Record of LogicId.id (*Tuples (fi,vi) with vi of type fi.ftype and fi in rfields*)
| ADT of LogicId.id * tau list (*Polymorphic instance of datatype a with parameters ti*)
| ALPHA of int (*i-th parameter of a polymorphic type in its definition. Starts with 0.*)

type field = {
   f_record : LogicId.id;
   f_name : LogicId.id;
   f_type : tau;
}
val compare_tau : tau -> tau -> int
val compare_sig : tau list -> tau list -> int
val compare_field : field -> field -> int
val depend : LogicId.Iset.t -> tau -> LogicId.Iset.t