]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/ground/etc/lib/arith.etc
ground_2 released and permanently renamed as ground
[helm.git] / matita / matita / contribs / lambdadelta / ground / etc / lib / arith.etc
1
2 lemma zero_or_gt: ∀n. n = 0 ∨ 0 < n.
3 #n elim (lt_or_eq_or_gt 0 n) /2/
4 #H elim (lt_zero_false … H)
5 qed. 
6
7 lemma pippo: ∀x,y,z. x < z → y < z - x → x + y < z.
8 /3 width=2/
9
10 lemma arith_b1x: ∀e,x1,x2,y. y ≤ x2 → x2 ≤ x1 → 
11                  e + (x1 - y) - (x2 - y) = e + (x1 - x2).
12 #e #x1 #x2 #y #H1 #H2
13 <(arith_b1 … H1) >le_plus_minus // /2 width=1/
14 qed-.
15                  
16 lemma arith1: ∀x,y,z,w. z < y → x + (y + w) - z = x + y - z + w.
17 #x #y #z #w #H <le_plus_minus_comm // /3 width=1 by lt_to_le, le_plus_a/
18 qed-.
19
20 lemma lt_dec: ∀n2,n1. Decidable (n1 < n2).
21 #n2 elim n2 -n2
22 [ /4 width=3 by or_intror, absurd, nmk/
23 | #n2 #IHn2 * /2 width=1 by or_introl/
24   #n1 elim (IHn2 n1) -IHn2
25   /4 width=1 by le_S_S, monotonic_pred, or_intror, or_introl/
26 ]
27 qed-.
28
29 lemma false_lt_to_le: ∀x,y. (x < y → ⊥) → y ≤ x.
30 #x #y #H elim (decidable_lt x y) /2 width=1 by not_lt_to_le/
31 #Hxy elim (H Hxy)
32 qed-.
33
34 lemma arith_m2 (x) (y): x < y → x+(y-↑x) = ↓y.
35 #x #y #Hxy >minus_minus [|*: // ] <minus_Sn_n //
36 qed-.