我想在agda中实现这个声明;
A dedekind cut is a pair (L, U) of mere predicates L : Q -> Set and R : Q -> Set which is
1) inhibited : exists (q : Q) . L(q) ^ exists (r : Q) . U(r)
我试过这种方式,
record cut : Set where
field
L : Q -> Set
R : Q -> Set
inhibited : exists (q : Q) . L(q) ^ exists (r : Q) . U(r)
但这不起作用。我想写这个,我很高兴请帮忙。还有1)data R : Set and record R : Set and 2) data R : Set and data R : Q -> Set
答案 0 :(得分:1)
我不知道如何定义整个 dedekind cut ,尽管我确实在同伦类型理论:单一数学基础的第369页找到了你的定义。
以下是在两个表单中定义您在问题中询问的内容的语法,一个使用标准库,另一个展开以显示它正在做什么。
open import Data.Product using (∃)
record Cut (Q : Set) : Set₁ where
field
L U : Q → Set -- The two predicates
L-inhabited : ∃ L
U-inhabited : ∃ U
如果我们手动扩展∃(存在)的定义,我们有:
record Cut′ (Q : Set) : Set₁ where
field
L U : Q → Set -- The two predicates
q r : Q -- Witnesses
Lq : L q -- Witness satisfies predicate
Ur : U r -- Witness satisfies predicate
请注意,由于字段类型Set₁
和L
,记录的类型为U
。
关于记录和归纳定义数据类型的问题,存在很多差异。您可能希望从维基开始,如果遇到困难,可以提出更具体的问题:Data,Records