| Modifier and Type | Class and Description |
|---|---|
static class |
NameResolver.AmbiguousNameError
This error is reported in the case that exactly one match was sought, but
more than one match was found.
|
static class |
NameResolver.NameNotFoundError
This error is reported in the case that no matching name can be
identified.
|
| Modifier and Type | Method and Description |
|---|---|
wybs.lang.NameID |
NameResolver.resolve(WyalFile.Name name)
Fully resolve a given name which occurs at some position in a compilation
unit.
|
<T extends WyalFile.Declaration.Named> |
NameResolver.resolveAll(WyalFile.Name name,
Class<T> kind)
Resolve a given name which occurs at some position in a compilation unit
into one or more named declarations.
|
<T extends WyalFile.Declaration.Named> |
NameResolver.resolveExactly(WyalFile.Name name,
Class<T> kind)
Resolve a given name which occurs at some position in a compilation unit
into exactly one named declaration.
|
| Modifier and Type | Method and Description |
|---|---|
wybs.lang.NameID |
WyalFileResolver.resolve(WyalFile.Name name) |
<T extends WyalFile.Declaration.Named> |
WyalFileResolver.resolveAll(WyalFile.Name name,
Class<T> kind) |
<T extends WyalFile.Declaration.Named> |
WyalFileResolver.resolveExactly(WyalFile.Name name,
Class<T> kind) |
| Modifier and Type | Method and Description |
|---|---|
Proof.State |
Proof.LinearRule.apply(Proof.State current,
Proof.State head)
Apply a given rule to a given state, producing one potentially
updated state.
|
Proof.State[] |
Proof.NonLinearRule.apply(Proof.State current,
Proof.State head)
Apply a given rule to a given state, producing one (or more)
potentially updated states.
|
| Modifier and Type | Method and Description |
|---|---|
Proof.State |
CongruenceClosure.apply(Proof.Delta.Set existingTruths,
Proof.State head,
Formula newTruth) |
Proof.State |
Simplification.apply(Proof.State head,
Formula truth) |
Proof.State |
EqualityCaseAnalysis.apply(Proof.State state,
Formula truth) |
Formula |
Simplification.simplify(Formula f)
Recursively simplify a given formula by applying the "standard"
simplifications for each kind.
|
Formula[] |
Simplification.simplify(Formula[] children) |
WyalFile.Expr |
Simplification.simplifyArithmetic(WyalFile.Expr.Operator e) |
Formula |
Simplification.simplifyArithmeticEquality(Formula.ArithmeticEquality eq)
Simplify an arithmetic equality by canceling, evaluating and/or
balancing:
Canceling is the process of removing commons terms from both
sides.
|
WyalFile.Expr |
Simplification.simplifyArrayIndex(WyalFile.Expr.Operator e) |
WyalFile.Expr |
Simplification.simplifyArrayLength(WyalFile.Expr.Operator e) |
WyalFile.Expr |
Simplification.simplifyArrayUpdate(WyalFile.Expr.Operator e) |
Formula |
Simplification.simplifyConjunct(Formula.Conjunct conjunct) |
WyalFile.Expr |
Simplification.simplifyDereference(WyalFile.Expr.Dereference e) |
Formula |
Simplification.simplifyDisjunct(Formula.Disjunct disjunct) |
Formula |
Simplification.simplifyEquality(Formula.Equality eq)
Simplify a non-arithmetic equality by attempting to evaluate it.
|
WyalFile.Expr |
Simplification.simplifyExpression(WyalFile.Expr e)
Convert an arbitrary expression to an atom.
|
WyalFile.Expr[] |
Simplification.simplifyExpressions(WyalFile.Expr[] children) |
Formula |
Simplification.simplifyInequality(Formula.Inequality ieq)
Simplify an inequality by canceling, evaluating and/or balancing:
Canceling is the process of removing commons terms from both
sides.
|
Formula |
Simplification.simplifyInvoke(Formula.Invoke ivk) |
WyalFile.Expr |
Simplification.simplifyInvoke(WyalFile.Expr.Invoke ivk) |
Formula |
Simplification.simplifyIs(Formula.Is e) |
WyalFile.Expr |
Simplification.simplifyNonArithmetic(WyalFile.Expr.Operator e) |
Formula |
Simplification.simplifyQuantifier(Formula.Quantifier quantifier)
Simplify a quantified formula.
|
WyalFile.Expr |
Simplification.simplifyRecordAccess(WyalFile.Expr.RecordAccess e) |
WyalFile.Expr |
Simplification.simplifyRecordInitialiser(WyalFile.Expr.RecordInitialiser e) |
WyalFile.Expr |
Simplification.simplifyRecordUpdate(WyalFile.Expr.RecordUpdate e) |
| Modifier and Type | Method and Description |
|---|---|
Proof.State |
InequalityIntroduction.apply(Proof.Delta.Set existingTruths,
Proof.State state,
Formula newTruth) |
Formula |
InequalityIntroduction.closeOver(Formula.Inequality ith,
Formula.Inequality jth)
Close over two inequalities.
|
| Modifier and Type | Method and Description |
|---|---|
Proof.State |
ArrayIndexAxiom.apply(Proof.Delta.Set existingTruths,
Proof.State head,
Formula truth) |
Proof.State |
ArrayLengthAxiom.apply(Proof.State state,
Formula truth) |
Proof.State |
ArrayIndexCaseAnalysis.apply(Proof.State state,
Formula truth) |
Proof.State |
ArrayEqualityCaseAnalysis.apply(Proof.State state,
Formula truth) |
Proof.State |
ArrayIndexAxiom.attemptInstantiation(Formula source,
List<WyalFile.Expr.Operator> matches,
Formula target,
Proof.State state) |
Proof.State |
ArrayIndexAxiom.attemptInstantiationByArrayAccess(Formula truth,
Proof.Delta.Set existingTruths,
Proof.State state) |
Proof.State |
ArrayIndexAxiom.attemptInstantiationByEquation(Formula truth,
Proof.Delta.Set existingTruths,
Proof.State state) |
| Modifier and Type | Method and Description |
|---|---|
Proof.State |
MacroExpansion.apply(Proof.State state,
Formula truth) |
Proof.State |
FunctionCallAxiom.apply(Proof.State state,
Formula truth) |
| Modifier and Type | Method and Description |
|---|---|
Proof.State[] |
OrElimination.apply(Proof.State current,
Proof.State head) |
| Modifier and Type | Method and Description |
|---|---|
Proof.State |
ExhaustiveQuantifierInstantiation.apply(Proof.Delta.Set existingTruths,
Proof.State state,
Formula newTruth) |
Proof.State |
ExistentialElimination.apply(Proof.State head,
Formula truth) |
protected Formula |
ExistentialElimination.expandTypeInvariants(WyalFile.Tuple<WyalFile.VariableDeclaration> declarations,
TypeSystem types)
For a given sequence of variable declarations expand their type
invariants as appropriate.
|
| Modifier and Type | Method and Description |
|---|---|
Proof.State |
RecordEqualityCaseAnalysis.apply(Proof.State state,
Formula truth) |
| Modifier and Type | Method and Description |
|---|---|
Proof.State |
TypeTestNormalisation.apply(Proof.Delta.Set existingTruths,
Proof.State head,
Formula newTruth) |
Proof.State |
TypeTestClosure.apply(Proof.Delta.Set existingTruths,
Proof.State head,
Formula newTruth) |
| Modifier and Type | Method and Description |
|---|---|
abstract Proof.State |
AbstractClosureRule.apply(Proof.Delta.Set existingTruths,
Proof.State head,
Formula truth) |
abstract Proof.State |
AbstractProofRule.apply(Proof.State head,
Formula truth) |
Proof.State |
AbstractProofRule.apply(Proof.State current,
Proof.State head) |
Proof.State |
AbstractClosureRule.apply(Proof.State current,
Proof.State head) |
static Formula |
Formulae.toFormula(WyalFile.Stmt stmt,
TypeSystem types)
Take a tree of statements and expressions, and return a formula.
|
static Formula[] |
Formulae.toFormulae(WyalFile.Stmt[] stmts,
TypeSystem types)
Convert an array of statements into an array of (equivalent) formulae.
|
| Modifier and Type | Method and Description |
|---|---|
T |
TypeExtractor.extract(WyalFile.Type type,
S supplementary)
Attempt to extract a certain kind of type from an arbitrary type.
|
Formula |
TypeSystem.extractInvariant(WyalFile.Type type,
WyalFile.Expr root)
Extracting the invariant (if any) from a given type.
|
WyalFile.Type.Array |
TypeSystem.extractReadableArray(WyalFile.Type type)
Extract the readable array type from a given type.
|
WyalFile.Type.Record |
TypeSystem.extractReadableRecord(WyalFile.Type type)
For a given type, extract its effective record type.
|
WyalFile.Type.Reference |
TypeSystem.extractReadableReference(WyalFile.Type type)
Extract the readable reference type from a given type.
|
WyalFile.Type |
TypeInferer.getInferredType(TypeInferer.Environment environment,
WyalFile.Expr expression)
Get the type inferred for a given expression in a given environment.
|
WyalFile.Type |
TypeSystem.inferType(TypeInferer.Environment environment,
WyalFile.Expr expression)
Get the type inferred for a given expression in a given environment.
|
boolean |
TypeSystem.isRawSubtype(WyalFile.Type lhs,
WyalFile.Type rhs)
Determine whether one type is a raw subtype of another.
|
SubtypeOperator.Result |
SubtypeOperator.isSubtype(WyalFile.Type lhs,
WyalFile.Type rhs)
Determine whether the
rhs type is a subtype of the
lhs (denoted lhs :> rhs). |
<T extends WyalFile.Declaration.Named> |
TypeSystem.resolveAll(WyalFile.Name name,
Class<T> kind) |
<T extends WyalFile.Declaration.Named> |
TypeSystem.resolveExactly(WyalFile.Name name,
Class<T> kind) |
| Modifier and Type | Method and Description |
|---|---|
Formula |
TypeInvariantExtractor.extract(WyalFile.Type type,
WyalFile.Expr root) |
Formula |
TypeInvariantExtractor.extractTypeInvariantInner(WyalFile.Type type,
WyalFile.Expr root,
BitSet visited) |
| Modifier and Type | Method and Description |
|---|---|
SubtypeOperator.Result |
CoerciveSubtypeOperator.isSubtype(WyalFile.Type parent,
WyalFile.Type child) |
protected boolean |
CoerciveSubtypeOperator.isVoid(ArrayList<CoerciveSubtypeOperator.Atom<?>> truths,
wytp.types.subtyping.CoerciveSubtypeOperator.Worklist worklist,
wytp.types.subtyping.CoerciveSubtypeOperator.Assumptions assumptions)
Determine whether or not the intersection of a given list of types (the
worklist) reduces to void or not.
|
protected boolean |
CoerciveSubtypeOperator.isVoidArray(CoerciveSubtypeOperator.Atom<WyalFile.Type.Array> lhs,
CoerciveSubtypeOperator.Atom<WyalFile.Type.Array> rhs,
wytp.types.subtyping.CoerciveSubtypeOperator.Assumptions assumptions)
Determine whether the intersection of two array types is void or not.
|
protected boolean |
CoerciveSubtypeOperator.isVoidAtom(CoerciveSubtypeOperator.Atom<?> a,
CoerciveSubtypeOperator.Atom<?> b,
wytp.types.subtyping.CoerciveSubtypeOperator.Assumptions assumptions)
Determine whether the intersection of two arbitrary atoms results in void
or not.
|
boolean |
CoerciveSubtypeOperator.isVoidFunction(CoerciveSubtypeOperator.Atom<WyalFile.Type.Function> lhs,
CoerciveSubtypeOperator.Atom<WyalFile.Type.Function> rhs,
wytp.types.subtyping.CoerciveSubtypeOperator.Assumptions assumptions)
Determine whether the intersection of two function types is void or not.
|
boolean |
CoerciveSubtypeOperator.isVoidParameters(boolean lhsSign,
boolean lhsMax,
WyalFile.Tuple<WyalFile.Type> lhs,
boolean rhsSign,
boolean rhsMax,
WyalFile.Tuple<WyalFile.Type> rhs,
wytp.types.subtyping.CoerciveSubtypeOperator.Assumptions assumptions) |
protected boolean |
CoerciveSubtypeOperator.isVoidRecord(CoerciveSubtypeOperator.Atom<WyalFile.Type.Record> lhs,
CoerciveSubtypeOperator.Atom<WyalFile.Type.Record> rhs,
wytp.types.subtyping.CoerciveSubtypeOperator.Assumptions assumptions)
Determine whether the intersection of two record types is void or not.
|
protected boolean |
CoerciveSubtypeOperator.isVoidReference(CoerciveSubtypeOperator.Atom<WyalFile.Type.Reference> lhs,
CoerciveSubtypeOperator.Atom<WyalFile.Type.Reference> rhs,
wytp.types.subtyping.CoerciveSubtypeOperator.Assumptions assumptions)
Determine whether the intersection of two reference types is void or not.
|
protected boolean |
CoerciveSubtypeOperator.isVoidTerm(CoerciveSubtypeOperator.Term<?> lhs,
CoerciveSubtypeOperator.Term<?> rhs,
wytp.types.subtyping.CoerciveSubtypeOperator.Assumptions assumptions) |
Copyright © 2017. All rights reserved.