省略Coq中的forall
我发现了一个有趣的逻辑定理,我想研究一下。但当我在科奇德运行它时,它在一开始就被卡住了省略Coq中的forall,coq,Coq,我发现了一个有趣的逻辑定理,我想研究一下。但当我在科奇德运行它时,它在一开始就被卡住了 Inductive Term: Set := K: Term | S: Term | app: Term -> Term -> Term. Inductive one_step: Term -> Term -> Prop := redk: (m, n: Term) (one_step (app (app K m) n) m) | reds: (m, n
Inductive Term: Set :=
K: Term |
S: Term |
app: Term -> Term -> Term.
Inductive one_step: Term -> Term -> Prop :=
redk: (m, n: Term) (one_step (app (app K m) n) m) |
reds: (m, n, p: Term) (one_step (app (app (app S m) n) p) (app (app m p) (app n p))) |
redl: (m, m', n: Term) (one_step m m') -> (one_step (app m n) (app m' n)) |
redr: (m, n, n': Term) (one_step n n') -> (one_step (app m n) (app m n')).
由于在当前环境中找不到引用m,一个_步骤的定义失败
我知道缺少的术语是通用的,但是没有它,原始代码是如何运行的呢?是否需要加载一些模块以使其隐式化
如果有编译代码所需的额外模块的列表,也会非常有帮助。自7.4版以来,语法发生了一些变化,本次开发测试了7.4版。以下是一个适用于8.4的版本:
Inductive Term: Set :=
K: Term |
S: Term |
app: Term -> Term -> Term.
Inductive one_step: Term -> Term -> Prop :=
| redk (m n: Term) : one_step (app (app K m) n) m
| reds (m n p: Term) : one_step (app (app (app S m) n) p) (app (app m p) (app n p))
| redl (m m' n: Term) : one_step m m' -> one_step (app m n) (app m' n)
| redr (m n n': Term) : one_step n n' -> one_step (app m n) (app m n').