我想描述的整數:在Agda中可以定義一個具有方程的數據類型嗎?
data Integer : Set where
Z : Integer
Succ : Integer -> Integer
Pred : Integer -> Integer
?? what else
以上沒有定義的整數。我們需要Succ(Pred x)= x和Pred(Succ x)= x。但是,
spReduce : (m : Integer) -> Succ (Pred m) = m
psReduce : (m : Integer) -> Pred (Succ m) = m
無法添加到數據類型。整數的一個更好的定義是肯定,
data Integers : Set where
Pos : Nat -> Integers
Neg : Nat -> Integers
不過我很好奇,如果有等式添加到數據類型的方式。
請注意,由於0是一個「Nat」,所以您仍然可以將'Pos 0'和'Neg 0'作爲整數0的兩個冗餘表示形式。 – Cactus 2014-10-28 02:48:05