Represents the background theory of a proof.
Captures constants, types, definitions, and background theory used in a proof.
Captures constants, types, definitions, and background theory used in a proof.
There are several inferences in our LK proofs for which it is not enough that are syntactically valid: An induction inference might follow the syntactical scheme of an induction inference and satisfy the eigenvariable criterion, however if it excludes a constructor of the inductive type, then it still allows us to prove non-theorems. The same is also true for definition rules and theory axioms.
Hence we store all information necessary to validate these inferences inside a Context object. For completeness, it also includes the collection of constant symbols.
TODO: implement validation
Having this information available is also important for a second reason: it allows us make decisions based on the current context:
DAG-like proof.
DAG-like proof.
Proofs are recursive structures that are represented as case classes. Equality is standard case class equality (but implemented in such a way that it is efficient on DAGs).
The type of proof, e.g. at.logic.gapt.proofs.lk.LKProof.
Background theory that validates clauses which are first-order consequences of the axioms.
Background theory that validates clauses which are first-order consequences of the axioms.
The consequence is checked using a first-order prover.
A finite Context.
This class models the connection of formula occurrences between two sequents in a proof.
This class models the connection of formula occurrences between two sequents in a proof.
The most basic use case is that of connecting the conclusion of an LK inference with one of the premises. This is the origin of the names "lowerSequent" and "upperSequent".
The type of sequents that this connects.
One of the two sequents to be connected.
The other of the two sequents to be connected.
A sequent of lists of indices such that for each index i of lowerSequent, parentsSequent(i) is the list of indices of the parents of i in upperSequent.
A sequent is a pair of sequences of elements of type A, typically written as a1,…,am :- b1,…,bn.
A sequent is a pair of sequences of elements of type A, typically written as a1,…,am :- b1,…,bn.
The type of the elements of the sequent.
The first list.
The second list.
Represents an index of an element in a sequent.
Represents an index of an element in a sequent.
In a sequent, the elements have the following indices: Ant(0), Ant(1), ..., Ant(m) :- Suc(0), Suc(1), ..., Suc(n)
Background theory that only validates clauses that are subsumed by axioms.