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))}