Built with Alectryon, running Coq+SerAPI v8.20.0+0.20.0. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use ⌘ instead of Ctrl.
[Loading ML file ring_plugin.cmxs (using legacy method) ... done]
[Loading ML file ssrmatching_plugin.cmxs (using legacy method) ... done]
[Loading ML file ssreflect_plugin.cmxs (using legacy method) ... done]
Serlib plugin: coq-elpi.elpi is not available: serlib support is missing.
Incremental checking for commands in this plugin will be impacted.
[Loading ML file coq-elpi.elpi ... done]
Notation"_ + _" was already used in scope nat_scope.
[notation-overridden,parsing,default]
Notation"_ - _" was already used in scope nat_scope.
[notation-overridden,parsing,default]
Notation"_ <= _" was already used in scope nat_scope.
[notation-overridden,parsing,default]
Notation"_ < _" was already used in scope nat_scope.
[notation-overridden,parsing,default]
Notation"_ >= _" was already used in scope nat_scope.
[notation-overridden,parsing,default]
Notation"_ > _" was already used in scope nat_scope.
[notation-overridden,parsing,default]
Notation"_ <= _ <= _" was already used in scope
nat_scope. [notation-overridden,parsing,default]
Notation"_ < _ <= _" was already used in scope
nat_scope. [notation-overridden,parsing,default]
Notation"_ <= _ < _" was already used in scope
nat_scope. [notation-overridden,parsing,default]
Notation"_ < _ < _" was already used in scope
nat_scope. [notation-overridden,parsing,default]
Notation"_ * _" was already used in scope nat_scope.
[notation-overridden,parsing,default]
(** In this section, we define a notion of a set (based on a sequence without duplicates). *)SectionSeqSet.(** Let [T] be any type with decidable equality. *)Context {T : eqType}.(** We define a set as a sequence that has no duplicates. *)Recordset :=
{
_set_seq :> seq T ;
_ : uniq _set_seq (* no duplicates *)
}.(** Now we add the [ssreflect] boilerplate code to support [_ == _] and [_ ∈ _] operations. *)Set Warnings"-redundant-canonical-projection".
Projection value has no head constant:
fun (K : set -> Type)
(K_S : forall (x : seq T) (Px : uniq x),
K (Build_set x Px)) (u : set) =>
match u as xxx return (K xxx) with
| Build_set x Px => K_S x Px
endin canonical instance
HB_unnamed_factory_2 of isSub.Sub_rect, ignoring it.
[projection-no-head-constant,records,default]
Projection value has no head constant:
fun (K : set -> Type)
(K_S : forall (x : seq T) (Px : uniq x),
K (Build_set x Px)) (u : set) =>
match u as xxx return (K xxx) with
| Build_set x Px => K_S x Px
endin canonical instance
HB_unnamed_factory_2 of isSub.Sub_rect, ignoring it.
[projection-no-head-constant,records,default]
Projection value has no head constant:
fun (K : set -> Type)
(K_S : forall (x : seq T) (Px : uniq x),
K (Build_set x Px)) (u : set) =>
match u as xxx return (K xxx) with
| Build_set x Px => K_S x Px
endin canonical instance
HB_unnamed_factory_2 of isSub.Sub_rect, ignoring it.
[projection-no-head-constant,records,default]
Notation" {set R } " := (set_of (Phant R)).(** Next we prove a basic lemma about sets. *)SectionLemmas.(** Consider a set [s]. *)Context {T : eqType}.Variables : {set T}.(** Then we show that element of [s] are unique. *)