在定义中使用元组

时间:2013-03-09 14:19:57

标签: isabelle

我想创建一个以元组为参数的定义。

definition my_def :: "('a × 'a) ⇒ bool" where
  "my_def (a, b) ⟷ a = b"

然而,这是不被接受的。错误消息是

Bad arguments on lhs: "(a, b)"
The error(s) above occurred in definition:
"my_def (a, b) ≡ a = b"

使用fun代替definition有效,但这不是我想要的。以下符号也有效,但有点难看:

definition my_def :: "('a × 'a) ⇒ bool" where
  "my_def t ⟷ fst t = snd t"

definition中使用元组作为参数的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

使用fun可能是最不痛苦的方法,定义包无法识别左侧的模式。

另一种选择是使用lambda表达式的元组模式: my_def ≡ %(a,b). a = b