Module Fact


module Fact: sig .. end
Representation of derived facts and associated meta information.

type fact 

type proof =
| BuiltinProof
| InputFactProof
| Proof of Term.term * fact array
| DisjProof of int * Term.term * fact array * fact list
| NegProof of Term.term * fact array * fact
| UnknownProof
val null_fact : fact
val fact_with_unknown_proof : fact
val make_input_fact : Term.term -> fact
val make_derived_fact : Term.term -> fact
val make_derived_fact_with_proof : Term.term -> proof -> fact
val make_fact_like : fact -> Term.term -> fact
Result is like the given fact, but with the given term.

Entry Interface
This interface is required by functions in the Access module.
type entry = fact 
val get_term : fact -> Term.term
val get_proof : fact -> proof

Proof Terms


A proof term is structured as follows:

node(Id, Goal, Rule, Subproofs, NegativeSubproofs) | split(Id, Rule, Subproofs, NegativeSubproofs) | branch(Id, Goal, Subproof) | ref(Id)


val proof_term_for_fact : Term.symbol_table -> fact -> Term.term
type l_proof = proof list 
val proof_term_for_l_proof : Term.symbol_table -> l_proof -> Term.term
val make_subproofs : int -> fact array
type proof_term_aux 
val make_proof_term_aux : unit -> proof_term_aux
A proof term aux can be shared in separate calls to proof_term_r_proof, to ensure sharing of subproofs...
val proof_term_for_r_proof : Term.symbol_table -> proof_term_aux -> proof -> Term.term