You probably also want to complete your toolkit with functions which are then exponentiation.<p>Also, in any ADT system 0 should be exactly the empty sum and 1 exactly the empty product. This is what makes things hang together properly.