1 (**************************************************************************)
4 (* ||A|| A project by Andrea Asperti *)
6 (* ||I|| Developers: *)
7 (* ||T|| The HELM team. *)
8 (* ||A|| http://helm.cs.unibo.it *)
10 (* \ / This file is distributed under the terms of the *)
11 (* v GNU General Public License Version 2 *)
13 (**************************************************************************)
15 (* This file was automatically generated: do not edit *********************)
19 (*#***********************************************************************)
21 (* v * The Coq Proof Assistant / The Coq Development Team *)
23 (* <O___,, * CNRS-Ecole Polytechnique-INRIA Futurs-Universite Paris Sud *)
25 (* \VV/ **************************************************************)
27 (* // * This file is distributed under the terms of the *)
29 (* * GNU Lesser General Public License Version 2.1 *)
31 (*#***********************************************************************)
33 (*i $Id: Lexicographic_Product.v,v 1.12.2.1 2004/07/16 19:31:19 herbelin Exp $ i*)
35 (*#* Authors: Bruno Barras, Cristina Cornes *)
37 include "Logic/Eqdep.ma".
39 include "Relations/Relation_Operators.ma".
41 include "Wellfounded/Transitive_Closure.ma".
43 (*#* From : Constructing Recursion Operators in Type Theory
44 L. Paulson JSC (1986) 2, 325-355 *)
47 Section WfLexicographic_Product
51 cic:/Coq/Wellfounded/Lexicographic_Product/WfLexicographic_Product/A.var
55 cic:/Coq/Wellfounded/Lexicographic_Product/WfLexicographic_Product/B.var
59 cic:/Coq/Wellfounded/Lexicographic_Product/WfLexicographic_Product/leA.var
63 cic:/Coq/Wellfounded/Lexicographic_Product/WfLexicographic_Product/leB.var
67 Notation LexProd := (lexprod A B leA leB).
71 Hint Resolve t_step Acc_clos_trans wf_clos_trans.
74 inline procedural "cic:/Coq/Wellfounded/Lexicographic_Product/acc_A_B_lexprod.con" as lemma.
76 inline procedural "cic:/Coq/Wellfounded/Lexicographic_Product/wf_lexprod.con" as theorem.
79 End WfLexicographic_Product
83 Section Wf_Symmetric_Product
87 cic:/Coq/Wellfounded/Lexicographic_Product/Wf_Symmetric_Product/A.var
91 cic:/Coq/Wellfounded/Lexicographic_Product/Wf_Symmetric_Product/B.var
95 cic:/Coq/Wellfounded/Lexicographic_Product/Wf_Symmetric_Product/leA.var
99 cic:/Coq/Wellfounded/Lexicographic_Product/Wf_Symmetric_Product/leB.var
103 Notation Symprod := (symprod A B leA leB).
108 [x:A*B]<{_:A&B}>Case x of [a:A][b:B](existS A [_:A]B a b) end.
110 Lemma incl_sym_lexprod: (included (A*B) Symprod
111 (R_o_f (A*B) {_:A&B} sig_prod (lexprod A [_:A]B leA [_:A]leB))).
115 (Induction y1;Intros).
119 (Apply left_lex;Auto with sets).
121 (Apply right_lex;Auto with sets).
125 inline procedural "cic:/Coq/Wellfounded/Lexicographic_Product/Acc_symprod.con" as lemma.
127 inline procedural "cic:/Coq/Wellfounded/Lexicographic_Product/wf_symprod.con" as lemma.
130 End Wf_Symmetric_Product
138 cic:/Coq/Wellfounded/Lexicographic_Product/Swap/A.var
142 cic:/Coq/Wellfounded/Lexicographic_Product/Swap/R.var
146 Notation SwapProd := (swapprod A R).
149 inline procedural "cic:/Coq/Wellfounded/Lexicographic_Product/swap_Acc.con" as lemma.
151 inline procedural "cic:/Coq/Wellfounded/Lexicographic_Product/Acc_swapprod.con" as lemma.
153 inline procedural "cic:/Coq/Wellfounded/Lexicographic_Product/wf_swapprod.con" as lemma.