Packages

trait HybridProgramCalculus extends AnyRef

Hybrid Program Calculus for differential dynamic logic. Basic axioms for hybrid programs are in HilbertCalculus.

Provides the elementary derived proof rules for hybrid programs from Figure 7.4 and Figure 12.9 in: Andre Platzer. Logical Foundations of Cyber-Physical Systems. Springer, 2018.

See also

Andre Platzer. Logical Foundations of Cyber-Physical Systems. Springer, 2018.

Andre Platzer. A complete uniform substitution calculus for differential dynamic logic. Journal of Automated Reasoning, 59(2), pp. 219-266, 2017.

Andre Platzer. Logics of dynamical systems. ACM/IEEE Symposium on Logic in Computer Science, LICS 2012, June 25–28, 2012, Dubrovnik, Croatia, pages 13-24. IEEE 2012

Andre Platzer. The complete proof theory of hybrid systems. ACM/IEEE Symposium on Logic in Computer Science, LICS 2012, June 25–28, 2012, Dubrovnik, Croatia, pages 541-550. IEEE 2012

edu.cmu.cs.ls.keymaerax.core.AxiomBase

edu.cmu.cs.ls.keymaerax.btactics.Ax

HilbertCalculus

TactixLibrary

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. HybridProgramCalculus
  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. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )
  6. def discreteGhost(t: Term, ghost: Option[Variable] = None): DependentPositionTactic

    iG discreteGhost: introduces a discrete ghost called ghost defined as term t; if ghost is None the tactic chooses a name by inspecting t.

    iG discreteGhost: introduces a discrete ghost called ghost defined as term t; if ghost is None the tactic chooses a name by inspecting t.

    G, y=e |- p(y), D
    ------------------iG (where y is new)
         G |- p(x), D
    t

    The ghost's initial value.

    ghost

    The new ghost variable. If None, the tactic chooses a name by inspecting t (must be a variable then). For robustness you are advised to choose a name.

    Examples:
    1. |- [y_0:=y;]x>0
      ----------------discreteGhost("y".asTerm)(1)
      |- x>0
    2. ,
    3. |- [z:=2;][y:=5;]x>0
      ---------------------discreteGhost("0".asTerm, Some("y".asVariable))(1, 1::Nil)
      |- [z:=2;]x>0
  7. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  8. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  9. def finalize(): Unit
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  10. def fp(fixpoint: Formula): DependentPositionWithAppliedInputTactic

    fp: make use of an assumption ⟨a*⟩P to read off a fixpoint J of ⟨a⟩ that is implied by postcondition P.

    fp: make use of an assumption ⟨a*⟩P to read off a fixpoint J of ⟨a⟩ that is implied by postcondition P. Presently wipes all context.

    Usefix:            Fixpoint:
    G,<a*>P, J |- D    P | <a>J |- J
    -------------------------------- fp(J)
    G, <a*>P |- D
    fixpoint

    A formula J that is a prefixpoint of ⟨a⟩ that also follows from P.

    Annotations
    @Tactic( x$31 , x$32 , x$25 , x$26 , x$27 , x$33 , x$34 , x$30 , x$35 , x$28 , x$29 , x$36 )
    Examples:
    1. Usefix:                                    Fixpoint:
      <{x:=x+y;}*>x<=0,x<=2|y<=0 |- x<=2|y<=0    x<=0 | <x:=x+y;>(x<=2|y<=0) |- x<=2|y<=0
      -----------------------------------------------------------------------------------fp("x<=2|y<=0".asFormula)(1)
      <{x:=x+y;}*>x<=0 |- x<=2|y<=0
    2. ,
    3. Usefix:                             Fixpoint:
      <{x:=0;--x:=x+1;}*>P, x<1 |- x<1    x<=0 | <x:=0;--x:=x+1;>x<1 |- x<1
      --------------------------------------------------------------------- fp("x<1".asFormula)(-1)
      <{x:=0;--x:=x+1;}*>x<=0 |- x<1
  11. def generalize(C: Formula): DependentPositionWithAppliedInputTactic

    MR: Generalize postcondition to C and, separately, prove that C implies postcondition.

    MR: Generalize postcondition to C and, separately, prove that C implies postcondition. The operational effect of {a;b;}@generalize(f1) is generalize(f1).

    genUseLbl:        genShowLbl:
    G |- [a]C, D      C |- B
    ------------------------- MR
           G |- [a]B, D
    Annotations
    @Tactic( x$1 , x$2 , x$3 , x$4 , x$5 , x$6 , x$7 , x$10 , x$11 , x$9 , x$8 , x$12 )
    Examples:
    1. genUseLbl:        genShowLbl:
      |- [x:=2;]x>1     x>1 |- [y:=x;]y>1
      ------------------------------------generalize("x>1".asFormula)(1)
      |- [x:=2;][y:=x;]y>1
    2. ,
    3. genUseLbl:                      genShowLbl:
      |- a=2 -> [z:=3;][x:=2;]x>1     x>1 |- [y:=x;]y>1
      -------------------------------------------------generalize("x>1".asFormula)(1, 1::1::Nil)
      |- a=2 -> [z:=3;][x:=2;][y:=x;]y>1
  12. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  13. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  14. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  15. def loop(invariant: Formula): DependentPositionWithAppliedInputTactic

    loop: prove a property of a loop by induction with the given loop invariant.

    loop: prove a property of a loop by induction with the given loop invariant. For hybrid systems wipes conditions that contain bound variables of the loop. For hybrid games may wipe all context.

    Post:                       Init:        Step:
    J, G\BV(a) |- P, D\BV(a)    G |- J, D    J, G\BV(a) |- [a]J, D\BV(a)
    -------------------------------------------------------------------- loop(J)
    G |- [{a}*]P, D
    invariant

    The loop invariant I.

    Annotations
    @Tactic( x$19 , x$20 , x$13 , x$14 , x$15 , x$21 , x$22 , x$18 , x$23 , x$16 , x$17 , x$24 )
    Examples:
    1. Post:         Init:         Step:
      x>1 |- x>0    x>2 |- x>1    x>1 |- [x:=x+1;]x>1
      ------------------------------------------------I("x>1".asFormula)(1)
      x>2 |- [{x:=x+1;}*]x>0
    2. ,
    3. Post:              Init:              Step:
      x>1, y>0 |- x>0    x>2, y>0 |- x>1    x>1, y>0 |- [x:=x+y;]x>1
      ---------------------------------------------------------------I("x>1".asFormula)(1)
      x>2, y>0 |- [{x:=x+y;}*]x>0
    4. ,
    5. Games

      Init:                  Step:                                   Post:
      x>1, y=1 |- x>0&y>0    x>0&y>0 |- [x:=0;--x:=x+y;](x>0&y>0)    x&0&y>0 |- x>0
      -----------------------------------------------------------------------------I("x>0&y>0".asFormula)(1)
      x>1, y=1 |- [{x:=0; -- x:=x+y;}*]x>0
    Note

    Currently uses I induction axiom, which is unsound for hybrid games and will, thus, throw an exception on hybrid games.

    ,

    Beware that, unlike for hybrid systems, the order of premises for hybrid games is Post, Step, Init.

  16. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  17. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  18. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  19. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  20. def toString(): String
    Definition Classes
    AnyRef → Any
  21. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  22. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  23. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped