∀ 與 ∃ —— "所有"還是"存在"?一字之差,天壤之別
給炸彈人佈置一個「數字集合」,2️⃣切換量詞。觀察:同樣的集合,換一個量詞,命題的真假竟然完全相反!
| 量詞 | 性質P | 集合S | 真假 |
|---|
剛才的遊戲中,我們切換量詞來檢驗集合中的元素。仔細想想:
人教版必修第一冊(P28):
短語「任意」「所有」「每一個」在邏輯中通常叫做全稱量詞,符號表示為 ∀。
命題 ∀x∈M, P(x) 表示:對集合 M 中所有元素 x,P(x) 都成立。
短語「存在」「至少有一個」「有些」在邏輯中通常叫做存在量詞,符號表示為 ∃。
命題 ∃x∈M, P(x) 表示:在集合 M 中存在元素 x,使 P(x) 成立。
量詞的否定是高考核心考點。💡 記住口訣:「量詞變,結論否」。
在命題 ∀x∈S, x>k 中,k 是一個閾值。 當 k 增大時,滿足條件的元素減少,全稱命題更容易為假。
# ∀x∈S, P(x) 等價於 all(P(x) for x in S) # ∃x∈S, P(x) 等價於 any(P(x) for x in S) S = [1, 2, 3, 4, 5] # ∀x∈S, x>0 print(all(x > 0 for x in S)) # True # ∃x∈S, x>3 print(any(x > 3 for x in S)) # True # 否定: ¬(∀x, P(x)) = ∃x, ¬P(x) # all()的否定是any(),反之亦然
True True
def negate(quantifier, predicate, domain): """求命題的否定:∀變∃,∃變∀,P取否""" if quantifier == 'forall': new_q = 'exists' new_p = lambda x: not predicate(x) result = any(new_p(x) for x in domain) else: new_q = 'forall' new_p = lambda x: not predicate(x) result = all(new_p(x) for x in domain) return new_q, result # 例:¬(∀x∈[1,2,3], x>0)) = ∃x, x≤0 S = [1, 2, 3] q, r = negate('forall', lambda x: x>0, S) print(f'否定後: {q}, 真假: {r}') # exists, False
否定後: exists, 真假: False