Mercurial > cpdt > repo
comparison src/Generic.v @ 437:8077352044b2
A pass over all formatting, after big pile of coqdoc changes
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Fri, 27 Jul 2012 16:47:28 -0400 |
parents | b027b39606ed |
children | b1fead9f68f2 |
comparison
equal
deleted
inserted
replaced
436:5d5e44f905c7 | 437:8077352044b2 |
---|---|
359 : forall A : Type, (A -> string) -> tree A -> string | 359 : forall A : Type, (A -> string) -> tree A -> string |
360 ]] | 360 ]] |
361 *) | 361 *) |
362 | 362 |
363 (* begin hide *) | 363 (* begin hide *) |
364 (* begin thide *) | |
364 Definition append' := append. | 365 Definition append' := append. |
366 (* end thide *) | |
365 (* end hide *) | 367 (* end hide *) |
366 | 368 |
367 (** Some of these simplified terms seem overly complex because we have turned off simplification of calls to [append], which is what uses of the [++] operator desugar to. Selective [++] simplification would combine adjacent string literals, yielding more or less the code we would write manually to implement this printing scheme. *) | 369 (** Some of these simplified terms seem overly complex because we have turned off simplification of calls to [append], which is what uses of the [++] operator desugar to. Selective [++] simplification would combine adjacent string literals, yielding more or less the code we would write manually to implement this printing scheme. *) |
368 | 370 |
369 | 371 |
645 At this point, it is helpful to proceed by an inner induction on the heterogeneous list [r] of recursive call results. We could arrive at a cleaner proof by breaking this step out into an explicit lemma, but here we will do the induction inline to save space.*) | 647 At this point, it is helpful to proceed by an inner induction on the heterogeneous list [r] of recursive call results. We could arrive at a cleaner proof by breaking this step out into an explicit lemma, but here we will do the induction inline to save space.*) |
646 | 648 |
647 induction r; crush. | 649 induction r; crush. |
648 | 650 |
649 (* begin hide *) | 651 (* begin hide *) |
652 (* begin thide *) | |
650 Definition pred' := pred. | 653 Definition pred' := pred. |
654 (* end thide *) | |
651 (* end hide *) | 655 (* end hide *) |
652 | 656 |
653 (** The base case is discharged automatically, and the inductive case looks like this, where [H] is the outer IH (for induction over [T] values) and [IHn] is the inner IH (for induction over the recursive arguments). | 657 (** The base case is discharged automatically, and the inductive case looks like this, where [H] is the outer IH (for induction over [T] values) and [IHn] is the inner IH (for induction over the recursive arguments). |
654 [[ | 658 [[ |
655 H : forall i : fin (S n), | 659 H : forall i : fin (S n), |