Skip to content

Commit d46de60

Browse files
proux01affeldt-aist
authored andcommitted
Add corresponding dual lemmas
1 parent dde7717 commit d46de60

2 files changed

Lines changed: 25 additions & 8 deletions

File tree

CHANGELOG_UNRELEASED.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,15 @@
88
+ notations `_ < _ :> _` and `_ <= _ :> _`
99
+ lemmas `lee01`, `lte01`, `lee0N1`, `lte0N1`
1010
+ lemmas `lee_pmul2l`, `lee_pmul2r`, `lte_pmul`, `lee_wpmul2l`
11-
+ lemmas `lee_lt_add`, `lee_paddl`, `lte_addl`, `lee_paddr`, `lte_paddr`
11+
+ lemmas `lee_lt_add`, `lee_lt_dadd`, `lee_paddl`, `lee_pdaddl`,
12+
`lte_paddl`, `lte_pdaddl`, `lee_paddr`, `lee_pdaddr`,
13+
`lte_paddr`, `lte_pdaddr`
1214

1315
### Changed
1416

1517
- in `ereal.v`:
1618
+ generalize `lee_pmul`
17-
+ simplify `lte_le_add`, `lte_le_dsub`
19+
+ simplify `lte_le_add`, `lte_le_dadd`, `lte_le_sub`, `lte_le_dsub`
1820

1921
### Renamed
2022

theories/ereal.v

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1605,11 +1605,10 @@ move: x y z u => -[x| |] -[y| |] -[z| |] -[u| |] //=; rewrite ?(leey,leNye)//.
16051605
by rewrite !lee_fin; exact: ler_sub.
16061606
Qed.
16071607

1608-
Lemma lte_le_sub z u x y : z \is a fin_num -> u \is a fin_num ->
1608+
Lemma lte_le_sub z u x y : u \is a fin_num ->
16091609
x < z -> u <= y -> x - y < z - u.
16101610
Proof.
1611-
move: z u => [z| |] [u| |] _ _ //.
1612-
move: x y => [x| |] [y| |]; rewrite ?(ltey, ltNye)//.
1611+
move: z u x y => [z| |] [u| |] [x| |] [y| |] _ //=; rewrite ?(ltey, ltNye)//.
16131612
by rewrite !lte_fin => xltr tley; apply: ltr_le_add; rewrite // ler_oppl opprK.
16141613
Qed.
16151614

@@ -2404,9 +2403,11 @@ Proof. rewrite !dual_addeE lee_opp -lee_opp; exact: lee_add2r. Qed.
24042403
Lemma lee_dadd a b x y : a <= b -> x <= y -> a + x <= b + y.
24052404
Proof. rewrite !dual_addeE lee_opp -lee_opp -(lee_opp y); exact: lee_add. Qed.
24062405

2407-
Lemma lte_le_dadd a b x y : a \is a fin_num -> b \is a fin_num ->
2408-
a < x -> b <= y -> a + b < x + y.
2409-
Proof. rewrite -fin_numN !dual_addeE lte_opp -lte_opp; exact: lte_le_sub. Qed.
2406+
Lemma lte_le_dadd a b x y : b \is a fin_num -> a < x -> b <= y -> a + b < x + y.
2407+
Proof. rewrite !dual_addeE lte_opp -lte_opp; exact: lte_le_sub. Qed.
2408+
2409+
Lemma lee_lt_dadd a b x y : a \is a fin_num -> a <= x -> b < y -> a + b < x + y.
2410+
Proof. by move=> afin xa yb; rewrite (daddeC a) (daddeC x) lte_le_dadd. Qed.
24102411

24112412
Lemma lee_dsub x y z t : x <= y -> t <= z -> x - z <= y - t.
24122413
Proof. rewrite !dual_addeE lee_oppl oppeK -lee_opp !oppeK; exact: lee_add. Qed.
@@ -2859,6 +2860,8 @@ End realFieldType_lemmas.
28592860

28602861
Module DualAddTheoryRealField.
28612862

2863+
Import DualAddTheoryNumDomain DualAddTheoryRealDomain.
2864+
28622865
Section DualRealFieldType_lemmas.
28632866
Local Open Scope ereal_dual_scope.
28642867
Variable R : realFieldType.
@@ -2867,6 +2870,18 @@ Implicit Types x y : \bar R.
28672870
Lemma lee_dadde x y : (forall e : {posnum R}, x <= y + e%:num%:E) -> x <= y.
28682871
Proof. by move=> xye; apply: lee_adde => e; case: x {xye} (xye e). Qed.
28692872

2873+
Lemma lee_pdaddl y x z : 0 <= x -> y <= z -> y <= x + z.
2874+
Proof. by move=> *; rewrite -[y]dadd0e lee_dadd. Qed.
2875+
2876+
Lemma lte_pdaddl y x z : 0 <= x -> y < z -> y < x + z.
2877+
Proof. by move=> x0 /lt_le_trans; apply; rewrite lee_pdaddl. Qed.
2878+
2879+
Lemma lee_pdaddr y x z : 0 <= x -> y <= z -> y <= z + x.
2880+
Proof. by move=> *; rewrite daddeC lee_pdaddl. Qed.
2881+
2882+
Lemma lte_pdaddr y x z : 0 <= x -> y < z -> y < z + x.
2883+
Proof. by move=> *; rewrite daddeC lte_pdaddl. Qed.
2884+
28702885
Lemma lte_spdaddr (r : R) x y : 0 < y -> r%:E <= x -> r%:E < x + y.
28712886
Proof.
28722887
move: y x => [y| |] [x| |] //=; rewrite ?lte_fin ?ltt_fin ?ltey //.

0 commit comments

Comments
 (0)