]> matita.cs.unibo.it Git - helm.git/blob - helm/software/matita/contribs/CoRN-Decl/tactics/RingReflection.ma
bd88498502e23bed029a7d995898f307d03d4844
[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 (* $Id: RingReflection.v,v 1.4 2004/04/23 10:01:06 lcf Exp $ *)
20
21 (* begin hide *)
22
23 (* INCLUDE
24 CRings
25 *)
26
27 (* INCLUDE
28 AlgReflection
29 *)
30
31 (* UNEXPORTED
32 Section Ring_Interpretation_Function.
33 *)
34
35 inline cic:/CoRN/tactics/RingReflection/R.var.
36
37 inline cic:/CoRN/tactics/RingReflection/val.var.
38
39 inline cic:/CoRN/tactics/RingReflection/unop.var.
40
41 inline cic:/CoRN/tactics/RingReflection/binop.var.
42
43 inline cic:/CoRN/tactics/RingReflection/pfun.var.
44
45 inline cic:/CoRN/tactics/RingReflection/interpR.ind.
46
47 inline cic:/CoRN/tactics/RingReflection/wfR.con.
48
49 inline cic:/CoRN/tactics/RingReflection/xexprR.ind.
50
51 inline cic:/CoRN/tactics/RingReflection/xforgetR.con.
52
53 inline cic:/CoRN/tactics/RingReflection/xinterpR.con.
54
55 inline cic:/CoRN/tactics/RingReflection/xexprR2interpR.con.
56
57 inline cic:/CoRN/tactics/RingReflection/xexprR_diagram_commutes.con.
58
59 inline cic:/CoRN/tactics/RingReflection/xexprR2wfR.con.
60
61 inline cic:/CoRN/tactics/RingReflection/fexprR.ind.
62
63 inline cic:/CoRN/tactics/RingReflection/fexprR_var.con.
64
65 inline cic:/CoRN/tactics/RingReflection/fexprR_int.con.
66
67 inline cic:/CoRN/tactics/RingReflection/fexprR_plus.con.
68
69 inline cic:/CoRN/tactics/RingReflection/fexprR_mult.con.
70
71 inline cic:/CoRN/tactics/RingReflection/fforgetR.con.
72
73 inline cic:/CoRN/tactics/RingReflection/fexprR2interp.con.
74
75 inline cic:/CoRN/tactics/RingReflection/fexprR2wf.con.
76
77 (* UNEXPORTED
78 Opaque csg_crr.
79 *)
80
81 (* UNEXPORTED
82 Opaque cm_crr.
83 *)
84
85 (* UNEXPORTED
86 Opaque cg_crr.
87 *)
88
89 (* UNEXPORTED
90 Opaque cr_crr.
91 *)
92
93 (* UNEXPORTED
94 Opaque csf_fun.
95 *)
96
97 (* UNEXPORTED
98 Opaque csbf_fun.
99 *)
100
101 (* UNEXPORTED
102 Opaque csr_rel.
103 *)
104
105 (* UNEXPORTED
106 Opaque cs_eq.
107 *)
108
109 (* UNEXPORTED
110 Opaque cs_neq.
111 *)
112
113 (* UNEXPORTED
114 Opaque cs_ap.
115 *)
116
117 (* UNEXPORTED
118 Opaque cm_unit.
119 *)
120
121 (* UNEXPORTED
122 Opaque csg_op.
123 *)
124
125 (* UNEXPORTED
126 Opaque cg_inv.
127 *)
128
129 (* UNEXPORTED
130 Opaque cg_minus.
131 *)
132
133 (* UNEXPORTED
134 Opaque cr_one.
135 *)
136
137 (* UNEXPORTED
138 Opaque cr_mult.
139 *)
140
141 (* UNEXPORTED
142 Opaque nexp_op.
143 *)
144
145 inline cic:/CoRN/tactics/RingReflection/refl_interpR.con.
146
147 inline cic:/CoRN/tactics/RingReflection/interpR_wd.con.
148
149 (* UNEXPORTED
150 End Ring_Interpretation_Function.
151 *)
152
153 (* UNEXPORTED
154 Section Ring_NormCorrect.
155 *)
156
157 inline cic:/CoRN/tactics/RingReflection/R.var.
158
159 inline cic:/CoRN/tactics/RingReflection/val.var.
160
161 inline cic:/CoRN/tactics/RingReflection/unop.var.
162
163 inline cic:/CoRN/tactics/RingReflection/binop.var.
164
165 inline cic:/CoRN/tactics/RingReflection/pfun.var.
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 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 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 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 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 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 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 cic:/CoRN/tactics/RingReflection/PM_mult_corr_R.con.
246
247 (* UNEXPORTED
248 Opaque PM_mult.
249 *)
250
251 inline 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 cic:/CoRN/tactics/RingReflection/NormR_corr.con.
314
315 inline cic:/CoRN/tactics/RingReflection/Tactic_lemmaR.con.
316
317 (* UNEXPORTED
318 End Ring_NormCorrect.
319 *)
320
321 (* end hide *)
322