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