Documentation

Projects.AP.Alts.Alt1.Equiv

@[simp]
theorem AP.Alt₁.Point.x_toAlt {p : Point} :
p.toAlt.x = p.x
@[simp]
theorem AP.Alt₁.Point.y_toAlt {p : Point} :
p.toAlt.y = p.y
@[simp]
theorem AP.Alt₁.Point.toAlt_mk {x y : } :
{ x := x, y := y }.toAlt = { x := x, y := y }
@[simp]
theorem AP.Alt₁.Point.x_ofAlt {p : PointZ} :
(ofAlt p).x = p.x
@[simp]
theorem AP.Alt₁.Point.y_ofAlt {p : PointZ} :
(ofAlt p).y = p.y
@[simp]
theorem AP.Alt₁.Point.ofAlt_mk {x y : } :
ofAlt { x := x, y := y } = { x := x, y := y }
@[simp]
theorem AP.Alt₁.ofAlt_dist {p₁ p₂ : PointZ} :
dist (Point.ofAlt p₁) (Point.ofAlt p₂) = (Point.dist p₁ p₂).toNat
theorem AP.Alt₁.dist_eq_alt {p₁ p₂ : Point} :
dist p₁ p₂ = (Point.dist p₁.toAlt p₂.toAlt).toNat
@[simp]
theorem AP.Alt₁.Game.act_iff {pw : } {g : Game pw} :
g.act g.s.act
@[simp]
theorem AP.Alt₁.Board.pw_toAlt {b : Board} {pw : } {aTurn : Bool} {hist : List PointZ} :
(b.toAlt pw aTurn hist).pw = pw
@[simp]
theorem AP.Alt₁.Board.taken_toAlt {b : Board} {pw : } {aTurn : Bool} {hist : List PointZ} :
(b.toAlt pw aTurn hist).taken = Set'.ofSet ((fun (x : Point) => x.toAlt) '' (Set.univ \ b.squares))
@[simp]
theorem AP.Alt₁.Board.aPos_toAlt {b : Board} {pw : } {aTurn : Bool} {hist : List PointZ} :
(b.toAlt pw aTurn hist).aPos = b.A.toAlt
@[simp]
theorem AP.Alt₁.Board.aTurn_toAlt {b : Board} {pw : } {aTurn : Bool} {hist : List PointZ} :
(b.toAlt pw aTurn hist).aTurn = aTurn
@[simp]
theorem AP.Alt₁.Board.hist_toAlt {b : Board} {pw : } {aTurn : Bool} {hist : List PointZ} :
(b.toAlt pw aTurn hist).hist = hist
@[simp]
theorem AP.Alt₁.State.pw_toAlt {s : State} {pw : } {hist : List PointZ} :
(s.toAlt pw hist).pw = pw
@[simp]
theorem AP.Alt₁.State.taken_toAlt {s : State} {pw : } {hist : List PointZ} :
(s.toAlt pw hist).taken = Set'.ofSet ((fun (x : Point) => x.toAlt) '' (Set.univ \ s.board.squares))
@[simp]
theorem AP.Alt₁.State.aPos_toAlt {s : State} {pw : } {hist : List PointZ} :
(s.toAlt pw hist).aPos = s.board.A.toAlt
@[simp]
theorem AP.Alt₁.State.aTurn_toAlt {s : State} {pw : } {hist : List PointZ} :
(s.toAlt pw hist).aTurn = s.aTurn
@[simp]
theorem AP.Alt₁.State.hist_toAlt {s : State} {pw : } {hist : List PointZ} :
(s.toAlt pw hist).hist = hist
@[simp]
theorem AP.Alt₁.State.board_ofAlt {s : AP.State} {act : Prop} {hist : List Board} :
(ofAlt s act hist).board = Board.ofAlt s
@[simp]
theorem AP.Alt₁.State.history_ofAlt {s : AP.State} {act : Prop} {hist : List Board} :
(ofAlt s act hist).history = hist
@[simp]
theorem AP.Alt₁.State.act_ofAlt {s : AP.State} {act : Prop} {hist : List Board} :
(ofAlt s act hist).act act
@[simp]
theorem AP.Alt₁.State.aTurn_mk {b : Board} {hist : List Board} {act : Prop} :
{ board := b, history := hist, act := act }.aTurn = decide (Odd hist.length)
@[simp]
theorem AP.Alt₁.toAlt_state₀ {pw : } {hist : List PointZ} :
state₀.toAlt pw hist = (AP.initState pw 0).setHist hist
@[simp]
theorem AP.Alt₁.State.toAlt_ofAlt {s : AP.State} {act : Prop} {pw : } {hist₁ : List Board} {hist₂ : List PointZ} (h : Odd hist₁.length s.aTurn = true) :
(ofAlt s act hist₁).toAlt pw hist₂ = (s.setPw pw).setHist hist₂
@[simp]
theorem AP.Alt₁.State.board_setHist {s : State} {hist : List Board} :
(s.setHist hist).board = s.board
@[simp]
theorem AP.Alt₁.State.history_setHist {s : State} {hist : List Board} :
(s.setHist hist).history = hist
@[simp]
theorem AP.Alt₁.State.act_setHist {s : State} {hist : List Board} :
(s.setHist hist).act = s.act
theorem AP.Alt₁.Board.ofAlt_toAlt {s : State} {pw : } {hist : List PointZ} (h₁ : s.FinSq) :
ofAlt (s.toAlt pw hist) = s.board
theorem AP.Alt₁.State.ofAlt_toAlt {s : State} {pw : } {hist₁ : List PointZ} {hist₂ : List Board} (h₁ : s.FinSq) :
ofAlt (s.toAlt pw hist₁) s.act hist₂ = s.setHist hist₂
@[simp]
@[simp]
@[simp]
instance AP.Alt₁.A.nonempty {pw : } :
Nonempty (A pw)
@[instance_reducible]
noncomputable instance AP.Alt₁.instInhabitedA {pw : } :
Equations
@[instance_reducible]
noncomputable instance AP.Alt₁.instInhabitedD :
Equations
@[simp]
theorem AP.Alt₁.a_board₀ :
board₀.A = { x := 0, y := 0 }
@[simp]
@[simp]
theorem AP.Alt₁.Game.play_zero {pw : } {g : Game pw} :
g.play 0 = g
@[simp]
theorem AP.Alt₁.Game.s_initGame {pw : } {a : A pw} {d : D} {s : State} :
(initGame a d s).s = s
@[simp]
theorem AP.Alt₁.Game.act_initGame {pw : } {a : A pw} {d : D} {s : State} :
(initGame a d s).s.act = s.act
theorem AP.Alt₁.State.dwn_eq {pw : } {s : State} :
s.dwn pw = (s.toAltH pw).dwn
@[simp]
theorem AP.Alt₁.Game.play_succ {pw : } {g : Game pw} {n : } :
g.play (n + 1) = (g.play n).playMove
theorem AP.Alt₁.Game.play_succ' {pw : } {g : Game pw} {n : } :
g.play (n + 1) = g.playMove.play n
@[simp]
theorem AP.Alt₁.Game.state_setState {pw : } {g : Game pw} {s : State} :
(g.setState s).s = s
@[simp]
theorem AP.Alt₁.Game.act_setState {pw : } {g : Game pw} {s : State} :
(g.setState s).s.act s.act
@[simp]
@[simp]
theorem AP.Alt₁.Game.act_playDMoveAt {pw : } {g : Game pw} {h : g.s.act} :
theorem AP.Alt₁.Game.playMove_eq {pw : } {g : Game pw} :
g.playMove = if hs : g.s.act then playAMoveAt (playDMoveAt g hs) else g
theorem AP.Alt₁.Game.play_eq_of_not_act {pw : } {g : Game pw} {n : } (h : ¬g.s.act) :
g.play n = g
@[simp]
theorem AP.Alt₁.Game.act_finish {pw : } {g : Game pw} :
@[simp]
@[simp]
theorem AP.Alt₁.Game.play_finish {pw : } {g : Game pw} {n : } :
@[simp]
theorem AP.Alt₁.a_playDMoveAt {pw : } {g : Game pw} {h : g.s.act} :
(playDMoveAt g h).a = g.a
@[simp]
theorem AP.Alt₁.a_initGame {pw : } {a : A pw} {d : D} {s : State} :
(initGame a d s).a = a
@[simp]
theorem AP.Alt₁.d_initGame {pw : } {a : A pw} {d : D} {s : State} :
(initGame a d s).d = d
@[simp]
theorem AP.Alt₁.aTurn_playDMoveAt {pw : } {g : Game pw} {h : g.s.act} :
@[simp]
@[simp]
@[simp]
theorem AP.Alt₁.State.aTurn_setHist {s : State} {hist : List Board} :
(s.setHist hist).aTurn = decide (Odd hist.length)
theorem AP.Alt₁.State.toAltH_setHist {pw : } {s : State} {hist : List Board} (ht : s.aTurn = decide (Odd hist.length)) :
(s.setHist hist).toAltH pw = s.toAltH pw
theorem AP.Alt₁.State.wf_iff {pw : } {s : State} :
WF pw s ∃ (a : A pw) (d : D) (n : ) (g : Game pw), (initGame a d state₀).play n = g (g.s = s ∃ (h : g.s.act), (playDMoveAt g h).s = s)
@[simp]
theorem AP.Alt₁.Game.setState_initGame {pw : } {a : A pw} {d : D} {s s' : State} :
(initGame a d s).setState s' = initGame a d s'
@[simp]
theorem AP.Alt₁.Game.s_finish {pw : } {g : Game pw} :
theorem AP.Alt₁.Game.act_play_initGame_of_not_aTurn {pw : } {a : A pw} {d : D} {n : } {g : Game pw} {s : State} (h₁ : s.aTurn = false) (h₂ : s.act) (h₃ : (initGame a d s).play n = g) (h₄ : g.s.aTurn = false) :
g.s.act
@[simp]
theorem AP.Alt₁.Game.s_playAMoveAt'_eq_iff {pw : } {g₁ g₂ : Game pw} {h₁ : g₁.s.act} {h₂ : AHasValidMove pw g₁.s.board} {h₃ : g₂.s.act} {h₄ : AHasValidMove pw g₂.s.board} :
(playAMoveAt' g₁.a g₁ h₁ h₂).s = (playAMoveAt' g₂.a g₂ h₃ h₄).s applyAMove g₁.s (g₁.a.f g₁.s h₁ h₂).m = applyAMove g₂.s (g₂.a.f g₂.s h₃ h₄).m
@[simp]
theorem AP.Alt₁.Game.s_playDMoveAt_eq_iff {pw : } {g₁ g₂ : Game pw} {h₁ : g₁.s.act} {h₂ : g₂.s.act} :
(playDMoveAt g₁ h₁).s = (playDMoveAt g₂ h₂).s applyDMove g₁.s (g₁.d.f g₁.s h₁).m = applyDMove g₂.s (g₂.d.f g₂.s h₂).m
@[simp]
theorem AP.Alt₁.Game.a_finish {pw : } {g : Game pw} :
g.finish.a = g.a
@[simp]
theorem AP.Alt₁.Game.d_finish {pw : } {g : Game pw} :
g.finish.d = g.d
@[simp]
theorem AP.Alt₁.Game.a_setState {pw : } {g : Game pw} {s : State} :
(g.setState s).a = g.a
@[simp]
theorem AP.Alt₁.Game.d_setState {pw : } {g : Game pw} {s : State} :
(g.setState s).d = g.d
@[simp]
theorem AP.Alt₁.Game.a_playAMoveAt' {pw : } {g : Game pw} {a : A pw} {h₁ : g.s.act} {h₂ : AHasValidMove pw g.s.board} :
(playAMoveAt' a g h₁ h₂).a = g.a
@[simp]
theorem AP.Alt₁.Game.d_playAMoveAt' {pw : } {g : Game pw} {a : A pw} {h₁ : g.s.act} {h₂ : AHasValidMove pw g.s.board} :
(playAMoveAt' a g h₁ h₂).d = g.d
@[simp]
theorem AP.Alt₁.Game.a_playAMoveAt {pw : } {g : Game pw} :
@[simp]
theorem AP.Alt₁.Game.d_playAMoveAt {pw : } {g : Game pw} :
@[simp]
theorem AP.Alt₁.Game.a_playDMoveAt {pw : } {g : Game pw} {h : g.s.act} :
(playDMoveAt g h).a = g.a
@[simp]
theorem AP.Alt₁.Game.d_playDMoveAt {pw : } {g : Game pw} {h : g.s.act} :
(playDMoveAt g h).d = g.d
@[simp]
theorem AP.Alt₁.Game.a_playMove {pw : } {g : Game pw} :
@[simp]
theorem AP.Alt₁.Game.d_playMove {pw : } {g : Game pw} :
@[simp]
theorem AP.Alt₁.Game.a_play {pw : } {g : Game pw} {n : } :
(g.play n).a = g.a
@[simp]
theorem AP.Alt₁.Game.d_play {pw : } {g : Game pw} {n : } :
(g.play n).d = g.d
theorem AP.Alt₁.Game.s_playAMoveAt_eq_iff_of {pw : } {g₁ g₂ : Game pw} (h₁ : g₁.s.act g₂.s.act) (h₂ : AHasValidMove pw g₁.s.board AHasValidMove pw g₂.s.board) (h₁✝ : g₁.s.act) (h₂✝ : AHasValidMove pw g₁.s.board) (h₃ : g₂.s.act) (h₄ : AHasValidMove pw g₂.s.board) :
(playAMoveAt g₁).s = (playAMoveAt g₂).s applyAMove g₁.s (g₁.a.f g₁.s h₁✝ h₂✝).m = applyAMove g₂.s (g₂.a.f g₂.s h₃ h₄).m
theorem AP.Alt₁.Game.s_play_initGame_d_set_eq_of_ne {pw : } {a : A pw} {d : D} {s s₁ : State} {dRef : D} {n : } (h : k < n, ((initGame a d s).play k).s s₁) :
((initGame a (d.set s₁ dRef) s).play n).s = ((initGame a d s).play n).s
theorem AP.Alt₁.Game.act_of_act_playMove {pw : } {g : Game pw} (h : g.playMove.s.act) :
g.s.act
theorem AP.Alt₁.Game.act_of_act_play {pw : } {g : Game pw} {n : } (h : (g.play n).s.act) :
g.s.act
@[simp]
theorem AP.Alt₁.Game.length_history_playAMoveAt' {pw : } {g : Game pw} {a : A pw} {h₁ : g.s.act} {h₂ : AHasValidMove pw g.s.board} :
(playAMoveAt' a g h₁ h₂).s.history.length = g.s.history.length + 1
theorem AP.Alt₁.Game.length_history_play_eq_of_act {pw : } {g : Game pw} {n : } (h : (g.play n).act) :
@[simp]
theorem AP.Alt₁.Game.play_add {pw : } {g : Game pw} {n m : } :
g.play (n + m) = (g.play n).play m
theorem AP.Alt₁.Game.s_play_eq_iff_of_act {pw : } {g : Game pw} {n m : } (h : (g.play (max n m)).act) :
(g.play n).s = (g.play m).s n = m
@[simp]
theorem AP.Alt₁.Game.aTurn_playAMoveAt' {pw : } {g : Game pw} {a : A pw} {h₁ : g.s.act} {h₂ : AHasValidMove pw g.s.board} :
(playAMoveAt' a g h₁ h₂).s.aTurn = !g.s.aTurn
theorem AP.Alt₁.Game.aTurn_play_eq_of_act {pw : } {g : Game pw} {n : } (h : (g.play n).act) :
(g.play n).s.aTurn = g.s.aTurn
@[simp]
instance AP.Alt₁.aState_playDMoveAt {pw : } {g : Game pw} {h : g.s.act} [hs : DState pw g.s] :
theorem AP.Alt₁.Game.s_play_initGame_a_set_eq_of_ne {pw : } {a : A pw} {d : D} {s s₁ : State} {aRef : A pw} {n : } (h : k < n, ∀ (h : ((initGame a d s).play k).s.act), (playDMoveAt ((initGame a d s).play k) h).s s₁) :
((initGame (a.set s₁ aRef) d s).play n).s = ((initGame a d s).play n).s
theorem AP.Alt₁.Game.playAMoveAt_eq_of_pos {pw : } {g : Game pw} (h₁ : g.s.act) (h₂ : AHasValidMove pw g.s.board) :
playAMoveAt g = playAMoveAt' g.a g h₁ h₂
theorem AP.Alt₁.Game.s_playAMoveAt_eq_iff_of_act_playAMoveAt {pw : } {g₁ g₂ : Game pw} (h₁ : (playAMoveAt g₁).act) (h₂ : (playAMoveAt g₂).act) :
(playAMoveAt g₁).s = (playAMoveAt g₂).s applyAMove g₁.s (g₁.a.f g₁.s ).m = applyAMove g₂.s (g₂.a.f g₂.s ).m
@[simp]
theorem AP.Alt₁.Game.act_playAMoveAt' {pw : } {g : Game pw} {a : A pw} {h₁ : g.s.act} {h₂ : AHasValidMove pw g.s.board} :
(playAMoveAt' a g h₁ h₂).act g.s.act
theorem AP.Alt₁.Game.finish_eq_of_not_act {pw : } {g : Game pw} (h : ¬g.s.act) :
g.finish = g
@[simp]
theorem AP.Alt₁.AState.aTurn {pw : outParam } {s : State} [hs : AState pw s] :
@[simp]
theorem AP.Alt₁.DState.aTurn {pw : outParam } {s : State} [hs : DState pw s] :
@[simp]
instance AP.Alt₁.wf_playAMoveAt {pw : } {g : Game pw} [hs : AState pw g.s] :
@[simp]
instance AP.Alt₁.Game.wf_playMove {pw : } {g : Game pw} [hs : DState pw g.s] :
theorem AP.Alt₁.dState_playAMoveAt_of_act {pw : } {g : Game pw} [hs : AState pw g.s] (h : (playAMoveAt g).s.act) :
theorem AP.Alt₁.Game.dState_playMove_of_act {pw : } {g : Game pw} [hs : DState pw g.s] (h : g.playMove.act) :
@[simp]
instance AP.Alt₁.Game.wf_play {pw : } {g : Game pw} {n : } [hs : DState pw g.s] :
State.WF pw (g.play n).s
theorem AP.Alt₁.Game.dState_play_of_act {pw : } {g : Game pw} {n : } [hs : DState pw g.s] (h : (g.play n).act) :
DState pw (g.play n).s
theorem AP.Alt₁.not_dHws_of_aHws {pw : } (h : AHws pw) :
theorem AP.Alt₁.not_aHws_of_dHws {pw : } (h : DHws pw) :
@[simp]
theorem AP.Alt₁.State.aTurn_eq_of_DState {pw : } {s : State} [hs : DState pw s] :
theorem AP.Alt₁.Board.getd_toAltH?_eq_toAlt_of {pw : } {t₁ t₂ : Bool} {b₁ b₂ : Board} (h : ∃ (s₁ : AP.State) (s₂ : AP.State), sys.WF s₁ sys.WF s₂ b₁.toAlt pw t₁ s₁.hist = s₁ b₂.toAlt pw t₂ s₂.hist = s₂ s₁ = s₂.setHist s₁.hist) :
∃ (hist : List PointZ), (b₁.toAltH? pw t₁).getd = b₂.toAlt pw t₂ hist
theorem AP.Alt₁.Board.toAlt_eq_setHist {s : State} {pw : } {t : Bool} {hist : List PointZ} (hist₁ : List PointZ) :
s.board.toAlt pw t hist = (s.board.toAlt pw t hist₁).setHist hist
theorem AP.Alt₁.Board.toAlt_eq_setHist_nil {s : State} {pw : } {t : Bool} {hist : List PointZ} :
s.board.toAlt pw t hist = (s.board.toAlt pw t []).setHist hist
theorem AP.Alt₁.State.exi_wf_toAlt_board_iff_exi_hist {pw : } {t : Bool} {s : State} :
(∃ (s₁ : AP.State), sys.WF s₁ s.board.toAlt pw t s₁.hist = s₁) ∃ (hist : List PointZ), sys.WF (s.board.toAlt pw t hist)
theorem AP.Alt₁.State.exi_hist_toAlt_board_of_wfCnd {pw : } {t : Bool} {s : State} (h : WFCnd (s.board.toAlt pw t [])) :
∃ (hist : List PointZ), sys.WF (s.board.toAlt pw t hist)
theorem AP.Alt₁.State.exi_wf_toAlt_board_of_wfCnd {pw : } {t : Bool} {s : State} (h : WFCnd (s.board.toAlt pw t [])) :
∃ (s₁ : AP.State), sys.WF s₁ s.board.toAlt pw t s₁.hist = s₁
theorem AP.Alt₁.State.finite_univ_diff_squares_of_play' {pw : } {a : A pw} {d : D} {n : } {g : Game pw} {s : State} (h₁ : (Set.univ \ s.board.squares).Finite) (h₂ : (initGame a d s).play n = g) :
@[simp]
theorem AP.Alt₁.State.finite_univ_diff_squares_of_play {pw : } {a : A pw} {d : D} {n : } {g : Game pw} (h : (initGame a d state₀).play n = g) :
@[simp]
theorem AP.Alt₁.State.finite_image_univ_diff_squares {s : State} {pw : } [hs : WF pw s] :
((fun (x : Point) => x.toAlt) '' (Set.univ \ s.board.squares)).Finite
@[simp]
theorem AP.Alt₁.State.mem_ofSet_image_univ_diff_squares {s : State} {pw : } {p : PointZ} [hs : WF pw s] :
p Set'.ofSet ((fun (x : Point) => x.toAlt) '' (Set.univ \ s.board.squares)) p (fun (x : Point) => x.toAlt) '' (Set.univ \ s.board.squares)
@[simp]
theorem AP.Alt₁.Game.aTurn_play_iff {pw : } {g : Game pw} {n : } (ha : g.s.act) (ht : g.s.aTurn = false) :
(g.play n).s.aTurn = !decide (g.play n).act
theorem AP.Alt₁.Game.length_hist_play_le_of_le {pw : } {g : Game pw} {k n : } (h : k n) :
theorem AP.Alt₁.Game.length_hist_play_lt_of_lt_and_act {pw : } {g : Game pw} {k n : } (h₁ : k < n) (h₂ : (g.play k).act) :
@[simp]
theorem AP.Alt₁.Game.setState_inj {pw : } {g : Game pw} {s₁ s₂ : State} :
g.setState s₁ = g.setState s₂ s₁ = s₂
@[simp]
theorem AP.Alt₁.A.f_set_of_eq {pw : } {a a₀ : A pw} {s : State} :
(a.set s a₀).f s = a₀.f s
@[simp]
theorem AP.Alt₁.D.f_set_of_eq {d d₀ : D} {s : State} :
(d.set s d₀).f s = d₀.f s
@[simp]
theorem AP.Alt₁.Game.playAMoveAt'_set_of_eq {pw : } {g : Game pw} {a a₀ : A pw} {h₁ : g.s.act} {h₂ : AHasValidMove pw g.s.board} :
playAMoveAt' (a.set g.s a₀) g h₁ h₂ = playAMoveAt' a₀ g h₁ h₂
@[simp]
theorem AP.Alt₁.Game.playAMoveAt_initGame_a_set_of_eq {pw : } {a a₀ : A pw} {d : D} {s : State} :
(playAMoveAt (initGame (a.set s a₀) d s)).s = (playAMoveAt (initGame a₀ d s)).s
@[simp]
theorem AP.Alt₁.Game.playDMoveAt_initGame_d_set_of_eq {pw : } {a : A pw} {d d₀ : D} {s : State} {h : (initGame a (d.set s d₀) s).s.act} :
(playDMoveAt (initGame a (d.set s d₀) s) h).s = (playDMoveAt (initGame a d₀ s) h).s
@[simp]
theorem AP.Alt₁.Game.initGame_self {pw : } {g : Game pw} :
initGame g.a g.d g.s = g
theorem AP.Alt₁.Game.eq_initGame {pw : } {g : Game pw} :
g = initGame g.a g.d g.s
@[simp]
theorem AP.Alt₁.Game.s_playAMoveAt_congr {pw : } {g : Game pw} {d : D} :
@[simp]
theorem AP.Alt₁.Game.s_playDMoveAt_congr {pw : } {g : Game pw} {a : A pw} {h : (initGame a g.d g.s).s.act} :
(playDMoveAt (initGame a g.d g.s) h).s = (playDMoveAt g h).s
theorem AP.Alt₁.Game.act_play_of_le {pw : } {g : Game pw} {n k : } (h₁ : (g.play n).act) (h₂ : k n) :
(g.play k).act
theorem AP.Alt₁.Game.wf_playAMoveAt' {pw : } {g : Game pw} [hs : State.WF pw g.s] (h : g.s.aTurn = true) :
theorem AP.Alt₁.Game.wf_playDMoveAt' {pw : } {g : Game pw} [hs : State.WF pw g.s] {hh : g.s.act} (h : g.s.aTurn = false) :
@[simp]
instance AP.Alt₁.Game.wf_playAMoveAt {pw : } {g : Game pw} [hs : AState pw g.s] :
@[simp]
instance AP.Alt₁.Game.wf_playDMoveAt {pw : } {g : Game pw} [hs : DState pw g.s] {hh : g.s.act} :
theorem AP.Alt₁.dState_play_initGame_of {pw : } {a : A pw} {d : D} {s : State} {n : } [hs : DState pw s] (h : ((initGame a d s).play n).s.act) :
DState pw ((initGame a d s).play n).s
theorem AP.Alt₁.State.invariant_of_wf {pw : } {s : State} {p : StateProp} [hs : WF pw s] (h₁ : p state₀) (h₄ : ∀ ⦃s : State⦄, WF pw sp sp s.finish) (h₂ : ∀ ⦃s : State⦄ ⦃m : AMove⦄, WF pw sAMoveValid pw s.board mp sp (applyAMove s m)) (h₃ : ∀ ⦃s : State⦄ ⦃m : DMove⦄, WF pw sDMoveValid s.board mp sp (applyDMove s m)) :
p s
theorem AP.Alt₁.Board.invariant_of_wf {pw : } {s : State} {p : BoardProp} [hs : State.WF pw s] (h₁ : p board₀) (h₂ : ∀ ⦃b : Board⦄ ⦃m : AMove⦄, AMoveValid pw b mp bp (applyAMoveB b m)) (h₃ : ∀ ⦃b : Board⦄ ⦃m : DMove⦄, DMoveValid b mp bp (applyDMoveB b m)) :
p s.board
@[simp]
theorem AP.Alt₁.dMoveValid_iff {b : Board} {m : DMove} :
DMoveValid b m m = none ∃ (p : Point), m = some p p b.A p b.squares
@[simp]
@[simp]
theorem AP.Alt₁.Game.lt_of_not_act_play {pw : } {g : Game pw} {n k : } (h₁ : (g.play k).s.act) (h₂ : ¬(g.play n).s.act) :
k < n
@[simp]
theorem AP.Alt₁.Game.state_playDMoveAt_ne_self {pw : } {g : Game pw} {h : g.s.act} :
(playDMoveAt g h).s g.s
@[simp]
theorem AP.Alt₁.Game.playDMoveAt_ne_self {pw : } {g : Game pw} {h : g.s.act} :