does mathematical function set in Genetic Programming can have two input values?
There are a couple of weird ideas here, I think. First, generally, you're not going to have all your trees the same size and shape. The algorithms should be allowed to create variations there.

Second, you should certainly be able to use functions with more than one argument. You can do this a number of ways. One, give each operator a "class" that you use to determine where it may legally appear. For instance, the "+" operator might be defined to take two operands, and thus it could only appear at a node with two children. Alternately, you can take the Common Lisp approach and simply define the result of applying those operations on too few arguments. For example, you might take that "+" operator and fill out any missing operands with 0s, so that applying (+) yields 0, (+ 5) yields 5, etc.

You're the one writing the program. You're allowed to make it behave however you like. I don't think you'll find a lot of references in the literature about this sort of thing because, honestly, it's an implementation issue that isn't interesting enough to publish.