Libzipperposition_phases.PhasesSourceTo process a file, the prover goes through a sequence of phases that are used to build values. This module reifies the phases.
type env_with_clauses = | Env_clauses : 'c Libzipperposition.Env.packed
* 'c Libzipperposition.Clause.sets -> env_with_clausestype env_with_result = | Env_result : 'c Libzipperposition.Env.packed
* Libzipperposition.Saturate.szs_status -> env_with_resulttype ('ret, 'before, 'after) phase = | Init : (unit, _, [ `Init ]) phase| Setup_gc : (unit, [ `Init ], [ `Init ]) phase| Setup_signal : (unit, [ `Init ], [ `Init ]) phase| Parse_CLI : (filename list * Libzipperposition.Params.t,
[ `Init ],
[ `Parse_cli ])
phase| LoadExtensions : (Libzipperposition.Extensions.t list,
[ `Parse_cli ],
[ `LoadExtensions ])
phase| Parse_prelude : (prelude, [ `LoadExtensions ], [ `Parse_prelude ]) phase| Start_file : (filename, [ `Parse_prelude ], [ `Start_file ]) phase| Parse_file : (Logtk.Input_format.t * Logtk.UntypedAST.statement Iter.t,
[ `Start_file ],
[ `Parse_file ])
phase| Typing : (Logtk.TypeInference.typed_statement CCVector.ro_vector,
[ `Parse_file ],
[ `Typing ])
phase| CNF : (Logtk.Statement.clause_t CCVector.ro_vector, [ `Typing ], [ `CNF ])
phase| Compute_prec : (Logtk.Precedence.t, [ `CNF ], [ `Precedence ]) phase| Compute_ord_select : (Logtk.Ordering.t * Libzipperposition.Selection.t,
[ `Precedence ],
[ `Compute_ord_select ])
phase| MakeCtx : ((module Libzipperposition.Ctx.S),
[ `Compute_ord_select ],
[ `MakeCtx ])
phase| MakeEnv : (env_with_clauses, [ `MakeCtx ], [ `MakeEnv ]) phase| Pre_saturate : ('c Libzipperposition.Env.packed
* Libzipperposition.Saturate.szs_status
* 'c Libzipperposition.Clause.sets,
[ `MakeEnv ],
[ `Pre_saturate ])
phase| Saturate : (env_with_result, [ `Pre_saturate ], [ `Saturate ]) phase| Print_result : (unit, [ `Saturate ], [ `Print_result ]) phase| Print_dot : (unit, [ `Print_result ], [ `Print_dot ]) phase| Check_proof : (errcode, [ `Print_dot ], [ `Check_proof ]) phase| Print_stats : (unit, [ `Check_proof ], [ `Print_stats ]) phase| Exit : (unit, _, [ `Exit ]) phaseMonad type, representing an action starting at phase 'p1 and stopping at phase 'p2
Start the given phase
Start phase, call f () to get the result, return its result using return_phase
val bind :
('a, 'p_before, 'p_middle) t ->
f:('a -> ('b, 'p_middle, 'p_after) t) ->
('b, 'p_before, 'p_after) tbind state f calls f to go one step further from state
run_sequentiel l runs each action of the list in succession, restarting every time with the initial state (once an action has finished, its state is discarded). Only the very last state is kept. If any errcode is non-zero, then the evaluation stops with this errcode
get_key k returns the value associated with k in the state
update ~f changes the state using f
val run_with :
Logtk.Flex_state.t ->
('a, [ `Init ], [ `Exit ]) t ->
(Logtk.Flex_state.t * 'a) or_errorrun_with state m executes the actions in m starting with state, returning some value (or error) and the final state.
run m is run_with empty_state m