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 *********************)
19 (* $Id: RingReflection.v,v 1.4 2004/04/23 10:01:06 lcf Exp $ *)
23 include "algebra/CRings.ma".
25 include "tactics/AlgReflection.ma".
28 Section Ring_Interpretation_Function
32 cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/R.var
36 cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/val.var
40 cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/unop.var
44 cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/binop.var
48 cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/pfun.var
51 inline procedural "cic:/CoRN/tactics/RingReflection/interpR.ind".
53 inline procedural "cic:/CoRN/tactics/RingReflection/wfR.con" as definition.
55 inline procedural "cic:/CoRN/tactics/RingReflection/xexprR.ind".
57 inline procedural "cic:/CoRN/tactics/RingReflection/xforgetR.con" as definition.
59 inline procedural "cic:/CoRN/tactics/RingReflection/xinterpR.con" as definition.
61 inline procedural "cic:/CoRN/tactics/RingReflection/xexprR2interpR.con" as lemma.
63 inline procedural "cic:/CoRN/tactics/RingReflection/xexprR_diagram_commutes.con" as definition.
65 inline procedural "cic:/CoRN/tactics/RingReflection/xexprR2wfR.con" as lemma.
67 inline procedural "cic:/CoRN/tactics/RingReflection/fexprR.ind".
69 inline procedural "cic:/CoRN/tactics/RingReflection/fexprR_var.con" as definition.
71 inline procedural "cic:/CoRN/tactics/RingReflection/fexprR_int.con" as definition.
73 inline procedural "cic:/CoRN/tactics/RingReflection/fexprR_plus.con" as definition.
75 inline procedural "cic:/CoRN/tactics/RingReflection/fexprR_mult.con" as definition.
77 inline procedural "cic:/CoRN/tactics/RingReflection/fforgetR.con" as definition.
79 inline procedural "cic:/CoRN/tactics/RingReflection/fexprR2interp.con" as lemma.
81 inline procedural "cic:/CoRN/tactics/RingReflection/fexprR2wf.con" as lemma.
151 inline procedural "cic:/CoRN/tactics/RingReflection/refl_interpR.con" as lemma.
153 inline procedural "cic:/CoRN/tactics/RingReflection/interpR_wd.con" as lemma.
156 End Ring_Interpretation_Function
160 Section Ring_NormCorrect
164 cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/R.var
168 cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/val.var
172 cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/unop.var
176 cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/binop.var
180 cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/pfun.var
184 Notation II := (interpR R val unop binop pfun).
198 P: sorted on M, all M's not an I
205 inline procedural "cic:/CoRN/tactics/RingReflection/MI_mult_corr_R.con" as lemma.
215 inline procedural "cic:/CoRN/tactics/RingReflection/MV_mult_corr_R.con" as lemma.
222 Opaque MV_mult MI_mult.
225 inline procedural "cic:/CoRN/tactics/RingReflection/MM_mult_corr_R.con" as lemma.
228 Transparent MV_mult MI_mult.
235 inline procedural "cic:/CoRN/tactics/RingReflection/MM_plus_corr_R.con" as lemma.
245 inline procedural "cic:/CoRN/tactics/RingReflection/PM_plus_corr_R.con" as lemma.
255 inline procedural "cic:/CoRN/tactics/RingReflection/PP_plus_corr_R.con" as lemma.
262 Opaque PM_plus MM_mult MI_mult.
265 inline procedural "cic:/CoRN/tactics/RingReflection/PM_mult_corr_R.con" as lemma.
271 inline procedural "cic:/CoRN/tactics/RingReflection/PP_mult_corr_R.con" as lemma.
274 Transparent PP_plus PM_mult PP_mult PM_plus MI_mult.
275 Lemma FF_plus_corr_R : (e,f:expr; x,y:R)
276 (II e x)->(II f y)->(II (FF_plus e f) x[+]y).
277 Cut (e1,e2,f1,f2:expr; x,y:R)
278 (II (expr_div e1 e2) x)
279 ->(II (expr_div f1 f2) y)
281 (expr_div (PP_plus (PP_mult e1 f2) (PP_mult e2 f1))
282 (PP_mult e2 f2)) x[+]y).
283 Cut (e,f:expr; x,y:R)(II e x)->(II f y)->(II (expr_plus e f) x[+]y).
285 Elim e; Elim f; Intros; Simpl; Auto.
286 Intros. Apply interpR_plus with x y; Algebra.
287 Intros. Inversion H. Inversion H0.
288 Apply interpR_div_one with x[+]y.
290 Apply interpR_wd with x0[*]One[+]One[*]x1.
291 Apply PP_plus_corr_R; Apply PP_mult_corr_R; Auto;
292 Apply interpR_int with k:=`1`; Algebra.
294 Apply interpR_wd with (One::R)[*]One; Algebra.
295 Apply PP_mult_corr_R; Auto.
298 Lemma FF_mult_corr_R : (e,f:expr; x,y:R)
299 (II e x)->(II f y)->(II (FF_mult e f) x[*]y).
300 Cut (e1,e2,f1,f2:expr; x,y:R)
301 (II (expr_div e1 e2) x)
302 ->(II (expr_div f1 f2) y)
303 ->(II (expr_div (PP_mult e1 f1) (PP_mult e2 f2)) x[*]y).
304 Cut (e,f:expr; x,y:R)(II e x)->(II f y)->(II (expr_mult e f) x[*]y).
306 Elim e; Elim f; Intros; Simpl; Auto.
307 Intros. Apply interpR_mult with x y; Algebra.
308 Intros. Inversion H. Inversion H0.
309 Apply interpR_div_one with x0[*]x1.
311 Apply PP_mult_corr_R; Auto.
312 Apply interpR_wd with (One::R)[*]One; Algebra.
313 Apply PP_mult_corr_R; Auto.
317 Lemma FF_div_corr_R : (e,f:expr; x:R)
318 (II (expr_div e f) x)->(II (FF_div e f) x).
319 Intro e; Case e; Simpl; Auto.
320 Intros e0 e1 f; Case f; Simpl; Auto.
323 Inversion H3; Inversion H5.
324 Apply interpR_div_one with x1[*]One.
325 astepl x1. Step_final x0.
326 Apply PP_mult_corr_R; Auto.
327 Apply interpR_wd with One[*]x2.
328 Apply PP_mult_corr_R; Auto.
333 inline procedural "cic:/CoRN/tactics/RingReflection/NormR_corr.con" as lemma.
335 inline procedural "cic:/CoRN/tactics/RingReflection/Tactic_lemmaR.con" as lemma.