簡體   English   中英

Agda,布爾命題

[英]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

我只是對如何做到這一點感到困惑。 PtruePtrue返回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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM