饮者悖论(也被称为饮者定理,饮者原理,或饮酒原理)是经典谓词逻辑的一个定理。它实际上并不是一个悖论。它的明显的矛盾的性质来自于它通常的在自然语言中的表述: 有两点看起来是反直觉的 1) 这里面有一个人,他会引起其他人喝酒。2)这里有一个人,一整夜他都是最后一个喝酒的。第一个反对的理由是由于混淆了形式的 IF...THEN 陈述与因果关系(见相关不蕴涵因果)。定理的形式化陈述是不受时间限制的,我们可以消除第二个反对理由是因为,在一个时刻使得陈述成立的那个特别的人(见证者),并不需要与在任何其它时刻使得陈述成立的那个人是同一个人。实际的定理是
其中 D 是一个任意的谓词(英语:Predicate_(mathematical_logic)),P是一个任意的集合。这个悖论是因数理逻辑学家雷蒙·思木里安而广为人知的。雷蒙·思木里安在他 1978 年出版的书 中称它为 “饮酒原理”。
以下证明为借助 Coq 的 proof script.
Lemma drinker (X: Type)(d: X -> Prop):XM -> (exists x: X, True) -> exists x, d x -> forall x, d x.Proof. intros xm A. assert(s:= xm). specialize (s (exists x, d x -> forall x, d x)). destruct s as . - exact s0. - exfalso. apply s1. destruct A as . exists x. intros B x0. specialize (xm (d x0)). destruct xm as . -- exact xm0. -- exfalso. apply s1. exists x0. intros C. exfalso. exact(xm1 C).Qed.