Packages

p

gapt.proofs

expansion

package expansion

Source
package.scala
Linear Supertypes
Content Hierarchy
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. expansion
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Type Members

  1. sealed abstract class ETt extends AnyRef

    Expansion tree term.

    Expansion tree term.

    This is a compressed representation of expansion trees that does not store formulas or polarity information.

    In contrast to expansion trees, expansion tree terms do not have shallow and deep formulas. Rather, there is a (partial) function from term and shallow formula (and polarity) to deep formula.

    For example, instead of ETAtom(hof"P(a)", Polarity.Positive), we just store ETtAtom.

    As a side effect, the deep methods checks whether an expansion tree term is correct for a given shallow formula (it throws an exception if the term is not correct).

  2. case class ETtBinary(child1: ETt, child2: ETt) extends ETt with Product with Serializable

    Expansion tree term for binary connectives, i.e., ∧, ∨, and →.

  3. case class ETtDef(shallow: Formula, child: ETt) extends ETt with Product with Serializable

    Expansion tree term for definitions.

    Expansion tree term for definitions.

    shallow

    The shallow formula for child

  4. case class ETtMerge(child1: ETt, child2: ETt) extends ETt with Product with Serializable

    Expansion tree term for a merge.

  5. class ETtPrettyPrinter extends BabelExporter
  6. case class ETtSkolem(skTerm: Expr, child: ETt) extends ETt with Product with Serializable

    Expansion tree term for strong quantifiers with Skolem terms.

  7. case class ETtStrong(eigenVar: Var, child: ETt) extends ETt with Product with Serializable

    Expansion tree term for strong quantifiers with eigenvariables.

  8. case class ETtUnary(child: ETt) extends ETt with Product with Serializable

    Expansion tree term for unary connectives, i.e., ¬.

  9. case class ETtWeak(instances: Map[Expr, ETt]) extends ETt with Product with Serializable

    Expansion tree term for weak quantifiers instances.

  10. case class ExpansionProof(expansionSequent: Sequent[ExpansionTree]) extends Product with Serializable

    Expansion proof.

    Expansion proof.

    An expansion proof consists of a sequent of expansion trees without duplicate eigenvariable where the dependency relation of the eigenvariables is acyclic.

  11. class ExpansionProofToLK extends SolveUtils
  12. class ExpansionProofToMG3i extends SolveUtils
  13. class ExpansionProofToMG3iViaSAT extends AnyRef
  14. type ExpansionSequent = Sequent[ExpansionTree]
  15. case class ExpansionTree(term: ETt, polarity: Polarity, shallow: Formula) extends DagProof[ExpansionTree] with Product with Serializable

    Expansion tree.

    Expansion tree.

    A tree collecting instances of a formula. See, e.g., M. Baaz, S. Hetzl, D. Weller: On the complexity of proof deskolemization, Journal of Symbolic Logic, 77(2), 2012 for a formulation close to the one implemented here.

    ExpansionTree wraps an expansion tree term together with the intended shallow formula and polarity. The term may not be necessarily correct for this shallow formula (i.e., calling deep may produce an exception). Calling ExpansionTree.check validates the correctness of the expansion tree (also with respect to the given gapt.proofs.context.Context).

    The constructors ETAtom, ETAnd, etc. ensure that the produced expansion trees are correct.

  16. class ExpansionTreePrettyPrinter extends ETtPrettyPrinter
  17. class InstanceTermEncoding extends AnyRef

    Encodes instances of an end-sequent as terms.

    Encodes instances of an end-sequent as terms.

    Only instances of weak quantifiers are recorded, instances of strong quantifiers or free variables are ignored.

    The end-sequent will be internally transformed into one which is in variable normal form.

    In the case of cut-introduction, the end-sequent has no free variables and no strong quantifiers and we're encoding a Herbrand sequent as a set of terms. A term r_i(t_1,...,t_n) encodes an instance of the formula "forall x_1 ... x_n, phi(x_1,...,x_n)" using the instances (t_1,...,t_n).

    In the case of inductive proofs, the end-sequent contains strong quantifiers variable (alpha). Here, we consider proofs of instance sequents, which are obtained by e.g. substituting a numeral for alpha. Hence the formulas occurring in the end-sequents of instance proofs are substitution instances of endSequent; the encoded terms still only capture the instances used in the instance proofs--i.e. not alpha.

  18. implicit final class RichExpansionSequent extends AnyVal

    Extension class that allows calling shallow and deep on sequents.

