Trait

inox.solvers.unrolling

Templates

Related Doc: package unrolling

Permalink

trait Templates extends TemplateGenerator with FunctionTemplates with LambdaTemplates with QuantificationTemplates with EqualityTemplates with TypeTemplates with IncrementalStateWrapper

Linear Supertypes
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Templates
  2. IncrementalStateWrapper
  3. IncrementalState
  4. TypeTemplates
  5. EqualityTemplates
  6. QuantificationTemplates
  7. LambdaTemplates
  8. FunctionTemplates
  9. TemplateGenerator
  10. AnyRef
  11. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. case class App(caller: Encoded, tpe: ast.Trees.FunctionType, args: Seq[Arg], encoded: Encoded) extends Product with Serializable

    Permalink

    Represents an application of a first-class function in the unfolding procedure

  2. type Apps = Map[Encoded, Set[App]]

    Permalink
  3. type Arg = Either[Encoded, Matcher]

    Permalink
  4. implicit class ArgWrapper extends AnyRef

    Permalink
  5. case class Call(tfd: ast.Trees.TypedFunDef, args: Seq[Arg], tpSubst: Seq[Arg]) extends Product with Serializable

    Permalink

    Represents a named function call in the unfolding procedure

  6. type Calls = Map[Encoded, Set[Call]]

    Permalink
  7. case class Capture(encoded: Encoded, tpe: ast.Trees.FunctionType) extends Templates.TemplateInstantiator with Product with Serializable

    Permalink
    Definition Classes
    TypeTemplates
  8. case class CaptureGenerator(container: Encoded, tpe: ast.Trees.FunctionType) extends Templates.TypingGenerator with Product with Serializable

    Permalink
    Attributes
    protected
    Definition Classes
    TypeTemplates
  9. class CaptureTemplate extends Template

    Permalink

    Template used to unfold ADT closures that may contain functions.

    Template used to unfold ADT closures that may contain functions.

    Definition Classes
    TypeTemplates
  10. type Clauses = Seq[Encoded]

    Permalink

    Abstract templates

    Abstract templates

    Pre-compiled sets of clauses with extra bookkeeping information that enables efficient unfolding of function calls and applications. Template is a super-type for all such clause sets that can be instantiated given a concrete argument list and a blocker in the decision-tree.

  11. implicit class ClausesWrapper extends AnyRef

    Permalink
    Attributes
    protected
    Definition Classes
    TemplateGenerator
  12. case class Constraint(result: Encoded, closures: Seq[Arg], free: Boolean) extends Templates.TemplateInstantiator with Product with Serializable

    Permalink
    Definition Classes
    TypeTemplates
  13. class ConstraintTemplate extends Template

    Permalink

    Template used to unfold free symbols in the input expression.

    Template used to unfold free symbols in the input expression.

    Definition Classes
    TypeTemplates
  14. abstract type Encoded

    Permalink
  15. type Equalities = Map[Encoded, Set[Equality]]

    Permalink
  16. case class Equality(tpe: ast.Trees.Type, e1: Encoded, e2: Encoded) extends Product with Serializable

    Permalink

    Represents an equality relation between two instances of a given type

  17. class EqualityTemplate extends Template

    Permalink
    Definition Classes
    EqualityTemplates
  18. class FunctionTemplate extends Template

    Permalink
    Definition Classes
    FunctionTemplates
  19. class LambdaTemplate extends Template

    Permalink
    Definition Classes
    LambdaTemplates
  20. trait Manager extends IncrementalStateWrapper

    Permalink
  21. implicit class MapSeqWrapper[A, B] extends AnyRef

    Permalink
  22. implicit class MapSetWrapper[A, B] extends AnyRef

    Permalink

    Template instantiations

    Template instantiations

    Template instances, when provided with concrete arguments and a blocker, will generate three outputs used for program unfolding: - clauses: clauses that will be added to the underlying solver - call blockers: bookkeeping information necessary for named function unfolding - app blockers: bookkeeping information necessary for first-class function unfolding

    This object provides helper methods to deal with the triplets generated during unfolding.

  23. case class Matcher(key: Either[(Encoded, ast.Trees.Type), ast.Trees.TypedFunDef], args: Seq[Arg], encoded: Encoded) extends Product with Serializable

    Permalink

    Represents an E-matching matcher that will be used to instantiate relevant quantified propositions

  24. type Matchers = Map[Encoded, Set[Matcher]]

    Permalink
  25. case class Negative(insts: (ast.Trees.Variable, Encoded)) extends Templates.Polarity with Product with Serializable

    Permalink
    Definition Classes
    QuantificationTemplates
  26. type Pointers = Map[Encoded, Encoded]

    Permalink
  27. sealed abstract class Polarity extends AnyRef

    Permalink

    Represents the polarity of the quantification within the considered formula.

    Represents the polarity of the quantification within the considered formula. Positive and negative polarity enable optimizations during quantifier instantiation.

    Definition Classes
    QuantificationTemplates
  28. case class Positive(subst: Map[ast.Trees.Variable, Arg]) extends Templates.Polarity with Product with Serializable

    Permalink
    Definition Classes
    QuantificationTemplates
  29. class QuantificationTemplate extends AnyRef

    Permalink
    Definition Classes
    QuantificationTemplates
  30. trait Template extends AnyRef

    Permalink
  31. case class TemplateAppInfo(template: Either[Templates.LambdaTemplate, Encoded], equals: Encoded, args: Seq[Arg]) extends Product with Serializable

    Permalink

    Represents a POTENTIAL application of a first-class function in the unfolding procedure

    Represents a POTENTIAL application of a first-class function in the unfolding procedure

    The equals condition guards the application for equality of the concrete caller with the provided template in order to perform dynamic dispatch.

    Definition Classes
    LambdaTemplates
  32. type TemplateClauses = (Map[ast.Trees.Variable, Encoded], Map[ast.Trees.Variable, Encoded], Map[ast.Trees.Variable, Set[ast.Trees.Variable]], Map[ast.Trees.Variable, Seq[ast.Trees.Expr]], Seq[ast.Trees.Expr], Types, Equalities, Seq[LambdaTemplate], Seq[QuantificationTemplate])

    Permalink
    Attributes
    protected
    Definition Classes
    TemplateGenerator
  33. case class TemplateContents(pathVar: (ast.Trees.Variable, Encoded), arguments: Seq[(ast.Trees.Variable, Encoded)], condVars: Map[ast.Trees.Variable, Encoded], exprVars: Map[ast.Trees.Variable, Encoded], condTree: Map[ast.Trees.Variable, Set[ast.Trees.Variable]], clauses: Clauses, types: Types, blockers: Calls, applications: Apps, matchers: Matchers, equalities: Equalities, lambdas: Seq[Templates.LambdaTemplate], quantifications: Seq[Templates.QuantificationTemplate], pointers: Pointers) extends Product with Serializable

    Permalink
  34. sealed abstract class TemplateInstantiator extends AnyRef

    Permalink

    Represents the kind of instantiator (@see ConstraintTemplate and CaptureTemplate) a given template info is associated to.

    Represents the kind of instantiator (@see ConstraintTemplate and CaptureTemplate) a given template info is associated to.

    Definition Classes
    TypeTemplates
  35. class TemplateStructure extends AnyRef

    Permalink

    Semi-template used for inner-template equality

    Semi-template used for inner-template equality

    We introduce a structure here that resembles a Template that is instantiated ONCE when the corresponding template becomes of interest.

  36. sealed abstract class TypeUnrolling extends AnyRef

    Permalink

    Determines whether a given type should be unrolled, depending on the kind of type unrolling, namely free variable type unrolling (dependent types and ADT invariants), contract type unrolling (dependent types), and capture unrolling (function closure ordering).

    Determines whether a given type should be unrolled, depending on the kind of type unrolling, namely free variable type unrolling (dependent types and ADT invariants), contract type unrolling (dependent types), and capture unrolling (function closure ordering).

    Attributes
    protected
    Definition Classes
    TypeTemplates
  37. type Types = Map[Encoded, Set[Typing]]

    Permalink
  38. case class Typing(tpe: ast.Trees.Type, arg: Encoded, instantiator: Templates.TemplateInstantiator) extends Product with Serializable

    Permalink

    Represents a type unfolding of a free variable (or input) in the unfolding procedure

    Represents a type unfolding of a free variable (or input) in the unfolding procedure

    Definition Classes
    TypeTemplates
  39. sealed abstract class TypingGenerator extends AnyRef

    Permalink
    Attributes
    protected
    Definition Classes
    TypeTemplates

