LogtkSymbolsLogtkSymbols are abstract, but must be constructible from strings, printable, comparable and hashable.
type connective =
| Not
| And
| Or
| Imply
| Equiv
| Xor
| Eq
| Neq
| HasType
| LiftType
| True
| False
| Exists
| Forall
| ForallTy
| Lambda
| Arrow
| Wildcard
| Multiset
| FreshVar of int
| TType
type const_symbol = private {
mutable cs_id : int;
cs_name : string;
}
include LogtkInterfaces.PRINT with type t := t
val pp : Buffer .t -> t -> unit
val to_string : t -> string
val fmt : Format .formatter -> t -> unit
val is_prefix : t -> bool
is_infix s
returns true
if the way the symbol is printed should be used in a prefix way if applied to 1 argument
is_infix s
returns true
if the way the symbol is printed should be used in an infix way if applied to two arguments
module Map : Sequence .Map.S with type key = t
module Set : Sequence .Set.S with type elt = t
module Tbl : Hashtbl .S with type key = t
val ty : t -> [ `Int | `Rat | `Other ]
Base Constructorsval of_string : string -> t
val int_of_string : string -> t
val of_rat : int -> int -> t
val rat_of_string : string -> t
val is_numeric : t -> bool
val is_distinct : t -> bool
module Base : sig ... end
Generation of symbolsval gensym : ?prefix :string -> unit -> t
Fresh symbol (with unique name)
TPTP InterfaceCreates symbol and give them properties.
module TPTP : sig ... end
The module ArithOp
deals only with numeric constants, i.e., all symbols must verify is_numeric
(and most of the time, have the same type). The semantics of operations follows TPTP .