package expr
- Alphabetic
- By Inheritance
- expr
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- class Abs extends Expr
- class App extends Expr
- type ClosedUnderFOLSub[T] = Substitutable[FOLSubstitution, T, T]
- type ClosedUnderReplacement[T] = Replaceable[T, T]
- type ClosedUnderSub[T] = Substitutable[Substitution, T, T]
- class Const extends Expr with VarOrConst
- abstract class Expr extends AnyRef
- implicit final class ExprNameGenerator extends AnyVal
- case class Normalizer(rules: Set[ReductionRule]) extends Product with Serializable
- case class ReductionRule(lhs: Expr, rhs: Expr) extends Product with Serializable
- trait Replaceable[-I, +O] extends AnyRef
- trait ReplaceableInstances0 extends AnyRef
- trait ReplaceableInstances1 extends ReplaceableInstances0
- trait ReplaceableInstances2 extends ReplaceableInstances1
- type ReplacementContext = Abs
- class Var extends Expr with VarOrConst
- trait VarOrConst extends Expr
Value Members
- implicit def stringInterpolationForExpressions(sc: StringContext)(implicit file: File, line: Line, sig: BabelSignature): ExpressionParseHelper
- object Abs
- object App
- object Apps
- object BetaReduction extends Normalizer
- object Const
- object Normalizer extends Serializable
- object ReductionRule extends Serializable
- object Replaceable extends ReplaceableInstances2
- object TermReplacement
A term replacement homomorphically extends a partial function on lambda expressions to all lambda expressions.
A term replacement homomorphically extends a partial function on lambda expressions to all lambda expressions.
This is done on a "best effort" basis. Replacing constants by ground terms of the same type will usually work, anything beyond that might or might not work.
- object Var
- object VarOrConst
Matches constants and variables, but nothing else.
- object containedNames
- object normalize
- object preExpr
Intermediate representation for expressions without explicit types.
Intermediate representation for expressions without explicit types.
The main application is during parsing: the gapt.formats.babel.BabelParser produces pre-expressions.
This representation is intended to be as simple as possible, all higher-level constructs (such as <-> or ∀) are already desugared into simply-typed lambda terms.
It differs from the "real" lambda calculus in gapt.expr in three major ways:
- There are type meta-variables.
- There are type annotations.
- Free variables, bound variables, and constants are not distinguished; they are all stored as "identifiers".
This is the API documentation for GAPT.
The main package is gapt.