Skip to content
Draft
Show file tree
Hide file tree
Changes from all 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
67 changes: 38 additions & 29 deletions classical/boolp.v
Original file line number Diff line number Diff line change
Expand Up @@ -20,25 +20,28 @@ From mathcomp Require internal_Eqdep_dec.
(* Asymptotic Reasoning in Classical Analysis. JFR 2018 *)
(* *)
(* ## Axioms *)
(* ``` *)
(* functional_extensionality_dep == functional extensionality (on dependently *)
(* typed functions), i.e., functions that are pointwise *)
(* equal are equal *)
(* propositional_extensionality == propositional extensionality, i.e., iff *)
(* and equality are the same on Prop *)
(* constructive_indefinite_description == existential in Prop (ex) implies *)
(* existential in Type (sig) *)
(* cid := constructive_indefinite_description (shortcut) *)
(* ``` *)
(* `functional_extensionality_dep` *)
(* ~ functional extensionality (on dependently typed functions), *)
(* i.e., functions that are pointwise equal are equal *)
(* *)
(* `propositional_extensionality` *)
(* ~ propositional extensionality, i.e., iff and equality are the *)
(* same on `Prop` *)
(* *)
(* `constructive_indefinite_description` *)
(* ~ existential in `Prop` (`ex`) implies existential in `Type` *)
(* (`sig`) *)
(* *)
(* `cid` *)
(* ~ `constructive_indefinite_description` (shortcut) *)
(* *)
(* A number of properties are derived below from these axioms and are *)
(* often more pratical to use than directly using the axioms. For instance *)
(* propext, funext, the excluded middle (EM),... *)
(* *)
(* ## Boolean View of Prop *)
(* ``` *)
(* `[< P >] == boolean view of P : Prop, see all lemmas about asbool *)
(* ``` *)
(* `` `[< P >] `` *)
(* ~ boolean view of `P : Prop`, see all lemmas about `asbool` *)
(* *)
(* ## Mathematical Components Structures *)
(* *)
Expand All @@ -50,26 +53,32 @@ From mathcomp Require internal_Eqdep_dec.
(* and choiceType structures to let the user choose which definition of *)
(* equality to use and to avoid conflict with already declared instances. *)
(* *)
(* ``` *)
(* {classic T} == Endow T : Type with a canonical eqType/choiceType. *)
(* This is intended for local use. *)
(* E.g., T : Type |- A : {fset {classic T}} *)
(* Alternatively one may use elim/Pchoice: T => T in H *. *)
(* to substitute T with T : choiceType once and for all. *)
(* {eclassic T} == Endow T : eqType with a canonical choiceType. *)
(* On the model of {classic _}. *)
(* See also the lemmas Peq and eqPchoice. *)
(* ``` *)
(* `{classic T}` *)
(* ~ Endow `T : Type` with a canonical `eqType`/`choiceType`. *)
(* ~ This is intended for local use. *)
(* ~ E.g., `T : Type |- A : {fset {classic T}}` *)
(* ~ Alternatively one may use `elim/Pchoice: T => T in H *.` to *)
(* substitute `T` with `T : choiceType` once and for all. *)
(* *)
(* `{eclassic T}` *)
(* ~ Endow `T : eqType` with a canonical `choiceType`. *)
(* ~ On the model of `{classic _}`. *)
(* ~ See also the lemmas `Peq` and `eqPchoice`. *)
(* *)
(* Functions onto a porderType (resp. latticeType) are equipped with *)
(* a porderType (resp. latticeType), so that the generic notation (_ <= _)%O *)
(* (resp. `&`, `|`) from `order.v` can be used. *)
(* ``` *)
(* FunOrder.lef f g == pointwise large inequality between two functions *)
(* FunOrder.ltf f g == pointwise strict inequality between two functions *)
(* FunLattice.meetf f g == pointwise meet between two functions *)
(* FunLattice.joinf f g == pointwise join between two functions *)
(* ``` *)
(* `FunOrder.lef f g` *)
(* ~ pointwise large inequality between two functions *)
(* *)
(* `FunOrder.ltf f g` *)
(* ~ pointwise strict inequality between two functions *)
(* *)
(* `FunLattice.meetf f g` *)
(* ~ pointwise meet between two functions *)
(* *)
(* `FunLattice.joinf f g` *)
(* ~ pointwise join between two functions *)
(* *)
(******************************************************************************)

Expand Down
55 changes: 36 additions & 19 deletions classical/cardinality.v
Original file line number Diff line number Diff line change
Expand Up @@ -16,25 +16,42 @@ From mathcomp Require Import mathcomp_extra boolp classical_sets functions.
(* only relations A #<= B and A #= B to compare the cardinals of two sets *)
(* (on two possibly different types). *)
(* *)
(* ``` *)
(* A #<= B == the cardinal of A is smaller or equal to the one of B *)
(* A #>= B := B #<= A *)
(* A #= B == the cardinal of A is equal to the cardinal of B *)
(* A #!= B := ~~ (A #= B) *)
(* finite_set A == the set A is finite *)
(* := exists n, A #= `I_n *)
(* <-> exists X : {fset T}, A = [set` X] *)
(* <-> ~ ([set: nat] #<= A) *)
(* infinite_set A := ~ finite_set A *)
(* cofinite_set A := finite_set (~` A) *)
(* countable A <-> A is countable *)
(* := A #<= [set: nat] *)
(* fset_set A == the finite set corresponding if A : set T is finite, *)
(* set0 otherwise (T : choiceType) *)
(* A.`1 := [fset x.1 | x in A] *)
(* A.`2 := [fset x.2 | x in A] *)
(* {fimfun aT >-> T} == type of functions with a finite image *)
(* ``` *)
(* `A #<= B` *)
(* ~ the cardinal of `A` is smaller or equal to the one of `B` *)
(* *)
(* `A #>= B` *)
(* ~ `B #<= A` *)
(* *)
(* `A #= B` *)
(* ~ the cardinal of `A` is equal to the cardinal of `B` *)
(* *)
(* `A #!= B` *)
(* ~ `~~ (A #= B)` *)
(* *)
(* `finite_set A` *)
(* ~ the set `A` is finite *)
(* ~ ``:= exists n, A #= `I_n`` *)
(* ~ ``<-> exists X : {fset T}, A = [set` X]`` *)
(* ~ `<-> ~ ([set: nat] #<= A)` *)
(* *)
(* `infinite_set A` *)
(* ~ `~ finite_set A` *)
(* *)
(* `cofinite_set A` *)
(* ~ ``finite_set (~` A)`` *)
(* *)
(* `countable A` *)
(* ~ `A` is countable *)
(* ~ `:= A #<= [set: nat]` *)
(* *)
(* ``A.`1`` *)
(* ~ `[fset x.1 | x in A]` *)
(* *)
(* ``A.`2`` *)
(* ~ `[fset x.2 | x in A]` *)
(* *)
(* `{fimfun aT >-> T}` *)
(* ~ type of functions with a finite image *)
(* *)
(******************************************************************************)

Expand Down
21 changes: 14 additions & 7 deletions classical/classical_orders.v
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,20 @@ From mathcomp Require Import functions set_interval.
(* *)
(* This file provides some additional order theory that requires stronger *)
(* axioms than mathcomp's own orders expect. *)
(* ``` *)
(* same_prefix n == two elements in a product space agree up n *)
(* first_diff x y == the first occurrence where x n != y n, or None *)
(* big_lexi_le == the (countably) infinite lexicographical ordering *)
(* big_lexi_order == an alias for attaching this order type *)
(* start_with n x y == x for the first n values, then switches to y *)
(* ``` *)
(* `same_prefix n` *)
(* ~ two elements in a product space agree up `n` *)
(* *)
(* `first_diff x y` *)
(* ~ the first occurrence where `x n != y n`, or `None` *)
(* *)
(* `big_lexi_le` *)
(* ~ the (countably) infinite lexicographical ordering *)
(* *)
(* `big_lexi_order` *)
(* ~ an alias for attaching this order type *)
(* *)
(* `start_with n x y` *)
(* ~ `x` for the first `n` values, then switches to `y` *)
(* *)
(******************************************************************************)

Expand Down
Loading
Loading