省略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').