ProofAssist.assist_early.k: def of minebender-game@1.0.0.0 Import: import minebender-game@1.0.0.0/proof_assist.bend as ProofAssist Lines 308-330 of minebender-game@1.0.0.0/proof_assist.bend: https://jend.leeeet.dev/read.txt?path=minebender-game@1.0.0.0/proof_assist.bend&start_line=308&end_line=330 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/solver.bend as S import minebender-game@1.0.0.0/LAWS.bend as L import minebender-game@1.0.0.0/proof_laws.bend as PW def assist_early.k(+w: Nat, +h: Nat, +layout: T.Grid(Bool), +g: G.Game, +playing: {G.status(g) == T.Playing{} : T.Status}, +q: T.Pos, option: L.ProvablySafe(G.knowledge(g), q), +k: Nat, c: PW.Canon(w, h, layout, g)) -> Exists(T.Pos, p => L.ProvablySafe(G.knowledge(g), p) & ({G.status(G.step(g, T.Assist{k})) == T.Lost{T.AssistTooEarly{p}} : T.Status} & {G.knowledge(G.step(g, T.Assist{k})) == G.knowledge(g) : T.Knowledge})): match c: case (+eg, facts): +s = PW.shown_of(g) +f = PW.flags_of(g) +gp = {G.Game{w, h, layout, s, f, T.Playing{}} : G.Game} %Equal.sym(G.Game, g, G.Game{w, h, layout, s, f, G.status(g)}, eg) : Exists(T.Pos, p => L.ProvablySafe(G.knowledge(_), p) & ({G.status(G.step(_, T.Assist{k})) == T.Lost{T.AssistTooEarly{p}} : T.Status} & {G.knowledge(G.step(_, T.Assist{k})) == G.knowledge(_) : T.Knowledge})) %Equal.sym(T.Status, G.status(g), T.Playing{}, playing) : Exists(T.Pos, p => L.ProvablySafe(G.knowledge(G.Game{w, h, layout, s, f, _}), p) & ({G.status(G.step(G.Game{w, h, layout, s, f, _}, T.Assist{k})) == T.Lost{T.AssistTooEarly{p}} : T.Status} & {G.knowledge(G.step(G.Game{w, h, layout, s, f, _}, T.Assist{k})) == G.knowledge(G.Game{w, h, layout, s, f, _}) : T.Knowledge})) early_pick(w, h, layout, s, f, q, {%playing : L.ProvablySafe(G.knowledge(G.Game{w, h, layout, s, f, _}), q); %eg : L.ProvablySafe(G.knowledge(_), q); option : L.ProvablySafe(G.knowledge(gp), q)}, S.solve(G.knowledge(gp)), {==}, k) Uses (22): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Equal.sym https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Exists https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Pair https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Sigma https://jend.leeeet.dev/definition.txt?path=minebender-game@1.0.0.0/LAWS.bend&name=ProvablySafe https://jend.leeeet.dev/definition.txt?path=minebender-game@1.0.0.0/game.bend&name=Game https://jend.leeeet.dev/definition.txt?path=minebender-game@1.0.0.0/game.bend&name=knowledge https://jend.leeeet.dev/definition.txt?path=minebender-game@1.0.0.0/game.bend&name=status https://jend.leeeet.dev/definition.txt?path=minebender-game@1.0.0.0/game.bend&name=step https://jend.leeeet.dev/definition.txt?path=minebender-game@1.0.0.0/proof_assist.bend&name=early_pick https://jend.leeeet.dev/definition.txt?path=minebender-game@1.0.0.0/proof_laws.bend&name=Canon https://jend.leeeet.dev/definition.txt?path=minebender-game@1.0.0.0/proof_laws.bend&name=flags_of https://jend.leeeet.dev/definition.txt?path=minebender-game@1.0.0.0/proof_laws.bend&name=shown_of https://jend.leeeet.dev/definition.txt?path=minebender-game@1.0.0.0/solver.bend&name=solve https://jend.leeeet.dev/definition.txt?path=minebender-game@1.0.0.0/types.bend&name=Action https://jend.leeeet.dev/definition.txt?path=minebender-game@1.0.0.0/types.bend&name=Grid https://jend.leeeet.dev/definition.txt?path=minebender-game@1.0.0.0/types.bend&name=Knowledge https://jend.leeeet.dev/definition.txt?path=minebender-game@1.0.0.0/types.bend&name=Loss https://jend.leeeet.dev/definition.txt?path=minebender-game@1.0.0.0/types.bend&name=Pos https://jend.leeeet.dev/definition.txt?path=minebender-game@1.0.0.0/types.bend&name=Status