In some proofs it might be necessary to define some constant using the proof mode. Which of the following variants would you prefer / find more elegant?
The first two options result in the same proof term. The second option is a bit weird because evar is supposed to create a new evar, which is then immediatly unshelved.
In the last option, the new hypthesis will be z := (the_definition : nat) : nat, which is weird due to the redundant type casting.
IMO, the clearest syntax would be unshelve epose (z : nat := _).