LAWS.attn_par_bwd: law of bendtorch@1.3.0.0 Import: import bendtorch@1.3.0.0/LAWS.bend as LAWS Lines 212-220 of bendtorch@1.3.0.0/LAWS.bend: https://jend.leeeet.dev/read.txt?path=bendtorch@1.3.0.0/LAWS.bend&start_line=212&end_line=220 import Base import bendtorch@1.3.0.0/main.bend as T # LAW (attn_par_bwd): the same for the backward pass: T.bpar's tree gives each sequence's dQ, dK and dV exactly as # T.bleaf, one sequence after another. law attn_par_bwd: for d: Nat for gs: T.Halves for +n: Nat for +kv: Nat for +dm: T.Dm {T.bpar(d, gs, n, kv, dm) == T.bleaf(T.hcat(T.BG, gs), kv, dm, Nil{}) : List<&1, T.DB>} Uses (11): 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=bendtorch@1.3.0.0/PROOF.bend&name=b_par_mid https://jend.leeeet.dev/definition.txt?path=bendtorch@1.3.0.0/PROOF.bend&name=b_tree https://jend.leeeet.dev/definition.txt?path=bendtorch@1.3.0.0/main.bend&name=BG https://jend.leeeet.dev/definition.txt?path=bendtorch@1.3.0.0/main.bend&name=DB https://jend.leeeet.dev/definition.txt?path=bendtorch@1.3.0.0/main.bend&name=Dm https://jend.leeeet.dev/definition.txt?path=bendtorch@1.3.0.0/main.bend&name=Halves https://jend.leeeet.dev/definition.txt?path=bendtorch@1.3.0.0/main.bend&name=bleaf https://jend.leeeet.dev/definition.txt?path=bendtorch@1.3.0.0/main.bend&name=bpar https://jend.leeeet.dev/definition.txt?path=bendtorch@1.3.0.0/main.bend&name=hcat