我正在尝试证明Coq中的简单引理,其中假设是一个析取项。我知道在目标中发生split
析取时,
但是当它们出现在假设中时,就无法对其进行拆分。这是我的示例:
Theorem splitting_disjunctions_in_hypotheses : forall (n : nat),
((n < 5) \/ (n > 8)) -> ((n > 7) \/ (n < 6)).
Proof.
intros n H1.
split H1. (** this doesn't work ... *)
这是Coq所说的:
1 subgoal
n : nat
H1 : n < 5 \/ n > 8
______________________________________(1/1)
n > 7 \/ n < 6
有错误:
Error: Illegal tactic application.
我显然缺少简单的东西。 非常感谢任何帮助,谢谢!
答案 0 :(得分:2)
您想要的策略是destruct
。
destruct H1 as [name1 | name2].
如果您想命名得出的假设,可以进行while(inf){
string ML,MSV;
inf>>ML>>MSV;
ListOfStudent.push_back(Student(ML,MSV));
}
。