Packages

object SimplifierV3

Note: this is meant to be a watered down version of SimplifierV2 Goals: Faster, more predictable and customizable

Given a list of rewriting axioms, this traverses a term/formula bottom up and exhaustively tries the list of axioms at each step

The rewriting axioms must have the form |- t = t' |- f -> t = t' or similarly for formulas and <->

Created by yongkiat on 12/19/16.

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

Type Members

  1. type context = Set[Formula]

    An index is a function from a term/formula and the current formula context (i.e., assumptions) to a list of simplification lemmas to try on that term/formula TODO: think more about the type used to represent the current context

  2. type formulaIndex = (Formula, context) ⇒ List[ProvableSig]
  3. type termIndex = (Term, context) ⇒ List[ProvableSig]

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. val algNormalize: (Formula) ⇒ (Formula, Option[ProvableSig])
  5. def arithBaseIndex(t: Term, ctx: context): List[ProvableSig]
  6. def arithGroundIndex(t: Term, ctx: context = emptyCtx): List[ProvableSig]
  7. def arithSpecialIndex(t: Term, ctx: context = emptyCtx): List[ProvableSig]

    TODO: PURELY EXPERIMENTAL HACK.

    TODO: PURELY EXPERIMENTAL HACK. DO NOT MERGE.

    Map of (implicit) functions to simplification axiom(s) for their definition

  8. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  9. val atomNormalize: (Formula) ⇒ (Formula, Option[ProvableSig])
  10. def baseIndex(f: Formula, ctx: context): List[ProvableSig]
  11. def baseIndexWithoutDepFmlSimp(f: Formula, ctx: context): List[ProvableSig]

    Base index without F->(F<->true) dependent formula simplification.

  12. val baseNormalize: (Formula) ⇒ (Formula, Option[ProvableSig])

    Various normalization steps (the first thing each of them do is NNF normalize) Note: This DOES NOT work with quantifiers!

    Various normalization steps (the first thing each of them do is NNF normalize) Note: This DOES NOT work with quantifiers!

    baseNormalize : the base normalizer ineqNormalize : normalizes atomic inequalities only atomNormalize : normalizes all (nested) atomic comparisons semiAlgNormalize : semialgebraic to have 0 on RHS maxMinGeqNormalize : max,min >=0 normal form

    All of these behave as follows:

    Input: f: formula Output: (g:formula,pr:Option[ProvableSig]) where g is the normalized version of f The (optional) pr contains a provable that proves their equivalence if f!=g Additionally, if f is of the incorrect shape, then the normalizer will throw an IllegalArgumentException

  13. def boolIndex(f: Formula, ctx: context): List[ProvableSig]
  14. def chaseIndex(f: Formula, ctx: context): List[ProvableSig]
  15. def clone(): AnyRef
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )
  16. def cmpIndex(f: Formula, ctx: context): List[ProvableSig]
  17. def composeIndex[A <: Expression](is: (A, context) ⇒ List[ProvableSig]*)(f: A, ctx: context): List[ProvableSig]
  18. lazy val defaultFaxs: formulaIndex
  19. lazy val defaultTaxs: termIndex
  20. val disAlgNormalize: (Formula) ⇒ (Formula, Option[ProvableSig])
  21. lazy val divArith: List[ProvableSig]
  22. lazy val emptyCtx: HashSet[Formula]
  23. def emptyFaxs(f: Formula, ctx: context): List[ProvableSig]
  24. def emptyTaxs(t: Term, ctx: context): List[ProvableSig]
  25. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  26. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  27. def finalize(): Unit
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  28. def formulaSimp(f: Formula, ctx: context = HashSet.empty, faxs: formulaIndex, taxs: termIndex): (Formula, Option[(Formula, ProvableSig)])

    Formula simplification of formula f to formula g

    Formula simplification of formula f to formula g

    f

    formula to simplify

    ctx

    current context (assumptions)

    faxs

    the formula index

    taxs

    the term index

    returns

    the simplified formula g and an optional provable containing (premise,proof of premise -> (f<->g)) only if some simplification was applied premise is an assumption in contained in ctx

  29. def fullEqualityIndex(t: Term, ctx: context): List[ProvableSig]
  30. def fullSimpTac(ths: List[ProvableSig] = List.empty, faxs: formulaIndex = defaultFaxs, taxs: termIndex = defaultTaxs, simpAntes: Boolean = true, simpSuccs: Boolean = true): BuiltInTactic

    Full sequent simplification tactic

  31. val fullSimplify: BuiltInTactic
  32. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  33. def groundEqualityIndex(t: Term, ctx: context): List[ProvableSig]
  34. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  35. val ineqNormalize: (Formula) ⇒ (Formula, Option[ProvableSig])
  36. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  37. val maxMinGeqNormalize: (Formula) ⇒ (Formula, Option[ProvableSig])
  38. val maxMinGeqNormalizeUnchecked: (Formula) ⇒ (Formula, Option[ProvableSig])
  39. val maxMinGtNormalize: (Formula) ⇒ (Formula, Option[ProvableSig])
  40. val maxMinGtNormalizeUnchecked: (Formula) ⇒ (Formula, Option[ProvableSig])
  41. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  42. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  43. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  44. lazy val powArith: List[ProvableSig]
  45. val semiAlgNormalize: (Formula) ⇒ (Formula, Option[ProvableSig])
  46. val semiAlgNormalizeUnchecked: (Formula) ⇒ (Formula, Option[ProvableSig])
  47. def simpTac(ths: List[ProvableSig] = List.empty, faxs: formulaIndex = defaultFaxs, taxs: termIndex = defaultTaxs): BuiltInPositionTactic

    Tactic that simplifies at the given position

  48. def simpWithDischarge(ctx: IndexedSeq[Formula], f: Formula, faxs: formulaIndex, taxs: termIndex): (Formula, Option[ProvableSig])

    Almost identifcal to formulaSimp, but proves the rewrite directly with respect to ctx

    Almost identifcal to formulaSimp, but proves the rewrite directly with respect to ctx

    ctx

    current context (assumptions)

    f

    formula to simplify

    faxs

    the formula index

    taxs

    the term index

    returns

    the simplified formula g and an optional provable containing proof of ctx -> (f<->g) only if some simplification was applied

  49. val simplify: BuiltInPositionTactic
  50. val simplifyAllCtx: BuiltInPositionTactic

    Simplifies with full context (antecedent + negated succedent).

  51. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  52. def termSimp(t: Term, ctx: context, taxs: termIndex): (Term, Option[(Formula, ProvableSig)])

    Term simplification of term t to term s

    Term simplification of term t to term s

    t

    term to simplify

    ctx

    current context (assumptions)

    taxs

    the term index

    returns

    the simplified term s and an optional provable containing (premise,proof of premise->s=t) only if some simplification was applied. premise is an assumption in contained in ctx

  53. def toString(): String
    Definition Classes
    AnyRef → Any
  54. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  55. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  56. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped