package kaisar
- Alphabetic
- Public
- All
Type Members
- case class AForLoop(idx: Ident, idx0: Term, conv: Formula, body: AngelStrategy, idxUp: Term, guardDelta: Option[Term]) extends AngelStrategy with Product with Serializable
-
case class
ALoop(conv: Formula, body: AngelStrategy) extends AngelStrategy with Product with Serializable
Angelic while loop with decidable convergence/guard formula
-
case class
AODE(ode: ODESystem, dur: Term) extends AngelStrategy with Product with Serializable
Differential equation with (concrete) angelic duration.
- sealed trait ASTNode extends AnyRef
-
case class
ASwitch(branches: List[(Formula, AngelStrategy)]) extends AngelStrategy with Product with Serializable
Angelic switch statement with decidable branch guards
-
sealed
trait
AngelStrategy extends AnyRef
Directly executable, simply-typed strategy for Angel player
- sealed trait AsgnPat extends ASTNode
- case class Assert(pat: IdentPat, f: Formula, m: Method) extends Statement with Product with Serializable
- case class Assume(pat: IdentPat, f: Formula) extends Statement with Product with Serializable
- case class AtomicODEStatement(dp: AtomicODE, solFact: IdentPat = Nothing) extends DiffStatement with Product with Serializable
- case class Auto() extends Method with Product with Serializable
-
trait
BasicDemonStrategy[number <: Numeric[number, Ternary]] extends AnyRef
Wrappable interface for Demon strategies.
Wrappable interface for Demon strategies. While this interface is not "simpler" than DemonStrategy, it is designed to work seamlessly with the output of SimpleStrategy.apply. i.e., if you wish to write a raw DemonStrategy, you will have to be familiar with the SimpleStrategy.apply implementation, but not if you write BasicDemonStrategy. Also simplifies initial-state computation.
- See also
WrappedDemonStrategy
- case class Block(ss: Statements) extends Statement with Product with Serializable
- case class BoxChoice(left: Statement, right: Statement) extends Statement with Product with Serializable
- case class BoxChoiceProgress(bc: BoxChoice, onBranch: Int, progress: Statement) extends MetaNode with Product with Serializable
- case class BoxLoop(s: Statement, ih: Option[(IdentPat, Formula, Option[Formula])] = None) extends Statement with Product with Serializable
- case class BoxLoopProgress(boxLoop: BoxLoop, progress: Statement) extends MetaNode with Product with Serializable
- case class ByProof(proof: Statements) extends Method with Product with Serializable
-
case class
Comment(str: String) extends MetaNode with Product with Serializable
Note this is not for comments parsed from source files since the parser strips out comments.
Note this is not for comments parsed from source files since the parser strips out comments. This is used for the insertion of machine-generated comments in machine-generated Kaisar files
-
case class
ConclusionDecl(thmName: Ident) extends KaisarDecl with Product with Serializable
Display the already-proved conclusion of a proof
- case class Context(s: Statement) extends Product with Serializable
- sealed trait ContextQuery extends AnyRef
- sealed trait ContextResult extends AnyRef
-
case class
DebugArith(opt: Boolean) extends OptionSpec with Product with Serializable
When arith debug, every formula checked in a proof search is printed
-
case class
Decls(dcls: List[KaisarDecl]) extends KaisarDecl with Product with Serializable
List of declarations evaluated sequentially
- class DemonException extends Exception
-
trait
DemonStrategy[T] extends AnyRef
Interface for drivers implementing Demon strategies / implementing an environment or hardware/simulation platform
Interface for drivers implementing Demon strategies / implementing an environment or hardware/simulation platform
- See also
- case class DeterritorializePass(tt: TimeTable) extends Product with Serializable
- final case class DiffCollection(atoms: Set[AtomicODEStatement], ghosts: Set[AtomicODEStatement], inverseGhosts: Set[AtomicODEStatement]) extends Product with Serializable
- case class DiffGhostStatement(ds: DiffStatement) extends DiffStatement with Product with Serializable
- case class DiffInduction() extends Method with Product with Serializable
- case class DiffProductStatement(l: DiffStatement, r: DiffStatement) extends DiffStatement with Product with Serializable
- sealed trait DiffStatement extends ASTNode
- case class DomAnd(l: DomainStatement, r: DomainStatement) extends DomainStatement with Product with Serializable
- case class DomAssert(x: IdentPat, f: Formula, child: Method) extends DomainFact with Product with Serializable
- case class DomAssume(x: IdentPat, f: Formula) extends DomainFact with Product with Serializable
-
final
case class
DomCollection(assumptions: Set[DomAssume], assertions: List[DomAssert], weakens: Set[DomainStatement], modifiers: Set[DomModify]) extends Product with Serializable
Note: assertions are a list because it matters what order assertions are proved in.
Note: assertions are a list because it matters what order assertions are proved in. Order does not matter for the others.
- case class DomModify(id: IdentPat, x: Variable, f: Term) extends DomainStatement with Product with Serializable
- case class DomWeak(dc: DomainStatement) extends DomainStatement with Product with Serializable
- sealed trait DomainFact extends DomainStatement
- sealed trait DomainStatement extends ASTNode
- class ElaborationPass extends AnyRef
-
class
Environment[number <: Numeric[number, Ternary]] extends AnyRef
Runtime state of executed strategy
- case class Exhaustive() extends Method with Product with Serializable
- case class For(metX: Ident, met0: Term, metIncr: Term, conv: Option[Assert], guard: Assume, body: Statement, guardDelta: Option[Term] = None) extends Statement with Product with Serializable
- case class ForProgress(forth: For, progress: Statement) extends MetaNode with Product with Serializable
- case class ForwardSelector(forward: ProofTerm) extends Selector with Product with Serializable
- case class Ghost(s: Statement) extends Statement with Product with Serializable
- case class GuardDone(delta: Option[Term]) extends Method with Product with Serializable
- case class Hypothesis() extends Method with Product with Serializable
- case class InverseDiffGhostStatement(ds: DiffStatement) extends DiffStatement with Product with Serializable
- case class InverseGhost(s: Statement) extends Statement with Product with Serializable
- sealed trait KaisarDecl extends AnyRef
- class KaisarKeywordParser extends AnyRef
- case class KnownFalse() extends Ternary with Product with Serializable
- case class KnownTrue() extends Ternary with Product with Serializable
- case class Label(st: LabelDef, snapshot: Option[Snapshot] = None) extends Statement with Product with Serializable
-
case class
LetDecl(ls: LetSym) extends KaisarDecl with Product with Serializable
Define a function, predicate, or program which can be reused across proofs
- case class LetSym(f: Ident, args: List[Ident], e: Expression) extends Statement with Product with Serializable
- case class LiteralMetric(delta: Number, bound: Number) extends Metric with Product with Serializable
- case class Match(pat: Term, e: Expression) extends Statement with Product with Serializable
- sealed trait MetaNode extends Statement
- sealed trait Method extends ASTNode
- sealed trait Metric extends AnyRef
- case class Modify(ids: List[Ident], mods: List[(Variable, Option[Term])]) extends Statement with Product with Serializable
- case class NoPat() extends AsgnPat with Product with Serializable
-
case class
NoValueException(nodeID: Int = -1, msg: String) extends Exception with Product with Serializable
Indicates that we tried to evaluate something whose value could not be determined
- case class Note(x: Ident, proof: ProofTerm, annotation: Option[Formula] = None) extends Statement with Product with Serializable
- trait NumberFactory[Truth, N <: Numeric[N, Truth]] extends AnyRef
-
trait
Numeric[T, Truth] extends AnyRef
Trait for different arithmetic representations supported for system execution
-
case class
OptionPragma(optionSpec: OptionSpec) extends PragmaSpec with Product with Serializable
The option pragma is used to configure settings
-
sealed
trait
OptionSpec extends AnyRef
Language of option specifications
- case class PatternSelector(e: Term) extends Selector with Product with Serializable
- case class Phi(asgns: Statement) extends MetaNode with Product with Serializable
-
class
Play[N <: Numeric[N, Ternary]] extends AnyRef
Interpreter for strategies
-
case class
Pragma(ps: PragmaSpec) extends MetaNode with Product with Serializable
Used for features which are not fundamentally part of the language, but more convenience features of the implementation.
Used for features which are not fundamentally part of the language, but more convenience features of the implementation. Used for setting options including those useful for debugging or profiling
-
case class
PragmaDecl(ls: PragmaSpec) extends KaisarDecl with Product with Serializable
Apply a pragma directive to the entire remainder of the file
-
sealed
trait
PragmaSpec extends AnyRef
Language of pragma statements
- case class PrintExpr(e: Expression) extends Printable with Product with Serializable
- case class PrintGoal(printable: Printable) extends MetaNode with Product with Serializable
- case class PrintString(msg: String) extends Printable with Product with Serializable
- sealed trait Printable extends AnyRef
- case class ProgramAssignments(x: Variable, onlySSA: Boolean = false) extends ProofTerm with Product with Serializable
- case class ProgramVar(x: Variable) extends ProofTerm with Product with Serializable
- case class ProofApp(m: ProofTerm, n: ProofTerm) extends ProofTerm with Product with Serializable
- case class ProofInstance(e: Expression) extends ProofTerm with Product with Serializable
- sealed trait ProofTerm extends ASTNode
- case class ProofVar(x: Ident) extends ProofTerm with Product with Serializable
- case class Prop() extends Method with Product with Serializable
- case class ProvablyConstantMetric(delta: Term, bound: Term, isIncreasing: Boolean, taboos: Set[Variable]) extends Metric with Product with Serializable
- case class ProveODE(ds: DiffStatement, dc: DomainStatement) extends Statement with Product with Serializable
-
case class
ProvesDecl(thmName: Ident, conclusion: Formula) extends KaisarDecl with Product with Serializable
Check whether given conclusion follows from given proof
-
case class
QAssignments(x: Variable, onlySSA: Boolean) extends ContextQuery with Product with Serializable
Matches all assignments which assign a given variable x.
-
case class
QElaborate(cq: ContextQuery) extends ContextQuery with Product with Serializable
QElaborate instructs the context to execute query cq normally, then fully elaborate all (user-defined and internal) function symbols appearing in the result.
-
case class
QNil() extends ContextQuery with Product with Serializable
Matches nothing.
Matches nothing. Algebraic unit of query language.
-
case class
QPhi(phi: Phi, cq: ContextQuery) extends ContextQuery with Product with Serializable
Applies a query cq under an assignment.
Applies a query cq under an assignment. Assuming queries are applied to (light) SSA-form contexts, the QPhi is only needed for (inlined) Phi assignments, as they are the only assignments which ever shadow another.
-
case class
QProgramVar(x: Variable) extends ContextQuery with Product with Serializable
Matches all facts which mention a given program variable
-
case class
QProofTerm(pt: ProofTerm) extends ContextQuery with Product with Serializable
Query corresponding to a proof term selector.
Query corresponding to a proof term selector. Presently, the effect is the same as noteing a proof term and selecting the noted fact variable. However, having a ProofTerm query would allow us in principle to manage proof terms whose arguments differ across branches.
-
case class
QProofVar(x: Variable) extends ContextQuery with Product with Serializable
Matches only facts which are bound to fact name x.
-
case class
QUnify(pat: Expression) extends ContextQuery with Product with Serializable
Not to be confused with QUnion.
Not to be confused with QUnion. Matches all formulas which unify with a given pattern.
- case class QUnion extends ContextQuery with Product with Serializable
-
case class
RBranch(l: ContextResult, r: ContextResult) extends ContextResult with Product with Serializable
When results differed for two parallel branches of a proof, return each branch, distinguished
- case class RCF() extends Method with Product with Serializable
-
case class
RStrongFailure(msg: String) extends ContextResult with Product with Serializable
Strong failures represent an issue that must be reported regardless of what happens on other branches
-
case class
RSuccess(facts: Set[(Option[Ident], Formula)], assigns: Set[Assign] = Set()) extends ContextResult with Product with Serializable
Collection of facts with optional names, as well as assignments
-
case class
RWeakFailure(msg: String) extends ContextResult with Product with Serializable
Weak failures only represent that one branch has failed, and so long as some other branch succeeds, we're ok
-
case class
RatIntNum(l: Rational, u: Rational) extends Numeric[RatIntNum, Ternary] with Product with Serializable
Interval of rational numbers.
-
case class
RatNum(n: Rational) extends Numeric[RatNum, Boolean] with Product with Serializable
Single rational number.
- case class Rational(n: BigInt, d: BigInt) extends Product with Serializable
- trait RefinementException extends LocatedException
- case class RefinementFailure(s: Statement, g: Program, extraMsg: String = "", node: ASTNode = Triv()) extends LocatedException with RefinementException with Product with Serializable
-
case class
SAssign(x: Ident, f: Term) extends SimpleStrategy with Product with Serializable
Deterministic assignment.
Deterministic assignment. Works identically for Angel/Demon.
-
case class
SAssignAny(x: Ident) extends SimpleStrategy with Product with Serializable
Nondeterministic assignment resolved by demon
-
case class
SChoice(l: AngelStrategy, r: AngelStrategy) extends SimpleStrategy with Product with Serializable
Demonic choice
-
case class
SCompose(children: List[AngelStrategy]) extends SimpleStrategy with Product with Serializable
(n-ary) sequential composition, identical for Demon vs Angel.
-
case class
SLoop(s: AngelStrategy) extends SimpleStrategy with Product with Serializable
Demonic loop
-
case class
SODE(ode: ODESystem) extends SimpleStrategy with Product with Serializable
Differential equation with decidable domain constraint and Demonic duration
-
case class
STest(f: Formula) extends SimpleStrategy with Product with Serializable
Demon must pass test f.
Demon must pass test f. Strategies are weak-test, assume f is decidable
- sealed trait Selector extends ASTNode
-
sealed
trait
SimpleStrategy extends AngelStrategy
A simple strategy is one where Angel makes no choices, only Demon
- case class Snapshot(m: Map[String, Subscript]) extends Product with Serializable
- case class Solution() extends Method with Product with Serializable
- sealed trait Statement extends ASTNode
- case class Switch(scrutinee: Option[Selector], pats: List[(IdentPat, Formula, Statement)]) extends Statement with Product with Serializable
- case class SwitchProgress(switch: Switch, onBranch: Int, progress: Statement) extends MetaNode with Product with Serializable
-
case class
SynthesizeDecl(thmName: Ident) extends KaisarDecl with Product with Serializable
Display the synthesized strategy resulting from an already-proved proof.
- sealed trait Ternary extends AnyRef
- case class TernaryNumber[number <: Numeric[number, Boolean]](num: number) extends Numeric[TernaryNumber[number], Ternary] with Product with Serializable
-
case class
TestFailureException(nodeID: Int) extends Exception with Product with Serializable
Indicates that a Demonic test failed, thus Demon loses
-
case class
TheoremDecl(name: Ident, inPf: Statement, outPf: Statement = Triv(), conclusion: Formula = True) extends KaisarDecl with Product with Serializable
Check a proof of a strategy and give it a name
-
case class
Time(opt: Boolean) extends OptionSpec with Product with Serializable
If tracing is also enabled, enabling time will print the cumulative runtime at each line, to allow macro-scale performance measurements.
If tracing is also enabled, enabling time will print the cumulative runtime at each line, to allow macro-scale performance measurements. The timestamp resets each time this option is enabled, even if it is already on.
-
case class
Trace(opt: Boolean) extends OptionSpec with Product with Serializable
When tracing is enabled, every proof statement is printed as it is checked, with line numbers
- case class Triv() extends Statement with Product with Serializable
- case class TuplePat(pats: List[AsgnPat]) extends AsgnPat with Product with Serializable
- case class UnknowingFactory[N <: Numeric[N, Boolean]](factory: NumberFactory[Boolean, N]) extends NumberFactory[Ternary, TernaryNumber[N]] with Product with Serializable
- case class Unknown() extends Ternary with Product with Serializable
-
case class
UnsupportedStrategyException(nodeID: Int) extends Exception with Product with Serializable
Indicates that expression was not in the executable fragment
- case class Using(use: List[Selector], method: Method) extends Method with Product with Serializable
- case class VarPat(x: Variable, p: Option[Ident] = None) extends AsgnPat with Product with Serializable
-
case class
VariableSets(boundVars: Set[Variable], mustBoundVars: Set[Variable], freeVars: Set[Variable], tabooVars: Set[Variable], tabooFunctions: Set[Ident], tabooFacts: Set[Ident]) extends Product with Serializable
Stores results of variable set computations for Kaisar proofs
Stores results of variable set computations for Kaisar proofs
- boundVars
All program variables which are bound at some point in the proof, except Phi assignments
- mustBoundVars
All program variables which are bound on every path in proof.
- freeVars
All program variables which appear free in proof without surrounding must-binder
- tabooVars
All program variables which are taboo (not allowed to be referenced), usually because they are ghosts
- tabooFunctions
All function symbols which are taboo to reference, usually because they are inverse ghosts
- tabooFacts
All fact variables which are taboo to reference, usually because they are inverse ghosts
- case class Was(now: Statement, was: Statement) extends MetaNode with Product with Serializable
- case class While(x: IdentPat, j: Formula, s: Statement) extends Statement with Product with Serializable
- case class WhileProgress(whilst: While, progress: Statement) extends MetaNode with Product with Serializable
- case class WildPat() extends AsgnPat with Product with Serializable
-
class
WrappedDemonStrategy[number <: Numeric[number, Ternary]] extends DemonStrategy[number]
Produces an executable DemonStrategy from high-level BasicDemonStrategy interface, fit for use with SimpleStrategy.apply.
Produces an executable DemonStrategy from high-level BasicDemonStrategy interface, fit for use with SimpleStrategy.apply. The major contribution is that WrappedDemonStrategy automatically remembers the Angelic choices from the ambient Angelic strategy, and makes Demon simulate those Angelic choices automatically, leaving you to implement only the true Demon operations.
Value Members
- object ASTNode
- object AngelStrategy
-
object
Composed
Smart constructors for DCompose
- object Context extends Serializable
- object ContextResult
- object DefaultAssignmentSelector extends Selector with Product with Serializable
- object DefaultSelector extends Selector with Product with Serializable
- object DeterritorializePass extends Serializable
- object DomainStatement
- object ExpressionParser
- object FileChecker
-
object
ForwardProofChecker
Checks forward CdGL-style natural deduction proof terms
-
object
IDCounter
Used for allocating unique integer IDs
-
object
Kaisar
Entry-point for Kaisar proof checker, which parses a proof and applies all passes in correct order
- object KaisarFileParser
- object KaisarKeywordParser
- object KaisarProgramParser
- object KaisarProof
- object Metric
- object Modify extends Serializable
- object ParserCommon
- object Play
-
object
Pragmas
Maintain pragma state and implement specific pragmas
- object PrettyPrinter
-
object
ProofChecker
Checks a Kaisar proof term, after all elaboration/transformation passes have been applied
-
object
ProofOptions
Set option status and implement functionality of specific options
- object ProofParser
- object ProofTraversal
- object ProveODE extends Serializable
- object QUnion extends Serializable
- object RatFactory extends NumberFactory[Boolean, RatNum]
- object RatIntFactory extends NumberFactory[Ternary, RatIntNum]
- object Rational extends Serializable
- object RefinementChecker
- object SSAPass
- object SimpleStrategy
- object Snapshot extends Serializable
-
object
StandardLibrary
Basic functions about lists, expressions, and non-Kaisar data structures which "should" be a standard library
- object StrategyExtractorMain
- object StrategyParser
- object StrategyPrinter
- object Totalizer
- object VariableSets extends Serializable
KeYmaera X: An aXiomatic Tactical Theorem Prover
KeYmaera X is a theorem prover for differential dynamic logic (dL), a logic for specifying and verifying properties of hybrid systems with mixed discrete and continuous dynamics. Reasoning about complicated hybrid systems requires support for sophisticated proof techniques, efficient computation, and a user interface that crystallizes salient properties of the system. KeYmaera X allows users to specify custom proof search techniques as tactics, execute tactics in parallel, and interface with partial proofs via an extensible user interface.
http://keymaeraX.org/
Concrete syntax for input language Differential Dynamic Logic
Package Structure
Main documentation entry points for KeYmaera X API:
edu.cmu.cs.ls.keymaerax.core- KeYmaera X kernel, proof certificates, main data structuresExpression- Differential dynamic logic expressions:Term,Formula,ProgramSequent- Sequents of formulasProvable- Proof certificates transformed by rules/axiomsRule- Proof rules as well asUSubstOnefor (one-pass) uniform substitutions and renaming.StaticSemantics- Static semantics with free and bound variable analysisKeYmaeraXParser.edu.cmu.cs.ls.keymaerax.parser- Parser and pretty printer with concrete syntax and notation for differential dynamic logic.KeYmaeraXPrettyPrinter- Pretty printer producing concrete KeYmaera X syntaxKeYmaeraXParser- Parser reading concrete KeYmaera X syntaxKeYmaeraXArchiveParser- Parser reading KeYmaera X model and proof archive.kyxfilesDLParser- Combinator parser reading concrete KeYmaera X syntaxDLArchiveParser- Combinator parser reading KeYmaera X model and proof archive.kyxfilesedu.cmu.cs.ls.keymaerax.infrastruct- Prover infrastructure outside the kernelUnificationMatch- Unification algorithmRenUSubst- Renaming Uniform Substitution quickly combining kernel's renaming and substitution.Context- Representation for contexts of formulas in which they occur.Augmentors- Augmenting formula and expression data structures with additional functionalityExpressionTraversal- Generic traversal functionality for expressionsedu.cmu.cs.ls.keymaerax.bellerophon- Bellerophon tactic language and tactic interpreterBelleExpr- Tactic language expressionsSequentialInterpreter- Sequential tactic interpreter for Bellerophon tacticsedu.cmu.cs.ls.keymaerax.btactics- Bellerophon tactic library for conducting proofs.TactixLibrary- Main KeYmaera X tactic library including many proof tactics.HilbertCalculus- Hilbert Calculus for differential dynamic logicSequentCalculus- Sequent Calculus for propositional and first-order logicHybridProgramCalculus- Hybrid Program Calculus for differential dynamic logicDifferentialEquationCalculus- Differential Equation Calculus for differential dynamic logicUnifyUSCalculus- Unification-based uniform substitution calculus underlying the other calculi[edu.cmu.cs.ls.keymaerax.btactics.UnifyUSCalculus.ForwardTactic ForwardTactic]- Forward tactic framework for conducting proofs from premises to conclusionsedu.cmu.cs.ls.keymaerax.lemma- Lemma mechanismLemma- Lemmas are Provables stored under a name, e.g., in files.LemmaDB- Lemma database stored in files or database etc.edu.cmu.cs.ls.keymaerax.tools.qe- Real arithmetic back-end solversMathematicaQETool- Mathematica interface for real arithmetic.Z3QETool- Z3 interface for real arithmetic.edu.cmu.cs.ls.keymaerax.tools.ext- Extended back-ends for noncritical ODE solving, counterexamples, algebra, simplifiers, etc.Mathematica- Mathematica interface for ODE solving, algebra, simplification, invariant generation, etc.Z3- Z3 interface for real arithmetic including simplifiers.Entry Points
Additional entry points and usage points for KeYmaera X API:
edu.cmu.cs.ls.keymaerax.launcher.KeYmaeraX- Command-line launcher for KeYmaera X supports command-line argument-helpto obtain usage informationedu.cmu.cs.ls.keymaerax.btactics.AxIndex- Axiom indexing data structures with keys and recursors for canonical proof strategies.edu.cmu.cs.ls.keymaerax.btactics.DerivationInfo- Meta-information on all derivation steps (axioms, derived axioms, proof rules, tactics) with user-interface info.edu.cmu.cs.ls.keymaerax.bellerophon.UIIndex- Index determining which canonical reasoning steps to display on the KeYmaera X User Interface.edu.cmu.cs.ls.keymaerax.btactics.Ax- Registry for derived axioms and axiomatic proof rules that are proved from the core.References
Full references on KeYmaera X are provided at http://keymaeraX.org/. The main references are the following:
1. André Platzer. A complete uniform substitution calculus for differential dynamic logic. Journal of Automated Reasoning, 59(2), pp. 219-265, 2017.
2. Nathan Fulton, Stefan Mitsch, Jan-David Quesel, Marcus Völp and André Platzer. KeYmaera X: An axiomatic tactical theorem prover for hybrid systems. In Amy P. Felty and Aart Middeldorp, editors, International Conference on Automated Deduction, CADE'15, Berlin, Germany, Proceedings, volume 9195 of LNCS, pp. 527-538. Springer, 2015.
3. André Platzer. Logical Foundations of Cyber-Physical Systems. Springer, 2018. Videos