def order_split.rest

minebender-game@1.0.0.0 · proof_solver.bend:1966

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/solver.bend as S

1966def order_split.rest(+t: S.Todo, +rest: List<&2, S.Todo>, +q: T.Pos, +hr: Bool,
1967  r: Or({tcontains(S.nears(rest), q) == True{} : Bool}, {tcontains(S.fars(rest), q) == True{} : Bool})) ->
1968  {Bool.or(tcontains(List.filter.put(S.Todo, t, S.nears(rest), hr), q),
1969    tcontains(List.filter.put(S.Todo, t, S.fars(rest), Bool.not(hr)), q)) == True{} : Bool}:
1970  match r:
1971    case Inl{a}:
1972      or_l(tcontains(List.filter.put(S.Todo, t, S.nears(rest), hr), q),
1973        tcontains(List.filter.put(S.Todo, t, S.fars(rest), Bool.not(hr)), q), tput_keeps(hr, t, S.nears(rest), q, a))
1974    case Inr{b}:
1975      or_r(tcontains(List.filter.put(S.Todo, t, S.nears(rest), hr), q),
1976        tcontains(List.filter.put(S.Todo, t, S.fars(rest), Bool.not(hr)), q), tput_keeps(Bool.not(hr), t, S.fars(rest), q, b))

Uses (15)

Used by (1)