def flood_work.take
minebender-game@1.0.0.0 · proof_flood.bend:349
import minebender-game@1.0.0.0/proof_flood.bend as ProofFlood
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/proof_grid.bend as PG
349def flood_work.take(+m: Nat, +c: T.Pos, +wk: List<&2, G.Work>, +rest: List<&2, G.Work>, +w: Nat, +h: Nat,
350 +layout: T.Grid(Bool), +shown: T.Grid(Bool), +q: T.Pos,
351 +sh: {B.shaped(Bool, w, h, shown) == True{} : Bool},
352 he: {G.unrevealed(w, h, shown, c) == True{} : Bool},
353 keep: {wcontains(rest, q) == True{} : Bool} -> {wcontains(wk, q) == True{} : Bool},
354 +b: Bool, be: {B.same(c, q) == b : Bool}, m2: {Bool.or(b, wcontains(rest, q)) == True{} : Bool},
355 ih: {wcontains(wk, q) == True{} : Bool} ->
356 {B.at(Bool, False{}, G.flood(m, wk, G.head_hidden(w, h, B.set_at(Bool, shown, c, True{}), wk), w, h, layout,
357 B.set_at(Bool, shown, c, True{})), q) == True{} : Bool}) ->
358 {B.at(Bool, False{}, G.flood(m, wk, G.head_hidden(w, h, B.set_at(Bool, shown, c, True{}), wk), w, h, layout,
359 B.set_at(Bool, shown, c, True{})), q) == True{} : Bool}:
360 match b:
361 case True{}:
362 +cq = PG.same_sound(c, q, be)
363 +s2 = B.set_at(Bool, shown, c, True{})
364 flood_mono(m, wk, G.head_hidden(w, h, s2, wk), w, h, layout, s2, q,
365 %cq : {B.at(Bool, False{}, s2, _) == True{} : Bool};
366 at_set_on(w, h, shown, c, sh, unrev_on(w, h, shown, c, he)))
367 case False{}:
368 ih(keep(m2))