package hol
- Alphabetic
- Public
- All
Type Members
- class HOLOrdering extends Ordering[Expr]
-
case class
HOLPosition(list: List[Int]) extends Product with Serializable
Represents a position in a gapt.expr.Expr.
Represents a position in a gapt.expr.Expr.
Positions are represented by lists of Integers. The empty list denotes the expression itself. A nonempty list denotes a position in the left or right subexpression according to whether it starts with 1 or 2.
The difference between this and gapt.expr.LambdaPosition lies in the handling of quantifiers and binary logical connectives. LambdaPositions treat e.g. conjunctions like any other function, while HOLPositions treat them naturally, i.e. 1 denotes the left conjunct and 2 the right conjunct.
Note that this can cause unexpeted behavior: Say a variable of type o -> o -> o is substituted by ∧ in some expression. The LambdaPositions will stay the same, but the HOLPositions won't.
- list
The list of integers describing the position.
-
case class
SkolemFunctions(skolemDefs: Map[Const, Expr]) extends Product with Serializable
List of definitions of Skolem symbols.
List of definitions of Skolem symbols.
A Skolem definition is similar but slightly different from the epsilon operator:
Syntactically it is a map s_i → λx_1 .. λx_n Qy φ(x_1, .., x_n, y), where Q is a quantifier. Then s_i(x_1, .., x_n) is the Skolem term used for the formula Qy φ(x_1, .., x_n, y), where Qy is strong.
This Skolem term corresponds to the epsilon term εy φ(x_1, .., x_n, y) or εy ¬φ(x_1, .., x_n), depending on whether Q is ∃ or ∀. The reason we don't use epsilon terms directly is that this makes it impossible to deskolemize a formula based on just the Skolem definitions: for example both ∃x ∀y φ and ∃x ¬∃y¬ φ would define their Skolem functions using the same epsilon terms.
- class TAOrdering extends Ordering[Ty]
- case class fastStructuralCNF(propositional: Boolean = true, bidirectionalDefs: Boolean = false) extends Product with Serializable
Value Members
- object BinaryConnective
-
object
CNFn
Computes a negative CNF of a formula, i.e.
Computes a negative CNF of a formula, i.e. one that is logically equivalent to the negation of the input formula.
The computation is done by expanding the input formula using distributivity.
-
object
CNFp
Computes a positive CNF of a formula, i.e.
Computes a positive CNF of a formula, i.e. one that is logically equivalent to the input formula.
The computation is done by expanding the input formula using distributivity.
-
object
DNFn
Computes a negative DNF of a formula, i.e.
Computes a negative DNF of a formula, i.e. one that is logically equivalent to the negation of the input formula.
The computation is done by expanding the input formula using distributivity.
-
object
DNFp
Computes a positive DNF of a formula, i.e.
Computes a positive DNF of a formula, i.e. one that is logically equivalent to the input formula.
The computation is done by expanding the input formula using distributivity.
-
object
HOLOrdering extends HOLOrdering
Ordering for HOL Formulas (also for FOL)
- object HOLPosition extends Serializable
- object SkolemFunctions extends Serializable
-
object
TAOrdering extends TAOrdering
Ordering on types.
-
object
atoms
Return the list of all atoms in the given argument.
- object containsHOQuantifier
-
object
containsQuantifier
True iff All or Ex matches any subterm of e.
-
object
containsQuantifierOnLogicalLevel
True iff All or Ex is contained in the logical structure of the given Formula.
True iff All or Ex is contained in the logical structure of the given Formula. For example, P( (all x:x) ) contains a quantifier, but it is inside of an atom.
- object containsStrongQuantifier
- object containsWeakQuantifier
-
object
dualize
Dualize a formula in NNF by switching conjunctions with disjunctions, universal with existential quantifiers, top with bottom and positive literals with negative literals.
Dualize a formula in NNF by switching conjunctions with disjunctions, universal with existential quantifiers, top with bottom and positive literals with negative literals. The formula dualize( A ) is logically equivalent to the negation of A.
- object existentialClosure
-
object
formulaToSequent
Removes top-level connectives from a formula.
- object freeHOVariables
- object inductionPrinciple
-
object
instantiate
Instantiates a formula with terms.
-
object
isAtom
Returns true iff the given Formula is an atom (which does not include top nor bottom).
-
object
isExtendedAtom
Returns true iff the given Formula is an extended atom, i.e.
Returns true iff the given Formula is an extended atom, i.e. an atom or top or bottom.
-
object
isLogicalConstant
Returns true iff the given Expr consists of a logical constant.
-
object
isNeg
Returns true iff the given Formula starts with a negation.
-
object
isPrenex
Returns true iff the given formula is prenex.
-
object
isReflexivity
Returns true iff the given Formula is a reflexivity atom.
-
object
lcomp
the logical complexity of this formula, i.e.
the logical complexity of this formula, i.e. the number of logical connectives and atoms starting from the root of the formula. The inner structure of atoms is not counted.
- object normalizeFreeVariables
-
object
numOfAtoms
Return the number of atoms in the given argument.
- object removeAllQuantifiers
-
object
removeNeg
Remove the leading negation from a formula.
-
object
simplify
Simplify a Formula using the equations for bottom and top as well as idempotence of conjunction and disjunction.
- object skolemize
-
object
toNNF
Transforms a formula to negation normal form (transforming also implications into disjunctions)
- object universalClosure
This is the API documentation for GAPT.
The main package is gapt.