-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathrules.v
More file actions
281 lines (189 loc) · 6.41 KB
/
rules.v
File metadata and controls
281 lines (189 loc) · 6.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
(*
Copyright 2014 Cornell University
Copyright 2015 Cornell University
Copyright 2016 Cornell University
Copyright 2017 Cornell University
Copyright 2018 Cornell University
This file is part of VPrl (the Verified Nuprl project).
VPrl is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
VPrl is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with VPrl. If not, see <http://www.gnu.org/licenses/>.
Websites: http://nuprl.org/html/verification
http://nuprl.org/html/Nuprl2Coq
https://github.com/vrahli/NuprlInCoq
Authors: Vincent Rahli
Abhishek Anand
Mark Bickford
*)
(* contains an alternate definition of sosub: *)
Require Import sosub_variant.
(* contains an alternate definition of alphaeq in terms of variable swapping: *)
Require Import swap.
Require Import functionality.
(* contains a proof that n:Nat->Univ(n) is a Nuprl type: *)
Require Import function_all_types.
(* contains a proof that U(n:Nat;Univ(n)) is a Nuprl type: *)
Require Import union_all_types.
(* weak consistency *)
Require Import weak_consistency.
(* Rules(structural): *)
Require Import rules_struct.
Require Import rules_struct2.
Require Import rules_move.
(* Bar Induction on nats: *)
Require Import bar_induction3.
(* Bar Induction on nats with constraint on the spread: *)
Require Import bar_induction3_con.
(* A more useful version than the one proved in bar_induction3_con
(the inductive case is inductive over R too): *)
Require Import bar_induction5_con.
(* Bar Induction on sequences of closed terms without atoms: *)
Require Import bar_induction_cterm2.
(* Same as bar_induction_cterm2 but a simpler 0-sequence: *)
Require Import bar_induction_cterm3.
(* Same as bar_induction_cterm3 but squashed bar in base hyp: *)
Require Import bar_induction_cterm4.
(* Require Import rules_barind. *)
(* Kripke's Schema *)
Require Import kripkes_schema.
Require Import kripkes_schema2.
(* Choice sequences: *)
Require Import choice_sequence_ind.
Require Import choice_sequence_ind2.
(* Axiom of Choice: *)
Require Import axiom_choice.
Require Import axiom_choice_gen.
(*Require Import axiom_choice2.*)
(* Rules(squiggle): *)
Require Import rules_squiggle.
Require Import rules_squiggle2.
Require Import rules_squiggle3.
Require Import rules_squiggle4.
Require Import rules_squiggle5.
Require Import rules_squiggle6.
Require Import rules_squiggle7.
Require Import rules_squiggle8.
Require Import rules_base.
(* Rules(exception): *)
Require Import rules_exception.
Require Import rules_exception2.
Require Import rules_decide_exception.
Require Import rules_arith_exception.
Require Import rules_cft_exception.
Require Import rules_apply_exception.
Require Import rules_cbv_exception.
Require Import rules_less_exception.
(* Rules(try): *)
Require Import rules_try.
(* Rules(callbyvalue): *)
Require Import rules_arith_callbyvalue.
Require Import rules_apply_callbyvalue.
Require Import rules_cft_callbyvalue.
Require Import rules_halts_spread.
Require Import rules_halts_decide.
Require Import rules_callbyvalue.
(* Cases rules for canonical form tests *)
Require Import rules_cft.
Require Import rules_inl_inr_cases.
Require Import rules_axiom_cases.
Require Import rules_isint.
(* Arithmetic Rules *)
Require Import rules_arith.
Require Import rules_integer.
Require Import rules_integer_ring.
Require Import rules_integer_division.
Require Import rules_integer_ordered_ring.
Require Import rules_minus.
Require Import rules_number.
(* Continuity axiom and rule: *)
Require Import continuity_roadmap.
(* Some results related to continuity and bar induction *)
Require Import unsquashed_continuity.
(* Functionality rules *)
Require Import rules_functionality.
Require Import rules_functionality_alt.
(* Set type *)
Require Import rules_set.
(* Equality type *)
Require Import rules_equality.
Require Import rules_equality2.
Require Import rules_equality3.
Require Import rules_equality_equality.
Require Import rules_equality_istype.
Require Import rules_equality4.
Require Import rules_equality5.
Require Import rules_equality6.
Require Import rules_equality7.
(* Type equality type *)
Require Import rules_tequality.
(* Intersection type *)
Require Import rules_isect.
Require Import rules_isect_alt.
Require Import rules_isect2.
(* Derivation of False from false hypotheses *)
Require Import rules_false.
(* A few lemmas using our verified rules *)
Require Import nuprl_lemmas1.
Require Import nuprl_lemmas2.
Require Import proof1.
Require Import proof_with_lib.
Require Import proof_with_lib_example1.
Require Import proof_with_lib_non_dep.
Require Import proof_with_lib_non_dep_example1.
Require Import sterm.
(* Function/pi type *)
Require Import rules_function.
Require Import rules_function_alt.
Require Import rules_function2.
(* Product/sum type *)
Require Import rules_product.
Require Import rules_product_alt.
(* Image type *)
Require Import rules_image.
(* PER types *)
Require Import rules_pertype.
Require Import rules_pertype_alt.
Require Import rules_pertype_equality_alt.
Require Import rules_ipertype.
Require Import rules_spertype.
Require Import rules_iper_function.
(* W type *)
Require Import rules_w.
Require Import rules_pw3.
(* classical rules *)
Require Import rules_classical.
(* Domain theory *)
Require Import rules_partial.
Require Import rules_mono.
(* Nominal rules *)
Require Import rules_fresh.
(* Universe type *)
Require Import rules_uni.
(* Void type: *)
Require Import rules_void.
(* Union type: *)
Require Import rules_union.
Require Import rules_union_alt.
(* Squash rules (derivable) *)
Require Import rules_squash.
(* Rules(atoms): *)
Require Import rules_atom_atom.
Require Import rules_atom_struct.
Require Import rules_free_from_atom.
(* Typehood: *)
Require Import rules_typehood.
Require Import rules_using_typehood.
(* further type system properties: *)
Require Import per_props_equality2.
(* ?? *)
Require Import rules_subtype.
Require Import rules_pertype_equality_alt.
Require Import rules_isint_cases.
(* Require Import rules_per_function. *)