1 (**************************************************************************)
4 (* ||A|| A project by Andrea Asperti *)
6 (* ||I|| Developers: *)
7 (* ||T|| The HELM team. *)
8 (* ||A|| http://helm.cs.unibo.it *)
10 (* \ / This file is distributed under the terms of the *)
11 (* v GNU General Public License Version 2 *)
13 (**************************************************************************)
15 (* This file was automatically generated: do not edit *********************)
17 set "baseuri" "cic:/matita/CoRN-Decl/tactics/RingReflection".
21 (* $Id: RingReflection.v,v 1.4 2004/04/23 10:01:06 lcf Exp $ *)
25 include "algebra/CRings.ma".
27 include "tactics/AlgReflection.ma".
30 Section Ring_Interpretation_Function
33 alias id "R" = "cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/R.var".
35 alias id "val" = "cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/val.var".
37 alias id "unop" = "cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/unop.var".
39 alias id "binop" = "cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/binop.var".
41 alias id "pfun" = "cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/pfun.var".
43 inline "cic:/CoRN/tactics/RingReflection/interpR.ind".
45 inline "cic:/CoRN/tactics/RingReflection/wfR.con".
47 inline "cic:/CoRN/tactics/RingReflection/xexprR.ind".
49 inline "cic:/CoRN/tactics/RingReflection/xforgetR.con".
51 inline "cic:/CoRN/tactics/RingReflection/xinterpR.con".
53 inline "cic:/CoRN/tactics/RingReflection/xexprR2interpR.con".
55 inline "cic:/CoRN/tactics/RingReflection/xexprR_diagram_commutes.con".
57 inline "cic:/CoRN/tactics/RingReflection/xexprR2wfR.con".
59 inline "cic:/CoRN/tactics/RingReflection/fexprR.ind".
61 inline "cic:/CoRN/tactics/RingReflection/fexprR_var.con".
63 inline "cic:/CoRN/tactics/RingReflection/fexprR_int.con".
65 inline "cic:/CoRN/tactics/RingReflection/fexprR_plus.con".
67 inline "cic:/CoRN/tactics/RingReflection/fexprR_mult.con".
69 inline "cic:/CoRN/tactics/RingReflection/fforgetR.con".
71 inline "cic:/CoRN/tactics/RingReflection/fexprR2interp.con".
73 inline "cic:/CoRN/tactics/RingReflection/fexprR2wf.con".
143 inline "cic:/CoRN/tactics/RingReflection/refl_interpR.con".
145 inline "cic:/CoRN/tactics/RingReflection/interpR_wd.con".
148 End Ring_Interpretation_Function
152 Section Ring_NormCorrect
155 alias id "R" = "cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/R.var".
157 alias id "val" = "cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/val.var".
159 alias id "unop" = "cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/unop.var".
161 alias id "binop" = "cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/binop.var".
163 alias id "pfun" = "cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/pfun.var".
166 Notation II := (interpR R val unop binop pfun).
180 P: sorted on M, all M's not an I
187 inline "cic:/CoRN/tactics/RingReflection/MI_mult_corr_R.con".
197 inline "cic:/CoRN/tactics/RingReflection/MV_mult_corr_R.con".
204 Opaque MV_mult MI_mult.
207 inline "cic:/CoRN/tactics/RingReflection/MM_mult_corr_R.con".
210 Transparent MV_mult MI_mult.
217 inline "cic:/CoRN/tactics/RingReflection/MM_plus_corr_R.con".
227 inline "cic:/CoRN/tactics/RingReflection/PM_plus_corr_R.con".
237 inline "cic:/CoRN/tactics/RingReflection/PP_plus_corr_R.con".
244 Opaque PM_plus MM_mult MI_mult.
247 inline "cic:/CoRN/tactics/RingReflection/PM_mult_corr_R.con".
253 inline "cic:/CoRN/tactics/RingReflection/PP_mult_corr_R.con".
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)
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).
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.
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.
276 Apply interpR_wd with (One::R)[*]One; Algebra.
277 Apply PP_mult_corr_R; Auto.
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).
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.
293 Apply PP_mult_corr_R; Auto.
294 Apply interpR_wd with (One::R)[*]One; Algebra.
295 Apply PP_mult_corr_R; Auto.
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.
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.
315 inline "cic:/CoRN/tactics/RingReflection/NormR_corr.con".
317 inline "cic:/CoRN/tactics/RingReflection/Tactic_lemmaR.con".