lista de concat en z3

¿Hay alguna manera de concat dos listas en z3? ¿Similar al operador @ en ML? Estaba pensando en definirlo yo mismo, pero no creo que z3 admita definiciones de funciones recursivas, es decir,

define-fun concat ( (List l1) (List l2) List 
   (ite (isNil l1) (l2) (concat (tail l1) (insert (head l1) l2)) )
)