Package

io.chymyst

ch

Permalink

package ch

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. ch
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. final case class #->(head: TypeExpr, body: TypeExpr) extends TypeExpr with NonAtomicTypeExpr with Product with Serializable

    Permalink
  2. final case class AppE(head: TermExpr, arg: TermExpr) extends TermExpr with Product with Serializable

    Permalink
  3. sealed trait AtomicTypeExpr extends AnyRef

    Permalink
  4. final case class BasicT(name: String) extends TypeExpr with AtomicTypeExpr with Product with Serializable

    Permalink
  5. final case class ConjunctE(terms: Seq[TermExpr]) extends TermExpr with Product with Serializable

    Permalink
  6. final case class ConjunctT(terms: Seq[TypeExpr]) extends TypeExpr with NonAtomicTypeExpr with Product with Serializable

    Permalink
  7. final case class ConstructorT(name: String, typeParams: List[TypeExpr]) extends TypeExpr with AtomicTypeExpr with Product with Serializable

    Permalink
  8. final case class CurriedE(heads: List[VarE], body: TermExpr) extends TermExpr with Product with Serializable

    Permalink
  9. final case class DisjunctE(index: Int, total: Int, term: TermExpr, t: TypeExpr) extends TermExpr with Product with Serializable

    Permalink
  10. final case class DisjunctT(constructor: String, typeParams: Seq[TypeExpr], terms: Seq[TypeExpr]) extends TypeExpr with NonAtomicTypeExpr with Product with Serializable

    Permalink
  11. final case class ForwardRule(name: String, applyTo: (Sequent) ⇒ Seq[RuleResult]) extends Product with Serializable

    Permalink
  12. class FreshIdents extends AnyRef

    Permalink
  13. final class Function0Lambda[+Res] extends () ⇒ Res

    Permalink
  14. final class Function1Lambda[-Ar, +Res] extends (Ar) ⇒ Res

    Permalink
  15. final class Function2Lambda[-Arg1, -Arg2, +Res] extends (Arg1, Arg2) ⇒ Res

    Permalink
  16. final class Function3Lambda[-Arg1, -Arg2, -Arg3, +Res] extends (Arg1, Arg2, Arg3) ⇒ Res

    Permalink
  17. class Macros extends AnyRef

    Permalink
  18. final case class MatchE(term: TermExpr, cases: List[TermExpr]) extends TermExpr with Product with Serializable

    Permalink

    Match a disjunction term of type A1 + A2 + ...

    Match a disjunction term of type A1 + A2 + ... + An against a list of n functions. The type of the result of each function must be the same, and will be the type of this term. This represents code of the form

    term match {
      case a1: A1 ⇒ ...
      case a2: A2 ⇒ ...
      ...
      case an: An ⇒ ...
    }
    term

    Term to be matched. Must be of disjunction type.

    cases

    List of "case functions" of types A1 ⇒ Z, ..., An ⇒ Z. Each "case function" must be a function of the form CurriedE(PropE(_) :: _, _), that is, with at least one argument.

  19. final case class NamedConjunctE(terms: Seq[TermExpr], t: NamedConjunctT) extends TermExpr with Product with Serializable

    Permalink
  20. final case class NamedConjunctT(constructor: String, typeParams: List[TypeExpr], accessors: List[String], wrapped: List[TypeExpr]) extends TypeExpr with Product with Serializable

    Permalink

    This type expression represents a case class, treated as a named conjunction.

    This type expression represents a case class, treated as a named conjunction. The wrapped is a type expression for the entire contents of the named conjunction. This can be a Unit, a single type, or a ConjunctT. If accessors is empty and wrapped is Seq(), this is a case object. If accessors is empty and wrapped is Seq(UnitT), this is a case class with zero arguments. If accessors in not empty, wrapped could be a ConjunctT with more than one part, or another type (e.g. Int or another NamedConjunctT or whatever else).

  21. sealed trait NonAtomicTypeExpr extends AnyRef

    Permalink
  22. final case class NothingT(name: String) extends TypeExpr with AtomicTypeExpr with Product with Serializable

    Permalink
  23. final case class ProjectE(index: Int, term: TermExpr) extends TermExpr with Product with Serializable

    Permalink
  24. final case class RecurseT(name: String, typeParams: Seq[TypeExpr]) extends TypeExpr with AtomicTypeExpr with Product with Serializable

    Permalink
  25. final case class RuleResult(ruleName: String, newSequents: Seq[Sequent], backTransform: BackTransform) extends Product with Serializable

    Permalink
  26. final case class Sequent(premises: List[TypeExpr], goal: TypeExpr, freshVar: FreshIdents) extends Product with Serializable

    Permalink
  27. final case class TP(name: String) extends TypeExpr with AtomicTypeExpr with Product with Serializable

    Permalink
  28. sealed trait TermExpr extends AnyRef

    Permalink
  29. sealed trait TypeExpr extends AnyRef

    Permalink
  30. final case class UnitE(t: TypeExpr) extends TermExpr with Product with Serializable

    Permalink
  31. final case class UnitT(name: String) extends TypeExpr with AtomicTypeExpr with Product with Serializable

    Permalink
  32. final case class VarE(name: String, t: TypeExpr) extends TermExpr with Product with Serializable

    Permalink
  33. implicit final class WithLambdaTerm extends AnyVal

    Permalink

    Obtain the lambda-term from an enriched expression that results from ofType.

    Obtain the lambda-term from an enriched expression that results from ofType. Will throw an exception if the expression is not obtained from ofType or allOfType.

