def item_open_sound

minebender-game@1.0.0.0 · proof_solver.bend:329

import minebender-game@1.0.0.0/proof_solver.bend as ProofSolver
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/solver.bend as S
import minebender-game@1.0.0.0/proof_base.bend as P
import minebender-game@1.0.0.0/proof_cells.bend as PS
import minebender-game@1.0.0.0/proof_sums.bend as PU

329def item_open_sound(+w: Nat, +h: Nat, +part: T.Grid(Maybe<&2, Bool>), +layout: T.Grid(Bool),
330  +comp: {completes(w, h, part, layout) == True{} : Bool}, +p: T.Pos, +s: T.Seen, +ns: List<&2, T.Pos>,
331  ok: {S.item_ok(s, p, ns, layout) == True{} : Bool},
332  +on: {PS.allp(~PS.WH, ~PS.onb, PS.WH{w, h}, ns) == True{} : Bool}) ->
333  {S.item_open(s, part, ns) == True{} : Bool}:
334  match s:
335    case T.Shown{k}:
336      +c = B.count_mines(layout, ns)
337      +ck = P.eq_sound(c, k, P.and_true_r(Bool.not(B.mine(layout, p)), Nat.is_eq(c, k), ok))
338      %ck : {S.between(S.true_among(part, ns), S.none_among(part, ns), _) == True{} : Bool}
339      %Equal.sym(Nat, S.true_among(part, ns), PU.csum(~Maybe<&2, Bool>, ~tf, None{}, part, ns), true_among_sum(part, ns)) :
340        {S.between(_, S.none_among(part, ns), c) == True{} : Bool}
341      %Equal.sym(Nat, S.none_among(part, ns), PU.csum(~Maybe<&2, Bool>, ~nf, None{}, part, ns), none_among_sum(part, ns)) :
342        {S.between(PU.csum(~Maybe<&2, Bool>, ~tf, None{}, part, ns), _, c) == True{} : Bool}
343      %Equal.sym(Nat, c, PU.csum(~Bool, ~one, False{}, layout, ns), count_sum(layout, ns)) :
344        {S.between(PU.csum(~Maybe<&2, Bool>, ~tf, None{}, part, ns), PU.csum(~Maybe<&2, Bool>, ~nf, None{}, part, ns), _)
345          == True{} : Bool}
346      %Equal.sym(Bool, Nat.is_le(PU.csum(~Maybe<&2, Bool>, ~tf, None{}, part, ns), PU.csum(~Bool, ~one, False{}, layout, ns)),
347        True{}, among_lo(w, h, part, layout, comp, ns, on)) :
348        {Bool.and(_, Nat.is_le(PU.csum(~Bool, ~one, False{}, layout, ns),
349          Nat.add(PU.csum(~Maybe<&2, Bool>, ~tf, None{}, part, ns), PU.csum(~Maybe<&2, Bool>, ~nf, None{}, part, ns)))) == True{} : Bool}
350      among_hi(w, h, part, layout, comp, ns, on)
351    case T.Hidden{}:
352      {==}
353    case T.Boom{}:
354      {==}

Uses (35)

Used by (1)