module E:Env.S
module Ctx:Ctx.S
module C:Clause.Swith module Ctx = Ctx
module ProofState:ProofState.Swith module C = C and module Ctx = Ctx
typeinf_rule =C.t -> C.t list
typegenerate_rule =unit -> C.t list
typebinary_inf_rule =inf_rule
typeunary_inf_rule =inf_rule
typesimplify_rule =C.t -> C.t SimplM.t
(c, `Same) means the clause has not been simplified;
(c, `New) means the clause has been simplified at least oncetypeactive_simplify_rule =simplify_rule
typerw_simplify_rule =simplify_rule
typebackward_simplify_rule =C.t -> C.ClauseSet.t
backward_simplify c therefore returns a subset of
ProofState.ActiveSet.clauses ()typeredundant_rule =C.t -> bool
typebackward_redundant_rule =C.ClauseSet.t -> C.t -> C.ClauseSet.t
ProofState.ActiveSet w.r.t the clause.
first param is the set of already known redundant clause, the rule
should add clauses to ittypeis_trivial_rule =C.t -> bool
typeterm_rewrite_rule =Libzipperposition.FOTerm.t -> Libzipperposition.FOTerm.t option
typelit_rewrite_rule =Literal.t -> Literal.t option
typemulti_simpl_rule =C.t -> C.t list option
None if the clause is unmodifiedtype 'a conversion_result =
| |
CR_skip |
(* |
rule didn't fire
| *) |
| |
CR_add of |
(* |
add this to the result
| *) |
| |
CR_return of |
(* |
shortcut the remaining rules, return this
| *) |
typeclause_conversion_rule =Libzipperposition.Statement.clause_t ->
C.t list conversion_result
val add_passive : C.t Sequence.t -> unitval add_active : C.t Sequence.t -> unitval add_simpl : C.t Sequence.t -> unitval remove_passive : C.t Sequence.t -> unitval remove_active : C.t Sequence.t -> unitval remove_simpl : C.t Sequence.t -> unitval get_passive : unit -> C.t Sequence.tval get_active : unit -> C.t Sequence.tval add_binary_inf : string -> binary_inf_rule -> unitval add_unary_inf : string -> unary_inf_rule -> unitval add_rw_simplify : rw_simplify_rule -> unitval add_active_simplify : active_simplify_rule -> unitval add_backward_simplify : backward_simplify_rule -> unitval add_redundant : redundant_rule -> unitval add_backward_redundant : backward_redundant_rule -> unitval add_simplify : simplify_rule -> unitval add_multi_simpl_rule : multi_simpl_rule -> unitval add_is_trivial : is_trivial_rule -> unitval add_rewrite_rule : string -> term_rewrite_rule -> unitval add_lit_rule : string -> lit_rewrite_rule -> unitval add_generate : string -> generate_rule -> unit
val cr_skip : 'a conversion_result
val cr_return : 'a -> 'a conversion_result
val cr_add : 'a -> 'a conversion_result
val add_clause_conversion : clause_conversion_rule -> unit
val add_step_init : (unit -> unit) -> unitval multi_simplify : C.t -> C.t list optionval params : Params.t
val get_empty_clauses : unit -> C.ClauseSet.tval get_some_empty_clause : unit -> C.t optionval has_empty_clause : unit -> boolval on_start : unit Signal.tval on_input_statement : Libzipperposition.Statement.clause_t Signal.tval convert_input_statements : Libzipperposition.Statement.clause_t CCVector.ro_vector ->
C.t CCVector.ro_vectorEnv_intf.S.on_input_statementval on_empty_clause : C.t Signal.tval ord : unit -> Libzipperposition.Ordering.t
val precedence : unit -> Libzipperposition.Precedence.t
val signature : unit -> Libzipperposition.Signature.t
val pp : unit CCFormat.printer
val pp_full : unit CCFormat.printertypestats =int * int * int
val stats : unit -> statsval next_passive : unit -> C.t optionval do_binary_inferences : C.t -> C.t Sequence.tval do_unary_inferences : C.t -> C.t Sequence.tval do_generate : unit -> C.t Sequence.tval is_trivial : C.t -> boolval is_active : C.t -> boolval is_passive : C.t -> boolval simplify : simplify_ruleval backward_simplify : C.t -> C.ClauseSet.t * C.t Sequence.tval simplify_active_with : (C.t -> C.t list option) -> unitval forward_simplify : simplify_ruleval generate : C.t -> C.t Sequence.tval is_redundant : C.t -> boolval subsumed_by : C.t -> C.ClauseSet.tval all_simplify : C.t -> C.t list SimplM.t[] if they are all trivial).val step_init : unit -> unitEnv_intf.S.add_step_initval flex_state : unit -> Flex_state.tval update_flex_state : (Flex_state.t -> Flex_state.t) -> unitupdate_flex_state f changes flex_state () using fval flex_add : 'a Flex_state.key -> 'a -> unitk -> v to the flex stateval flex_get : 'a Flex_state.key -> 'aflex_get k is the same as Flex_state.get_exn k (flex_state ()).Not_found if the key is not present