@[reducible, inline]
Equations
- DY.ReachabilityConfig.make step = { Input := α, PreCond := fun (x : α) (x_1 : DY.ExecTrace) => True, step := fun (x : α) => ⟨β, step x⟩ }
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
class DY.ReachabilityConfig.HasStep [ExecTraceTypes] (config1 : ReachabilityConfig) (config2 : semiOutParam ReachabilityConfig) :
Instances
Instances
@[instance_reducible]
instance DY.instReachabilityConfigHasItself [ExecTraceTypes] (config : ReachabilityConfig) :
config.Has config
Equations
- DY.instReachabilityConfigHasItself config = { inj := fun (x : config.Input) => x, pf_pre := ⋯, pf_step := ⋯ }
@[instance_reducible]
instance DY.instReachabilityConfigHasStep [ExecTraceTypes] (config1 config2 config3 : ReachabilityConfig) [inst12 : config1.HasStep config2] [inst23 : config2.Has config3] :
config1.Has config3
Equations
- DY.instReachabilityConfigHasStep config1 config2 config3 = { inj := fun (x : config1.Input) => DY.ReachabilityConfig.Has.inj (DY.ReachabilityConfig.HasStep.inj x), pf_pre := ⋯, pf_step := ⋯ }
@[instance_reducible]
instance DY.instReachabilityConfigCombineHasStep [ExecTraceTypes] {n : Nat} (configs : Fin n → ReachabilityConfig) (id : Fin n) :
(configs id).HasStep (ReachabilityConfig.combine configs)
- Base [ExecTraceTypes] {config : ReachabilityConfig} : Reachable config nil
- Step [ExecTraceTypes] {config : ReachabilityConfig} {tr : ExecTrace} (input : config.Input) : config.PreCond input tr → Reachable config tr → Reachable config ((config.step input).snd.run tr).snd.val
Instances For
def DY.Traceful.PreservesReachabilityFrom [ExecTraceTypes] {a : Type} (config : ReachabilityConfig) (f : Traceful a) (post : a → ExecTrace → Prop) (tr : ExecTrace) :
Equations
- One or more equations did not get rendered due to their size.
Instances For
def DY.Traceful.PreservesReachability [ExecTraceTypes] {a : Type} (config : ReachabilityConfig) (f : Traceful a) (pre : ExecTrace → Prop) (post : a → ExecTrace → Prop) :
Equations
- DY.Traceful.PreservesReachability config f pre post = ∀ (tr : DY.ExecTrace), DY.Trace.Reachable config tr → pre tr → DY.Traceful.PreservesReachabilityFrom config f post tr
Instances For
theorem DY.Traceful.PreservesReachabilityFrom_bind [ExecTraceTypes] {a b : Type} (config : ReachabilityConfig) (x : Traceful a) (f : a → Traceful b) (postF : b → ExecTrace → Prop) (preX : ExecTrace → Prop) (postX : a → ExecTrace → Prop) (tr : ExecTrace) (h_x : PreservesReachability config x preX postX) (h_tr_reachable : Trace.Reachable config tr) (h_pre_x : preX tr) (h_f :
∀ (x' : a) (trMid : ExecTrace),
postX x' trMid → Trace.Reachable config trMid → tr ≤ trMid → PreservesReachabilityFrom config (f x') postF trMid) :
PreservesReachabilityFrom config (x >>= f) postF tr
theorem DY.Traceful.PreservesReachability_base [ExecTraceTypes] (subConfig config : ReachabilityConfig) [subConfig.Has config] (input : subConfig.Input) :
theorem DY.Traceful.PreservesReachabilityFrom_pure [ExecTraceTypes] {α : Type} (config : ReachabilityConfig) (x : α) (tr : ExecTrace) (post : α → ExecTrace → Prop) :
Trace.Reachable config tr → post x tr → PreservesReachabilityFrom config (pure x) post tr
theorem DY.Traceful.PreservesReachability_to_Reachable [ExecTraceTypes] {a : Type} {config : ReachabilityConfig} {f : Traceful a} {pre : ExecTrace → Prop} {post : a → ExecTrace → Prop} (h : PreservesReachability config f pre post) :