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))