我很困惑为什么 assert 和 cut 在这种情况下表现不同。我试图用 ssreflect seq 库来证明这个引理。
Lemma subseq_add_both: forall{A: eqType} (L1 L2: seq A) (a: A),
subseq L1 L2 -> subseq (a:: L1) (a :: L2).
Proof. intros.
assert (subseq [:: a] (a:: L2)).
以上工作正常。然而,
Lemma subseq_add_both: forall{A: eqType} (L1 L2: seq A) (a: A),
subseq L1 L2 -> subseq (a:: L1) (a :: L2).
Proof. intros.
cut (subseq [:: a] (a:: L2)).
产生错误
Error: Not a proposition or a type.
为什么会这样?我认为 assert 和 cut 都会将任意目标作为参数,但显然情况并非如此。这两种策略在其工作目标方面有何不同?
谢谢你。