TensorVjpLAWS.tn_reads_transpose: law of bendtorch-core@0.1.0.0 Import: import bendtorch-core@0.1.0.0/src/autograd/tensor_vjp_LAWS.bend as TensorVjpLAWS Lines 470-494 of bendtorch-core@0.1.0.0/src/autograd/tensor_vjp_LAWS.bend: https://jend.leeeet.dev/read.txt?path=bendtorch-core@0.1.0.0/src/autograd/tensor_vjp_LAWS.bend&start_line=470&end_line=494 import Base import bendtorch-core@0.1.0.0/src/shape/core.bend as Shape import bendtorch-core@0.1.0.0/src/storage/LAWS.bend as StorageLaws import bendtorch-core@0.1.0.0/src/tensor/matmul.bend as Matrix import bendtorch-core@0.1.0.0/src/tensor/dot_fold.bend as DotFold import bendtorch-core@0.1.0.0/src/tensor/contracts/LAWS.bend as Contracts # matmul_tn likewise: for a left operand of dimensions [inner, rows], the # pairs of a product of two `Swapped` operands (`matmul_tn`), left[k, row] and # right[k, column], are the pairs `left_transposed_factors` reads through # `permute_source` on left^T, the pairs `tensor_matmul_vjp_values` states for # x^T @ g. law tn_reads_transpose: for +row: Nat for +column: Nat for +columns: Nat for +left: Shape.Shape for +left_fill: F32 for +left_ops: List<&2, StorageLaws.Op> for +right: Shape.Shape for +right_fill: F32 for +right_ops: List<&2, StorageLaws.Op> for +inner: U32 for +rows: U32 for matrix: {Shape.dimensions(left) == [inner, rows] : List<&2, U32>} for row_below: {Nat.is_lt(row, U32.to_nat(rows)) == True{} : Bool} for +count: Nat for room: {Nat.is_le(count, U32.to_nat(inner)) == True{} : Bool} {Contracts.product_factors(row, column, Matrix.Swapped{}, Matrix.Swapped{}, U32.to_nat(inner), U32.to_nat(rows), columns, left, left_fill, left_ops, right, right_fill, right_ops, count) == left_transposed_factors(row, column, U32.to_nat(inner), columns, left, left_fill, left_ops, swapped(left), right, right_fill, right_ops, count) : List<&2, DotFold.Factors>} Uses (17): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=F32 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_le https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat.is_lt https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32 https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.to_nat https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/autograd/tensor_vjp_LAWS.bend&name=left_transposed_factors https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/autograd/tensor_vjp_LAWS.bend&name=swapped https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/autograd/tensor_vjp_PROOF.bend&name=tn_factors https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/shape/core.bend&name=Shape https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/shape/core.bend&name=dimensions https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/storage/LAWS.bend&name=Op https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/contracts/LAWS.bend&name=product_factors https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/dot_fold.bend&name=Factors https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/matmul.bend&name=Order