@@ -1605,11 +1605,10 @@ move: x y z u => -[x| |] -[y| |] -[z| |] -[u| |] //=; rewrite ?(leey,leNye)//.
16051605by rewrite !lee_fin; exact: ler_sub.
16061606Qed .
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.
16101610Proof .
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)//.
16131612by rewrite !lte_fin => xltr tley; apply: ltr_le_add; rewrite // ler_oppl opprK.
16141613Qed .
16151614
@@ -2404,9 +2403,11 @@ Proof. rewrite !dual_addeE lee_opp -lee_opp; exact: lee_add2r. Qed.
24042403Lemma lee_dadd a b x y : a <= b -> x <= y -> a + x <= b + y.
24052404Proof . 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
24112412Lemma lee_dsub x y z t : x <= y -> t <= z -> x - z <= y - t.
24122413Proof . rewrite !dual_addeE lee_oppl oppeK -lee_opp !oppeK; exact: lee_add. Qed .
@@ -2859,6 +2860,8 @@ End realFieldType_lemmas.
28592860
28602861Module DualAddTheoryRealField.
28612862
2863+ Import DualAddTheoryNumDomain DualAddTheoryRealDomain.
2864+
28622865Section DualRealFieldType_lemmas.
28632866Local Open Scope ereal_dual_scope.
28642867Variable R : realFieldType.
@@ -2867,6 +2870,18 @@ Implicit Types x y : \bar R.
28672870Lemma lee_dadde x y : (forall e : {posnum R}, x <= y + e%:num%:E) -> x <= y.
28682871Proof . 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+
28702885Lemma lte_spdaddr (r : R) x y : 0 < y -> r%:E <= x -> r%:E < x + y.
28712886Proof .
28722887move: y x => [y| |] [x| |] //=; rewrite ?lte_fin ?ltt_fin ?ltey //.
0 commit comments