def gen_left_firsts.go

minebender-game@1.0.0.0 · proof_gen.bend:599

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/proof_base.bend as P

599def gen_left_firsts.go(+z: G.Zone, +p: T.Pos, +t: List<&2, T.Pos>, +s: Bool,
600  ih: {Nat.add(G.gen.left(z, t), outs(z, t)) == List.length(&2, T.Pos, t) : Nat}) ->
601  {Nat.add(Nat.add(Bool.pick(Nat, s, 0n, 1n), G.gen.left(z, t)),
602     Nat.add(Bool.pick(Nat, s, 1n, 0n), outs(z, t))) == 1n+List.length(&2, T.Pos, t) : Nat}:
603  match s:
604    case True{}:
605      %Equal.sym(Nat, Nat.add(G.gen.left(z, t), 1n+outs(z, t)),
606        1n+Nat.add(G.gen.left(z, t), outs(z, t)),
607        P.add_succ(G.gen.left(z, t), outs(z, t))) :
608        {_ == 1n+List.length(&2, T.Pos, t) : Nat}
609      %Equal.sym(Nat, Nat.add(G.gen.left(z, t), outs(z, t)), List.length(&2, T.Pos, t), ih) :
610        {1n+_ == 1n+List.length(&2, T.Pos, t) : Nat}
611      {==}
612    case False{}:
613      %Equal.sym(Nat, Nat.add(G.gen.left(z, t), outs(z, t)), List.length(&2, T.Pos, t), ih) :
614        {1n+_ == 1n+List.length(&2, T.Pos, t) : Nat}
615      {==}

Uses (12)

Used by (1)