Documentation
Init
.
Data
.
Range
.
Polymorphic
.
Fin
Search
return to top
source
Imports
Init.Grind
Init.Data.Fin.OverflowAware
Init.Data.Range.Polymorphic.Instances
Imported by
Fin
.
instUpwardEnumerable
Fin
.
pRangeSucc?_eq
Fin
.
pRangeSuccMany?_eq
Fin
.
instLawfulUpwardEnumerable
Fin
.
instLawfulUpwardEnumerableLE
Fin
.
instLeast?OfNatNat
Fin
.
instLawfulUpwardEnumerableLeast?OfNatNat
Fin
.
least?_eq_of_zero
Fin
.
instLeast?OfNeZeroNat
Fin
.
instLawfulUpwardEnumerableLeast?
Fin
.
least?_eq
Fin
.
instLawfulUpwardEnumerableLT
Fin
.
instHasSize
Fin
.
rxcHasSize_eq
Fin
.
instLawfulHasSize
Fin
.
instIsAlwaysFinite
Fin
.
instHasSize_1
Fin
.
instLawfulHasSize_1
Fin
.
instIsAlwaysFinite_1
Fin
.
instHasSize_2
Fin
.
rxiHasSize_eq
Fin
.
instLawfulHasSize_2
Fin
.
instIsAlwaysFinite_2
source
instance
Fin
.
instUpwardEnumerable
{
n
:
Nat
}
:
Std.PRange.UpwardEnumerable
(
Fin
n
)
Equations
Fin.instUpwardEnumerable
=
{
succ?
:=
fun (
i
:
Fin
n
) =>
i
.
addNat?
1
,
succMany?
:=
fun (
m
:
Nat
) (
i
:
Fin
n
) =>
i
.
addNat?
m
}
source
@[simp]
theorem
Fin
.
pRangeSucc?_eq
{
n
:
Nat
}
:
Std.PRange.succ?
=
fun (
x
:
Fin
n
) =>
x
.
addNat?
1
source
@[simp]
theorem
Fin
.
pRangeSuccMany?_eq
{
n
m
:
Nat
}
:
Std.PRange.succMany?
m
=
fun (
x
:
Fin
n
) =>
x
.
addNat?
m
source
instance
Fin
.
instLawfulUpwardEnumerable
{
n
:
Nat
}
:
Std.PRange.LawfulUpwardEnumerable
(
Fin
n
)
source
instance
Fin
.
instLawfulUpwardEnumerableLE
{
n
:
Nat
}
:
Std.PRange.LawfulUpwardEnumerableLE
(
Fin
n
)
source
instance
Fin
.
instLeast?OfNatNat
:
Std.PRange.Least?
(
Fin
0
)
Equations
Fin.instLeast?OfNatNat
=
{
least?
:=
none
}
source
instance
Fin
.
instLawfulUpwardEnumerableLeast?OfNatNat
:
Std.PRange.LawfulUpwardEnumerableLeast?
(
Fin
0
)
source
@[simp]
theorem
Fin
.
least?_eq_of_zero
:
Std.PRange.least?
=
none
source
instance
Fin
.
instLeast?OfNeZeroNat
{
n
:
Nat
}
[
NeZero
n
]
:
Std.PRange.Least?
(
Fin
n
)
Equations
Fin.instLeast?OfNeZeroNat
=
{
least?
:=
some
0
}
source
instance
Fin
.
instLawfulUpwardEnumerableLeast?
{
n
:
Nat
}
[
NeZero
n
]
:
Std.PRange.LawfulUpwardEnumerableLeast?
(
Fin
n
)
source
@[simp]
theorem
Fin
.
least?_eq
{
n
:
Nat
}
[
NeZero
n
]
:
Std.PRange.least?
=
some
0
source
instance
Fin
.
instLawfulUpwardEnumerableLT
{
n
:
Nat
}
:
Std.PRange.LawfulUpwardEnumerableLT
(
Fin
n
)
source
instance
Fin
.
instHasSize
{
n
:
Nat
}
:
Std.Rxc.HasSize
(
Fin
n
)
Equations
Fin.instHasSize
=
{
size
:=
fun (
lo
hi
:
Fin
n
) =>
↑
hi
+
1
-
↑
lo
}
source
theorem
Fin
.
rxcHasSize_eq
{
n
:
Nat
}
:
Std.Rxc.HasSize.size
=
fun (
lo
hi
:
Fin
n
) =>
↑
hi
+
1
-
↑
lo
source
instance
Fin
.
instLawfulHasSize
{
n
:
Nat
}
:
Std.Rxc.LawfulHasSize
(
Fin
n
)
source
instance
Fin
.
instIsAlwaysFinite
{
n
:
Nat
}
:
Std.Rxc.IsAlwaysFinite
(
Fin
n
)
source
instance
Fin
.
instHasSize_1
{
n
:
Nat
}
:
Std.Rxo.HasSize
(
Fin
n
)
Equations
Fin.instHasSize_1
=
Std.Rxo.HasSize.ofClosed
source
instance
Fin
.
instLawfulHasSize_1
{
n
:
Nat
}
:
Std.Rxo.LawfulHasSize
(
Fin
n
)
source
instance
Fin
.
instIsAlwaysFinite_1
{
n
:
Nat
}
:
Std.Rxo.IsAlwaysFinite
(
Fin
n
)
source
instance
Fin
.
instHasSize_2
{
n
:
Nat
}
:
Std.Rxi.HasSize
(
Fin
n
)
Equations
Fin.instHasSize_2
=
{
size
:=
fun (
lo
:
Fin
n
) =>
n
-
↑
lo
}
source
theorem
Fin
.
rxiHasSize_eq
{
n
:
Nat
}
:
Std.Rxi.HasSize.size
=
fun (
lo
:
Fin
n
) =>
n
-
↑
lo
source
instance
Fin
.
instLawfulHasSize_2
{
n
:
Nat
}
:
Std.Rxi.LawfulHasSize
(
Fin
n
)
source
instance
Fin
.
instIsAlwaysFinite_2
{
n
:
Nat
}
:
Std.Rxi.IsAlwaysFinite
(
Fin
n
)