def loop_some.found

minebender-game@1.0.0.0 · proof_solver.bend:2236

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_grid.bend as PG

2236def loop_some.found(+c0: T.Pos, +t: List<&2, T.Pos>, +found: List<&2, T.Grid(Bool)>, +todo: S.Plan,
2237  +part: T.Grid(Maybe<&2, Bool>), +ctx: S.Ctx, +c: T.Pos,
2238  r: Or({c0 == c : T.Pos} & {S.search(c0, todo, part, ctx) == None{} : Maybe<&2, T.Grid(Bool)>},
2239    Exists(T.Grid(Bool), l => {S.search(c0, todo, part, ctx) == Some{l} : Maybe<&2, T.Grid(Bool)>} &
2240      {S.loop(t, l <> found, todo, part, ctx) == Some{c} : Maybe<&2, T.Pos>})),
2241  ih: @l: T.Grid(Bool) -> {S.loop(t, l <> found, todo, part, ctx) == Some{c} : Maybe<&2, T.Pos>} -> LoopSome(t, todo, part, ctx, c)) ->
2242  LoopSome(c0 <> t, todo, part, ctx, c):
2243  match r:
2244    case Inl{pr}:
2245      match pr:
2246        case (cc, sn):
2247          %cc : {Bool.or(B.same(c0, _), B.contains(t, _)) == True{} : Bool} &
2248            {S.search(_, todo, part, ctx) == None{} : Maybe<&2, T.Grid(Bool)>}
2249          (or_l(B.same(c0, c0), B.contains(t, c0), PG.same_refl(c0)), sn)
2250    case Inr{ex}:
2251      match ex:
2252        case (l, pr):
2253          match pr:
2254            case (sl, lp):
2255              loop_some.lift(c0, t, todo, part, ctx, c, ih(l, lp))

Uses (21)

Used by (1)