def explode_fact.go

minebender-game@1.0.0.0 · proof_inv.bend:179

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/proof_grid.bend as PG
import minebender-game@1.0.0.0/proof_lists.bend as PL
import minebender-game@1.0.0.0/proof_flood.bend as PF

179def explode_fact.go(+w: Nat, +h: Nat, +layout: T.Grid(Bool), +shown: T.Grid(Bool), +p: T.Pos,
180  mp: {B.mine(layout, p) == True{} : Bool}, +cl: {closed(w, h, layout, shown) == True{} : Bool},
181  +q: T.Pos, on: {B.on_board(w, h, q) == True{} : Bool},
182  after: {B.at(Bool, False{}, B.set_at(Bool, shown, p, True{}), q) == True{} : Bool},
183  +z: {B.zero(w, h, layout, q) == True{} : Bool}, +r: T.Pos,
184  +rm: {B.contains(B.neighbours(w, h, q), r) == True{} : Bool},
185  +b: Bool, be: {B.same(p, q) == b : Bool}) ->
186  {B.at(Bool, False{}, B.set_at(Bool, shown, p, True{}), r) == True{} : Bool}:
187  match b:
188    case True{}:
189      PF.both_absurd({B.at(Bool, False{}, B.set_at(Bool, shown, p, True{}), r) == True{} : Bool},
190        B.mine(layout, q), zero_not_mine(w, h, layout, q, z),
191        %PG.same_sound(p, q, be) : {B.mine(layout, _) == True{} : Bool}; mp)
192    case False{}:
193      PF.at_set_mono(shown, p, r,
194        closed_use(w, h, layout, shown, cl, q, on,
195          %PL.at_set_ne(Bool, shown, p, q, True{}, False{}, be) : {_ == True{} : Bool}; after, z, r, rm))

Uses (19)

Used by (1)