Hopcroft & Ullman (1979) say that a function $f(x)$ is undefined when $f$ is not defined for $x$ and they use (I think) the $\perp$ symbol to denote that.
My question is: since I can use $\perp$ as the ''output'' of a function, can I also use it as an input?
For example, a function of many arguments, some are undefined, but I can still define the output without them.
Edit:
An example with names I gave in the comments: suppose I have 3 partial functions $f$, $g$, $h$, such that $f(x_1, x_2)$ = $x_1$ and $h(x_1, x_2)$ = $f(x_1, g(x_2))$. Is $h(x_1, x_2)$ defined when $g(x_2)$ isn't?
We can avoid running into $\perp$ as an input by defining composition in the right way.
A partial function from $A$ to $B$ is a subset $f$ of $A\times B$ such that for each $a\in A$ there is at most one $b\in B$ with $(a,b)\in f$. Now the crucial point is that composition of partial functions is just composition of relations: given partial functions $f$ from $A$ to $B$ and $g$ from $B$ to $C$, we define $f\circ g$ by setting $$(a, c)\in f\circ g\iff \exists b\in B((a,b)\in f, (b,c)\in g).$$ We never get $\perp$ as an input: "$g(a)$ is undefined" means "there is no $b$ with $(a,b)\in g$," which immediately implies "$(f\circ g)(a)$ is undefined" since there's no "$g$-then-$f$ bridge" from $a$ to any $c$.
Compositions of multi-ary functions are similarly defined, and this approach results in your $h$ being undefined when $g$ is undefined. Specifically, and assuming a common domain/codomain $X$ for all things involved, the "right composition" $\hat{h}=h(x_1,g(x_2))$ is the set $$\{((a,b),c):(\exists d((b, d)\in g))\wedge (a,d)\in h\}.$$ The statement "$g(b)$ is undefined" means "there is no $d$ with $(b,d)\in g$," which results in no $c$ with $((a,b),c)\in \hat{h}$.
Note that this raises a crucial point: it might not be a good idea to think of algorithms as simply partial functions. For example, the obvious algorithm corresponding to $h$ - "ignore the right input and spit out the left input" - seems to be perfectly fine even if the right input never appears. Here the situation is divided, and - especially in generalized computability theory - there is some disagreement on how to treat this issue in various contexts. But that's a separate point, in my opinion.