Quotient types #
These are ported from the Lean 3 standard library file init/data/quot.lean
.
EqvGen r
is the equivalence relation generated by r
.
- rel: ∀ {α : Type u} {r : α → α → Prop} (x y : α), r x y → EqvGen r x y
- refl: ∀ {α : Type u} {r : α → α → Prop} (x : α), EqvGen r x x
- symm: ∀ {α : Type u} {r : α → α → Prop} (x y : α), EqvGen r x y → EqvGen r y x
- trans: ∀ {α : Type u} {r : α → α → Prop} (x y z : α), EqvGen r x y → EqvGen r y z → EqvGen r x z
Instances For
EqvGen.Setoid r
is the setoid generated by a relation r
.
The motivation for this definition is that Quot r
behaves like Quotient (EqvGen.Setoid r)
,
see for example Quot.exact
and Quot.EqvGen_sound
.
Equations
- EqvGen.Setoid r = { r := EqvGen r, iseqv := ⋯ }
Instances For
instance
Quotient.decidableEq
{α : Sort u}
{s : Setoid α}
[d : (a b : α) → Decidable (a ≈ b)]
:
DecidableEq (Quotient s)
Equations
- Quotient.decidableEq q₁ q₂ = Quotient.recOnSubsingleton₂ q₁ q₂ fun (a₁ a₂ : α) => match d a₁ a₂ with | isTrue h₁ => isTrue ⋯ | isFalse h₂ => isFalse ⋯