抽象与平等

时间:2019-05-15 12:44:20

标签: agda

在以下示例中

open import Agda.Builtin.Nat
open import Agda.Builtin.Equality

postulate
  f : Nat → Nat
  g : ∀{x y} → f x ≡ suc y → Nat

h : Nat → Nat
h x with f x
h x | zero = zero
h x | suc y = g {x} {y} {!refl!}

Agda不接受refl作为参数。

主要问题是

  1. 我在做什么错?
  2. 证明这种东西的正确/最佳/确定/优选的方式是什么?

当然,对Agda行为的任何见解都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

≡-Reasoning and 'with' patternsAgda: type isn't simplified in with block应该回答您的问题。 The official docs描述了如何做自己想做的事,但它们似乎不太适合初学者。