]> matita.cs.unibo.it Git - helm.git/blob - helm/software/matita/contribs/procedural/Coq/Arith/Mult.mma
Preparing for 0.5.9 release.
[helm.git] / helm / software / matita / contribs / procedural / Coq / Arith / Mult.mma
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 include "Coq.ma".
18
19 (*#***********************************************************************)
20
21 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
22
23 (* <O___,, * CNRS-Ecole Polytechnique-INRIA Futurs-Universite Paris Sud *)
24
25 (*   \VV/  **************************************************************)
26
27 (*    //   *      This file is distributed under the terms of the       *)
28
29 (*         *       GNU Lesser General Public License Version 2.1        *)
30
31 (*#***********************************************************************)
32
33 (*i $Id: Mult.v,v 1.21.2.1 2004/07/16 19:31:00 herbelin Exp $ i*)
34
35 include "Arith/Plus.ma".
36
37 include "Arith/Minus.ma".
38
39 include "Arith/Lt.ma".
40
41 include "Arith/Le.ma".
42
43 (* UNEXPORTED
44 Open Local Scope nat_scope.
45 *)
46
47 (* UNEXPORTED
48 Implicit Types m n p : nat.
49 *)
50
51 (*#* Zero property *)
52
53 inline procedural "cic:/Coq/Arith/Mult/mult_0_r.con" as lemma.
54
55 inline procedural "cic:/Coq/Arith/Mult/mult_0_l.con" as lemma.
56
57 (*#* Distributivity *)
58
59 inline procedural "cic:/Coq/Arith/Mult/mult_plus_distr_r.con" as lemma.
60
61 (* UNEXPORTED
62 Hint Resolve mult_plus_distr_r: arith v62.
63 *)
64
65 inline procedural "cic:/Coq/Arith/Mult/mult_plus_distr_l.con" as lemma.
66
67 inline procedural "cic:/Coq/Arith/Mult/mult_minus_distr_r.con" as lemma.
68
69 (* UNEXPORTED
70 Hint Resolve mult_minus_distr_r: arith v62.
71 *)
72
73 (*#* Associativity *)
74
75 inline procedural "cic:/Coq/Arith/Mult/mult_assoc_reverse.con" as lemma.
76
77 (* UNEXPORTED
78 Hint Resolve mult_assoc_reverse: arith v62.
79 *)
80
81 inline procedural "cic:/Coq/Arith/Mult/mult_assoc.con" as lemma.
82
83 (* UNEXPORTED
84 Hint Resolve mult_assoc: arith v62.
85 *)
86
87 (*#* Commutativity *)
88
89 inline procedural "cic:/Coq/Arith/Mult/mult_comm.con" as lemma.
90
91 (* UNEXPORTED
92 Hint Resolve mult_comm: arith v62.
93 *)
94
95 (*#* 1 is neutral *)
96
97 inline procedural "cic:/Coq/Arith/Mult/mult_1_l.con" as lemma.
98
99 (* UNEXPORTED
100 Hint Resolve mult_1_l: arith v62.
101 *)
102
103 inline procedural "cic:/Coq/Arith/Mult/mult_1_r.con" as lemma.
104
105 (* UNEXPORTED
106 Hint Resolve mult_1_r: arith v62.
107 *)
108
109 (*#* Compatibility with orders *)
110
111 inline procedural "cic:/Coq/Arith/Mult/mult_O_le.con" as lemma.
112
113 (* UNEXPORTED
114 Hint Resolve mult_O_le: arith v62.
115 *)
116
117 inline procedural "cic:/Coq/Arith/Mult/mult_le_compat_l.con" as lemma.
118
119 (* UNEXPORTED
120 Hint Resolve mult_le_compat_l: arith.
121 *)
122
123 inline procedural "cic:/Coq/Arith/Mult/mult_le_compat_r.con" as lemma.
124
125 inline procedural "cic:/Coq/Arith/Mult/mult_le_compat.con" as lemma.
126
127 inline procedural "cic:/Coq/Arith/Mult/mult_S_lt_compat_l.con" as lemma.
128
129 (* UNEXPORTED
130 Hint Resolve mult_S_lt_compat_l: arith.
131 *)
132
133 inline procedural "cic:/Coq/Arith/Mult/mult_lt_compat_r.con" as lemma.
134
135 inline procedural "cic:/Coq/Arith/Mult/mult_S_le_reg_l.con" as lemma.
136
137 (*#* n|->2*n and n|->2n+1 have disjoint image *)
138
139 inline procedural "cic:/Coq/Arith/Mult/odd_even_lem.con" as theorem.
140
141 (*#* Tail-recursive mult *)
142
143 (*#* [tail_mult] is an alternative definition for [mult] which is 
144     tail-recursive, whereas [mult] is not. This can be useful 
145     when extracting programs. *)
146
147 inline procedural "cic:/Coq/Arith/Mult/mult_acc.con" as definition.
148
149 inline procedural "cic:/Coq/Arith/Mult/mult_acc_aux.con" as lemma.
150
151 inline procedural "cic:/Coq/Arith/Mult/tail_mult.con" as definition.
152
153 inline procedural "cic:/Coq/Arith/Mult/mult_tail_mult.con" as lemma.
154
155 (*#* [TailSimpl] transforms any [tail_plus] and [tail_mult] into [plus] 
156     and [mult] and simplify *)
157
158 (* UNEXPORTED
159 Ltac tail_simpl :=
160   repeat rewrite <- plus_tail_plus; repeat rewrite <- mult_tail_mult;
161    simpl in |- *.
162 *)
163