def alloc_size

bendtorch-core@0.1.0.0 · src/storage/api.bend:687

import bendtorch-core@0.1.0.0/src/storage/api.bend as Api
import Base
import bendtorch-core@0.1.0.0/src/storage/array.bend as ArrayCore
import bendtorch-core@0.1.0.0/src/storage/main.bend as Storage
import bendtorch-core@0.1.0.0/src/storage/LAWS.bend as Laws
import bendtorch-core@0.1.0.0/src/storage/arith.bend as Arith

687def alloc_size(+d: Nat, +n: Nat, +value: F32, valid: Bool, -decision: {valid == Storage.bounds(d, n) : Bool},
688  +ops: List<&2, Laws.Op>, yes: {True{} == valid : Bool}, +fits: {Storage.bounds(d, n) == True{} : Bool}) ->
689  {Laws.size(Laws.replay(ops, Laws.created.of(Storage.allocate(d, n, value, valid, decision)))) == n : Nat}:
690  match valid:
691    case True{}:
692      replay_size_owned(ops, d, n, value, Nil{}, hit_of(n, ops), {==}, ArrayCore.new_balanced(F32, d, value),
693        Equal.sym(Bool, True{}, Storage.bounds(d, n), decision), fits)
694    case False{}:
695      Empty.absurd({Laws.size(Laws.replay(ops, Laws.created.of(Storage.allocate(d, n, value, False{}, decision)))) == n : Nat},
696        Arith.clash_true(yes))

Uses (16)

Used by (1)