def compatible_inner

bendtorch-core@0.1.0.0 · src/tensor/matmul_PROOF.bend:1193

import bendtorch-core@0.1.0.0/src/tensor/matmul_PROOF.bend as MatmulPROOF
import Base
import bendtorch-core@0.1.0.0/src/shape/core.bend as Shape
import bendtorch-core@0.1.0.0/src/tensor/lifecycle.bend as Lifecycle
import bendtorch-core@0.1.0.0/src/tensor/matmul.bend as Matrix

1193def compatible_inner(-left: Shape.Shape, -right: Shape.Shape, +rows: U32, +inner: U32, +right_inner: U32, +columns: U32,
1194  -le: {Shape.dimensions(left) == [rows, inner] : List<&2, U32>},
1195  -re: {Shape.dimensions(right) == [right_inner, columns] : List<&2, U32>},
1196  mismatch: {U32.to_nat(inner) != U32.to_nat(right_inner) : Nat},
1197  decision: Shape.BoolCase<Nat.is_eq(U32.to_nat(inner), U32.to_nat(right_inner))>) ->
1198  {Matrix.plan_compatible(left, right, rows, inner, right_inner, columns, le, re, decision) == Fail{Matrix.InnerDimensionMismatch{}} : Result<&2, &2, Matrix.Error, Matrix.Plan<left, right>>}:
1199  match decision:
1200    case Shape.BFalse{equal}:
1201      {==}
1202    case Shape.BTrue{equal}:
1203      Empty.absurd({Matrix.plan_compatible(left, right, rows, inner, right_inner, columns, le, re, Shape.BTrue{equal}) == Fail{Matrix.InnerDimensionMismatch{}} : Result<&2, &2, Matrix.Error, Matrix.Plan<left, right>>},
1204        mismatch(Lifecycle.natural_equal(U32.to_nat(inner), U32.to_nat(right_inner), equal)))

Uses (15)

Used by (1)