def compared_is

bendtorch-core@0.1.0.0 · src/tensor/gather_PROOF.bend:481

import bendtorch-core@0.1.0.0/src/tensor/gather_PROOF.bend as GatherPROOF
import Base
import bendtorch-core@0.1.0.0/src/storage/model.bend as Model
import bendtorch-core@0.1.0.0/src/storage/refinement.bend as Refinement
import bendtorch-core@0.1.0.0/src/tensor/gather.bend as Gather
import bendtorch-core@0.1.0.0/src/tensor/parallel_proofs.bend as Generic

481def compared_is(+i: Nat, +at: Nat, +slot: Nat, +acc: F32, +dg: Nat, -G: Array<F32>, +di: Nat, -I: Array<U32>, pair: Array<U32> & U32,
482  -kept: {Refinement.first(U32, pair) == I : Array<U32>},
483  -seen: {Some{Refinement.second(U32, pair)} == Model.observe(U32, di, I, Refinement.route(di, U32.from_nat(slot))) : Maybe<&2, U32>},
484  -valid: Model.Balanced(F32, dg, G)) ->
485  Generic.Fact<Stepped<dg, G, di, I, i, at, slot, acc, Gather.compared(i, at, acc, G, pair)>>:
486  (index, +j) = pair
487  summed_is(i, at, slot, acc, dg, G, di, I, index, j, kept,
488    Equal.sym(Maybe<&2, U32>, Some{j}, Model.observe(U32, di, I, Refinement.route(di, U32.from_nat(slot))), seen),
489    Nat.is_eq(U32.to_nat(j), i), {==}, valid)

Uses (20)

Used by (1)