В ББ, как я понимаю, решается вот так:

PROCEDURE (s: List) Insert (e: Elem): BOOLEAN
Pre
e # NIL  20
~s.Includes(e)  21
Post
res => s.Includes(e)
~res => ~s.Includes(e)

Глядя на такое определение, молодой и смышленый сможет сделать вывод, что нельзя вставлять уже вставленный элемент.

Но это - вопрос не языка, а культуры.