isEmpty empty true isEmpty node l x r false left empty empty left node l x r l right empty empty right node l x r r elem node l x r x append nil x cons x nil append cons y ys x cons y append ys x listify n xs if isEmpty n isEmpty left n right n node left left n elem left n node right left n elem n right n xs append xs n if true b n m xs ys xs if false false n m xs ys listify m xs if false true n m xs ys listify n ys toList n listify n nil 2.2 append cons y ys x append ys x listify n xs isEmpty n listify n xs left n listify n xs right n listify n xs left n listify n xs elem left n listify n xs right left n listify n xs isEmpty left n listify n xs left left n listify n xs if isEmpty n isEmpty left n right n node left left n elem left n node right left n elem n right n xs append xs n listify n xs right n listify n xs elem n if false false n m xs ys listify m xs if false true n m xs ys listify n ys listify n xs left n listify n xs left n toList n listify n nil listify n xs append xs n true toList n listify n nil false if false true n m xs ys listify n ys if false false n m xs ys listify m xs listify n xs if isEmpty n isEmpty left n right n node left left n elem left n node right left n elem n right n xs append xs n true Failed! NaTT certifiable-1.6