如何在 Agda 中声明公理?

How to declare axioms in Agda?

我正在阅读“代数驱动设计”一书,在第二章中它开始设计一个简单的代数系统,如下所示:

data Tile

haskell :: Tile
sandy :: Tile

cw :: Tile -> Tile

∀ (t :: Tile).
  cw (cw (cw (cw t))) = t

它从那里开始建立。所以我想如果我能有一个证明助手来跟进就好了。

我看到有人用 Coq here 做这个,我想肯定也可以在 Agda 中做,但我不知道如何定义公理,就像在 Coq 示例中定义的那样(Axiom cw : Tile -> Tile.).

请记住,我对实际实现这里的功能不感兴趣,我只需要根据一些公理做代数运算。

Axiom 的 Agda 等价物是 postulate,其工作方式应该基本相同。