This module provides instances that reduce the amount of code necessary to make a type compatible
with the polymorphic ranges. For an example of the required work, take a look at
Init.Data.Range.Polymorphic.Nat.
instance
Std.instLinearlyUpwardEnumerableOfTotalLeOfLawfulUpwardEnumerableOfLawfulUpwardEnumerableLE
{α : Type u_1}
[LE α]
[Total fun (x1 x2 : α) => x1 ≤ x2]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
:
instance
Std.Rxc.instIsAlwaysFiniteOfLawfulHasSize
{α : Type u_1}
[LE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[HasSize α]
[LawfulHasSize α]
:
@[reducible, inline]
Creates a HasSize α from a HasSize α instance. If the latter is lawful
and certain other conditions hold, then the former is also lawful by
Rxo.LawfulHasSize.of_closed.
Equations
- Std.Rxo.HasSize.ofClosed = { size := fun (lo hi : α) => Std.Rxc.HasSize.size lo hi - 1 }
Instances For
instance
Std.Rxo.LawfulHasSize.of_closed
{α : Type u_1}
[PRange.UpwardEnumerable α]
[LE α]
[DecidableLE α]
[LT α]
[DecidableLT α]
[LawfulOrderLT α]
[IsPartialOrder α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.HasSize α]
[Rxc.LawfulHasSize α]
:
instance
Std.Rxo.instIsAlwaysFiniteOfLawfulHasSize
{α : Type u_1}
[LT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[HasSize α]
[LawfulHasSize α]
:
instance
Std.Rxi.instIsAlwaysFiniteOfLawfulHasSize
{α : Type u_1}
[LT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[HasSize α]
[LawfulHasSize α]
: