def agrees_pick

minebender-game@1.0.0.0 · proof_laws.bend:198

import minebender-game@1.0.0.0/proof_laws.bend as ProofLaws
import Base
import minebender-game@1.0.0.0/types.bend as T
import minebender-game@1.0.0.0/board.bend as B
import minebender-game@1.0.0.0/game.bend as G
import minebender-game@1.0.0.0/LAWS.bend as L
import minebender-game@1.0.0.0/proof_base.bend as P
import minebender-game@1.0.0.0/proof_copy.bend as PC

198def agrees_pick(+w: Nat, +h: Nat, +layout: T.Grid(Bool), +p: T.Pos, +c: Bool, +m: Bool,
199  me: {B.mine(layout, p) == m : Bool}) ->
200  {L.agrees(w, h, layout, p, G.seen_pick(c, m, w, h, layout, p)) == True{} : Bool}:
201  match c m:
202    case False{} _:
203      {==}
204    case True{} True{}:
205      %PC.mine_eq(layout, p) : {_ == True{} : Bool}
206      me
207    case True{} False{}:
208      %PC.mine_eq(layout, p) :
209        {Bool.and(Bool.not(_), Nat.is_eq(L.adj_mines(w, h, layout, p), B.adj_mines(w, h, layout, p))) == True{} : Bool}
210      %Equal.sym(Bool, B.mine(layout, p), False{}, me) :
211        {Bool.and(Bool.not(_), Nat.is_eq(L.adj_mines(w, h, layout, p), B.adj_mines(w, h, layout, p))) == True{} : Bool}
212      %PC.adj_mines_eq(w, h, layout, p) :
213        {Bool.and(True{}, Nat.is_eq(_, B.adj_mines(w, h, layout, p))) == True{} : Bool}
214      P.eq_refl(B.adj_mines(w, h, layout, p))

Uses (16)

Used by (1)