在coq中定义基本的归纳类型

问题描述 投票:1回答:1

关于coq的很基本的问题。如何定义以下两种归纳类型?

类型1包含:o fo,fo,ffo...k,sk,ssk,ssk...注意这里的f也可以表征为o的自然数指数。

类型2包含相同的内容,但现在我们也可以有fsffsk和sfso这样的术语。

coq
1个回答
1
投票

如果我对你的第一种类型理解正确的话,你可以通过结合Coq标准库中定义的简单类型来表示它。

Definition t1 : Type := nat + nat.

这个... + 类型上的运算符是两个类型的不相干联合。 我们的想法是,元素 inl n,注入到联合体的左边,代表字符串。fff...o,与 n 的出现 f而元素 inr n,它被注入到联合体的右边,代表字符串 sss...k,与 n 的出现 s.

我不明白第二种类型的模式。你真的想写 fsffsk 而不是 fsfsfsk?


1
投票

你真的需要把type2的定义建立在type1的基础上吗?因为实际上只是一个简单的定义。

Inductive type2 : Type :=
| o : type2
| k : type2
| f : type2 -> type2
| s : type2 -> type2
.

然后定义像:

Definition typeExample : type2 := f (s (f (s (s (f (s (k))))))).
© www.soinside.com 2019 - 2024. All rights reserved.