Value Members

  1. val ExpansionSequent: Sequent.type
  2. object BinaryExpansionTree

    Matches ETMerge, ETAnd, ETOr, or ETImp.

  3. object ETAnd extends ETBinaryCompanion

    Expansion tree for ∧.

  4. object ETAtom

    Expansion tree for an atom.

  5. object ETBottom extends ETNullaryCompanion

    Expansion tree for ⊥.

  6. object ETCut
  7. object ETDefinition

    Expansion tree for a definition node in an expansion tree.

    Expansion tree for a definition node in an expansion tree.

    It has the form φ +def E where φ is the shallow formula of the definition node. The formula φ should be definitionally equal to the shallow formula of E (i.e., equal after unfolding all definitions).

  8. object ETImp extends ETBinaryCompanion

    Expansion tree for →.

  9. object ETInduction
  10. object ETMerge

    Expansion tree merge node, representing a contraction inference.

  11. object ETMerges
  12. object ETNeg

    Expansion tree for ¬.

  13. object ETOr extends ETBinaryCompanion

    Expansion tree for ∨.

  14. object ETSkolemQuantifier

    Expansion tree for a strong quantifier, containing a Skolem term.

    Expansion tree for a strong quantifier, containing a Skolem term.

    As an example let us consider an expansion proof of ∀z P(c,z) :- ∃x ∀y P(x,y). For Skolemization we introduce the Skolem function s_1 (for the single strong quantifier), this function has the Skolem definition λx ∀y P(x,y) (see gapt.logic.hol.SkolemFunctions for details). The natural expansion proof has the deep formula P(c,s_1(c)) :- P(c,s_1(c)), so we need a Skolem node with the shallow formula ∀y P(c,y), and deep formula P(c,s_1(c)). This Skolem node is constructed as ETSkolemQuantifier(∀y P(c,y), s_1(c), λx ∀y P(x,y), ETAtom(P(c,s_1(c)), InSuc)).

  15. object ETStrongQuantifier

    Expansion tree for a strong quantifier, containing the eigenvariable.

    Expansion tree for a strong quantifier, containing the eigenvariable.

    It has the form Qx.A +α E, where α is a variable (called the eigenvariable) and E is an expansion tree of A[x\α].

  16. object ETStrongQuantifierBlock

    Represents nested strong quantifier nodes in an expansion tree, collecting the eigenvariables for a block of strong quantifiers.

  17. object ETTop extends ETNullaryCompanion

    Expansion tree for ⊤.

  18. object ETWeakQuantifier

    Expansion tree collecting the instances for a weak quantifier.

    Expansion tree collecting the instances for a weak quantifier.

    It has the form Qx.A +t1 E1 + … +tn En, where t1,…,tn are lambda terms of the same type as x and Ei is an expansion tree of A[x\ti].

    Its deep formula is E1.deep ∨ … ∨ En.deep (in the case of an existential) or E1.deep ∧ … ∧ En.deep (in the case of a universal).

  19. object ETWeakQuantifierBlock

    Represents nested weak quantifier nodes in an expansion tree, collecting the instances for a block of weak quantifiers.

  20. object ETWeakening

    Expansion tree representing a weakening inference.

  21. object ETt
  22. case object ETtAtom extends ETt with Product with Serializable

    Expansion tree term for an atom.

  23. object ETtMerge extends Serializable
  24. case object ETtNullary extends ETt with Product with Serializable

    Expansion tree term for nullary connectives, i.e., ⊤ and ⊥.

  25. object ETtWeak extends Serializable
  26. case object ETtWeakening extends ETt with Product with Serializable

    Expansion tree term for a weakening.

  27. object ExpansionProof extends Serializable
  28. object ExpansionProofToLK extends ExpansionProofToLK
  29. object ExpansionProofToMG3i
  30. object ExpansionProofToMG3iViaSAT
  31. object ExpansionTree extends Serializable
  32. object InstanceTermEncoding
  33. object PropositionalExpansionProofToLK extends ExpansionProofToLK
  34. object addSymmetry

    Given an expansion sequent S which is a tautology modulo symmetry of equality, returns an expansion sequent S' which is S extended by the symmetry instances needed to make it a tautology.

  35. object atomicExpansionET
  36. object cleanStructureET

    Cleans up an expansion tree by introducing weakenings as late as possible.

  37. object commuteReplacementCtxWithDefEq
  38. object deskolemizeET

    Deskolemization of expansion trees.

    Deskolemization of expansion trees.

    We first gather the skolem terms in a given ExpansionProof from the ETSkolemQuantifiers. Then replace each ETSkolemQuantifier by ETStrongQuantifier, and each skolem term within, by a fresh eigenvariable.

  39. object eigenVariablesET

    Returns the eigenvariables in an expansion tree or expansion sequent.

  40. object eliminateCutsET
  41. object eliminateDefsET
  42. object eliminateMerges

    Reduces merge nodes in an expansion proof.

  43. object extractInstances

    Extracts the instances used in a prenex FOL Pi_1 expansion tree / Sigma_1 expansion sequent.

    Extracts the instances used in a prenex FOL Pi_1 expansion tree / Sigma_1 expansion sequent.

    Each expansion tree is transformed into a list of instances of its shallow formula.

    In contrast to ExpansionProof.deep, this function doesn't produce conjunctions of instances, but instead increases the number of formulas in the antecedent/succedent.

  44. object findMerges

    Extracts all merge ETs from an expansion proof.

  45. object formulaToExpansionTree
  46. object freeVariablesET
  47. object generalizeET
  48. object groundTerms
  49. object insertDefinition

    Inserts a definition into an expansion tree by either creating an ETDefinition node at the appropriate place or else just replacing terms.

  50. object instReplCtx

    Instantiates the quantifier inside a replacement context.

    Instantiates the quantifier inside a replacement context.

    Given λx ∀y P(x,y) and f(c), it will return λx P(x,f(c)).

  51. object isPropositionalET
  52. object minimalExpansionSequent

    Given an expansion sequent S, this algorithm computes a single expansion sequents below S that is valid and minimal.

    Given an expansion sequent S, this algorithm computes a single expansion sequents below S that is valid and minimal. This algorithm is considerably faster than the one implemented in minimalExpansionSequents.

  53. object minimalExpansionSequents

    Given an expansion sequent S, this algorithm computes the list of expansion sequents below S that are valid and minimal.

  54. object moveDefsUpward
  55. object moveSkolemNodesToCuts
  56. object nonProofTheoreticSkolemTerms
  57. object numberOfInstancesET
  58. object prenexifyET
  59. object pushWeakeningsUp
  60. object removeSkolemCongruences
  61. object replaceAtHOLPosition
  62. object replaceWithContext

    Replaces terms in an expansion tree according to a replacement context.

  63. object tautAtomicExpansionET
  64. object unifyInstancesET

    Decreases the number of instances in an expansion proof by unifying the instance terms.

Inherited from AnyRef

Inherited from Any

Ungrouped