def inv_assist.go
minebender-game@1.0.0.0 · proof_inv.bend:652
import minebender-game@1.0.0.0/proof_inv.bend as ProofInv
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/LAWS.bend as L
import minebender-game@1.0.0.0/solver.bend as S
652def inv_assist.go(+w: Nat, +h: Nat, +layout: T.Grid(Bool), +shown: T.Grid(Bool), +flags: List<&2, T.Pos>,
653 +status: T.Status, +sh: {B.shaped(Bool, w, h, shown) == True{} : Bool},
654 +won: {L.is_won(status) == G.all_safe(w, h, layout, shown) : Bool},
655 +cm: {calm(status, w, h, layout, shown) == True{} : Bool},
656 +cl: {closed(w, h, layout, shown) == True{} : Bool}, +c: Bool, ce: {G.is_playing(status) == c : Bool}, +k: Nat) ->
657 Inv(w, h, layout, G.assist.go(c, G.Game{w, h, layout, shown, flags, status}, k)):
658 match c:
659 case False{}:
660 ({==}, ({==}, ({==}, (sh, (won, (cm, cl))))))
661 case True{}:
662 +g0 = {G.Game{w, h, layout, shown, flags, status} : G.Game}
663 inv_assist.pick(w, h, layout, shown, flags, status, sh, won, cm, cl, playing_is(status, ce),
664 S.solve(G.knowledge(g0)), k)