ElementwiseParallelProof.halves_equal: def of bendtorch-core@0.1.0.0 Import: import bendtorch-core@0.1.0.0/src/tensor/elementwise_parallel_proof.bend as ElementwiseParallelProof Lines 181-198 of bendtorch-core@0.1.0.0/src/tensor/elementwise_parallel_proof.bend: https://jend.leeeet.dev/read.txt?path=bendtorch-core@0.1.0.0/src/tensor/elementwise_parallel_proof.bend&start_line=181&end_line=198 import Base import bendtorch-core@0.1.0.0/src/storage/model.bend as Model import bendtorch-core@0.1.0.0/src/tensor/elementwise.bend as Elementwise # A split hands each half both input arrays. def halves_equal(+dl: Nat, +dr: Nat, -A: Array, -B: Array, lp: Array & Array, rp: Array & Array, -le: {lp == Array.clone(F32, A) : Array & Array}, -re: {rp == Array.clone(F32, B) : Array & Array}, -left_valid: Model.Balanced(F32, dl, A), -right_valid: Model.Balanced(F32, dr, B)) -> Fact<({Pair.fst(Array & Array, Array & Array, Elementwise.halves(lp, rp)) == (A, B) : Array & Array} & {Pair.snd(Array & Array, Array & Array, Elementwise.halves(lp, rp)) == (A, B) : Array & Array})>: (l1, l2) = lp (r1, r2) = rp Fact{(pair_equal(l1, r1, A, B, {\{Fact: q => q} : Fact<({Pair.fst(Array, Array, (l1, l2)) == A : Array})> -> {Pair.fst(Array, Array, (l1, l2)) == A : Array}}( clone_first(dl, A, A, (l1, l2), le, {==}, left_valid)), {\{Fact: q => q} : Fact<({Pair.fst(Array, Array, (r1, r2)) == B : Array})> -> {Pair.fst(Array, Array, (r1, r2)) == B : Array}}( clone_first(dr, B, B, (r1, r2), re, {==}, right_valid))), pair_equal(l2, r2, A, B, {\{Fact: q => q} : Fact<({Pair.snd(Array, Array, (l1, l2)) == A : Array})> -> {Pair.snd(Array, Array, (l1, l2)) == A : Array}}( clone_second(dl, A, A, (l1, l2), le, {==}, left_valid)), {\{Fact: q => q} : Fact<({Pair.snd(Array, Array, (r1, r2)) == B : Array})> -> {Pair.snd(Array, Array, (r1, r2)) == B : Array}}( clone_second(dr, B, B, (r1, r2), re, {==}, right_valid))))} Uses (14): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Array https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Array.clone https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=F32 https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Pair https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Pair.fst https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Pair.snd https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Sigma https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/storage/model.bend&name=Balanced https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/elementwise.bend&name=halves https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/elementwise_parallel_proof.bend&name=Fact https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/elementwise_parallel_proof.bend&name=clone_first https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/elementwise_parallel_proof.bend&name=clone_second https://jend.leeeet.dev/definition.txt?path=bendtorch-core@0.1.0.0/src/tensor/elementwise_parallel_proof.bend&name=pair_equal