在数据库理论中,假设存在两个包含变量和常量的不相交集。
我想在我的值的类型级别区分变量和常量,使用以下两种归纳类型:
Inductive variable :=
| var : string -> variable.
Inductive constant :=
| con : string -> constant.
然后,我想在内部使用相同的字符串定义一个将变量映射到常量的函数。
我可以使用以下定义达到这个目标:
Definition variable_to_constant : variable -> constant.
intros.
destruct H.
apply (con s).
Defined.
Check test.
test
: variable -> constant
Eval compute in (variable_to_constant (var "hello")).
= con "hello"
: constant
我的问题是:是否有更优雅的解决方案来定义此功能? (我的意思是,不使用“已定义。”关键字,也许......)
这是我使用Coq的第一个开发,所以如果您认为我的实现方法是错误的,请告诉我: - )
度过美好的一天!
Fabian Pijcke
答案 0 :(得分:3)
您可以直接编写函数的代码,而不是使用策略以交互方式构建它:
Definition variable_to_constant : variable -> constant :=
fun v => match v with var str => con str end.
甚至打火机:
Definition variable_to_constant (v : variable) : constant :=
match v with var str => con str end.