Equations
- s.aMoves = List.filter (fun (b : PointZ) => decide (AP.sys.validTr s b)) (Point.nbhd s.aPos ↑s.pw)
Instances For
Equations
- s.chooseAMove = (List.filter (fun (b : PointZ) => decide (AP.sys.validTr s b)) (Point.nbhd s.aPos ↑s.pw)).head?.getD 0
Instances For
Equations
- s.chooseMove = if s.aTurn = true then s.chooseAMove else s.chooseDMove
Instances For
Equations
- s.decideAState = (s.decideWF && s.aTurn)
Instances For
Instances For
Equations
- AP.AStrat.mk f = { f := AP.mkStratFn f }
Instances For
Equations
- AP.DStrat.mk f = { f := AP.mkStratFn f }
Instances For
@[instance_reducible]
Equations
- AP.instInhabitedState = { default := AP.initState 0 0 }
theorem
AP.State.validTr_chooseDMove
{s : State}
(ht : s.aTurn = false)
:
sys.validTr s s.chooseDMove
@[simp]
@[instance_reducible]
Equations
@[simp]
theorem
AP.AState.validTr_chooseAMove
{s : State}
[hs : AState s]
(h : sys.hasTr s)
:
sys.validTr s s.chooseAMove
@[simp]
@[simp]
@[simp]
@[instance_reducible]
Equations
- AP.instInhabitedAStrat = { default := { f := AP.State.chooseAMove } }
@[instance_reducible]
Equations
- AP.instInhabitedDStrat = { default := { f := AP.State.chooseDMove } }
@[simp]
@[instance_reducible]
Equations
- AP.instDecidableAState = match h : s.decideAState with | true => isTrue ⋯ | false => isFalse ⋯
@[instance_reducible]
Equations
- AP.instDecidableDState = match h : s.decideDState with | true => isTrue ⋯ | false => isFalse ⋯
@[simp]
@[simp]
theorem
AP.State.simulate_congr_rel_full'
{st st' : Strat}
{r : State → State → Prop}
{s s' s₁ : State}
{n : ℕ}
[hst : st.WF]
[hst' : st'.WF]
[hs : sys.WF s]
[hs' : sys.WF s']
(h₁ : sys.simulate st.f s n = (s₁, 0))
(ht : s.aTurn = s'.aTurn)
(h₂ : r s s')
(h₃ :
∀ (sa sa' sd : State) [AState sa] [AState sa'] [DState sd],
sys.tr sa (st.a.f sa) = some sd → r sa sa' → ∃ (sd' : State), sys.tr sa' (st'.a.f sa') = some sd' ∧ r sd sd')
(h₄ :
∀ (sd sd' sa : State) [DState sd] [DState sd'] [AState sa],
sys.tr sd (st.d.f sd) = some sa → r sd sd' → ∃ (sa' : State), sys.tr sd' (st'.d.f sd') = some sa' ∧ r sa sa')
:
theorem
AP.State.simulate_congr_rel_full
{st st' : Strat}
{r : State → State → Prop}
{s s' : State}
{n : ℕ}
[hst : st.WF]
[hst' : st'.WF]
[hs : sys.WF s]
[hs' : sys.WF s']
(h₁ : (sys.simulate st.f s n).2 = 0)
(ht : s.aTurn = s'.aTurn)
(h₂ : r s s')
(h₃ :
∀ (sa sa' sd : State) [AState sa] [AState sa'] [DState sd],
sys.tr sa (st.a.f sa) = some sd → r sa sa' → ∃ (sd' : State), sys.tr sa' (st'.a.f sa') = some sd' ∧ r sd sd')
(h₄ :
∀ (sd sd' sa : State) [DState sd] [DState sd'] [AState sa],
sys.tr sd (st.d.f sd) = some sa → r sd sd' → ∃ (sa' : State), sys.tr sd' (st'.d.f sd') = some sa' ∧ r sa sa')
:
@[simp]
@[simp]