Tree.reduce_foldr: law of bend-lawful-stdlib@0.1.0.0 Import: import bend-lawful-stdlib@0.1.0.0/src/tree.bend as Tree Lines 50-58 of bend-lawful-stdlib@0.1.0.0/src/tree.bend: https://jend.leeeet.dev/read.txt?path=bend-lawful-stdlib@0.1.0.0/src/tree.bend&start_line=50&end_line=58 import Base import bend-lawful-stdlib@0.1.0.0/src/class.bend as C # reduce agrees with foldr. With acc = Nil{}: # {op(reduce(t), z) == foldr(to_list(t), z)}. law reduce_foldr: for ~A: Data for ~m: C.Semigroup for t: Tree for +acc: List<&2, A> for +z: A {C.Semigroup.op(A, m, reduce(~A, ~m, t), List.foldr(~&2, ~A, ~A, ~C.Semigroup.fn(~A, ~m), acc, z)) == List.foldr(~&2, ~A, ~A, ~C.Semigroup.fn(~A, ~m), to_list.go(A, t, acc), z) : A} Uses (10): 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=List.foldr https://jend.leeeet.dev/definition.txt?path=bend-lawful-stdlib@0.1.0.0/src/class.bend&name=Semigroup https://jend.leeeet.dev/definition.txt?path=bend-lawful-stdlib@0.1.0.0/src/class.bend&name=Semigroup.assoc https://jend.leeeet.dev/definition.txt?path=bend-lawful-stdlib@0.1.0.0/src/class.bend&name=Semigroup.fn https://jend.leeeet.dev/definition.txt?path=bend-lawful-stdlib@0.1.0.0/src/class.bend&name=Semigroup.op https://jend.leeeet.dev/definition.txt?path=bend-lawful-stdlib@0.1.0.0/src/tree.bend&name=Tree https://jend.leeeet.dev/definition.txt?path=bend-lawful-stdlib@0.1.0.0/src/tree.bend&name=reduce https://jend.leeeet.dev/definition.txt?path=bend-lawful-stdlib@0.1.0.0/src/tree.bend&name=to_list.go