def read_checked_model

bendtorch-core@0.1.0.0 · src/tensor/lifecycle.bend:199

import bendtorch-core@0.1.0.0/src/tensor/lifecycle.bend as Lifecycle
import Base
import bendtorch-core@0.1.0.0/src/storage/main.bend as Storage
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/storage/route.bend as Route

199def read_checked_model(+depth: Nat, +length: Nat, -array: Array<F32>, +index: U32, allowed: Bool,
200  -decision: {allowed == Nat.is_lt(U32.to_nat(index), length) : Bool},
201  -balanced: Model.Balanced(F32, depth, array), -valid: {Storage.bounds(depth, length) == True{} : Bool}) ->
202  ReadCheckedModel<depth, length, array, index, allowed, decision, balanced, valid>:
203  match allowed:
204    case False{}:
205      ReadCheckedModel{{==}}
206    case True{}:
207      ReadCheckedModel{
208        %Route.index_complete(depth, length, index, valid,
209          Equal.sym(Bool, True{}, Nat.is_lt(U32.to_nat(index), length), decision)) :
210          {read_value(Storage.finish_read(depth, length, array, index, Array.get(F32, array, index), {==}, balanced, valid)) ==
211            observe_index(depth, length, array, index, _) : Maybe<&2, F32>}
212        Equal.trans(Maybe<&2, F32>,
213          read_value(Storage.finish_read(depth, length, array, index, Array.get(F32, array, index), {==}, balanced, valid)),
214          Some{Refinement.second(F32, Array.get(F32, array, index))}, Model.observe(F32, depth, array, Refinement.route(depth, index)),
215          finish_read_value(depth, length, array, index, Array.get(F32, array, index), {==}, balanced, valid),
216          Refinement.law_get_refines(F32, depth, array, index, balanced))}

Uses (23)

Used by (2)