]> matita.cs.unibo.it Git - helm.git/blob - helm/software/matita/contribs/procedural/Coq/Arith/Wf_nat.mma
Preparing for 0.5.9 release.
[helm.git] / helm / software / matita / contribs / procedural / Coq / Arith / Wf_nat.mma
1 (**************************************************************************)
2 (*       ___                                                              *)
3 (*      ||M||                                                             *)
4 (*      ||A||       A project by Andrea Asperti                           *)
5 (*      ||T||                                                             *)
6 (*      ||I||       Developers:                                           *)
7 (*      ||T||         The HELM team.                                      *)
8 (*      ||A||         http://helm.cs.unibo.it                             *)
9 (*      \   /                                                             *)
10 (*       \ /        This file is distributed under the terms of the       *)
11 (*        v         GNU General Public License Version 2                  *)
12 (*                                                                        *)
13 (**************************************************************************)
14
15 (* This file was automatically generated: do not edit *********************)
16
17 include "Coq.ma".
18
19 (*#***********************************************************************)
20
21 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
22
23 (* <O___,, * CNRS-Ecole Polytechnique-INRIA Futurs-Universite Paris Sud *)
24
25 (*   \VV/  **************************************************************)
26
27 (*    //   *      This file is distributed under the terms of the       *)
28
29 (*         *       GNU Lesser General Public License Version 2.1        *)
30
31 (*#***********************************************************************)
32
33 (*i $Id: Wf_nat.v,v 1.16.2.1 2004/07/16 19:31:01 herbelin Exp $ i*)
34
35 (*#* Well-founded relations and natural numbers *)
36
37 include "Arith/Lt.ma".
38
39 (* UNEXPORTED
40 Open Local Scope nat_scope.
41 *)
42
43 (* UNEXPORTED
44 Implicit Types m n p : nat.
45 *)
46
47 (* UNEXPORTED
48 Section Well_founded_Nat
49 *)
50
51 (* UNEXPORTED
52 cic:/Coq/Arith/Wf_nat/Well_founded_Nat/A.var
53 *)
54
55 (* UNEXPORTED
56 cic:/Coq/Arith/Wf_nat/Well_founded_Nat/f.var
57 *)
58
59 inline procedural "cic:/Coq/Arith/Wf_nat/ltof.con" as definition.
60
61 inline procedural "cic:/Coq/Arith/Wf_nat/gtof.con" as definition.
62
63 inline procedural "cic:/Coq/Arith/Wf_nat/well_founded_ltof.con" as theorem.
64
65 inline procedural "cic:/Coq/Arith/Wf_nat/well_founded_gtof.con" as theorem.
66
67 (*#* It is possible to directly prove the induction principle going
68    back to primitive recursion on natural numbers ([induction_ltof1])
69    or to use the previous lemmas to extract a program with a fixpoint
70    ([induction_ltof2]) 
71
72 the ML-like program for [induction_ltof1] is : [[
73    let induction_ltof1 F a = indrec ((f a)+1) a 
74    where rec indrec = 
75         function 0    -> (function a -> error)
76                |(S m) -> (function a -> (F a (function y -> indrec y m)));;
77 ]]
78
79 the ML-like program for [induction_ltof2] is : [[
80    let induction_ltof2 F a = indrec a
81    where rec indrec a = F a indrec;;
82 ]] *)
83
84 inline procedural "cic:/Coq/Arith/Wf_nat/induction_ltof1.con" as theorem.
85
86 inline procedural "cic:/Coq/Arith/Wf_nat/induction_gtof1.con" as theorem.
87
88 inline procedural "cic:/Coq/Arith/Wf_nat/induction_ltof2.con" as theorem.
89
90 inline procedural "cic:/Coq/Arith/Wf_nat/induction_gtof2.con" as theorem.
91
92 (*#* If a relation [R] is compatible with [lt] i.e. if [x R y => f(x) < f(y)]
93     then [R] is well-founded. *)
94
95 (* UNEXPORTED
96 cic:/Coq/Arith/Wf_nat/Well_founded_Nat/R.var
97 *)
98
99 (* UNEXPORTED
100 cic:/Coq/Arith/Wf_nat/Well_founded_Nat/H_compat.var
101 *)
102
103 inline procedural "cic:/Coq/Arith/Wf_nat/well_founded_lt_compat.con" as theorem.
104
105 (* UNEXPORTED
106 End Well_founded_Nat
107 *)
108
109 inline procedural "cic:/Coq/Arith/Wf_nat/lt_wf.con" as lemma.
110
111 inline procedural "cic:/Coq/Arith/Wf_nat/lt_wf_rec1.con" as lemma.
112
113 inline procedural "cic:/Coq/Arith/Wf_nat/lt_wf_rec.con" as lemma.
114
115 inline procedural "cic:/Coq/Arith/Wf_nat/lt_wf_ind.con" as lemma.
116
117 inline procedural "cic:/Coq/Arith/Wf_nat/gt_wf_rec.con" as lemma.
118
119 inline procedural "cic:/Coq/Arith/Wf_nat/gt_wf_ind.con" as lemma.
120
121 inline procedural "cic:/Coq/Arith/Wf_nat/lt_wf_double_rec.con" as lemma.
122
123 inline procedural "cic:/Coq/Arith/Wf_nat/lt_wf_double_ind.con" as lemma.
124
125 (* UNEXPORTED
126 Hint Resolve lt_wf: arith.
127 *)
128
129 (* UNEXPORTED
130 Hint Resolve well_founded_lt_compat: arith.
131 *)
132
133 (* UNEXPORTED
134 Section LT_WF_REL
135 *)
136
137 (* UNEXPORTED
138 cic:/Coq/Arith/Wf_nat/LT_WF_REL/A.var
139 *)
140
141 (* UNEXPORTED
142 cic:/Coq/Arith/Wf_nat/LT_WF_REL/R.var
143 *)
144
145 (* Relational form of inversion *)
146
147 (* UNEXPORTED
148 cic:/Coq/Arith/Wf_nat/LT_WF_REL/F.var
149 *)
150
151 inline procedural "cic:/Coq/Arith/Wf_nat/inv_lt_rel.con" as definition.
152
153 (* UNEXPORTED
154 cic:/Coq/Arith/Wf_nat/LT_WF_REL/F_compat.var
155 *)
156
157 inline procedural "cic:/Coq/Arith/Wf_nat/acc_lt_rel.con" as remark.
158
159 inline procedural "cic:/Coq/Arith/Wf_nat/well_founded_inv_lt_rel_compat.con" as theorem.
160
161 (* UNEXPORTED
162 End LT_WF_REL
163 *)
164
165 inline procedural "cic:/Coq/Arith/Wf_nat/well_founded_inv_rel_inv_lt_rel.con" as lemma.
166