def same_path_offset

bendtorch-core@0.1.0.0 · src/tensor/core_PROOF.bend:179

import bendtorch-core@0.1.0.0/src/tensor/core_PROOF.bend as CorePROOF
import Base
import bendtorch-core@0.1.0.0/src/storage/model.bend as Model
import bendtorch-core@0.1.0.0/src/tensor/lifecycle.bend as Lifecycle

179def same_path_offset(+depth: Nat, +left: Model.Path(depth), +right: Model.Path(depth),
180  equal: {Model.same(depth, left, right) == True{} : Bool}) -> {Model.offset(depth, left) == Model.offset(depth, right) : Nat}:
181  match depth:
182    case 0n:
183      {==}
184    case 1n++p:
185      Model.Step{+lb, +lt} = left
186      match lb:
187        case False{}:
188          Model.Step{+rb, +rt} = right
189          match rb:
190            case False{}:
191              same_path_offset(p, lt, rt, equal)
192            case True{}:
193              Empty.absurd({Model.offset(p, lt) == Nat.add(Model.capacity(p), Model.offset(p, rt)) : Nat},
194                Lifecycle.false_true(Equal.sym(Bool, False{}, True{}, equal)))
195        case True{}:
196          Model.Step{+rb, +rt} = right
197          match rb:
198            case False{}:
199              Empty.absurd({Nat.add(Model.capacity(p), Model.offset(p, lt)) == Model.offset(p, rt) : Nat},
200                Lifecycle.false_true(Equal.sym(Bool, False{}, True{}, equal)))
201            case True{}:
202              Equal.cong(Nat, Nat, n => Nat.add(Model.capacity(p), n), Model.offset(p, lt), Model.offset(p, rt),
203                same_path_offset(p, lt, rt, equal))

Uses (12)

Used by (1)