def chosen_reached

bendtorch-core@0.1.0.0 · src/autograd/backward_PROOF.bend:232

import bendtorch-core@0.1.0.0/src/autograd/backward_PROOF.bend as BackwardPROOF
import Base
import bendtorch-core@0.1.0.0/src/autograd/backward.bend as Backward
import bendtorch-core@0.1.0.0/src/autograd/backward_LAWS.bend as Laws

232def chosen_reached(+node: Backward.Node, +rest: List<&2, Backward.Node>, +below: Nat, +output: Nat, flag: Bool,
233  ih: {Laws.somes(Backward.pass(rest, below, output)) == Laws.reached(rest, below, output) : List<&2, Bool>}) ->
234  {Laws.somes(Backward.chosen(node, rest, below, unit => Backward.pass(rest, below, output), flag)) ==
235    Laws.reached_chosen(node, rest, below, unit => Laws.reached(rest, below, output), flag) : List<&2, Bool>}:
236  match flag:
237    case True{}:
238      %somes_nones(below) :
239        {Laws.somes(Backward.sweep(node <> rest, Some{1.0} <> Backward.nones(below), 1n+below)) ==
240          Laws.reach(node <> rest, True{} <> _, 1n+below) : List<&2, Bool>}
241      sweep_reach(node <> rest, Some{1.0} <> Backward.nones(below), 1n+below)
242    case False{}:
243      Equal.cong(List<&2, Bool>, List<&2, Bool>, xs => False{} <> xs,
244        Laws.somes(Backward.pass(rest, below, output)), Laws.reached(rest, below, output), ih)

Uses (16)

Used by (1)