1. What do you mean? Do you mean to define <x y z> where any of x, y, or z might be empty?

This is simple:

<x y> = {{x} {x y}}

<x y z> = <<x y> z>

That any of x, y, or z might be empty is irrelevant.

2. What do you mean? Given a set S and a function f, it might or might not be the case that S is a subset of the domain of f.

3. I don't know what function 'iterate' you have in mind.

Thanks for taking the time to give a reply to this. I see that my initial description was kinda confusing. Regarding 3.: obviously the types of arguments a function can be applied on is specified explicitly like f : X x Y -> Z. That was basically what I was after.