comparison src/Hoas.v @ 297:b441010125d4

Everything compiles in Coq 8.3pl1
author Adam Chlipala <adam@chlipala.net>
date Fri, 14 Jan 2011 14:39:12 -0500
parents 2c88fc1dbe33
children 7b38729be069
comparison
equal deleted inserted replaced
296:559ec7328410 297:b441010125d4
1 (* Copyright (c) 2008-2010, Adam Chlipala 1 (* Copyright (c) 2008-2011, Adam Chlipala
2 * 2 *
3 * This work is licensed under a 3 * This work is licensed under a
4 * Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 4 * Creative Commons Attribution-Noncommercial-No Derivative Works 3.0
5 * Unported License. 5 * Unported License.
6 * The license text is available at: 6 * The license text is available at:
7 * http://creativecommons.org/licenses/by-nc-nd/3.0/ 7 * http://creativecommons.org/licenses/by-nc-nd/3.0/
8 *) 8 *)
9 9
10 (* begin hide *) 10 (* begin hide *)
11 Require Import Eqdep String List. 11 Require Import Eqdep String List FunctionalExtensionality.
12 12
13 Require Import Axioms Tactics. 13 Require Import Tactics.
14 14
15 Set Implicit Arguments. 15 Set Implicit Arguments.
16 (* end hide *) 16 (* end hide *)
17 17
18 18
725 end; 725 end;
726 match type of H with 726 match type of H with
727 | ?F = ?G => 727 | ?F = ?G =>
728 let ec := equate_conj F G in 728 let ec := equate_conj F G in
729 let var := fresh "var" in 729 let var := fresh "var" in
730 assert ec; [ intuition; unfold Exp; apply ext_eq; intro var; 730 assert ec; [ intuition; unfold Exp; extensionality var;
731 assert (H' : F var = G var); try congruence; 731 assert (H' : F var = G var); try congruence;
732 match type of H' with 732 match type of H' with
733 | ?X = ?Y => 733 | ?X = ?Y =>
734 let X := eval hnf in X in 734 let X := eval hnf in X in
735 let Y := eval hnf in Y in 735 let Y := eval hnf in Y in
736 change (X = Y) in H' 736 change (X = Y) in H'
737 end; injection H'; my_crush'; tauto 737 end; injection H'; my_crush'; tauto
738 | intuition; subst ] 738 | intuition; subst ]
739 end); 739 end);
740 clear H 740 clear H
741 end; my_crush'); 741 end; my_crush');
742 my_crush'. 742 my_crush'.