Logtk.StatementThe input problem is made of statements. Each statement can declare a type, assert a formula, or a conjecture, define a term, add a rewrite rule, etc.
Those statements do not necessarily reflect exactly statements in the input language(s) (e.g., TPTP).
type 'ty data = {data_id : ID.t;Name of the type
*)data_args : 'ty Var.t list;type parameters
*)data_ty : 'ty;type of Id, that is, type -> type -> ... -> type
data_cstors : (ID.t * 'ty * ('ty * (ID.t * 'ty)) list) list;Each constructor is id, ty, args. ty must be of the form ty1 -> ty2 -> ... -> id args. args has the form (ty1, p1), (ty2,p2), … where each p is a projector.
}A datatype declaration
type attrs = attr listtype 'ty skolem = ID.t * 'tytype ('f, 't, 'ty) def_rule = | Def_term of {}forall vars, id args = rhs
| Def_form of {vars : 'ty Var.t list;lhs : 't SLiteral.t;rhs : 'f list;polarity : polarity;as_form : 'f list;}forall vars, lhs op bigand rhs where op depends on polarity (in {=>, <=>, <=})
type ('f, 't, 'ty) view = | TyDecl of ID.t * 'tyid: ty
*)| Data of 'ty data list| Def of ('f, 't, 'ty) def list| Rewrite of ('f, 't, 'ty) def_rule| Assert of 'fassert form
*)| Lemma of 'f listlemma to prove and use, using Avatar cut
*)| Goal of 'fgoal to prove
*)| NegatedGoal of 'ty skolem list * 'f listgoal after negation, with skolems
*)type lit = Term.t SLiteral.ttype formula = TypedSTerm.ttype input_def = (TypedSTerm.t, TypedSTerm.t, TypedSTerm.t) deftype clause = lit listand proof = Proof.Step.tand input_t = (TypedSTerm.t, TypedSTerm.t, TypedSTerm.t) tval name : (_, _, _) t -> stringRetrieve a name from the proof, or generate+save a new one
val res_tc_i : input_t Proof.result_tcval res_tc_c : clause_t Proof.result_tcval attrs_ua : (_, _, _) t -> UntypedAST.attrsAll attributes, included these in the proof
val signature :
?init:Signature.t ->
?conj_syms:ID.t Iter.t ->
(_, _, Type.t) t Iter.t ->
Signature.tCompute signature when the types are using Type
val conv_attrs : UntypedAST.attrs -> attrsval attr_to_ua : attr -> UntypedAST.attrtype definition = Rewrite.rule_setval as_defined_cst : ID.t -> (int * definition) optionas_defined_cst id returns Some level if id is a constant defined at stratification level level, None otherwise
val as_defined_cst_level : ID.t -> int optionval is_defined_cst : ID.t -> boolval declare_defined_cst : ID.t -> level:int -> definition -> unitdeclare_defined_cst id ~level states that id is a defined constant of given level. It means that it is defined based only on constants of strictly lower levels
val scan_stmt_for_defined_cst : clause_t -> unitTry and declare defined constants in the given statement
val scan_tst_rewrite : input_t -> unitval scan_stmt_for_ind_ty : clause_t -> unitscan_stmt_for_ind_ty stmt examines stmt, and, if the statement is a declaration of inductive types or constants, it declares them using declare_ty or declare_inductive_constant.
val scan_simple_stmt_for_ind_ty : input_t -> unitSame as scan_stmt but on earlier statements
val get_rw_rule :
?weight_incr:int ->
clause_t ->
(ID.Set.elt * Rewrite.rule) optionval sine_axiom_selector :
?ignore_k_most_common_symbols:int option ->
?take_conj_defs:bool ->
?take_only_defs:bool ->
?trim_implications:bool ->
?depth_start:int ->
?depth_end:int ->
?tolerance:float ->
input_t Iter.t ->
input_t Iter.tImplementation of SinE algorithm with the usual parameters described in Hoder and Voronkov Sine Qua Non paper
module Seq : sig ... endval pp_def_rule :
'a CCFormat.printer ->
'b CCFormat.printer ->
'c CCFormat.printer ->
('a, 'b, 'c) def_rule CCFormat.printerval pp_def :
'a CCFormat.printer ->
'b CCFormat.printer ->
'c CCFormat.printer ->
('a, 'b, 'c) def CCFormat.printerval pp :
'a CCFormat.printer ->
'b CCFormat.printer ->
'c CCFormat.printer ->
('a, 'b, 'c) t CCFormat.printerval to_string :
'a CCFormat.printer ->
'b CCFormat.printer ->
'c CCFormat.printer ->
('a, 'b, 'c) t ->
stringval pp_clause : clause_t CCFormat.printerval pp_input : input_t CCFormat.printermodule ZF : sig ... endmodule TPTP : sig ... endval pp_clause_in : Output_format.t -> clause_t CCFormat.printerval pp_input_in : Output_format.t -> input_t CCFormat.printer