【发布时间】:2016-10-18 13:06:51
【问题描述】:
问题是我们如何在 agda 中定义双射? 定义:
我们知道
2 + 2 = 2 × 2 = 2^2 = 4对于数字。同样,我们有这个
Bool + Bool ∼= Bool × Bool ∼= Bool → Bool其中 A ∼= B 表示 A 和 B 之间存在双射,即 有
f : A → B和g : B → A它们是每个的倒数 其他,即g (f x) = x为所有x : A和f (g y) = y全部y : B。在 Agda 中实现这些双射!
所以我首先定义了Bool 和一些函数:
data Bool : Set where
true : Bool
false : Bool
not : Bool → Bool
not true = false
not false = true
T : Bool → Set
T true = ⊤
T false = ⊥
_∧_ : Bool → Bool → Bool
true ∧ b = b
false ∧ b = false
_∨_ : Bool → Bool → Bool
true ∨ b = true
false ∨ b = b
_xor_ : Bool → Bool → Bool
true xor b = not b
false xor b = b
但我卡在双射上,完全不知道如何解决它。
【问题讨论】: