AxisAlgebra.facts_3: def of bendtorch-core@0.1.0.0 Import: import bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend as AxisAlgebra Lines 2159-2254 of bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend: https://jend.leeeet.dev/read.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend&start_line=2159&end_line=2254 import Base import bendtorch-core@0.1.0.0/src/shape/core.bend as Shape import bendtorch-core@0.1.0.0/src/storage/arith.bend as Arith import bendtorch-core@0.1.0.0/src/tensor/axis_spec.bend as Axis def facts_3(+axes: List<&2, Nat>, accepted: {True{} == Axis.valid(3n, axes) : Bool}) -> Facts<3n, axes>: match axes: case Nil{}: Empty.absurd(Facts<3n, Nil{}>, Shape.clash(accepted)) case +a0 <> Nil{}: Empty.absurd(Facts<3n, a0 <> Nil{}>, Shape.clash(accepted)) case +a0 <> +a1 <> Nil{}: Empty.absurd(Facts<3n, a0 <> a1 <> Nil{}>, Shape.clash(accepted)) case 0n <> 0n <> 0n <> Nil{}: Empty.absurd(Facts<3n, [0n, 0n, 0n]>, Shape.clash(accepted)) case 0n <> 0n <> 1n <> Nil{}: Empty.absurd(Facts<3n, [0n, 0n, 1n]>, Shape.clash(accepted)) case 0n <> 0n <> 2n <> Nil{}: Empty.absurd(Facts<3n, [0n, 0n, 2n]>, Shape.clash(accepted)) case 0n <> 0n <> (3n+p) <> Nil{}: Empty.absurd(Facts<3n, 0n <> 0n <> (3n+p) <> Nil{}>, Arith.lt_zero(p, Arith.and_left(Nat.is_lt(3n+p, 3n), Axis.bounded(Nil{}, 3n), Arith.and_left(Axis.bounded(0n <> 0n <> (3n+p) <> Nil{}, 3n), Axis.unique(0n <> 0n <> (3n+p) <> Nil{}), Equal.sym(Bool, True{}, Axis.valid(3n, 0n <> 0n <> (3n+p) <> Nil{}), accepted))))) case 0n <> 1n <> 0n <> Nil{}: Empty.absurd(Facts<3n, [0n, 1n, 0n]>, Shape.clash(accepted)) case 0n <> 1n <> 1n <> Nil{}: Empty.absurd(Facts<3n, [0n, 1n, 1n]>, Shape.clash(accepted)) case 0n <> 1n <> 2n <> Nil{}: Certified{{==}, {==}, {==}, A => items => length => lists_012(A, items, length), dims => length => product_012(dims, length), dims => coords => dl => cl => fit_012(dims, coords, dl, cl)} case 0n <> 1n <> (3n+p) <> Nil{}: Empty.absurd(Facts<3n, 0n <> 1n <> (3n+p) <> Nil{}>, Arith.lt_zero(p, Arith.and_left(Nat.is_lt(3n+p, 3n), Axis.bounded(Nil{}, 3n), Arith.and_left(Axis.bounded(0n <> 1n <> (3n+p) <> Nil{}, 3n), Axis.unique(0n <> 1n <> (3n+p) <> Nil{}), Equal.sym(Bool, True{}, Axis.valid(3n, 0n <> 1n <> (3n+p) <> Nil{}), accepted))))) case 0n <> 2n <> 0n <> Nil{}: Empty.absurd(Facts<3n, [0n, 2n, 0n]>, Shape.clash(accepted)) case 0n <> 2n <> 1n <> Nil{}: Certified{{==}, {==}, {==}, A => items => length => lists_021(A, items, length), dims => length => product_021(dims, length), dims => coords => dl => cl => fit_021(dims, coords, dl, cl)} case 0n <> 2n <> 2n <> Nil{}: Empty.absurd(Facts<3n, [0n, 2n, 2n]>, Shape.clash(accepted)) case 0n <> 2n <> (3n+p) <> Nil{}: Empty.absurd(Facts<3n, 0n <> 2n <> (3n+p) <> Nil{}>, Arith.lt_zero(p, Arith.and_left(Nat.is_lt(3n+p, 3n), Axis.bounded(Nil{}, 3n), Arith.and_left(Axis.bounded(0n <> 2n <> (3n+p) <> Nil{}, 3n), Axis.unique(0n <> 2n <> (3n+p) <> Nil{}), Equal.sym(Bool, True{}, Axis.valid(3n, 0n <> 2n <> (3n+p) <> Nil{}), accepted))))) case 0n <> (3n+p) <> a0 <> Nil{}: Empty.absurd(Facts<3n, 0n <> (3n+p) <> a0 <> Nil{}>, Arith.lt_zero(p, Arith.and_left(Nat.is_lt(3n+p, 3n), Axis.bounded(a0 <> Nil{}, 3n), Arith.and_left(Axis.bounded(0n <> (3n+p) <> a0 <> Nil{}, 3n), Axis.unique(0n <> (3n+p) <> a0 <> Nil{}), Equal.sym(Bool, True{}, Axis.valid(3n, 0n <> (3n+p) <> a0 <> Nil{}), accepted))))) case 1n <> 0n <> 0n <> Nil{}: Empty.absurd(Facts<3n, [1n, 0n, 0n]>, Shape.clash(accepted)) case 1n <> 0n <> 1n <> Nil{}: Empty.absurd(Facts<3n, [1n, 0n, 1n]>, Shape.clash(accepted)) case 1n <> 0n <> 2n <> Nil{}: Certified{{==}, {==}, {==}, A => items => length => lists_102(A, items, length), dims => length => product_102(dims, length), dims => coords => dl => cl => fit_102(dims, coords, dl, cl)} case 1n <> 0n <> (3n+p) <> Nil{}: Empty.absurd(Facts<3n, 1n <> 0n <> (3n+p) <> Nil{}>, Arith.lt_zero(p, Arith.and_left(Nat.is_lt(3n+p, 3n), Axis.bounded(Nil{}, 3n), Arith.and_left(Axis.bounded(1n <> 0n <> (3n+p) <> Nil{}, 3n), Axis.unique(1n <> 0n <> (3n+p) <> Nil{}), Equal.sym(Bool, True{}, Axis.valid(3n, 1n <> 0n <> (3n+p) <> Nil{}), accepted))))) case 1n <> 1n <> 0n <> Nil{}: Empty.absurd(Facts<3n, [1n, 1n, 0n]>, Shape.clash(accepted)) case 1n <> 1n <> 1n <> Nil{}: Empty.absurd(Facts<3n, [1n, 1n, 1n]>, Shape.clash(accepted)) case 1n <> 1n <> 2n <> Nil{}: Empty.absurd(Facts<3n, [1n, 1n, 2n]>, Shape.clash(accepted)) case 1n <> 1n <> (3n+p) <> Nil{}: Empty.absurd(Facts<3n, 1n <> 1n <> (3n+p) <> Nil{}>, Arith.lt_zero(p, Arith.and_left(Nat.is_lt(3n+p, 3n), Axis.bounded(Nil{}, 3n), Arith.and_left(Axis.bounded(1n <> 1n <> (3n+p) <> Nil{}, 3n), Axis.unique(1n <> 1n <> (3n+p) <> Nil{}), Equal.sym(Bool, True{}, Axis.valid(3n, 1n <> 1n <> (3n+p) <> Nil{}), accepted))))) case 1n <> 2n <> 0n <> Nil{}: Certified{{==}, {==}, {==}, A => items => length => lists_120(A, items, length), dims => length => product_120(dims, length), dims => coords => dl => cl => fit_120(dims, coords, dl, cl)} case 1n <> 2n <> 1n <> Nil{}: Empty.absurd(Facts<3n, [1n, 2n, 1n]>, Shape.clash(accepted)) case 1n <> 2n <> 2n <> Nil{}: Empty.absurd(Facts<3n, [1n, 2n, 2n]>, Shape.clash(accepted)) case 1n <> 2n <> (3n+p) <> Nil{}: Empty.absurd(Facts<3n, 1n <> 2n <> (3n+p) <> Nil{}>, Arith.lt_zero(p, Arith.and_left(Nat.is_lt(3n+p, 3n), Axis.bounded(Nil{}, 3n), Arith.and_left(Axis.bounded(1n <> 2n <> (3n+p) <> Nil{}, 3n), Axis.unique(1n <> 2n <> (3n+p) <> Nil{}), Equal.sym(Bool, True{}, Axis.valid(3n, 1n <> 2n <> (3n+p) <> Nil{}), accepted))))) case 1n <> (3n+p) <> a0 <> Nil{}: Empty.absurd(Facts<3n, 1n <> (3n+p) <> a0 <> Nil{}>, Arith.lt_zero(p, Arith.and_left(Nat.is_lt(3n+p, 3n), Axis.bounded(a0 <> Nil{}, 3n), Arith.and_left(Axis.bounded(1n <> (3n+p) <> a0 <> Nil{}, 3n), Axis.unique(1n <> (3n+p) <> a0 <> Nil{}), Equal.sym(Bool, True{}, Axis.valid(3n, 1n <> (3n+p) <> a0 <> Nil{}), accepted))))) case 2n <> 0n <> 0n <> Nil{}: Empty.absurd(Facts<3n, [2n, 0n, 0n]>, Shape.clash(accepted)) case 2n <> 0n <> 1n <> Nil{}: Certified{{==}, {==}, {==}, A => items => length => lists_201(A, items, length), dims => length => product_201(dims, length), dims => coords => dl => cl => fit_201(dims, coords, dl, cl)} case 2n <> 0n <> 2n <> Nil{}: Empty.absurd(Facts<3n, [2n, 0n, 2n]>, Shape.clash(accepted)) case 2n <> 0n <> (3n+p) <> Nil{}: Empty.absurd(Facts<3n, 2n <> 0n <> (3n+p) <> Nil{}>, Arith.lt_zero(p, Arith.and_left(Nat.is_lt(3n+p, 3n), Axis.bounded(Nil{}, 3n), Arith.and_left(Axis.bounded(2n <> 0n <> (3n+p) <> Nil{}, 3n), Axis.unique(2n <> 0n <> (3n+p) <> Nil{}), Equal.sym(Bool, True{}, Axis.valid(3n, 2n <> 0n <> (3n+p) <> Nil{}), accepted))))) case 2n <> 1n <> 0n <> Nil{}: Certified{{==}, {==}, {==}, A => items => length => lists_210(A, items, length), dims => length => product_210(dims, length), dims => coords => dl => cl => fit_210(dims, coords, dl, cl)} case 2n <> 1n <> 1n <> Nil{}: Empty.absurd(Facts<3n, [2n, 1n, 1n]>, Shape.clash(accepted)) case 2n <> 1n <> 2n <> Nil{}: Empty.absurd(Facts<3n, [2n, 1n, 2n]>, Shape.clash(accepted)) case 2n <> 1n <> (3n+p) <> Nil{}: Empty.absurd(Facts<3n, 2n <> 1n <> (3n+p) <> Nil{}>, Arith.lt_zero(p, Arith.and_left(Nat.is_lt(3n+p, 3n), Axis.bounded(Nil{}, 3n), Arith.and_left(Axis.bounded(2n <> 1n <> (3n+p) <> Nil{}, 3n), Axis.unique(2n <> 1n <> (3n+p) <> Nil{}), Equal.sym(Bool, True{}, Axis.valid(3n, 2n <> 1n <> (3n+p) <> Nil{}), accepted))))) case 2n <> 2n <> 0n <> Nil{}: Empty.absurd(Facts<3n, [2n, 2n, 0n]>, Shape.clash(accepted)) case 2n <> 2n <> 1n <> Nil{}: Empty.absurd(Facts<3n, [2n, 2n, 1n]>, Shape.clash(accepted)) case 2n <> 2n <> 2n <> Nil{}: Empty.absurd(Facts<3n, [2n, 2n, 2n]>, Shape.clash(accepted)) case 2n <> 2n <> (3n+p) <> Nil{}: Empty.absurd(Facts<3n, 2n <> 2n <> (3n+p) <> Nil{}>, Arith.lt_zero(p, Arith.and_left(Nat.is_lt(3n+p, 3n), Axis.bounded(Nil{}, 3n), Arith.and_left(Axis.bounded(2n <> 2n <> (3n+p) <> Nil{}, 3n), Axis.unique(2n <> 2n <> (3n+p) <> Nil{}), Equal.sym(Bool, True{}, Axis.valid(3n, 2n <> 2n <> (3n+p) <> Nil{}), accepted))))) case 2n <> (3n+p) <> a0 <> Nil{}: Empty.absurd(Facts<3n, 2n <> (3n+p) <> a0 <> Nil{}>, Arith.lt_zero(p, Arith.and_left(Nat.is_lt(3n+p, 3n), Axis.bounded(a0 <> Nil{}, 3n), Arith.and_left(Axis.bounded(2n <> (3n+p) <> a0 <> Nil{}, 3n), Axis.unique(2n <> (3n+p) <> a0 <> Nil{}), Equal.sym(Bool, True{}, Axis.valid(3n, 2n <> (3n+p) <> a0 <> Nil{}), accepted))))) case (3n+p) <> a0 <> a1 <> Nil{}: Empty.absurd(Facts<3n, (3n+p) <> a0 <> a1 <> Nil{}>, Arith.lt_zero(p, Arith.and_left(Nat.is_lt(3n+p, 3n), Axis.bounded(a0 <> a1 <> Nil{}, 3n), Arith.and_left(Axis.bounded((3n+p) <> a0 <> a1 <> Nil{}, 3n), Axis.unique((3n+p) <> a0 <> a1 <> Nil{}), Equal.sym(Bool, True{}, Axis.valid(3n, (3n+p) <> a0 <> a1 <> Nil{}), accepted))))) case +a0 <> +a1 <> +a2 <> +a3 <> +tail: Empty.absurd(Facts<3n, a0 <> a1 <> a2 <> a3 <> tail>, Shape.clash(accepted)) Uses (31): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Empty.absurd https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Equal.sym https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=List https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat.is_lt https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/shape/core.bend&name=clash https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/storage/arith.bend&name=and_left https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/storage/arith.bend&name=lt_zero https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend&name=Facts https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend&name=fit_012 https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend&name=fit_021 https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend&name=fit_102 https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend&name=fit_120 https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend&name=fit_201 https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend&name=fit_210 https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend&name=lists_012 https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend&name=lists_021 https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend&name=lists_102 https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend&name=lists_120 https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend&name=lists_201 https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend&name=lists_210 https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend&name=product_012 https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend&name=product_021 https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend&name=product_102 https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend&name=product_120 https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend&name=product_201 https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_algebra.bend&name=product_210 https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_spec.bend&name=bounded https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_spec.bend&name=unique https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/axis_spec.bend&name=valid