a ++ b = a ++ c -> b = c и a ++ c = b ++ c -> a = b:https://gist.github.com/YBogomolov/430e55c2ce85be963e85b66954a1d483
Ушло часов 6, наверное, с непривычки. Самое сложное, что было — доказательство
appendInjectiveLeft. Пришлось даже нырнуть в Elaborator Reflection, чтобы разобраться, как переписываются доказательства. Официальные доки достаточно лаконичны (чтобы не сказать «скудны»), так что сяду читать пейпер Эдвина Брейди об устройстве компилятора идриса.