【发布时间】:2020-06-10 15:54:16
【问题描述】:
我想在 Coq 中编写和调试代码,类似于我在 Python、R 等中编写代码的方式。具体而言:
我有一个终端窗口,其中显示了我的code.v 文件,例如:
Definition double (x:nat) : nat := 2 * x.
Definition tripple (x:nat) : nat := 3 * x.
现在在另一个终端中,我想要一个可以接受命令的交互式 shell
从code.v 加载代码,检查它等。例如:
Load code.v // What's the command for this?
Print double. // Expect to see output "double : nat -> nat"
问题 1: 什么样的命令为我提供了这样的交互式 shell,我应该在交互式 shell 中执行什么命令来加载文件?
此外,如果在我的code.v 文件中我有一个未完成的证明,例如
Lemma ex4: forall (X : Set) (P : X -> Prop),
~(forall x, ~ (P x)) -> (exists x, (P x)).
Proof.
intros X P A.
apply not_all_ex_not in A.
destruct A.
问题 2: 是否有来自像 check code.v 这样的交互式 shell 的命令可以打印出我的证明状态,就像 Coqide 在您按下 ctrl+down 时所做的那样
1 subgoal
X : Set
P : X -> Prop
x : X
H : ~ ~ P x
______________________________________(1/1)
exists x0 : X, P x0
请注意,我更喜欢通过 linux 终端完成所有操作,而不是使用 IDE。
【问题讨论】: