Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Source file ast.ml
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167(* This file is free software, part of dolmen. See file "LICENSE" for more information *)moduletypeId=sigtypet(** The type of identifiers *)typenamespace(** The type for namespaces. *)valterm:namespace(** Usual namespace, used for temrs, types and propositions. *)valdecl:namespace(** Names used to refer to tptp phrases. These are used
in declarations and include statement. *)valmk:namespace->string->t(** Make an identifier *)endmoduletypeTerm=sigtypet(** The type of terms. *)typeid(** The type of identifiers *)typelocation(** The type of locations attached to terms. *)valeq_t:?loc:location->unit->tvalneq_t:?loc:location->unit->tvalnot_t:?loc:location->unit->tvalor_t:?loc:location->unit->tvaland_t:?loc:location->unit->tvalxor_t:?loc:location->unit->tvalnor_t:?loc:location->unit->tvalnand_t:?loc:location->unit->tvalequiv_t:?loc:location->unit->tvalimplies_t:?loc:location->unit->tvalimplied_t:?loc:location->unit->tvalpi_t:?loc:location->unit->tvalsigma_t:?loc:location->unit->tvaldata_t:?loc:location->unit->t(** Predefined symbols in tptp. Symbols as standalone terms are necessary
for parsing tptp's THF. {!implied_t} is reverse implication, and
{!data_t} is used in tptp's annotations. {!pi_t} and {!sigma_t} are
the encoding of forall and exists quantifiers as constant in higher-order
logic. *)valcolon:?loc:location->t->t->t(** Juxtaposition of terms, usually used for annotating terms with their type. *)valvar:?loc:location->id->t(** Make a variable (in tptp, variable are syntaxically different from constants). *)valconst:?loc:location->id->t(** Make a constant. *)valdistinct:?loc:location->id->t(** Make a constant whose name possibly contain special characters
(All 'distinct' constants name are enclosed in quotes). *)valint:?loc:location->string->tvalrat:?loc:location->string->tvalreal:?loc:location->string->t(** Constants that are syntaxically recognised as numbers. *)valapply:?loc:location->t->tlist->t(** Application. *)valite:?loc:location->t->t->t->t(** Conditional, of the form [ite condition then_branch els_branch]. *)valunion:?loc:location->t->t->t(** Union of types. *)valproduct:?loc:location->t->t->t(** Product of types, used for function types with more than one argument. *)valarrow:?loc:location->t->t->t(** Function type constructor. *)valsubtype:?loc:location->t->t->t(** Comparison of type (used in tptp's THF). *)valpi:?loc:location->tlist->t->t(** Dependant type constructor, used for polymorphic function types. *)valletin:?loc:location->tlist->t->t(** Local binding for terms. *)valforall:?loc:location->tlist->t->t(** Universal propositional quantification. *)valexists:?loc:location->tlist->t->t(** Existencial porpositional quantification. *)vallambda:?loc:location->tlist->t->t(** Function construction. *)valchoice:?loc:location->tlist->t->t(** Indefinite description, also called choice operator. *)valdescription:?loc:location->tlist->t->t(** Definite description. *)valsequent:?loc:location->tlist->tlist->t(** Sequents as terms, used as [sequents hyps goals]. *)endmoduletypeStatement=sigtypet(** The type of statements. *)typeid(** The type of identifiers *)typeterm(** The type of terms used in statements. *)typelocation(** The type of locations attached to statements. *)valannot:?loc:location->term->termlist->term(** Terms as annotations for statements. *)valinclude_:?loc:location->string->idlist->t(** Include directive. Given the filename, and a list of
names to import (an empty list means import everything). *)valtpi:?loc:location->?annot:term->id->string->term->tvalthf:?loc:location->?annot:term->id->string->term->tvaltff:?loc:location->?annot:term->id->string->term->tvalfof:?loc:location->?annot:term->id->string->term->tvalcnf:?loc:location->?annot:term->id->string->term->t(** TPTP statements, used for instance as [tff ~loc ~annot name role t].
Instructs the prover to register a new directive with the given name,
role and term. Current tptp roles are:
- ["axiom", "hypothesis", "definition", "lemma", "theorem"] acts
as new assertions/declartions
- ["assumption", "conjecture"] are proposition that need to be proved,
and then can be used to prove other propositions. They are equivalent
to the following sequence of smtlib statements:
{ul
{- [push 1]}
{- [assert (not t)]}
{- [check_sat]}
{- [pop 1]}
{- [assert t]}
}
- ["negated_conjecture"] is the same as ["conjecture"], but the given proposition
is false (i.e its negation is the proposition to prove).
- ["type"] declares a new symbol and its type
- ["plain", "unknown", "fi_domain", "fi_functors", "fi_predicates"] are valid
roles with no specified semantics
- any other role is an error
*)end