mirror of
https://github.com/achlipala/frap.git
synced 2024-11-10 00:07:51 +00:00
Polymorphism: add a comment about the infamous quantifier-ordering issue with induction
This commit is contained in:
parent
cf4d06c222
commit
643d44e524
1 changed files with 7 additions and 0 deletions
|
@ -189,6 +189,13 @@ Proof.
|
||||||
equality.
|
equality.
|
||||||
Qed.
|
Qed.
|
||||||
|
|
||||||
|
(* IMPORTANT NOTE: the proof above would *not* have worked with the orders of
|
||||||
|
* variables [ls] and [acc] swapped in the lemma statement! Try the proof that
|
||||||
|
* way to see what goes wrong. The problem is that the induction hypothesis
|
||||||
|
* would be too weak. A single [acc] value would be fixed for the whole proof,
|
||||||
|
* while we need [acc] to *vary* throughout the induction, by retaining a
|
||||||
|
* universal quantifier for it in the IH. *)
|
||||||
|
|
||||||
(* Concatenating the empty list has no effect. *)
|
(* Concatenating the empty list has no effect. *)
|
||||||
Lemma app_nil : forall A (ls : list A),
|
Lemma app_nil : forall A (ls : list A),
|
||||||
ls ++ [] = ls.
|
ls ++ [] = ls.
|
||||||
|
|
Loading…
Reference in a new issue