def gen_first.row

minebender-game@1.0.0.0 · proof_gen.bend:240

import minebender-game@1.0.0.0/proof_gen.bend as ProofGen
import Base
import minebender-game@1.0.0.0/types.bend as T
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

240def gen_first.row(+z: G.Zone, +fx: Nat, +fy: Nat, +w: Nat, +h: Nat, +st: G.GenState,
241  s: {G.gen.out(z, T.Pos{fx, fy}) == True{} : Bool}, +b: Bool,
242  e: {Nat.is_lt(fy, h) == b : Bool}) ->
243  {L.mine(G.gen.rows(z, w, List.range(h), st), T.Pos{fx, fy}) == False{} : Bool}:
244  match b:
245    case True{}:
246      gen_first.found(z, fx, fy, w, G.gen.rows(z, w, List.range(h), st), s,
247        gen_rows_get(z, w, List.range(h), fy, fy, st, P.range_get(h, fy, e)))
248    case False{}:
249      %Equal.sym(Maybe<&2, List<&2, Bool>>,
250        List.get(&2, List<&2, Bool>, G.gen.rows(z, w, List.range(h), st), fy), None{},
251        gen_rows_out(z, w, List.range(h), fy, st, P.range_get_out(h, fy, e))) :
252        {Maybe.default(&2, Bool, List.get(&2, Bool,
253          Maybe.default(&2, List<&2, Bool>, _, Nil{}), fx), False{}) == False{} : Bool}
254      {==}

Uses (20)

Used by (2)