Packages

object ModelPlex extends ModelPlexTrait with Logging

ModelPlex: Verified runtime validation of verified cyber-physical system models.

See also

Stefan Mitsch and André Platzer. ModelPlex: Verified runtime validation of verified cyber-physical system models. Formal Methods in System Design, 42 pp. 2016. Special issue for selected papers from RV'14.

Stefan Mitsch and André Platzer. ModelPlex: Verified runtime validation of verified cyber-physical system models. In Borzoo Bonakdarpour and Scott A. Smolka, editors, Runtime Verification - 5th International Conference, RV 2014, Toronto, ON, Canada, September 22-25, 2014. Proceedings, volume 8734 of LNCS, pages 199-214. Springer, 2014.

Linear Supertypes
Logging, LazyLogging, LoggerHolder, ModelPlexTrait, (List[Variable], Symbol) ⇒ (Formula) ⇒ Formula, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. ModelPlex
  2. Logging
  3. LazyLogging
  4. LoggerHolder
  5. ModelPlexTrait
  6. Function2
  7. AnyRef
  8. 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. val INDEXED_POST_VAR: (Variable) ⇒ Variable

    Returns the post variable of v identified by index increase.

    Returns the post variable of v identified by index increase.

    Definition Classes
    ModelPlexTrait
  5. val NAMED_POST_VAR: (Variable) ⇒ Variable

    Returns the post variable of v identified by name postfix post.

    Returns the post variable of v identified by name postfix post.

    Definition Classes
    ModelPlexTrait
  6. def apply(vars: List[Variable], kind: Symbol, checkProvable: Option[(ProvableSig) ⇒ Unit]): (Formula) ⇒ Formula

    Synthesize the ModelPlex (Controller) Monitor for the given formula for monitoring the given variable.

    Synthesize the ModelPlex (Controller) Monitor for the given formula for monitoring the given variable. @ param kind The kind of monitor, either 'ctrl or 'model.

    checkProvable

    true to check the Provable proof certificates (recommended).

    Definition Classes
    ModelPlexModelPlexTrait
  7. def apply(formula: Formula, kind: Symbol, checkProvable: Option[(ProvableSig) ⇒ Unit] = Some(_ => ()), unobservable: ListMap[_ <: NamedSymbol, Option[Formula]] = ListMap.empty): Formula

    Synthesize the ModelPlex (Controller) Monitor for the given formula for monitoring the given variable.

    Synthesize the ModelPlex (Controller) Monitor for the given formula for monitoring the given variable.

    Definition Classes
    ModelPlexModelPlexTrait
  8. def apply(vars: List[Variable], kind: Symbol): (Formula) ⇒ Formula
    Definition Classes
    ModelPlexTrait → Function2
  9. def applyAtAllODEs(t: DependentPositionTactic): DependentPositionTactic

    Applies tatic t at all ODEs underneath this tactic's position.

  10. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  11. lazy val chaseEulerAssignments: DependentPositionTactic

    Chases remaining assignments.

  12. def chaseToTests(combineTests: Boolean): BuiltInPositionTactic
  13. def clone(): AnyRef
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )
  14. def controllerMonitorByChase: BuiltInPositionTactic

    Returns a tactic to derive a controller monitor in axiomatic style using forward chase.

    Returns a tactic to derive a controller monitor in axiomatic style using forward chase. The tactic is designed to operate on input produced by createMonitorSpecificationConjecture.

    returns

    The tactic.

    Definition Classes
    ModelPlexModelPlexTrait
    Examples:
    1. |- xpost=1
      ------------------------------controllerMonitorByChase(1)
      |- <{x:=1; {x'=2}}*>xpost=x

      In order to produce the result above, the tactic performs intermediate steps as follows.

    2. ,
    3. |- xpost=1
      ------------------------------true&
      |- (true & xpost=1)
      ------------------------------<:=> assign
      |- <x:=1;>(true & xpost=x)
      ------------------------------DX diamond differential skip
      |- <x:=1; {x'=2}>xpost=x
      ------------------------------<*> approx
      |- <{x:=1; {x'=2}}*>xpost=x
    See also

    createMonitorSpecificationConjecture

  15. def controllerMonitorT: DependentPositionTactic

    Returns a backward tactic for deriving controller monitors.

    Returns a backward tactic for deriving controller monitors.

    Definition Classes
    ModelPlexModelPlexTrait
  16. def createMonitorCorrectnessConjecture(vars: List[Variable], kind: Symbol, checkProvable: Option[(ProvableSig) ⇒ Unit], unobservable: ListMap[_ <: NamedSymbol, Option[Formula]]): (Formula) ⇒ Formula

    Conjecture for double-checking a monitor formula for correctness: assumptions -> (monitor -> < prg; >Upsilon).

  17. def createMonitorSpecificationConjecture(fml: Formula, vars: List[Variable], unobservable: ListMap[_ <: NamedSymbol, Option[Formula]], postVar: (Variable) ⇒ Variable = NAMED_POST_VAR): ModelPlexConjecture

    Construct ModelPlex monitor specification conjecture corresponding to given formula.

    Construct ModelPlex monitor specification conjecture corresponding to given formula.

    fml

    A formula of the form p -> [a]q, which was proven correct.

    vars

    A list of variables V, superset of BV(a).

    unobservable

    Unobservable variables/parameters and their optional estimation (e.g., from a sensor), keys subset of vars ++ any fns.

    returns

    A tuple of monitor conjecture and assumptions

    Definition Classes
    ModelPlexModelPlexTrait
    See also

    Mitsch, Platzer: ModelPlex (Definition 3, Lemma 4, Corollary 1).

  18. def createNonlinearModelApprox(name: String, tactic: BelleExpr, defs: Declaration): (Expression) ⇒ (Formula, BelleExpr)

    Creates a model with the ODE approximated by the evolution domain and diff.

    Creates a model with the ODE approximated by the evolution domain and diff. invariants from the tactic. Returns the adapted model and a tactic to proof safety from the original proof.

  19. def createSandbox(name: String, tactic: BelleExpr, fallback: Option[Program], kind: Symbol, checkProvable: Option[(ProvableSig) ⇒ Unit], synthesizeProofs: Boolean, defs: Declaration, postVar: (Variable) ⇒ Variable = NAMED_POST_VAR): (Formula) ⇒ ((Formula, BelleExpr), List[(String, Formula, BelleExpr)])

    Creates a sandbox safety conjecture from a formula of the shape init->[?bounds;{ctrl;plant}*]safe.

    Creates a sandbox safety conjecture from a formula of the shape init->[?bounds;{ctrl;plant}*]safe. The sandbox embeds an (unverified) external controller in monitor checks of kind. It approximates the external controller behavior with nondeterministic values for each of the bound variables in ctrl. Input to the external controller is measured with nondeterministic values for each of the bound variables in plant, but restricted to those satisfying the evolution domain constraints and invariants of the plant. If the monitor is satisfied, the external controller's decision are actuated. Otherwise (monitor unsatisfied) fallback (if specified, ctrl by default) is executed.

    tactic

    The tactic used to prove safety of the original model.

    fallback

    The fallback controller to embed in the sandbox, ctrl by default.

    kind

    The kind of monitor to derive (controller or model monitor).

    checkProvable

    Whether or not to check the ModelPlex provable.

    returns

    The sandbox formula with a tactic to prove it, and a list of lemmas used in the proof.

  20. def createSlidingMonitorSpec(fml: Formula, vars: List[Variable], unobservable: ListMap[_ <: NamedSymbol, Option[Formula]], windowSize: Int): (Formula, List[Formula])

    Construct ModelPlex monitor specification conjecture corresponding to given formula for parameter estimation over a sliding window.

    Construct ModelPlex monitor specification conjecture corresponding to given formula for parameter estimation over a sliding window.

    fml

    A formula of the form p -> [a]q, which was proven correct.

    vars

    A list of variables V, superset of BV(a).

    unobservable

    Unobservable variables/parameters and their optional estimation (e.g., from a sensor), keys subset of vars, any fns.

    windowSize

    Size of sliding window for parameter estimation.

    returns

    A tuple of monitor conjecture and assumptions

  21. def curried: (List[Variable]) ⇒ (Symbol) ⇒ (Formula) ⇒ Formula
    Definition Classes
    Function2
    Annotations
    @unspecialized()
  22. def diamondDiffSolve2DT: DependentPositionTactic

    Returns a tactic to solve two-dimensional differential equations.

    Returns a tactic to solve two-dimensional differential equations. Introduces constant function symbols for variables that do not change in the ODE, before it hands over to the actual diff. solution tactic.

    returns

    The tactic.

    Definition Classes
    ModelPlexModelPlexTrait
  23. def diamondTestRetainConditionT: DependentPositionTactic

    Returns a modified test tactic for axiom <?H>p <-> H & (H->p)

    Returns a modified test tactic for axiom <?H>p <-> H & (H->p)

    returns

    The tactic.

    Definition Classes
    ModelPlexModelPlexTrait
    Example:
    1. |- x>0 & (x>0 -> [x'=x]x>0)
      ---------------------------diamondTestRetainCondition
      |- <?x>0>[x'=x]x>0
    Note

    Unused so far, for deriving prediction monitors where DI is going to rely on knowledge from prior tests.

  24. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  25. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  26. def eulerAllIn: DependentPositionTactic

    Euler-approximates all atomic ODEs somewhere underneath pos

  27. def eulerSystemAllIn: DependentPositionTactic

    Euler-approximates all ODEs somewhere underneath pos.

    Euler-approximates all ODEs somewhere underneath pos. Systematic tactic, but not a proof.

  28. def finalize(): Unit
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  29. def flipUniversalEulerQuantifiers(fml: Formula): Formula

    Unsound approximation step

  30. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  31. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  32. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  33. def locateT(tactics: List[AtPosition[_ <: BelleExpr]]): DependentPositionTactic

    Performs a tactic from the list of tactics that is applicable somewhere underneath position p in sequent s, taking the outermost such sub-position of p.

    Performs a tactic from the list of tactics that is applicable somewhere underneath position p in sequent s, taking the outermost such sub-position of p. Formulas only.

    tactics

    The list of tactics.

    returns

    The tactic.

    Definition Classes
    ModelPlexModelPlexTrait
    Example:
    1. |- a=1 & (<x:=2;>x+y>0 & <y:=3;>x+y>0)
      ---------------------------------------locateT(diamondSeqT :: diamondChoiceT :: Nil)(1)
      |- a=1 & <x:=2; ++ y:=3;>x+y>0
  34. lazy val logger: Logger
    Attributes
    protected
    Definition Classes
    LazyLogging → LoggerHolder
  35. final val loggerName: String
    Attributes
    protected
    Definition Classes
    LoggerHolder
  36. def modelMonitorByChase(ode: DependentPositionTactic): DependentPositionTactic
  37. lazy val modelMonitorByChase: DependentPositionTactic

    Returns a tactic to derive a model monitor in axiomatic style using forward chase + diffSolve.

    Returns a tactic to derive a model monitor in axiomatic style using forward chase + diffSolve. The tactic is designed to operate on input produced by createMonitorSpecificationConjecture.

    returns

    The tactic.

    See also

    createMonitorSpecificationConjecture

  38. def modelMonitorT: DependentPositionTactic

    Returns a backward tactic for deriving model monitors.

    Returns a backward tactic for deriving model monitors.

    Definition Classes
    ModelPlexModelPlexTrait
  39. def modelplexAxiomaticStyle(unprog: DependentPositionTactic): DependentPositionTactic

    ModelPlex backward proof tactic for axiomatic-style monitor synthesis, i.e., avoids proof branching as occuring in the sequent-style synthesis technique.

    ModelPlex backward proof tactic for axiomatic-style monitor synthesis, i.e., avoids proof branching as occuring in the sequent-style synthesis technique. The tactic 'unprog' determines what kind of monitor (controller monitor, model monitor) to synthesize. Operates on monitor specification conjectures.

    unprog

    A tactic for a specific monitor type (either controller monitor or model monitor).

    Definition Classes
    ModelPlexModelPlexTrait
    See also

    createMonitorSpecificationConjecture

    controllerMonitorT

    modelMonitorT

  40. def modelplexSequentStyle: DependentPositionTactic

    ModelPlex sequent-style synthesis technique, i.e., with branching so that the tactic can operate on top-level operators.

    ModelPlex sequent-style synthesis technique, i.e., with branching so that the tactic can operate on top-level operators. Operates on monitor specification conjectures.

    returns

    The tactic.

    Definition Classes
    ModelPlexModelPlexTrait
  41. def mxAbbreviateFunctions(fml: Formula, defs: Declaration): (Formula, USubst)

    Abbreviates functions to nullary function symbols if all their arguments are free in fml, expand according to defs the functions that have at least one if their arguments bound.

    Abbreviates functions to nullary function symbols if all their arguments are free in fml, expand according to defs the functions that have at least one if their arguments bound. Returns the formula with abbreviated/expanded functions, and the substitutions telling which functions were expanded/abbreviated how.

  42. def mxAutoInstantiate(assumptions: List[Formula], unobservable: List[_ <: NamedSymbol], simplifier: Option[BuiltInPositionTactic]): InputTactic
  43. def mxAutoInstantiate(assumptions: List[Formula]): InputTactic
    Annotations
    @Tactic( x$14 , x$15 , x$13 , x$16 , x$17 , x$18 , x$19 , x$20 , x$21 , x$22 , x$23 , x$24 )
  44. def mxFormatShape(shape: String): InputTactic
    Annotations
    @Tactic( x$26 , x$27 , x$25 , x$28 , x$29 , x$30 , x$31 , x$32 , x$33 , x$34 , x$35 , x$36 )
  45. def mxPartialQE(fmlAlts: List[Formula], defs: Declaration, tool: QETacticTool, verified: Boolean = true): ProvableSig
  46. def mxPartialQE(fml: Formula, defs: Declaration, tool: QETacticTool): ProvableSig

    Partial QE on a formula that first expands/abbreviates all uninterpreted symbols and then substitutes back in on the result.

  47. lazy val mxSimplify: BuiltInPositionTactic

    Simplifies reflexive comparisons and implications/conjunctions/disjunctions with true.

  48. def mxSynthesize(kind: String): InputTactic
    Annotations
    @Tactic( x$2 , x$3 , x$1 , x$4 , x$5 , x$6 , x$7 , x$8 , x$9 , x$10 , x$11 , x$12 )
  49. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  50. def normalizeInputFormula(f: Formula): Formula

    Normalizes formula f into the shape A -> [a;]S.

  51. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  52. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  53. def optimizationOneWithSearch(tool: Option[SimplificationTool], assumptions: List[Formula], unobservable: List[_ <: NamedSymbol], simplifier: Option[BuiltInPositionTactic], postVar: (Variable) ⇒ Variable = NAMED_POST_VAR): DependentPositionTactic

    Opt.

    Opt. 1 from Mitsch, Platzer: ModelPlex, i.e., instantiates existential quantifiers with an equal term phrased somewhere in the quantified formula.

    Definition Classes
    ModelPlexModelPlexTrait
    Example:
    1. |- xpost>0 & xpost=xpost
      ------------------------------optimizationOneWithSearch
      |- \exists x x>0 & xpost=x
  54. def partitionUnobservable(unobservable: ListMap[_ <: NamedSymbol, Option[Formula]]): (ListMap[Variable, Option[Formula]], ListMap[(Function, Variable), Option[Formula]], ListMap[(Function, Variable), Option[Formula]])

    Partitions the unobservable symbols into unobservable state variables and unknown model parameters.

  55. lazy val simplForall1: Lemma
  56. lazy val simplForall2: Lemma
  57. def stepwisePartialQE(fml: Formula, assumptions: List[Formula], defs: Declaration, tool: QETacticTool with SimplificationTool, preQE: (Formula, Int) ⇒ Unit = (_, _) => {}, postQE: (Formula, Int) ⇒ Unit = (_, _) => {}): ProvableSig

    Splits into separate partial QE calls and merges results.

  58. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  59. def toMetric(fml: Formula): Formula

    Turns the formula fml into a single inequality.

  60. def toString(): String
    Definition Classes
    Function2 → AnyRef → Any
  61. def tupled: ((List[Variable], Symbol)) ⇒ (Formula) ⇒ Formula
    Definition Classes
    Function2
    Annotations
    @unspecialized()
  62. def unrollLoop(n: Int): DependentPositionTactic

    Unrolls diamond loops

  63. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  64. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  65. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )

Inherited from Logging

Inherited from LazyLogging

Inherited from LoggerHolder

Inherited from ModelPlexTrait

Inherited from (List[Variable], Symbol) ⇒ (Formula) ⇒ Formula

Inherited from AnyRef

Inherited from Any

Ungrouped