123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899(* This file is free software, part of dolmen. See file "LICENSE" for more information *)(** Interfaces for Tags.
Tags are used to attach arbitrary information to ndoes in an ast. *)(** Base signature for tags. *)moduletypeS=sigtype'at(** Polymorphic tags *)valcreate:unit->'at(** Create a new tag. *)end(** Minium required signature for tags to typecheck Alt-Ergo's core/base theory. *)moduletypeAe_Base=sigtypeterm(** The type of terms *)type'at(** Polymorphic tags *)valpredicate:unitt(** A flag (i.e. unit tag), indicating that the declaration is a predicate *)valac:unitt(** A flag (i.e. unit tag), indicating that the tagged term/formula
is to be considered as a associative and commutative term. *)valnamed:stringt(** A tag used to name formulas in alt-ergo. *)valtriggers:termlistlistt(** Multi-triggers that can be added to quantified formulas *)valfilters:termlistt(** Filters that can be added to quantified formulas *)end(** Minium required signature for tags to typecheck smtlib's core/base theory. *)moduletypeSmtlib_Base=sigtypeterm(** The type of terms *)type'at(** Polymorphic tags *)valnamed:stringt(** A tag used to named formulas in smtlib.
Should correspond to the `:named` attribute. *)valtriggers:termlistlistt(** Multi-triggers (typically annotated on the body of
a quantified formula and not the quantified formula itself). *)valrwrt:unitt(** A flag (i.e. unit tag), indicating that the tagged term/formula
is to be considered as a rewrite rule. *)end(** Tags *)moduletypeZf_Base=sigtype'at(** Polymorphic tags *)valrwrt:unitt(** A flag (i.e. unit tag), indicatgin that the tagged term/formula
is to be considered as a rewrite rule. *)typename(** A type used to specify a name for printing identifiers *)valname:namet(** A tag used to specify what to print when printing an identifier *)valexact:string->name(** Print the identifier with this exact string. *)typepos(** A type to indicate how to print identifiers *)valpos:post(** A tag to specify how to print identifiers*)valinfix:pos(** The tagged identifier is an infix symbol *)valprefix:pos(** The tagged identifier is a prefix symbol *)end