在Agda中的`where`语句中打开一个特定实例

时间:2017-12-19 16:18:14

标签: agda

当我编写大量的agda代码时,我总是在代码中使用这种繁琐的模式。假设我有record类型定义数学结构:

record A (T : Set) : Set where
    m1 = -- ...
    m2 = -- ...
    m3 = -- ...
    field
        f1 : -- ...
        f2 : -- ...
        f3 : -- ...

然后我证明了这个结构的属性A

theorem : ∀ {S} -> A S -> -- ...
theorem a = -- ...
    where
        m1 = A.m1 a
        m2 = A.m2 a
        f1 = A.f1 a
        f2 = A.f2 a
        -- ...

这很烦人。我可以open A然后我只有m1m2a映射到我想要的对象。我想要open a之类的内容,以便m1直接引用(A.m1 a)。我在Agda文档中找不到任何关于此事的内容。有没有这样的语法糖?这个问题是绝大多数(可能是我的代码的60%)的原因。在每一个定理中,我都打开了整个结构......我做错了什么?我该如何解决这个问题?

0 个答案:

没有答案