def unique

bendtorch-core@0.1.0.0 · src/tensor/axis_algebra.bend:110

import bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend as AxisAlgebra
import Base
import bendtorch-core@0.1.0.0/src/shape/core.bend as Shape
import bendtorch-core@0.1.0.0/src/tensor/layout.bend as Layout
import bendtorch-core@0.1.0.0/src/tensor/axis_spec.bend as Axis

110def unique(+axes: List<&2, U32>) -> {Layout.unique(axes) == Axis.unique(Shape.naturals(axes)) : Bool}:
111  match axes:
112    case Nil{}:
113      {==}
114    case +head <> +tail:
115      %Equal.sym(Bool, Layout.contains(head, tail), Axis.contains(U32.to_nat(head), Shape.naturals(tail)), contains(tail, head)) :
116        {Bool.and(Bool.not(_), Layout.unique(tail)) == Axis.unique(Shape.naturals(head <> tail)) : Bool}
117      %Equal.sym(Bool, Layout.unique(tail), Axis.unique(Shape.naturals(tail)), unique(tail)) :
118        {Bool.and(Bool.not(Axis.contains(U32.to_nat(head), Shape.naturals(tail))), _) == Axis.unique(Shape.naturals(head <> tail)) : Bool}
119      {==}

Uses (13)

Used by (3)