def nsm_flood.cell
minebender-game@1.0.0.0 · proof_inv.bend:358
import minebender-game@1.0.0.0/proof_inv.bend as ProofInv
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_flood.bend as PF
358def nsm_flood.cell(+n: Nat, +work: List<&2, G.Work>, +hd: Bool, +w: Nat, +h: Nat, +layout: T.Grid(Bool),
359 +shown: T.Grid(Bool), +p0: T.Pos, +safe: {L.mine(layout, p0) == False{} : Bool},
360 +ok: {PF.works_ok(work, w, h, layout, p0) == True{} : Bool},
361 +ns: {nsm(w, h, layout, shown) == True{} : Bool}, +q: T.Pos, +on: {B.on_board(w, h, q) == True{} : Bool},
362 +b: Bool, +be: {Bool.and(B.at(Bool, False{}, G.flood(n, work, hd, w, h, layout, shown), q), B.mine(layout, q)) == b : Bool}) ->
363 {nsm_f(LS{layout, G.flood(n, work, hd, w, h, layout, shown)}, q) == True{} : Bool}:
364 match b:
365 case False{}:
366 +F = G.flood(n, work, hd, w, h, layout, shown)
367 %Equal.sym(Bool, Bool.and(B.at(Bool, False{}, F, q), B.mine(layout, q)), False{}, be) :
368 {Bool.not(_) == True{} : Bool}
369 {==}
370 case True{}:
371 +F = G.flood(n, work, hd, w, h, layout, shown)
372 +fq = P.and_true_l(B.at(Bool, False{}, F, q), B.mine(layout, q), be)
373 +mq = P.and_true_r(B.at(Bool, False{}, F, q), B.mine(layout, q), be)
374 nsm_flood.new(n, work, hd, w, h, layout, shown, p0, safe, ok, q, fq, mq,
375 nsm_use(w, h, layout, shown, ns, q, on, mq))