Definition. Definitions, Datatypes, Induction, Functions › The prepend function [isa-001V]

fun prepend :: ‹oot ⇒ nat ⇒ oots ⇒ oots› where ‹prepend ONE n Empty = ONEs n Empty› | ‹prepend TWO n Empty = TWOs n Empty› | ‹prepend ONE n (TWOs m r) = ONEs n (TWOs m r)› | ‹prepend TWO n (ONEs m r) = TWOs n (ONEs m r)› | ‹prepend ONE n (ONEs m r) = ONEs (n+m) r› | ‹prepend TWO n (TWOs m r) = TWOs (n+m) r›