Value Members

  1. object ForwardRule extends Serializable

    Permalink
  2. object Helper

    Permalink
  3. object LJT

    Permalink
  4. object Macros

    Permalink
  5. object MonadEither

    Permalink
  6. object TermExpr

    Permalink
  7. object TheoremProver

    Permalink
  8. object TypeExpr

    Permalink
  9. macro def allOfType[U](values: Any*): Seq[U]

    Permalink

    Automatically implement an expression of a given type using given values, and return all inequivalent implementations that have the lowest information loss score.

    Automatically implement an expression of a given type using given values, and return all inequivalent implementations that have the lowest information loss score. The type parameter U _must_ be specified.

    U

    Type of the expression to be implemented.

    values

    Zero or more expressions that may be used while implementing the type.

    returns

    A sequence of all possible inequivalent automatically constructed expressions of type U.

  10. macro def allOfType[U]: Seq[U]

    Permalink

    Automatically implement an expression of a given type, and return all inequivalent implementations that have the lowest information loss score.

    Automatically implement an expression of a given type, and return all inequivalent implementations that have the lowest information loss score. The type parameter U _must_ be specified.

    U

    Type of the expression to be implemented.

    returns

    A sequence of all possible inequivalent automatically constructed expressions of type U.

  11. macro def anyOfType[U](values: Any*): Seq[U]

    Permalink

    Automatically implement an expression of a given type using given values, and return all inequivalent implementations regardless of their information loss score.

    Automatically implement an expression of a given type using given values, and return all inequivalent implementations regardless of their information loss score. The type parameter U _must_ be specified.

    U

    Type of the expression to be implemented.

    values

    Zero or more expressions that may be used while implementing the type.

    returns

    A sequence of all possible inequivalent automatically constructed expressions of type U.

  12. package data

    Permalink
  13. macro def freshVar[X]: VarE

    Permalink

    Create a new fresh variable term of given type.

    Create a new fresh variable term of given type.

    X

    Type expression that will be assigned to the new variable.

    returns

    A new variable.

  14. macro def implement[U]: U

    Permalink

    Automatically implement an expression of a given type.

    Automatically implement an expression of a given type. The type parameter U _does not_ need to be specified. The required type parameter U and other available terms and type parameters will be detected automatically from the left-hand side.

    Example usage:

    def f[A,B](x: A ⇒ B, y: B ⇒ A): A ⇒ A = implement
    U

    Type of the expression to be implemented. Specifying this type parameter is optional. If it is not specified, it will be detected automatically by examining the left-hand side of the definition.

    returns

    An automatically constructed expression of type U.

  15. macro def ofType[U](values: Any*): U

    Permalink

    Automatically implement an expression of a given type, using given values.

    Automatically implement an expression of a given type, using given values. The type parameter U _must_ be specified.

    Example usage:

    val x: A ⇒ B = ...
    val y: B ⇒ C = ...
    val z = ofType[A ⇒ C](x, y)
    U

    Type of the expression to be implemented.

    values

    Available values that can be used while constructing the expression.

    returns

    An automatically constructed expression of type U.

  16. macro def ofType[U]: U

    Permalink

    Automatically implement an expression of a given type.

    Automatically implement an expression of a given type. The type parameter U _must_ be specified.

    U

    Type of the expression to be implemented.

    returns

    An automatically constructed expression of type U.

  17. macro def typeExpr[U]: TypeExpr

    Permalink

    Construct a lambda-calculus type expression of a specified Scala type.

    Construct a lambda-calculus type expression of a specified Scala type.

    Example usage:

    val tInt = typeExpr[Int]
    def idAType[A] = typeExpr[A ⇒ A]
    U

    The Scala type for which the type expression is requested. Can use type parameters.

    returns

    A TypeExpr corresponding to the given Scala type.

Inherited from AnyRef

Inherited from Any

Ungrouped