Packages

object ODELiveness

Implements ODE tactics for liveness.

Created by yongkiat on 24 Feb 2020.

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

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. def affine_form(odes: DifferentialProgram): (List[List[Term]], List[Term], List[Term])

    Computes the affine form for ODEs

    Computes the affine form for ODEs

    odes

    the ODEs to put into affine form

    returns

    A (matrix of terms), b (list of terms), x (list of variables) such that x'=Ax+b

  5. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  6. def bDG(ghost: Expression, p: Term): DependentPositionWithAppliedInputTactic

    Wrapper around bDG for display.

    Wrapper around bDG for display.

    Annotations
    @Tactic( x$13 , x$19 , x$14 , x$15 , x$16 , x$20 , x$21 , x$17 , x$22 , x$23 , x$18 , x$24 )
  7. def bDG(ghost: DifferentialProgram, p: Term): DependentPositionTactic

    Implements bDG rule that adds ghosts to box ODEs on the right of the turnstile

    Implements bDG rule that adds ghosts to box ODEs on the right of the turnstile

    G |- [ghosts, ODE] (||ghosts||)^2 <= p G |- [ghosts, ODE]P ---- dDG G |- [ODE]P

    ghost

    the ghost ODEs, L, M as above

  8. def clone(): AnyRef
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )
  9. def closedRef(R: Formula): DependentPositionWithAppliedInputTactic

    Refinement for a closed domain constraint (e.g.

    Refinement for a closed domain constraint (e.g. Q = p>=0)

    G |- <ODE & R> P G |- p>0 //must start in interior of domain G |-[ODE & R & p>=0 & !P] p>0 //must stay in interior of domain except by possibly exiting exactly at the end ---- (closedRefine) G |- <ODE & p>=0> P

    Annotations
    @Tactic( x$73 , x$74 , x$75 , x$76 , x$77 , x$79 , x$80 , x$78 , x$81 , x$82 , x$83 , x$84 )
  10. def compatCut(R: Formula): DependentPositionWithAppliedInputTactic

    A tiny wrapper around cut.

    A tiny wrapper around cut. This introduces a cut that is compatible for the ODE at a given position (regardless of modality and position, although most useful for diamond ODEs)

    G, [x'=f(x)&Q]R |- C([x'=f(x)&Q]P) G|-[x'=f(x)&Q]R --- compatCut G |- C([x'=f(x)&Q]P)

    Annotations
    @Tactic( x$37 , x$38 , x$39 , x$40 , x$41 , x$44 , x$45 , x$42 , x$46 , x$47 , x$43 , x$48 )
  11. def dBDG(p: Term): DependentPositionWithAppliedInputTactic
    Annotations
    @Tactic( x$85 , x$86 , x$87 , x$88 , x$89 , x$91 , x$92 , x$90 , x$93 , x$94 , x$95 , x$96 )
  12. def dBDG(p: Term, dim: Int): DependentPositionTactic
  13. def dDDG(L: Term, M: Term): DependentPositionWithAppliedInputTactic
    Annotations
    @Tactic( x$97 , x$98 , x$99 , x$100 , x$101 , x$103 , x$104 , x$102 , x$105 , x$106 , x$107 , x$108 )
  14. def dDDG(L: Term, M: Term, dim: Int): DependentPositionTactic
  15. def dDG(ghost: DifferentialProgram, L: Term, M: Term): DependentPositionTactic

    Implements dDG rule that adds ghosts to box ODEs on the right of the turnstile

    Implements dDG rule that adds ghosts to box ODEs on the right of the turnstile

    G |- [ghosts, ODE] (||ghosts||)' <= L ||ghosts|| + M G |- [ghosts, ODE]P ---- dDG G |- [ODE]P

    ghost

    the ghost ODEs, L, M as above

  16. def dDR(R: Formula): DependentPositionWithAppliedInputTactic

    Implements DR<.> rule Note: uses auto cuts for the later premise

    Implements DR<.> rule Note: uses auto cuts for the later premise

    G |- <ODE & R> P G |- [ODE & R] Q ---- (dDR) G |- <ODE & Q> P

    R

    the formula R to refine the domain constraint

    returns

    two premises, as shown above when applied to a top-level succedent diamond

    Annotations
    @Tactic( x$61 , x$62 , x$63 , x$64 , x$65 , x$67 , x$68 , x$66 , x$69 , x$70 , x$71 , x$72 )
  17. def dDX: BuiltInPositionTactic

    ODE diamond is true if domain and postcondition was already true initially

    ODE diamond is true if domain and postcondition was already true initially

    G |- Q & P ---- G |- <x'=f(x)&Q>P

    returns

    see rule above

  18. def dV(eps: Option[Term]): DependentPositionWithAppliedInputTactic
    Annotations
    @Tactic( x$121 , x$122 , x$123 , x$124 , x$125 , x$128 , x$129 , x$126 , x$130 , x$131 , x$127 , x$132 )
  19. def dV(bnd: Term, manual: Boolean = false): DependentPositionTactic

    Implements dV rule for atomic postconditions The bottom two premises are auto-closed because of the need to Dconstify The first one is partially auto-closed if odeReduce is able to prove global existence e.g.

    Implements dV rule for atomic postconditions The bottom two premises are auto-closed because of the need to Dconstify The first one is partially auto-closed if odeReduce is able to prove global existence e.g. (similarly for dV >),

    Note: autonormalizes to >= and > (but provided e_() must be for the normalized shape!)

    G, t=0 |- <t'=1, ODE & Q> t > const G, t=0 |- e_() > 0 G, t=0 |- [t'=1, ODE & Q & p-q < 0] p'-q' >= e () (this uses compatible cuts ) ---- (dV >=) G |- <ODE & Q> p >= q

    Note that domain constraint Q is kept around!

    bnd

    the lower bound on derivatives

    manual

    whether to try closing automatically

    returns

    closes (or partially so)

  20. def dVAuto(autoqe: Boolean = true): DependentPositionTactic
  21. def deriveGlobalExistence(ode: DifferentialProgram): Option[ProvableSig]

    Given ODE, returns the global existence axiom <t'=1,x'=f(x)>t>p() (if it proves)

    Given ODE, returns the global existence axiom <t'=1,x'=f(x)>t>p() (if it proves)

    returns

    (optional) ProvableSig proving the global existence axiom, None if failed

  22. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  23. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  24. def finalize(): Unit
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  25. def gEx(hint: Option[Formula]): DependentPositionWithAppliedInputTactic
    Annotations
    @Tactic( x$109 , x$110 , x$111 , x$112 , x$113 , x$115 , x$116 , x$114 , x$117 , x$118 , x$119 , x$120 )
  26. def gEx(hints: List[Formula]): DependentPositionTactic
  27. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  28. def getDDG(dim: Int): ProvableSig
  29. def getDDGinst(ghostODEs: DifferentialProgram): ProvableSig

    Helper that gets the appropriate DDG instance (already instantiated for the ghosts by renaming and friends) This helps simplify the (y^2)' term away

    Helper that gets the appropriate DDG instance (already instantiated for the ghosts by renaming and friends) This helps simplify the (y^2)' term away

    ghostODEs

    the ghosts to add to the ODE

    returns

    DDG instantiated for the particular boxode question

  30. def getVDGinst(ghostODEs: DifferentialProgram): (ProvableSig, ProvableSig)

    Helper that gets the appropriate VDG instance (already instantiated for the ghosts and ODE by renaming and friends)

    Helper that gets the appropriate VDG instance (already instantiated for the ghosts and ODE by renaming and friends)

    ghostODEs

    the ghost ODEs

    returns

    both directions of VDG instantiated for the ghost ODEs (everything else is left uninstantiated)

  31. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  32. def higherdV(bnds: List[Term]): DependentPositionTactic

    Implements higher dV series rule for atomic postconditions with less automation Given a series a_0, a_1, ...

    Implements higher dV series rule for atomic postconditions with less automation Given a series a_0, a_1, ... , a_n :

    G |- [t'=1, ODE&Q & p<0] p >= a_0 + a_1 t + a_2 t2 + ... + a_n tn G |- <t'=1, ODE & Q> a_0 + a_1 t + a_2 t2 + ... + a_n tn > 0 ---- (higherdV >=) G |- <ODE & Q> p >= 0

    Note that domain constraint Q is kept around!

    bnds

    the lower bound on derivatives

    returns

    two subgoals, shown above

  33. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  34. def kDomainDiamond(R: Formula): DependentPositionWithAppliedInputTactic

    Implements K<&> rule Note: uses auto cuts for the later premise

    Implements K<&> rule Note: uses auto cuts for the later premise

    G |- <ODE & Q> R G |- [ODE & Q & !P] !R ---- (kDomD) G |- <ODE & Q> P

    R

    the formula R to refine the postcondition

    returns

    two premises, as shown above when applied to a top-level succedent diamond

    Annotations
    @Tactic( x$49 , x$50 , x$54 , x$51 , x$52 , x$55 , x$56 , x$53 , x$57 , x$58 , x$59 , x$60 )
  35. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  36. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  37. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  38. def odeReduce(strict: Boolean = true, hints: List[Formula]): DependentPositionTactic

    Applied to a top-level position containing a succedent diamond, this tactic removes irrelevant ODEs

    Applied to a top-level position containing a succedent diamond, this tactic removes irrelevant ODEs

    strict

    whether to throw an error when it meets a nonlinear ODE that can't be reduced

    hints

    a list of

    returns

    reduces away all irrelevant ODEs

  39. def odeUnify: DependentPositionTactic

    Adds compatible (ODE unifiable) box modalities from the assumptions to the domain constraint e.g.

    Adds compatible (ODE unifiable) box modalities from the assumptions to the domain constraint e.g. [x'=f(x)&A]B is compatible for [x'=f(x)&Q]P if A implies Q

    [z'=g(z)&Q]P is compatible for [x'=f(x)&Q]P if z'=g(z) contains a subset of ODEs of x'=f(x)

    For compatible assumptions, the rule adds them by diff cut, e.g.:

    G, [x'=f(x)&A]B |- [x'=f(x)&Q&B]P --- G, [x'=f(x)&A]B |- [x'=f(x)&Q]P

    Annotations
    @Tactic( x$25 , x$26 , x$27 , x$28 , x$29 , x$31 , x$32 , x$30 , x$33 , x$34 , x$35 , x$36 )
  40. def saveBox: DependentPositionTactic

    Saves a (negated) box version of the liveness postcondition.

    Saves a (negated) box version of the liveness postcondition. This is a helpful pattern because of compat cuts

    G, [ODE & Q]!P |- <ODE & Q> P ---- (saveBox) G |- <ODE & Q> P

  41. def semialgdV(bnd: Term): DependentPositionTactic
  42. def semialgdVAuto(autoqe: Boolean = true): DependentPositionTactic
  43. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  44. def toString(): String
    Definition Classes
    AnyRef → Any
  45. def vDG(ghost: Expression): DependentPositionWithAppliedInputTactic

    Wrapper around vDG for display.

    Wrapper around vDG for display.

    Annotations
    @Tactic( x$1 , x$7 , x$2 , x$3 , x$4 , x$8 , x$9 , x$5 , x$10 , x$11 , x$6 , x$12 )
  46. def vDG(ghost: DifferentialProgram): DependentPositionTactic

    Implements linear vDG rule that adds ghosts to an ODE on the left or right, in either modality For boxes on the right and diamonds on the left, the ODE must be affine

    Implements linear vDG rule that adds ghosts to an ODE on the left or right, in either modality For boxes on the right and diamonds on the left, the ODE must be affine

    G |- [y'=g(x,y),x'=f(x)]P
    ---- vDG (g affine in y)
    G |- [x'=f(x)]P
    
    [y'=g(x,y),x'=f(x)]P |- D
    ----
    [x'=f(x)]P |- D
    ghost

    the ODEs to ghost in

    returns

    the sequent with ghosts added in requested position

  47. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  48. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  49. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped