Mercurial > cpdt > repo
comparison src/Coinductive.v @ 375:d1276004eec9
Finish pass over LogicProg; change [crush] to take advantage of new [Hint Rewrite] syntax that uses database [core] by default
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Mon, 26 Mar 2012 16:55:59 -0400 |
parents | 549d604c3d16 |
children | eb0fa506d04c |
comparison
equal
deleted
inserted
replaced
374:f3146d40c2a1 | 375:d1276004eec9 |
---|---|
617 | Plus _ _ => _ end] ] => destruct E | 617 | Plus _ _ => _ end] ] => destruct E |
618 | [ |- context[match ?E with O => _ | S _ => _ end] ] => destruct E | 618 | [ |- context[match ?E with O => _ | S _ => _ end] ] => destruct E |
619 end; crush). | 619 end; crush). |
620 Qed. | 620 Qed. |
621 | 621 |
622 Hint Rewrite optExp_correct : cpdt. | 622 Hint Rewrite optExp_correct . |
623 | 623 |
624 (** The final theorem is easy to establish, using our co-induction principle and a bit of Ltac smarts that we leave unexplained for now. Curious readers can consult the Coq manual, or wait for the later chapters of this book about proof automation. *) | 624 (** The final theorem is easy to establish, using our co-induction principle and a bit of Ltac smarts that we leave unexplained for now. Curious readers can consult the Coq manual, or wait for the later chapters of this book about proof automation. *) |
625 | 625 |
626 Theorem optCmd_correct : forall vs1 c vs2, evalCmd vs1 c vs2 | 626 Theorem optCmd_correct : forall vs1 c vs2, evalCmd vs1 c vs2 |
627 -> evalCmd vs1 (optCmd c) vs2. | 627 -> evalCmd vs1 (optCmd c) vs2. |