Documentation

Projects.AP.Defense.Basic

@[simp]
theorem AP.Defense.cnd_empty :
.cnd = fun (x : State) => True
@[simp]
theorem AP.Defense.f_empty :
.f = fun (x : State) => none
theorem AP.Defense.valid_tr {dse : Defense} [H : dse.WF] {s : State} [DState s] {p : PointZ} :
dse.f s = some psys.validTr s p
@[simp]
instance AP.Defense.instWFStOfWF {dse : Defense} {d : DStrat} [H : dse.WF] [Hd : d.WF] :
(dse.st d).WF
theorem AP.Defense.st_comm {dse₁ dse₂ : Defense} {d : DStrat} (h : ∀ {s : State} {p₁ p₂ : PointZ}, dse₁.f s = some p₁dse₂.f s = some p₂p₁ = p₂) :
dse₁.st (dse₂.st d) = dse₂.st (dse₁.st d)
theorem AP.Defense.simulate_st_comm {dse₁ dse₂ : Defense} {s₀ : State} {n : } {a : AStrat} {d : DStrat} [hs₀ : sys.WF s₀] [Ha : a.WF] [Hd : d.WF] [H₁ : dse₁.WF] [H₂ : dse₂.WF] (h : ∀ {s : State}, sys.Reachable s₀ s∀ {p₁ p₂ : PointZ}, dse₁.f s = some p₁dse₂.f s = some p₂p₁ = p₂) :
sys.simulate { a := a, d := dse₁.st (dse₂.st d) }.f s₀ n = sys.simulate { a := a, d := dse₂.st (dse₁.st d) }.f s₀ n
@[simp]
theorem AP.Defense.sym_one {dse : Defense} :
dse.sym 1 = dse
@[simp]
theorem AP.Defense.sym_sym {dse : Defense} {sym₁ sym₂ : sys.Symmetry} :
(dse.sym sym₁).sym sym₂ = dse.sym (sym₂ * sym₁)
@[simp]
theorem AP.Defense.ps_sym {dse : Defense} {sym : sys.Symmetry} :
(dse.sym sym).ps = sym.ft '' dse.ps
theorem AP.Defense.wf_sym_of_basicSym {dse : Defense} {sym : sys.Symmetry} [H₁ : dse.WF] [H₂ : BasicSym sym] :
(dse.sym sym).WF
instance AP.Defense.instWFSymOfBasicSym {dse : Defense} {sym : sys.Symmetry} [H₁ : dse.WF] [H₂ : BasicSym sym] :
(dse.sym sym).WF
@[simp]
theorem AP.Defense.wf_sym_iff_of_basicSym {dse : Defense} {sym : sys.Symmetry} [H₂ : BasicSym sym] :
(dse.sym sym).WF dse.WF
@[simp]
theorem AP.Defense.merge_empty_left {dse : Defense} :
.merge dse = dse
@[simp]
@[simp]
theorem AP.Defense.ofList_cons {d : Defense} {ds : List Defense} :
ofList (d :: ds) = d.merge (ofList ds)
@[simp]
theorem AP.Defense.cnd_merge {dse₁ dse₂ : Defense} :
(dse₁.merge dse₂).cnd = fun (s : State) => dse₁.cnd s dse₂.cnd s
@[simp]
theorem AP.Defense.ps_merge {dse₁ dse₂ : Defense} :
(dse₁.merge dse₂).ps = dse₁.ps dse₂.ps
@[simp]
theorem AP.Defense.f_merge {dse₁ dse₂ : Defense} :
(dse₁.merge dse₂).f = fun (s : State) => dse₁.f s <|> dse₂.f s
@[simp]
theorem AP.Defense.st_merge {dse₁ dse₂ : Defense} :
(dse₁.merge dse₂).st = fun (d : DStrat) => dse₁.st (dse₂.st d)
theorem AP.Defense.st_merge_ext {dse₁ dse₂ : Defense} {d : DStrat} :
(dse₁.merge dse₂).st d = dse₁.st (dse₂.st d)
@[simp]
theorem AP.Defense.validTr_merge_of_wf {dse₁ dse₂ : Defense} [H₁ : dse₁.WF] [H₂ : dse₂.WF] :
(dse₁.merge dse₂).ValidTr
@[simp]
theorem AP.Defense.Compatible.symm {dse₁ dse₂ : Defense} (h : dse₁.Compatible dse₂) :
dse₂.Compatible dse₁
theorem AP.Defense.compatible_merge_left_of {a b c : Defense} (h₁ : a.Compatible c) (h₂ : b.Compatible c) :
theorem AP.Defense.compatible_merge_right_of {a b c : Defense} (h₁ : a.Compatible b) (h₂ : a.Compatible c) :
theorem AP.Defense.validTr_merge_of {dse₁ dse₂ : Defense} (h₁ : dse₁.ValidTr) (h₂ : dse₂.ValidTr) :
(dse₁.merge dse₂).ValidTr
theorem AP.Defense.validTr_ofList' {ds : List Defense} (H : dds, d.ValidTr) :
theorem AP.Defense.validTr_ofList {ds : List Defense} (H : dds, d.WF) :
@[simp]
theorem AP.Defense.merge_self {d : Defense} :
d.merge d = d
theorem AP.Defense.merge_assoc {a b c : Defense} :
(a.merge b).merge c = a.merge (b.merge c)
@[simp]
theorem AP.Defense.ofList_append {ds₁ ds₂ : List Defense} :
ofList (ds₁ ++ ds₂) = (ofList ds₁).merge (ofList ds₂)
@[simp]
theorem AP.Defense.cnd_ofList {ds : List Defense} {s : State} :
(ofList ds).cnd s dds, d.cnd s
@[simp]
theorem AP.Defense.ps_ofList {ds : List Defense} :
(ofList ds).ps = dds, d.ps
theorem AP.Defense.compatibleList'_of_perm {p : StateProp} {ds₁ ds₂ : List Defense} (h₁ : CompatibleList' p ds₁) (h₂ : ds₁.Perm ds₂) :
theorem AP.Defense.compatibleList_of_perm {ds₁ ds₂ : List Defense} (h₁ : CompatibleList ds₁) (h₂ : ds₁.Perm ds₂) :
theorem AP.Defense.compatibleList'_iff_of_perm {p : StateProp} {ds₁ ds₂ : List Defense} (h : ds₁.Perm ds₂) :
theorem AP.Defense.compatibleList_iff_of_perm {ds₁ ds₂ : List Defense} (h : ds₁.Perm ds₂) :
theorem AP.Defense.of_compatibleList'_cons {p : StateProp} {d : Defense} {ds : List Defense} (h : CompatibleList' p (d :: ds)) :
CompatibleList' (fun (s : State) => d.cnd s p s) ds
theorem AP.Defense.of_f_ofList_eq_some {ds : List Defense} {s : State} {p : PointZ} (h : (ofList ds).f s = some p) :
dds, d.f s = some p
theorem AP.Defense.wf_merge {e₁ e₂ : Defense} [He₁ : e₁.WF] [He₂ : e₂.WF] (h₀ : e₁.Compatible e₂) :
(e₁.merge e₂).WF
theorem AP.Defense.wf_dStrat_of_validTr {dse : Defense} {d : DStrat} [Hd : d.WF] (h : dse.ValidTr) :
(dse.st d).WF
theorem AP.Defense.compatibleList'_append_comm {p : StateProp} {ds₁ ds₂ : List Defense} :
CompatibleList' p (ds₁ ++ ds₂) CompatibleList' p (ds₂ ++ ds₁)
theorem AP.Defense.right_of_compatibleList'_append {p : StateProp} {ds₁ ds₂ : List Defense} (h : CompatibleList' p (ds₁ ++ ds₂)) :
CompatibleList' (fun (s : State) => (∀ dds₁, d.cnd s) p s) ds₂
theorem AP.Defense.left_of_compatibleList'_append {p : StateProp} {ds₁ ds₂ : List Defense} (h : CompatibleList' p (ds₁ ++ ds₂)) :
CompatibleList' (fun (s : State) => (∀ dds₂, d.cnd s) p s) ds₁
theorem AP.Defense.wf'_of_imp {d : Defense} {p₁ p₂ : StateProp} (h₁ : WF' p₁ d) (h₂ : ∀ (s : State), p₂ sp₁ s) :
WF' p₂ d
theorem AP.Defense.simulate_st_comm' {dse₁ dse₂ : Defense} {s₀ : State} {n : } {a : AStrat} {d : DStrat} [hs₀ : sys.WF s₀] [Ha : a.WF] [Hd : d.WF] (hv₁ : dse₁.ValidTr) (hv₂ : dse₂.ValidTr) (h : ∀ (s : State), sys.Reachable s₀ s∀ {p₁ p₂ : PointZ}, dse₁.f s = some p₁dse₂.f s = some p₂p₁ = p₂) :
sys.simulate { a := a, d := dse₁.st (dse₂.st d) }.f s₀ n = sys.simulate { a := a, d := dse₂.st (dse₁.st d) }.f s₀ n
theorem AP.Defense.wf_ofList {ds : List Defense} (H : dds, d.WF) (h₀ : CompatibleList ds) :
(ofList ds).WF
theorem AP.Defense.compatible'_of_compatible {d₁ d₂ : Defense} {p : StateProp} (h : d₁.Compatible d₂) :
Compatible' p d₁ d₂
theorem AP.Defense.compatible'_of_compatibleList' {p : StateProp} {ds : List Defense} {d₁ d₂ : Defense} (h : CompatibleList' p ds) (h₁ : d₁ ds) (h₂ : d₂ ds) :
Compatible' (fun (s : State) => (∀ dds, d.cnd s) p s) d₁ d₂
theorem AP.Defense.compatible'_of_compatibleList {ds : List Defense} {d₁ d₂ : Defense} (h : CompatibleList ds) (h₁ : d₁ ds) (h₂ : d₂ ds) :
Compatible' (fun (s : State) => dds, d.cnd s) d₁ d₂
theorem AP.Defense.compatibleList_iff_getElem {ds : List Defense} :
CompatibleList ds ∀ (i j : ) (h₁ : i < j) (h₂ : j < ds.length), Compatible' (fun (s : State) => dds, d.cnd s) ds[i] ds[j]
theorem AP.Defense.compatibleList_iff_getElem! {ds : List Defense} :
CompatibleList ds ∀ (i j : ), i < jj < ds.lengthCompatible' (fun (s : State) => dds, d.cnd s) ds[i]! ds[j]!
theorem AP.Defense.f_st_eq_of_f_eq_none {dse : Defense} {s : State} {d : DStrat} (h : dse.f s = none) :
(dse.st d).f s = d.f s
theorem AP.Defense.f_st_eq_of_f_eq_some {dse : Defense} {s : State} {d : DStrat} {p : PointZ} (h : dse.f s = some p) :
(dse.st d).f s = p
@[simp]
theorem AP.Defense.f_ofList_eq_none_iff {ds : List Defense} {s : State} :
(ofList ds).f s = none dds, d.f s = none