#!/usr/bin/env python
# coding: utf-8
·命題邏輯:表示對應特定語句連線詞的語言結構部分
·布林運算子:連線詞的對應形式 ·命題符號:命題邏輯的基本表示式
import nltk
nltk.boolean_ops(
)
·公式:我們可以建立 命題邏輯的規範公式的無限集合。
# in[4]:
# nltk.logicparser換成了nltk.sem.expression.fromstring
# 將邏輯表示式 分析成 表示式的各種子類
lp = nltk.sem.expression.fromstring(
'-(p & q)')lp
# lp.parse()
# in[ ]:
lp = nltk.sem.expression.fromstring(
'p & q')lp
# in[ ]:
lp = nltk.sem.expression.fromstring(
'p | (r & q)')lp
# in[ ]:
lp = nltk.sem.expression.fromstring(
'p <-> --p'
) lp
·邏輯 是進行推理的重要工具。
·推理:用 論證的假設 去論證 結論。(從假設一步一步推到結論)
# in[2]:
import nltk
nltk.download(
)# in[2]:
import os
os.path
# in[3]:
snf = nltk.sem.expression.fromstring(
'snf'
)notfns = nltk.sem.expression.fromstring(
'-fns'
)r = nltk.sem.expression.fromstring(
'snf -> -fns'
)prover = nltk.prover9(
)prover.prove(notfns,
[snf, r]
)# 現在只能用win視覺化。。。
# in[ ]:
# # import os
# # os.environ['prover9hom']
# if os.path is none:
# searchpath = prover9_search
# if 'prover9home' in os.environ:
# searchpath.insert(0, os.environ['prover9home'])
·估值:從 邏輯的基本符號 對映到 它們的值。
# in[6]:
val = nltk.valuation([(
'p',
true),
('q'
,true),
('r'
,false)]
)# in[10]:
val[
'p']
, val[
'q']
, val[
'r']
# in[11]:
# 模型需要複雜些
dom =
set(
)g = nltk.assignment(dom)
# in[12]:
# 用val初始化模型m
m = nltk.model(dom, val)
# in[17]:
(m.evaluate(
'(p & q)'
, g)
(m.evaluate(
'-(p & q)'
, g)
(m.evaluate(
'(p & r)'
, g)
(m.evaluate(
'(p | r)'
, g)
)
·我們需要超越命題邏輯到乙個更有表現力的東西:一階邏輯。
命題邏輯 1
真值 命題可以取乙個值,稱為真值。真值只有 真 和 假 兩種,分別用 1 t 和 0 f 表示。命題 具有確切真值的陳述句。一切沒有判斷內容的句子,都不能作為命題。原子命題 不能再分解為更簡單的命題。復合命題 可以分解為成簡單的命題,與原子命題相對。聯結詞 否定聯結詞 非 合取聯結詞 並且 析取聯結...
命題邏輯 語義
乙個命題邏輯公式就是命題邏輯語言字母表上的符號串 這類似於乙個英文句子是英文本母表上的字串 命題邏輯的語法的本質是規定了命題邏輯語言字母表上的什麼樣的符號串才是合法的命題邏輯公式。與自然語言類似,乙個 簡單 的語句有對與錯的區分,相應的乙個命題公式也需要分辨真或假,而乙個公式本身是沒有真假值的,當給...
命題邏輯幾道題
乙個瘋狂的科學家有1000瓶酒,其中一瓶是有毒的。他也有數量有限的試紙,毒酒將永久改變試紙的顏色,但是只在十天後顯示出來。這位科學家想在第十一天舉行乙個聚會,為此需要篩選出有毒的酒。他怎樣使用最低數量的試紙找出那瓶毒酒?看到這個題目的第一眼我在想2 10 1024 1000,那答案是不是10張試紙?...