If a semaphore value is nonpositive its absolute value equals the number of processes booked on its waiting list. Private semaphores - way for a process to force itself to block, and rely on external process to determine that the process should go ahead an proceed at a later date. Essentially condition variables. Relevance Structured system design. Rigorous enforcement of layering, with all of the benefits.
Proofs of correctness are more hand-waving than proofs.