作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题是我们如何在 agda 中定义双射?定义:
We know that
2 + 2 = 2 × 2 = 2^2 = 4
for numbers. Similarly, we have that
Bool + Bool ∼= Bool × Bool ∼= Bool → Bool
where A ∼= B means that there is a bijection between A and B, that is, that there are
f : A → B
andg : B → A
which are inverses of each other, that is,g (f x) = x
for allx : A
andf (g y) = y
for ally : B
.Implement these bijections in 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
但我卡在了双射问题上,完全不确定如何解决。
最佳答案
你的考试文本也说明了双射应该是什么。
there are
f : A → B
andg : B → A
which are inverses of each other, that is,g (f x) = x
for allx : A
andf (g y) = y
for ally : B
在 Agda 中你可以定义一个记录来打包所有这些:
record Bijection (A B : Set) : Set where
field
to : A -> B
from : B -> A
from-to : (x : A) -> from (to x) ≡ x
to-from : (y : B) -> to (from y) ≡ y
您应该自己实现的实际双射。
关于boolean - 在 Agda 中定义双射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40109164/
我是一名优秀的程序员,十分优秀!