Demux realisation in hardware
The X value only exists in simulation or as an input to synthesis - it does not exist in hardware. 

In a pure algebraic system, each unknown value would be given a unique variable name, like \$x\$, \$y\$ and \$z\$ or \$X_{1}\$, \$X_{2}\$, and \$X_{3}\$. A symbolic or formal evaluation would be \$x|!x \equiv 1 \$. However, Verilog simulation uses a single \$x\$ value that represents all unknowns. So the \$value(x)|!value(x) = value(x)\$. In fact, any binary operation will return an x value.

Verilog's conditional operator \$select?value_{1}:value_{2}\$ is less pessimistic in simulation.  When \$select \equiv x\$, it evaluates \$value_{1} \equiv value_{2}\$ and returns either value when they are the same. 

The branching statements in Verilog like if are overly optimistic in simulation. An expression that evaluates to an X value is considered false, and takes the false branch.