Instances For
Equations
- AP.Alt₁.Board.ofAlt s = { squares := Set.univ \ AP.Alt₁.Point.ofAlt '' s.taken.toSet, A := AP.Alt₁.Point.ofAlt s.aPos }
Instances For
Equations
- AP.Alt₁.State.ofAlt s act hist = { board := AP.Alt₁.Board.ofAlt s, history := hist, act := act }
Instances For
Equations
- AP.Alt₁.ASeekCnd pw r s m = r s (AP.Alt₁.applyAMove s m.m)
Instances For
Equations
- AP.Alt₁.DSeekCnd r s m = r s (AP.Alt₁.applyDMove s m.m)
Instances For
Equations
- AP.Alt₁.aSeek pw r = choose? fun (a : AP.Alt₁.A pw) => ∀ (s : AP.Alt₁.State) (h₁ : s.act) (h₂ : AP.Alt₁.AHasValidMove pw s.board), (∃ (m : AP.Alt₁.ValidAMove pw s.board), AP.Alt₁.ASeekCnd pw r s m) → AP.Alt₁.ASeekCnd pw r s (a.f s h₁ h₂)
Instances For
Equations
- AP.Alt₁.dSeek r = choose? fun (d : AP.Alt₁.D) => ∀ (s : AP.Alt₁.State) (h₁ : s.act), (∃ (m : AP.Alt₁.ValidDMove s.board), AP.Alt₁.DSeekCnd r s m) → AP.Alt₁.DSeekCnd r s (d.f s h₁)
Instances For
Equations
- AP.Alt₁.aOptimal pw = AP.Alt₁.aSeek pw fun (x s' : AP.Alt₁.State) => s'.aHws pw
Instances For
Equations
- AP.Alt₁.dOptimal pw = AP.Alt₁.dSeek fun (s s' : AP.Alt₁.State) => s'.dHws pw ∧ s'.dwn pw < s.dwn pw