Abstract Value Members

  1. abstract def abort: Boolean

    Permalink
  2. abstract def asString(e: Encoded): String

    Permalink
  3. abstract val context: Context

    Permalink
  4. abstract def decodePartial(e: Encoded, tpe: ast.Trees.Type): Option[ast.Trees.Expr]

    Permalink
  5. abstract def encodeSymbol(v: ast.Trees.Variable): Encoded

    Permalink
  6. abstract def extractNot(e: Encoded): Option[Encoded]

    Permalink
  7. abstract def mkAnd(es: Encoded*): Encoded

    Permalink
  8. abstract def mkEncoder(bindings: Map[ast.Trees.Variable, Encoded])(e: ast.Trees.Expr): Encoded

    Permalink
  9. abstract def mkEquals(l: Encoded, r: Encoded): Encoded

    Permalink
  10. abstract def mkImplies(l: Encoded, r: Encoded): Encoded

    Permalink
  11. abstract def mkNot(e: Encoded): Encoded

    Permalink
  12. abstract def mkOr(es: Encoded*): Encoded

    Permalink
  13. abstract def mkSubstituter(map: Map[Encoded, Encoded]): (Encoded) ⇒ Encoded

    Permalink
  14. abstract def pause: Boolean

    Permalink
  15. abstract val program: Program

    Permalink
  16. implicit abstract val semantics: Program.Semantics

    Permalink
    Attributes
    protected

