]> matita.cs.unibo.it Git - helm.git/blob - helm/software/matita/contribs/CoRN-Procedural/tactics/RingReflection.mma
matitadep: we now handle the inline of an uri, we removed the -exclude option
[helm.git] / helm / software / matita / contribs / CoRN-Procedural / tactics / RingReflection.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 "CoRN.ma".
18
19 (* $Id: RingReflection.v,v 1.4 2004/04/23 10:01:06 lcf Exp $ *)
20
21 (* begin hide *)
22
23 include "algebra/CRings.ma".
24
25 include "tactics/AlgReflection.ma".
26
27 (* UNEXPORTED
28 Section Ring_Interpretation_Function
29 *)
30
31 alias id "R" = "cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/R.var".
32
33 alias id "val" = "cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/val.var".
34
35 alias id "unop" = "cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/unop.var".
36
37 alias id "binop" = "cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/binop.var".
38
39 alias id "pfun" = "cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/pfun.var".
40
41 inline procedural "cic:/CoRN/tactics/RingReflection/interpR.ind".
42
43 inline procedural "cic:/CoRN/tactics/RingReflection/wfR.con".
44
45 inline procedural "cic:/CoRN/tactics/RingReflection/xexprR.ind".
46
47 inline procedural "cic:/CoRN/tactics/RingReflection/xforgetR.con".
48
49 inline procedural "cic:/CoRN/tactics/RingReflection/xinterpR.con".
50
51 inline procedural "cic:/CoRN/tactics/RingReflection/xexprR2interpR.con".
52
53 inline procedural "cic:/CoRN/tactics/RingReflection/xexprR_diagram_commutes.con".
54
55 inline procedural "cic:/CoRN/tactics/RingReflection/xexprR2wfR.con".
56
57 inline procedural "cic:/CoRN/tactics/RingReflection/fexprR.ind".
58
59 inline procedural "cic:/CoRN/tactics/RingReflection/fexprR_var.con".
60
61 inline procedural "cic:/CoRN/tactics/RingReflection/fexprR_int.con".
62
63 inline procedural "cic:/CoRN/tactics/RingReflection/fexprR_plus.con".
64
65 inline procedural "cic:/CoRN/tactics/RingReflection/fexprR_mult.con".
66
67 inline procedural "cic:/CoRN/tactics/RingReflection/fforgetR.con".
68
69 inline procedural "cic:/CoRN/tactics/RingReflection/fexprR2interp.con".
70
71 inline procedural "cic:/CoRN/tactics/RingReflection/fexprR2wf.con".
72
73 (* UNEXPORTED
74 Opaque csg_crr.
75 *)
76
77 (* UNEXPORTED
78 Opaque cm_crr.
79 *)
80
81 (* UNEXPORTED
82 Opaque cg_crr.
83 *)
84
85 (* UNEXPORTED
86 Opaque cr_crr.
87 *)
88
89 (* UNEXPORTED
90 Opaque csf_fun.
91 *)
92
93 (* UNEXPORTED
94 Opaque csbf_fun.
95 *)
96
97 (* UNEXPORTED
98 Opaque csr_rel.
99 *)
100
101 (* UNEXPORTED
102 Opaque cs_eq.
103 *)
104
105 (* UNEXPORTED
106 Opaque cs_neq.
107 *)
108
109 (* UNEXPORTED
110 Opaque cs_ap.
111 *)
112
113 (* UNEXPORTED
114 Opaque cm_unit.
115 *)
116
117 (* UNEXPORTED
118 Opaque csg_op.
119 *)
120
121 (* UNEXPORTED
122 Opaque cg_inv.
123 *)
124
125 (* UNEXPORTED
126 Opaque cg_minus.
127 *)
128
129 (* UNEXPORTED
130 Opaque cr_one.
131 *)
132
133 (* UNEXPORTED
134 Opaque cr_mult.
135 *)
136
137 (* UNEXPORTED
138 Opaque nexp_op.
139 *)
140
141 inline procedural "cic:/CoRN/tactics/RingReflection/refl_interpR.con".
142
143 inline procedural "cic:/CoRN/tactics/RingReflection/interpR_wd.con".
144
145 (* UNEXPORTED
146 End Ring_Interpretation_Function
147 *)
148
149 (* UNEXPORTED
150 Section Ring_NormCorrect
151 *)
152
153 alias id "R" = "cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/R.var".
154
155 alias id "val" = "cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/val.var".
156
157 alias id "unop" = "cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/unop.var".
158
159 alias id "binop" = "cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/binop.var".
160
161 alias id "pfun" = "cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/pfun.var".
162
163 (* NOTATION
164 Notation II := (interpR R val unop binop pfun).
165 *)
166
167 (*
168 four kinds of exprs:
169
170   I     (expr_int _)
171   V     (expr_var _)
172   M     (expr_mult V M)
173         I
174   P     (expr_plus M P)
175         I
176
177 M: sorted on V
178 P: sorted on M, all M's not an I
179 *)
180
181 (* UNEXPORTED
182 Opaque Zmult.
183 *)
184
185 inline procedural "cic:/CoRN/tactics/RingReflection/MI_mult_corr_R.con".
186
187 (* UNEXPORTED
188 Transparent Zmult.
189 *)
190
191 (* UNEXPORTED
192 Opaque MI_mult.
193 *)
194
195 inline procedural "cic:/CoRN/tactics/RingReflection/MV_mult_corr_R.con".
196
197 (* UNEXPORTED
198 Transparent MI_mult.
199 *)
200
201 (* UNEXPORTED
202 Opaque MV_mult MI_mult.
203 *)
204
205 inline procedural "cic:/CoRN/tactics/RingReflection/MM_mult_corr_R.con".
206
207 (* UNEXPORTED
208 Transparent MV_mult MI_mult.
209 *)
210
211 (* UNEXPORTED
212 Opaque MV_mult.
213 *)
214
215 inline procedural "cic:/CoRN/tactics/RingReflection/MM_plus_corr_R.con".
216
217 (* UNEXPORTED
218 Transparent MV_mult.
219 *)
220
221 (* UNEXPORTED
222 Opaque MM_plus.
223 *)
224
225 inline procedural "cic:/CoRN/tactics/RingReflection/PM_plus_corr_R.con".
226
227 (* UNEXPORTED
228 Transparent MM_plus.
229 *)
230
231 (* UNEXPORTED
232 Opaque PM_plus.
233 *)
234
235 inline procedural "cic:/CoRN/tactics/RingReflection/PP_plus_corr_R.con".
236
237 (* UNEXPORTED
238 Transparent PM_plus.
239 *)
240
241 (* UNEXPORTED
242 Opaque PM_plus MM_mult MI_mult.
243 *)
244
245 inline procedural "cic:/CoRN/tactics/RingReflection/PM_mult_corr_R.con".
246
247 (* UNEXPORTED
248 Opaque PM_mult.
249 *)
250
251 inline procedural "cic:/CoRN/tactics/RingReflection/PP_mult_corr_R.con".
252
253 (*
254 Transparent PP_plus PM_mult PP_mult PM_plus MI_mult.
255 Lemma FF_plus_corr_R : (e,f:expr; x,y:R)
256   (II e x)->(II f y)->(II (FF_plus e f) x[+]y).
257 Cut (e1,e2,f1,f2:expr; x,y:R)
258      (II (expr_div e1 e2) x)
259      ->(II (expr_div f1 f2) y)
260      ->(II
261          (expr_div (PP_plus (PP_mult e1 f2) (PP_mult e2 f1))
262            (PP_mult e2 f2)) x[+]y).
263 Cut (e,f:expr; x,y:R)(II e x)->(II f y)->(II (expr_plus e f) x[+]y).
264 Intros H H0 e f.
265 Elim e; Elim f; Intros; Simpl; Auto.
266 Intros. Apply interpR_plus with x y; Algebra.
267 Intros. Inversion H. Inversion H0.
268 Apply interpR_div_one with x[+]y.
269 Algebra.
270 Apply interpR_wd with x0[*]One[+]One[*]x1.
271 Apply PP_plus_corr_R; Apply PP_mult_corr_R; Auto;
272   Apply interpR_int with k:=`1`; Algebra.
273 Step_final x0[+]x1.
274 Apply interpR_wd with (One::R)[*]One; Algebra.
275 Apply PP_mult_corr_R; Auto.
276 Qed.
277
278 Lemma FF_mult_corr_R : (e,f:expr; x,y:R)
279   (II e x)->(II f y)->(II (FF_mult e f) x[*]y).
280 Cut (e1,e2,f1,f2:expr; x,y:R)
281      (II (expr_div e1 e2) x)
282      ->(II (expr_div f1 f2) y)
283      ->(II (expr_div (PP_mult e1 f1) (PP_mult e2 f2)) x[*]y).
284 Cut (e,f:expr; x,y:R)(II e x)->(II f y)->(II (expr_mult e f) x[*]y).
285 Intros H H0 e f.
286 Elim e; Elim f; Intros; Simpl; Auto.
287 Intros. Apply interpR_mult with x y; Algebra.
288 Intros. Inversion H. Inversion H0.
289 Apply interpR_div_one with x0[*]x1.
290 Algebra.
291 Apply PP_mult_corr_R; Auto.
292 Apply interpR_wd with (One::R)[*]One; Algebra.
293 Apply PP_mult_corr_R; Auto.
294 Qed.
295
296 Transparent FF_div.
297 Lemma FF_div_corr_R : (e,f:expr; x:R)
298   (II (expr_div e f) x)->(II (FF_div e f) x).
299 Intro e; Case e; Simpl; Auto.
300 Intros e0 e1 f; Case f; Simpl; Auto.
301 Intros.
302 Inversion H; Simpl.
303 Inversion H3; Inversion H5.
304 Apply interpR_div_one with x1[*]One.
305 astepl x1. Step_final x0.
306 Apply PP_mult_corr_R; Auto.
307 Apply interpR_wd with One[*]x2.
308 Apply PP_mult_corr_R; Auto.
309 Step_final x2.
310 Qed.
311 *)
312
313 inline procedural "cic:/CoRN/tactics/RingReflection/NormR_corr.con".
314
315 inline procedural "cic:/CoRN/tactics/RingReflection/Tactic_lemmaR.con".
316
317 (* UNEXPORTED
318 End Ring_NormCorrect
319 *)
320
321 (* end hide *)
322