]> matita.cs.unibo.it Git - helm.git/blob - matita/contribs/CoRN-Decl/tactics/RingReflection.ma
tagged 0.5.0-rc1
[helm.git] / 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 alias id "R" = "cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/R.var".
34
35 alias id "val" = "cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/val.var".
36
37 alias id "unop" = "cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/unop.var".
38
39 alias id "binop" = "cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/binop.var".
40
41 alias id "pfun" = "cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/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 alias id "R" = "cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/R.var".
156
157 alias id "val" = "cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/val.var".
158
159 alias id "unop" = "cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/unop.var".
160
161 alias id "binop" = "cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/binop.var".
162
163 alias id "pfun" = "cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/pfun.var".
164
165 (* NOTATION
166 Notation II := (interpR R val unop binop pfun).
167 *)
168
169 (*
170 four kinds of exprs:
171
172   I     (expr_int _)
173   V     (expr_var _)
174   M     (expr_mult V M)
175         I
176   P     (expr_plus M P)
177         I
178
179 M: sorted on V
180 P: sorted on M, all M's not an I
181 *)
182
183 (* UNEXPORTED
184 Opaque Zmult.
185 *)
186
187 inline "cic:/CoRN/tactics/RingReflection/MI_mult_corr_R.con".
188
189 (* UNEXPORTED
190 Transparent Zmult.
191 *)
192
193 (* UNEXPORTED
194 Opaque MI_mult.
195 *)
196
197 inline "cic:/CoRN/tactics/RingReflection/MV_mult_corr_R.con".
198
199 (* UNEXPORTED
200 Transparent MI_mult.
201 *)
202
203 (* UNEXPORTED
204 Opaque MV_mult MI_mult.
205 *)
206
207 inline "cic:/CoRN/tactics/RingReflection/MM_mult_corr_R.con".
208
209 (* UNEXPORTED
210 Transparent MV_mult MI_mult.
211 *)
212
213 (* UNEXPORTED
214 Opaque MV_mult.
215 *)
216
217 inline "cic:/CoRN/tactics/RingReflection/MM_plus_corr_R.con".
218
219 (* UNEXPORTED
220 Transparent MV_mult.
221 *)
222
223 (* UNEXPORTED
224 Opaque MM_plus.
225 *)
226
227 inline "cic:/CoRN/tactics/RingReflection/PM_plus_corr_R.con".
228
229 (* UNEXPORTED
230 Transparent MM_plus.
231 *)
232
233 (* UNEXPORTED
234 Opaque PM_plus.
235 *)
236
237 inline "cic:/CoRN/tactics/RingReflection/PP_plus_corr_R.con".
238
239 (* UNEXPORTED
240 Transparent PM_plus.
241 *)
242
243 (* UNEXPORTED
244 Opaque PM_plus MM_mult MI_mult.
245 *)
246
247 inline "cic:/CoRN/tactics/RingReflection/PM_mult_corr_R.con".
248
249 (* UNEXPORTED
250 Opaque PM_mult.
251 *)
252
253 inline "cic:/CoRN/tactics/RingReflection/PP_mult_corr_R.con".
254
255 (*
256 Transparent PP_plus PM_mult PP_mult PM_plus MI_mult.
257 Lemma FF_plus_corr_R : (e,f:expr; x,y:R)
258   (II e x)->(II f y)->(II (FF_plus e f) x[+]y).
259 Cut (e1,e2,f1,f2:expr; x,y:R)
260      (II (expr_div e1 e2) x)
261      ->(II (expr_div f1 f2) y)
262      ->(II
263          (expr_div (PP_plus (PP_mult e1 f2) (PP_mult e2 f1))
264            (PP_mult e2 f2)) x[+]y).
265 Cut (e,f:expr; x,y:R)(II e x)->(II f y)->(II (expr_plus e f) x[+]y).
266 Intros H H0 e f.
267 Elim e; Elim f; Intros; Simpl; Auto.
268 Intros. Apply interpR_plus with x y; Algebra.
269 Intros. Inversion H. Inversion H0.
270 Apply interpR_div_one with x[+]y.
271 Algebra.
272 Apply interpR_wd with x0[*]One[+]One[*]x1.
273 Apply PP_plus_corr_R; Apply PP_mult_corr_R; Auto;
274   Apply interpR_int with k:=`1`; Algebra.
275 Step_final x0[+]x1.
276 Apply interpR_wd with (One::R)[*]One; Algebra.
277 Apply PP_mult_corr_R; Auto.
278 Qed.
279
280 Lemma FF_mult_corr_R : (e,f:expr; x,y:R)
281   (II e x)->(II f y)->(II (FF_mult e f) x[*]y).
282 Cut (e1,e2,f1,f2:expr; x,y:R)
283      (II (expr_div e1 e2) x)
284      ->(II (expr_div f1 f2) y)
285      ->(II (expr_div (PP_mult e1 f1) (PP_mult e2 f2)) x[*]y).
286 Cut (e,f:expr; x,y:R)(II e x)->(II f y)->(II (expr_mult e f) x[*]y).
287 Intros H H0 e f.
288 Elim e; Elim f; Intros; Simpl; Auto.
289 Intros. Apply interpR_mult with x y; Algebra.
290 Intros. Inversion H. Inversion H0.
291 Apply interpR_div_one with x0[*]x1.
292 Algebra.
293 Apply PP_mult_corr_R; Auto.
294 Apply interpR_wd with (One::R)[*]One; Algebra.
295 Apply PP_mult_corr_R; Auto.
296 Qed.
297
298 Transparent FF_div.
299 Lemma FF_div_corr_R : (e,f:expr; x:R)
300   (II (expr_div e f) x)->(II (FF_div e f) x).
301 Intro e; Case e; Simpl; Auto.
302 Intros e0 e1 f; Case f; Simpl; Auto.
303 Intros.
304 Inversion H; Simpl.
305 Inversion H3; Inversion H5.
306 Apply interpR_div_one with x1[*]One.
307 astepl x1. Step_final x0.
308 Apply PP_mult_corr_R; Auto.
309 Apply interpR_wd with One[*]x2.
310 Apply PP_mult_corr_R; Auto.
311 Step_final x2.
312 Qed.
313 *)
314
315 inline "cic:/CoRN/tactics/RingReflection/NormR_corr.con".
316
317 inline "cic:/CoRN/tactics/RingReflection/Tactic_lemmaR.con".
318
319 (* UNEXPORTED
320 End Ring_NormCorrect
321 *)
322
323 (* end hide *)
324