def same_eq

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

import bendtorch-core@0.1.0.0/src/storage/api.bend as Api
import Base
import bendtorch-core@0.1.0.0/src/storage/model.bend as Model

224def same_eq(+d: Nat, +p: Model.Path(d), +q: Model.Path(d)) ->
225  {Nat.is_eq(Model.offset(d, p), Model.offset(d, q)) == Model.same(d, p, q) : Bool}:
226  match d:
227    case 0n:
228      {==}
229    case 1n+r:
230      Model.Step{+pb, +pr} = p
231      match pb:
232        case False{}:
233          Model.Step{+qb, +qr} = q
234          match qb:
235            case False{}:
236              same_eq(r, pr, qr)
237            case True{}:
238              Equal.sym(Bool, False{}, Nat.is_eq(Model.offset(r, pr), Nat.add(Model.capacity(r), Model.offset(r, qr))),
239                ne_low(Model.offset(r, pr), Model.capacity(r), Model.offset(r, qr), offset_lt(r, pr)))
240        case True{}:
241          Model.Step{+qb, +qr} = q
242          match qb:
243            case False{}:
244              Equal.sym(Bool, False{}, Nat.is_eq(Nat.add(Model.capacity(r), Model.offset(r, pr)), Model.offset(r, qr)),
245                ne_high(Model.offset(r, qr), Model.capacity(r), Model.offset(r, pr), offset_lt(r, qr)))
246            case True{}:
247              %eq_add_cancel(Model.capacity(r), Model.offset(r, pr), Model.offset(r, qr)) : {_ == Model.same(r, pr, qr) : Bool}
248              same_eq(r, pr, qr)

Uses (14)

Used by (1)