10.2 命題邏輯

#!/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]:


print(m.evaluate('(P & Q)', g))
print(m.evaluate('-(P & Q)', g))
print(m.evaluate('(P & R)', g))
print(m.evaluate('(P | R)', g))
·我們需要超越命題邏輯到一個更有表現力的東西:一階邏輯。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章