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".
19 (* $Id: RingReflection.v,v 1.4 2004/04/23 10:01:06 lcf Exp $ *)
32 Section Ring_Interpretation_Function.
35 inline cic:/CoRN/tactics/RingReflection/R.var.
37 inline cic:/CoRN/tactics/RingReflection/val.var.
39 inline cic:/CoRN/tactics/RingReflection/unop.var.
41 inline cic:/CoRN/tactics/RingReflection/binop.var.
43 inline cic:/CoRN/tactics/RingReflection/pfun.var.
45 inline cic:/CoRN/tactics/RingReflection/interpR.ind.
47 inline cic:/CoRN/tactics/RingReflection/wfR.con.
49 inline cic:/CoRN/tactics/RingReflection/xexprR.ind.
51 inline cic:/CoRN/tactics/RingReflection/xforgetR.con.
53 inline cic:/CoRN/tactics/RingReflection/xinterpR.con.
55 inline cic:/CoRN/tactics/RingReflection/xexprR2interpR.con.
57 inline cic:/CoRN/tactics/RingReflection/xexprR_diagram_commutes.con.
59 inline cic:/CoRN/tactics/RingReflection/xexprR2wfR.con.
61 inline cic:/CoRN/tactics/RingReflection/fexprR.ind.
63 inline cic:/CoRN/tactics/RingReflection/fexprR_var.con.
65 inline cic:/CoRN/tactics/RingReflection/fexprR_int.con.
67 inline cic:/CoRN/tactics/RingReflection/fexprR_plus.con.
69 inline cic:/CoRN/tactics/RingReflection/fexprR_mult.con.
71 inline cic:/CoRN/tactics/RingReflection/fforgetR.con.
73 inline cic:/CoRN/tactics/RingReflection/fexprR2interp.con.
75 inline cic:/CoRN/tactics/RingReflection/fexprR2wf.con.
145 inline cic:/CoRN/tactics/RingReflection/refl_interpR.con.
147 inline cic:/CoRN/tactics/RingReflection/interpR_wd.con.
150 End Ring_Interpretation_Function.
154 Section Ring_NormCorrect.
157 inline cic:/CoRN/tactics/RingReflection/R.var.
159 inline cic:/CoRN/tactics/RingReflection/val.var.
161 inline cic:/CoRN/tactics/RingReflection/unop.var.
163 inline cic:/CoRN/tactics/RingReflection/binop.var.
165 inline cic:/CoRN/tactics/RingReflection/pfun.var.
178 P: sorted on M, all M's not an I
185 inline cic:/CoRN/tactics/RingReflection/MI_mult_corr_R.con.
195 inline cic:/CoRN/tactics/RingReflection/MV_mult_corr_R.con.
202 Opaque MV_mult MI_mult.
205 inline cic:/CoRN/tactics/RingReflection/MM_mult_corr_R.con.
208 Transparent MV_mult MI_mult.
215 inline cic:/CoRN/tactics/RingReflection/MM_plus_corr_R.con.
225 inline cic:/CoRN/tactics/RingReflection/PM_plus_corr_R.con.
235 inline cic:/CoRN/tactics/RingReflection/PP_plus_corr_R.con.
242 Opaque PM_plus MM_mult MI_mult.
245 inline cic:/CoRN/tactics/RingReflection/PM_mult_corr_R.con.
251 inline cic:/CoRN/tactics/RingReflection/PP_mult_corr_R.con.
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)
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).
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.
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.
274 Apply interpR_wd with (One::R)[*]One; Algebra.
275 Apply PP_mult_corr_R; Auto.
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).
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.
291 Apply PP_mult_corr_R; Auto.
292 Apply interpR_wd with (One::R)[*]One; Algebra.
293 Apply PP_mult_corr_R; Auto.
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.
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.
313 inline cic:/CoRN/tactics/RingReflection/NormR_corr.con.
315 inline cic:/CoRN/tactics/RingReflection/Tactic_lemmaR.con.
318 End Ring_NormCorrect.