[英]Agda, Boolean Proposition
前言請注意,這是一項作業。 第一個問題已經被問到一個問題。 所以我們有數據類型:
data BoolProp : ??? where
ptrue : BoolProp true
pfalse : BoolProp false
pand : (P Q : Bool) -> (BoolProp P) -> (BoolProp Q) -> BoolProp (P ??? Q)
por : (P Q : Bool) -> (BoolProp P) -> (BoolProp Q) -> BoolProp (P ??? Q)
pnot : (P : Bool) -> BoolProp (not P)
現在我們被要求寫命題
eval (PAnd (POr PTrue PFalse) PFalse)
這應該返回BoolProp
false
我只是對如何做到這一點感到困惑。 Ptrue
將Ptrue
返回BoolProp true
但是por
的數據類型需要兩個Bool
而不是BoolProp
。 也許數據類型是錯誤的。 任何提神的人都會很棒
我應該補充一點,評估代碼是haskell代碼的片段
注意:編輯它不會放棄一切
您的代碼未編譯的原因是因為第一部分的括號不正確。 例如,對於pand,它應類似於pand:∀{PQ:Bool}→BoolProp P→BoolProp Q→BoolProp(P∧Q)
更改該內容,第二部分應編譯。 我有完全一樣的問題。
好吧,我不知道是否正確,這只是第一部分,如果您考慮最后一個問題的評估,我不知道。
但是對於第一部分,因為類型簽名是
prop : BoolProp false
我只是使prop等於eval語句。 由於eval語句應等於BoolProp。
所以
prop = (pand (por ptrue pfalse) pfalse)
也許是錯的,我不知道,但是Cc Cl和Cc Cn
我很高興
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.