refactor(library/init/core): simpler has_sep type class with out_param

This commit is contained in:
Leonardo de Moura 2017-01-30 18:54:56 -08:00
parent 04a8518104
commit d3db3661af
3 changed files with 6 additions and 6 deletions

View file

@ -254,8 +254,8 @@ class has_ssubset (α : Type u) := (ssubset : αα → Prop)
class has_emptyc (α : Type u) := (emptyc : α)
class has_insert (α : out_param (Type u)) (γ : Type v) := (insert : αγγ)
/- Type class used to implement the notation { a ∈ c | p a } -/
class has_sep (α : Type u) (γ : Type u → Type v) :=
(sep : (α → Prop) → γ αγ α)
class has_sep (α : out_param (Type u)) (γ : Type v) :=
(sep : (α → Prop) → γγ)
/- Type class for set-like membership -/
class has_mem (α : out_param (Type u)) (γ : Type v) := (mem : αγ → Prop)
@ -301,7 +301,7 @@ has_emptyc.emptyc α
def singleton {α : Type u} {γ : Type v} [has_emptyc γ] [has_insert α γ] (a : α) : γ :=
insert a emptyc
def sep {α : Type u} {γ : Type u → Type v} [has_sep α γ] : (α → Prop) → γ αγ α :=
def sep {α : Type u} {γ : Type v} [has_sep α γ] : (α → Prop) → γγ :=
has_sep.sep
def mem {α : Type u} {γ : Type v} [has_mem α γ] : αγ → Prop :=

View file

@ -30,7 +30,7 @@ instance : has_subset (set α) :=
protected def sep (p : α → Prop) (s : set α) : set α :=
{a | a ∈ s ∧ p a}
instance : has_sep α set :=
instance : has_sep α (set α) :=
⟨set.sep⟩
instance : has_emptyc (set α) :=

View file

@ -16,7 +16,7 @@ has_mul : Type u → Type u
has_neg : Type u → Type u
has_one : Type u → Type u
has_sdiff : Type u → Type u
has_sep : Type u → (Type u → Type v) → Type (max u v)
has_sep : out_param Type u → Type v → Type (max u v)
has_sizeof : Sort u → Sort (max 1 u)
has_ssubset : Type u → Type u
has_sub : Type u → Type u
@ -42,7 +42,7 @@ has_mul : Type u → Type u
has_neg : Type u → Type u
has_one : Type u → Type u
has_sdiff : Type u → Type u
has_sep : Type u → (Type u → Type v) → Type (max u v)
has_sep : out_param Type u → Type v → Type (max u v)
has_sizeof : Sort u → Sort (max 1 u)
has_ssubset : Type u → Type u
has_sub : Type u → Type u