comparison src/Generic.v @ 428:b027b39606ed

Pass through Generic, to incorporate new coqdoc features
author Adam Chlipala <adam@chlipala.net>
date Thu, 26 Jul 2012 11:22:46 -0400
parents 7c2167c3fbb2
children 8077352044b2
comparison
equal deleted inserted replaced
427:5e6b76ca14de 428:b027b39606ed
358 end 358 end
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 *)
364 Definition append' := append.
365 (* end hide *)
366
363 (** 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. *) 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. *)
364 368
365 369
366 (** ** Mapping *) 370 (** ** Mapping *)
367 371
639 ]] 643 ]]
640 644
641 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.*) 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.*)
642 646
643 induction r; crush. 647 induction r; crush.
648
649 (* begin hide *)
650 Definition pred' := pred.
651 (* end hide *)
644 652
645 (** 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). 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).
646 [[ 654 [[
647 H : forall i : fin (S n), 655 H : forall i : fin (S n),
648 fx T 656 fx T