Dobbiamo convertire questo tipo di dati Haskell in agda codice:conversione del codice Haskell a Agda
data TRUE
data FALSE
data BoolProp :: * -> * where
PTrue :: BoolProp TRUE
PFalse :: BoolProp FALSE
PAnd :: BoolProp a -> BoolProp b -> BoolProp (a `AND` b)
POr :: BoolProp a -> BoolProp b -> BoolProp (a `OR` b)
PNot :: BoolProp a -> BoolProp (NOT a)
Questo è quello che ho finora:
module BoolProp where
open import Data.Bool
open import Relation.Binary.PropositionalEquality
data BoolProp : Set wheree
ptrue : BoolProp true
pfalse : BoolProp false
pand : (X Y : Bool) -> BoolProp X -> BoolProp Y -> BoolProp (X ? Y)
por : (X Y : Bool) -> BoolProp X -> BoolProp Y -> BoolProp (X ? Y)
pnot : (X : Bool) -> BoolProp X -> BoolProp (not X)
Ma sto ottenendo questo errore: "Set dovrebbe essere un tipo di funzione, ma non lo è quando si verifica che true siano argomenti validi per una funzione di tipo Set". Sto pensando che Set debba essere cambiato in qualcos'altro, ma sono confuso su cosa dovrebbe essere.