Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG_UNRELEASED.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,10 @@
- in `charge.v`:
+ `induced` -> `induced_charge`

- in `boolp.v`:
+ `notP` -> `not_notP`
+ `notE` -> `not_notE`

### Generalized

- in `lebesgue_integral_under.v`:
Expand Down
19 changes: 12 additions & 7 deletions classical/boolp.v
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(* mathcomp analysis (c) 2017 Inria and AIST. License: CeCILL-C. *)
(* mathcomp analysis (c) 2026 Inria and AIST. License: CeCILL-C. *)
(* -------------------------------------------------------------------- *)
(* Copyright (c) - 2015--2016 - IMDEA Software Institute *)
(* Copyright (c) - 2015--2018 - Inria *)
Expand Down Expand Up @@ -683,13 +683,18 @@ by rewrite 2!negb_and -3!asbool_neg => /or3_asboolP.
by rewrite 3!asbool_neg -2!negb_and => /and3_asboolP.
Qed.

Lemma notP (P : Prop) : ~ ~ P <-> P.
Lemma not_notP (P : Prop) : ~ ~ P <-> P.
Proof. by split => [|p]; [exact: contrapT|exact]. Qed.
#[deprecated(since="mathcomp-analysis 1.15.0", note="Renamed to `not_notP`. Warning: a different `notP` is also provided by `contra.v`.")]
Notation notP := not_notP (only parsing).

Lemma notE (P : Prop) : (~ ~ P) = P. Proof. by rewrite propeqE notP. Qed.
Lemma not_notE (P : Prop) : (~ ~ P) = P.
Proof. by rewrite propeqE not_notP. Qed.
#[deprecated(since="mathcomp-analysis 1.15.0", note="Renamed to `not_notE`.")]
Notation notE := not_notE (only parsing).

Lemma not_orE (P Q : Prop) : (~ (P \/ Q)) = (~ P /\ ~ Q).
Proof. by rewrite -[_ /\ _]notE not_andE 2!notE. Qed.
Proof. by rewrite -[_ /\ _]not_notE not_andE 2!not_notE. Qed.

Lemma not_orP (P Q : Prop) : ~ (P \/ Q) <-> ~ P /\ ~ Q.
Proof. by rewrite not_orE. Qed.
Expand All @@ -698,7 +703,7 @@ Lemma not_implyE (P Q : Prop) : (~ (P -> Q)) = (P /\ ~ Q).
Proof. by rewrite propeqE not_implyP. Qed.

Lemma implyE (P Q : Prop) : (P -> Q) = (~ P \/ Q).
Proof. by rewrite -[LHS]notE not_implyE propeqE not_andP notE. Qed.
Proof. by rewrite -[LHS]not_notE not_implyE propeqE not_andP not_notE. Qed.

Lemma orC : commutative or.
Proof. by move=> /PropB[] /PropB[] => //; rewrite !orB. Qed.
Expand Down Expand Up @@ -1007,10 +1012,10 @@ Proof. by []. Qed.
Section Inhabited.
Variable (T : Type).

Lemma inhabitedE: inhabited T = exists x : T, True.
Lemma inhabitedE : inhabited T = exists x : T, True.
Proof. by eqProp; case. Qed.

Lemma inhabited_witness: inhabited T -> T.
Lemma inhabited_witness : inhabited T -> T.
Proof. by rewrite inhabitedE => /cid[]. Qed.

End Inhabited.
Expand Down
4 changes: 2 additions & 2 deletions theories/normedtype_theory/normed_module.v
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(* mathcomp analysis (c) 2025 Inria and AIST. License: CeCILL-C. *)
(* mathcomp analysis (c) 2026 Inria and AIST. License: CeCILL-C. *)
From HB Require Import structures.
From mathcomp Require Import all_ssreflect finmap ssralg ssrnum ssrint.
From mathcomp Require Import archimedean rat interval zmodp vector.
Expand Down Expand Up @@ -2299,7 +2299,7 @@ suff [p_idx [pUq Up]] : exists p_idx,
by move/set_mem : pUq; exact: bigcup_ointsub_sub.
exists (g p_idx).
- rewrite /= => q' Uq' q'p.
apply/notP => /eqP/set0P[s [ps ts]].
apply/not_notP => /eqP/set0P[s [ps ts]].
suff : ratr q' \in bigcup_ointsub U q by move/Up; rewrite leqNgt q'p.
rewrite (@nondisjoint_bigcup_ointsub _ _ _ (g p_idx))//.
rewrite (@nondisjoint_bigcup_ointsub _ _ _ q') ?bigcup_ointsubxx//.
Expand Down
4 changes: 2 additions & 2 deletions theories/normedtype_theory/urysohn.v
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(* mathcomp analysis (c) 2025 Inria and AIST. License: CeCILL-C. *)
(* mathcomp analysis (c) 2026 Inria and AIST. License: CeCILL-C. *)
From HB Require Import structures.
From mathcomp Require Import all_ssreflect finmap ssralg ssrnum ssrint interval.
From mathcomp Require Import archimedean.
Expand Down Expand Up @@ -85,7 +85,7 @@ Lemma edist_finP (xy : X * X) :
(edist xy \is a fin_num)%E <-> exists2 r, 0 < r & ball xy.1 r xy.2.
Proof.
rewrite ge0_fin_numE ?edist_ge0// ltey.
rewrite -(rwP (negPP eqP)); apply/iff_not2; rewrite notE.
rewrite -(rwP (negPP eqP)); apply/iff_not2; rewrite not_notE.
apply: (iff_trans (edist_pinftyP _)); apply: (iff_trans _ (forall2NP _ _)).
by under eq_forall => ? do rewrite implyE.
Qed.
Expand Down
6 changes: 3 additions & 3 deletions theories/sequences.v
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(* mathcomp analysis (c) 2025 Inria and AIST. License: CeCILL-C. *)
(* mathcomp analysis (c) 2026 Inria and AIST. License: CeCILL-C. *)
From HB Require Import structures.
From mathcomp Require Import all_ssreflect ssralg ssrnum ssrint.
From mathcomp Require Import interval interval_inference archimedean.
Expand Down Expand Up @@ -2899,7 +2899,7 @@ have akN1A : a_ k.-1 \in A.
contra: aiB => ->.
rewrite /a_ !mul0r addr0; apply/negP => /set_mem/(ABlt _ _ aA).
by rewrite ltxx.
apply/mem_set/boolp.notP => abs.
apply/mem_set/not_notP => abs.
have {}abs : a_ i.-1 \in B.
by move/seteqP : ABT => [_ /(_ (a_ i.-1) Logic.I)] [//|/mem_set].
have iN : (i.-1 < N.+1)%N by rewrite prednK ?lt0n// ltnW.
Expand Down Expand Up @@ -3253,7 +3253,7 @@ have majball g x : F g -> (ball x0 r%:num) x -> `|g (x - x0)| <= n%:R + n%:R.
move: (linearB (pack_linear Lg)) => /= -> Ballx.
apply/(le_trans (ler_normB _ _))/lerD; first exact: majballi.
by apply: majballi => //; exact/ball_center.
have ballprop : ball x0 r%:num (2^-1 * (r%:num / `|y|) *: y + x0).
have ballprop : ball x0 r%:num (2^-1 * (r%:num / `|y|) *: y + x0).
rewrite -ball_normE /ball_ /= opprD addrC subrK normrN normrZ.
rewrite 2!normrM 2!normfV normr_id !mulrA divfK ?normr_eq0//.
by rewrite !gtr0_norm// gtr_pMl// invf_lt1// ltr1n.
Expand Down