module type PROOF =sig
..end
type
t
type
seq_t
type
node_t
val mk : seq_t -> t
All of these take an index to an open node, and a description plus more arguments appropriate to the type of constructor. The open node will be replaced by another node with the same index, and its description set to the parameter value.
Back-links *must* have equal sequents to their targets, otherwise
an exception will be thrown.`
val add_axiom : int -> string -> t -> t
val add_backlink : int -> string -> int -> Tagpairs.t -> t -> t
val add_inf : int ->
string ->
(seq_t * Tagpairs.t * Tagpairs.t) list ->
t -> int list * t
val add_subprf : t -> int -> t -> t
add_subprf p idx p'
replaces the node idx
in p'
with a copy of p
.
N.B. The following should hold, otherwise exceptions will be raised:idx
should be an open node; idx
should be identical to the root sequent of p
.val extract_subproof : int -> t -> t
extract_subproof idx prf
returns prf
rearranged such that idx
is
the root node.val find : int -> t -> node_t
val get_seq : int -> t -> seq_t
val size : t -> int
val num_backlinks : t -> int
val fresh_idx : t -> int
val fresh_idxs : 'a list -> t -> int list
val get_ancestry : int -> t -> (int * node_t) list
val is_closed_at : t -> int -> bool
val check : t -> bool
val is_closed : t -> bool
val to_list : t -> (int * node_t) list
val pp : Format.formatter -> t -> unit
val to_string : t -> string
val to_melt : t -> Latex.t