~/bend-docscommunity

list_proofs.bend source

list_proofs.bend on the hub · documented module

import Baselaw append_assoc:  for -A: Data  for xs: List<&2, A>  for ys: List<&2, A>  for zs: List<&2, A>  {List.append(&2, A, List.append(&2, A, xs, ys), zs)    == List.append(&2, A, xs, List.append(&2, A, ys, zs)) : List<&2, A>}def append_assoc(A, xs, ys, zs):  match xs:    case Nil{}:      {==}    case h <> t:      %append_assoc(A, t, ys, zs) :        {h <> List.append(&2, A, List.append(&2, A, t, ys), zs) == h <> _ : List<&2, A>}      {==}law reverse_twice:  for -A: Data  for xs: List<&2, A>  for acc: List<&2, A>  for ys: List<&2, A>  {List.reverse.go(&2, A, List.reverse.go(&2, A, xs, acc), ys)    == List.reverse.go(&2, A, acc, List.append(&2, A, xs, ys)) : List<&2, A>}def reverse_twice(A, xs, acc, ys):  match xs:    case Nil{}:      {==}    case h <> t:      reverse_twice(A, t, h <> acc, ys)law reverse_append:  for -A: Data  for xs: List<&2, A>  for ys: List<&2, A>  {List.reverse.go(&2, A, List.reverse(&2, A, xs), ys)    == List.append(&2, A, xs, ys) : List<&2, A>}def reverse_append(A, xs, ys):  reverse_twice(A, xs, Nil{}, ys)law add_succ:  for n: Nat  for m: Nat  {Nat.add(n, 1n+m) == 1n+Nat.add(n, m) : Nat}def add_succ(n, m):  match n:    case 0n:      {==}    case 1n+p:      %add_succ(p, m) : {1n+Nat.add(p, 1n+m) == 1n+_ : Nat}      {==}law add_zero:  for n: Nat  {Nat.add(n, 0n) == n : Nat}def add_zero(n):  match n:    case 0n:      {==}    case 1n+p:      %add_zero(p) : {1n+Nat.add(p, 0n) == 1n+_ : Nat}      {==}law append_assoc_reverse:  for -A: Data  for +xs: List<&2, A>  for +ys: List<&2, A>  for +zs: List<&2, A>  {List.append(&2, A, xs, List.append(&2, A, ys, zs))    == List.append(&2, A, List.append(&2, A, xs, ys), zs) : List<&2, A>}def append_assoc_reverse(A, xs, ys, zs):  Equal.sym(List<&2, A>, List.append(&2, A, List.append(&2, A, xs, ys), zs),    List.append(&2, A, xs, List.append(&2, A, ys, zs)), append_assoc(A, xs, ys, zs))law add_swap:  for +n: Nat  for +k: Nat  for +m: Nat  {Nat.add(n, Nat.add(k, m)) == Nat.add(k, Nat.add(n, m)) : Nat}def add_swap(n, k, m):  match k:    case 0n:      {==}    case 1n+p:      Equal.trans(Nat, Nat.add(n, 1n+Nat.add(p, m)),        1n+Nat.add(n, Nat.add(p, m)), 1n+Nat.add(p, Nat.add(n, m)),        add_succ(n, Nat.add(p, m)),        Equal.cong(Nat, Nat, x => 1n+x, Nat.add(n, Nat.add(p, m)),          Nat.add(p, Nat.add(n, m)), add_swap(n, p, m)))