class
DY.ReachableImpliesInvariant
[ExecTraceTypes]
[ProofTraceTypes]
[TraceInvariant]
(config : ReachabilityConfig)
:
- pf (input : config.Input) : HoareTriple (config.step input).snd (fun (tr : ProofTrace) => config.PreCond input (Trace.erase tr)) fun (x : (config.step input).fst) (x_1 : ProofTrace) => True
Instances
instance
DY.instReachableImpliesInvariantCombine
[ExecTraceTypes]
[ProofTraceTypes]
[TraceInvariant]
{α : Type}
(configs : α → ReachabilityConfig)
[insts : ∀ (id : α), ReachableImpliesInvariant (configs id)]
:
theorem
DY.Trace.Reachable_implies_Invariant
[ExecTraceTypes]
[ProofTraceTypes]
[TraceInvariant]
(config : ReachabilityConfig)
[inst : ReachableImpliesInvariant config]
(trExec : ExecTrace)
:
theorem
DY.Trace.apply_Reachable_implies_Invariant
[ExecTraceTypes]
[ProofTraceTypes]
[TraceInvariant]
{config : ReachabilityConfig}
[inst : ReachableImpliesInvariant config]
{p : ExecTrace → Prop}
:
(∀ (trProof : ProofTrace), Invariant trProof → p (erase trProof)) →
∀ (trExec : ExecTrace), Reachable config trExec → p trExec