Concrete Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. object CaptureTemplate

    Permalink

    Template generator for CaptureTemplate instances.

    Template generator for CaptureTemplate instances.

    Definition Classes
    TypeTemplates
  5. object CaptureUnrolling extends Templates.TypeUnrolling with Product with Serializable

    Permalink
    Attributes
    protected
    Definition Classes
    TypeTemplates
  6. object ConstraintTemplate

    Permalink

    Generator for ConstraintTemplate instances.

    Generator for ConstraintTemplate instances.

    Definition Classes
    TypeTemplates
  7. object ContractGenerator extends Templates.TypingGenerator with Product with Serializable

    Permalink
    Attributes
    protected
    Definition Classes
    TypeTemplates
  8. object ContractUnrolling extends Templates.TypeUnrolling with Product with Serializable

    Permalink
    Attributes
    protected
    Definition Classes
    TypeTemplates
  9. object EqualityTemplate

    Permalink
    Definition Classes
    EqualityTemplates
  10. object FreeGenerator extends Templates.TypingGenerator with Product with Serializable

    Permalink
    Attributes
    protected
    Definition Classes
    TypeTemplates
  11. object FreeUnrolling extends Templates.TypeUnrolling with Product with Serializable

    Permalink
    Attributes
    protected
    Definition Classes
    TypeTemplates
  12. object FunctionMatcher

    Permalink
    Definition Classes
    QuantificationTemplates
  13. object FunctionTemplate

    Permalink
    Definition Classes
    FunctionTemplates
  14. object LambdaTemplate

    Permalink

    Constructor object for LambdaTemplate

    Constructor object for LambdaTemplate

    The apply methods performs some pre-processing before creating an instance of LambdaTemplate.

    Definition Classes
    LambdaTemplates
  15. object QuantificationMatcher

    Permalink
    Definition Classes
    QuantificationTemplates
  16. object QuantificationTemplate

    Permalink
    Definition Classes
    QuantificationTemplates
  17. object Template

    Permalink
  18. object TemplateAppInfo extends Serializable

    Permalink
    Definition Classes
    LambdaTemplates
  19. object TemplateContents extends Serializable

    Permalink
  20. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  21. def blockerChildren(b: Encoded, strict: Boolean = true): Set[Encoded]

    Permalink
    Attributes
    protected
  22. def blockerEquals(b: Encoded): Set[Encoded]

    Permalink
    Attributes
    protected
  23. def blockerParents(b: Encoded, strict: Boolean = true): Set[Encoded]

    Permalink
    Attributes
    protected
  24. def blockerPath(bs: Set[Encoded]): Set[Encoded]

    Permalink
    Attributes
    protected
  25. def blockerPath(b: Encoded): Set[Encoded]

    Permalink
    Attributes
    protected
  26. def canUnroll: Boolean

    Permalink
  27. def clear(): Unit

    Permalink
  28. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  29. def correspond(m1: Matcher, m2: Matcher): Option[Boolean]

    Permalink
    Attributes
    protected
    Definition Classes
    QuantificationTemplates
    Annotations
    @inline()
  30. def correspond(k1: MatcherKey, k2: MatcherKey): Option[Boolean]

    Permalink
    Attributes
    protected
    Definition Classes
    QuantificationTemplates
  31. def currentGeneration: Int

    Permalink
    Attributes
    protected
  32. implicit val debugSection: DebugSectionSolver.type

    Permalink
  33. lazy val deferFactor: Int

    Permalink
    Attributes
    protected
  34. def emptyClauses: TemplateClauses

    Permalink
    Attributes
    protected
    Definition Classes
    TemplateGenerator
  35. def encodeBlockers(bs: Set[Encoded]): (Encoded, Clauses)

    Permalink
    Attributes
    protected
  36. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  37. def equalitySymbol(tpe: ast.Trees.Type): (ast.Trees.Variable, Encoded)

    Permalink
    Definition Classes
    EqualityTemplates
  38. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  39. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  40. def freshConds(pathVar: Encoded, condVars: Map[ast.Trees.Variable, Encoded], tree: Map[ast.Trees.Variable, Set[ast.Trees.Variable]]): Map[Encoded, Encoded]

    Permalink
    Attributes
    protected
  41. def getAxioms: Seq[Axiom]

    Permalink
    Definition Classes
    QuantificationTemplates
  42. def getCalls: Seq[(Encoded, Call)]

    Permalink
    Definition Classes
    FunctionTemplates
  43. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  44. def getFiniteRangeClauses: Clauses

    Permalink
    Definition Classes
    QuantificationTemplates
  45. def getGroundInstantiations(e: Encoded, tpe: ast.Trees.Type): Seq[(Encoded, Seq[Encoded])]

    Permalink
    Definition Classes
    QuantificationTemplates
  46. def getInstantiationsWithBlockers: Seq[(Encoded, Set[Encoded])]

    Permalink
    Definition Classes
    QuantificationTemplates
  47. def getLambdaTemplates(tpe: ast.Trees.FunctionType): Set[LambdaTemplate]

    Permalink
    Definition Classes
    LambdaTemplates
  48. def hasAxioms: Boolean

    Permalink
    Definition Classes
    QuantificationTemplates
  49. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  50. val incrementals: Seq[IncrementalState]

    Permalink
    Definition Classes
    TemplatesIncrementalStateWrapper
  51. def instantiateApp(blocker: Encoded, app: App): Clauses

    Permalink
    Definition Classes
    LambdaTemplates
  52. def instantiateCall(blocker: Encoded, fi: Call): Clauses

    Permalink
    Definition Classes
    FunctionTemplates
  53. def instantiateEquality(blocker: Encoded, equality: Equality): Clauses

    Permalink
    Definition Classes
    EqualityTemplates
  54. def instantiateExpr(expr: ast.Trees.Expr, bindings: Map[ast.Trees.Variable, Encoded]): Clauses

    Permalink
  55. def instantiateLambda(template: LambdaTemplate): (Encoded, Clauses)

    Permalink
    Definition Classes
    LambdaTemplates
  56. def instantiateMatcher(blocker: Encoded, matcher: Matcher): Clauses

    Permalink
    Definition Classes
    QuantificationTemplates
  57. def instantiateQuantification(template: QuantificationTemplate): (Map[Encoded, Encoded], Clauses)

    Permalink
    Definition Classes
    QuantificationTemplates
  58. def instantiateType(blocker: Encoded, typing: Typing): Clauses

    Permalink
    Definition Classes
    TypeTemplates
  59. def instantiateVariable(v: ast.Trees.Variable, bindings: Map[ast.Trees.Variable, Encoded]): Clauses

    Permalink
  60. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  61. def mkClauses(pathVar: ast.Trees.Variable, tpe: ast.Trees.Type, expr: ast.Trees.Expr, substMap: Map[ast.Trees.Variable, Encoded])(implicit generator: TypingGenerator): TemplateClauses

    Permalink
    Definition Classes
    TemplateGenerator
  62. def mkClauses(pathVar: ast.Trees.Variable, expr: ast.Trees.Expr, substMap: Map[ast.Trees.Variable, Encoded], polarity: Option[Boolean] = None): TemplateClauses

    Permalink
    Definition Classes
    TemplateGenerator
  63. def mkExprClauses(pathVar: ast.Trees.Variable, expr: ast.Trees.Expr, substMap: Map[ast.Trees.Variable, Encoded], polarity: Option[Boolean] = None): (ast.Trees.Expr, TemplateClauses)

    Permalink
    Attributes
    protected
    Definition Classes
    TemplateGenerator
  64. def mkExprStructure(pathVar: ast.Trees.Variable, expr: ast.Trees.Expr, substMap: Map[ast.Trees.Variable, Encoded], onlySimple: Boolean = false): (ast.Trees.Expr, TemplateStructure, Map[ast.Trees.Variable, Encoded])

    Permalink
    Attributes
    protected
    Definition Classes
    TemplateGenerator
  65. def mkTypeClauses(pathVar: ast.Trees.Variable, tpe: ast.Trees.Type, expr: ast.Trees.Expr, substMap: Map[ast.Trees.Variable, Encoded])(implicit generator: TypingGenerator): (ast.Trees.Expr, TemplateClauses)

    Permalink

    Generates the clauses and other bookkeeping relevant to a type unfolding template.

    Generates the clauses and other bookkeeping relevant to a type unfolding template.

    Attributes
    protected
    Definition Classes
    TemplateGenerator
  66. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  67. def nextGeneration(gen: Int): Int

    Permalink
    Attributes
    protected
  68. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  69. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  70. def pop(): Unit

    Permalink
  71. final def pop(lvl: Int): Unit

    Permalink
    Definition Classes
    IncrementalState
  72. def promoteBlocker(b: Encoded, force: Boolean = false): Boolean

    Permalink
  73. def promoteQuantifications: Unit

    Permalink
    Definition Classes
    QuantificationTemplates
  74. def push(): Unit

    Permalink
  75. def refutationAssumptions: Seq[Encoded]

    Permalink
  76. def registerClosure(start: Encoded, container: (Encoded, ast.Trees.FunctionType), arg: (Encoded, ast.Trees.Type)): Clauses

    Permalink

    Sets up the relevant unfolding procedure for closure ordering

    Sets up the relevant unfolding procedure for closure ordering

    Definition Classes
    TypeTemplates
  77. def registerEquality(blocker: Encoded, equality: Equality): Encoded

    Permalink
    Definition Classes
    EqualityTemplates
  78. def registerEquality(blocker: Encoded, tpe: ast.Trees.Type, e1: Encoded, e2: Encoded): Encoded

    Permalink
    Definition Classes
    EqualityTemplates
  79. def registerFunction(b: Encoded, r: Encoded, tpe: ast.Trees.Type, f: Encoded, closures: Seq[Arg], free: Boolean): Clauses

    Permalink
    Definition Classes
    LambdaTemplates
  80. def registerImplication(b1: Encoded, b2: Encoded): Unit

    Permalink
    Attributes
    protected
  81. def registerLambda(pointer: Encoded, target: Encoded): Boolean

    Permalink
    Definition Classes
    LambdaTemplates
  82. def requiresFiniteRangeCheck: Boolean

    Permalink
    Definition Classes
    QuantificationTemplates
  83. def reset(): Unit

    Permalink
  84. def satisfactionAssumptions: Seq[Encoded]

    Permalink
  85. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  86. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  87. def unroll: Clauses

    Permalink
  88. def unrollEquality(tpe: ast.Trees.Type): Boolean

    Permalink
    Definition Classes
    EqualityTemplates
  89. def variableSeq(tpe: ast.Trees.Type): Seq[ast.Trees.Variable]

    Permalink
    Attributes
    protected
    Definition Classes
    FunctionTemplates
  90. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  91. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  92. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from IncrementalStateWrapper

Inherited from IncrementalState

Inherited from TypeTemplates

Inherited from EqualityTemplates

Inherited from QuantificationTemplates

Inherited from LambdaTemplates

Inherited from FunctionTemplates

Inherited from TemplateGenerator

Inherited from AnyRef

Inherited from Any

Ungrouped