Couple of questions:
As to answer you question as to why not() is used instead of empty: It's not valid!
If you try:
[VacationManagement.VacationRequest_Approver = empty]
You will get an error saying that “you can't compare an association with empty”
And if you try:
[VacationManagement.VacationRequest_Approver/Administration.Account = empty]
The error message “Incompatible expression types: Boolean, (empty).” will appear.
Hello whenever an Approver account has been assigned to VacationRequest then you will set this assocaiation VacationRequest_Approver right.
So just check this association VacationRequest_Approver does empty to not.
Something like this [VacationManagement.VacationRequest_Approver/Administrator.Account= empty]
Hope it helps!