Mappings between UpwardEnumerable types #
In this file we build machinery for pulling back lawfulness properties for UpwardEnumerable along
injective functions that commute with the relevant operations.
structure
Std.PRange.UpwardEnumerable.Map
(α : Type u)
(β : Type v)
[UpwardEnumerable α]
[UpwardEnumerable β]
:
Type (max u v)
An injective mapping between two types implementing UpwardEnumerable that commutes with succ?
and succMany?.
Having such a mapping means that all of the Prop-valued lawfulness classes around
UpwardEnumerable can be pulled back.
- toFun : α → β
- injective : Function.Injective self.toFun
Instances For
theorem
Std.PRange.UpwardEnumerable.Map.succ?_eq_none_iff
{α : Type u_1}
{β : Type u_2}
[UpwardEnumerable α]
[UpwardEnumerable β]
(f : Map α β)
{a : α}
:
theorem
Std.PRange.UpwardEnumerable.Map.le_iff
{α : Type u_1}
{β : Type u_2}
[UpwardEnumerable α]
[UpwardEnumerable β]
(f : Map α β)
{a b : α}
:
theorem
Std.PRange.UpwardEnumerable.Map.lt_iff
{α : Type u_1}
{β : Type u_2}
[UpwardEnumerable α]
[UpwardEnumerable β]
(f : Map α β)
{a b : α}
:
theorem
Std.PRange.UpwardEnumerable.Map.succ?_toFun'
{α : Type u_1}
{β : Type u_2}
[UpwardEnumerable α]
[UpwardEnumerable β]
(f : Map α β)
:
class
Std.PRange.UpwardEnumerable.Map.PreservesRxcSize
{α : Type u_1}
{β : Type u_2}
[UpwardEnumerable α]
[UpwardEnumerable β]
[Rxc.HasSize α]
[Rxc.HasSize β]
(f : Map α β)
:
Compatibility class for Map and Rxc.HasSize.
Instances
class
Std.PRange.UpwardEnumerable.Map.PreservesRxoSize
{α : Type u_1}
{β : Type u_2}
[UpwardEnumerable α]
[UpwardEnumerable β]
[Rxo.HasSize α]
[Rxo.HasSize β]
(f : Map α β)
:
Compatibility class for Map and Rxo.HasSize.
Instances
class
Std.PRange.UpwardEnumerable.Map.PreservesRxiSize
{α : Type u_1}
{β : Type u_2}
[UpwardEnumerable α]
[UpwardEnumerable β]
[Rxi.HasSize α]
[Rxi.HasSize β]
(f : Map α β)
:
Compatibility class for Map and Rxi.HasSize.
Instances
class
Std.PRange.UpwardEnumerable.Map.PreservesLeast?
{α : Type u_1}
{β : Type u_2}
[UpwardEnumerable α]
[UpwardEnumerable β]
[Least? α]
[Least? β]
(f : Map α β)
:
Compatibility class for Map and Least?.
Instances
theorem
Std.PRange.LawfulUpwardEnumerable.ofMap
{α : Type u_2}
{β : Type u_1}
[UpwardEnumerable α]
[UpwardEnumerable β]
[LawfulUpwardEnumerable β]
(f : UpwardEnumerable.Map α β)
:
instance
Std.PRange.instPreservesLTOfLawfulOrderLTOfPreservesLE
{α : Type u_1}
{β : Type u_2}
[UpwardEnumerable α]
[UpwardEnumerable β]
[LE α]
[LT α]
[LawfulOrderLT α]
[LE β]
[LT β]
[LawfulOrderLT β]
(f : UpwardEnumerable.Map α β)
[f.PreservesLE]
:
theorem
Std.PRange.LawfulUpwardEnumerableLE.ofMap
{α : Type u_1}
{β : Type u_2}
[UpwardEnumerable α]
[UpwardEnumerable β]
[LE α]
[LE β]
[LawfulUpwardEnumerableLE β]
(f : UpwardEnumerable.Map α β)
[f.PreservesLE]
:
theorem
Std.PRange.LawfulUpwardEnumerableLT.ofMap
{α : Type u_1}
{β : Type u_2}
[UpwardEnumerable α]
[UpwardEnumerable β]
[LT α]
[LT β]
[LawfulUpwardEnumerableLT β]
(f : UpwardEnumerable.Map α β)
[f.PreservesLT]
:
theorem
Std.PRange.LawfulUpwardEnumerableLeast?.ofMap
{α : Type u_1}
{β : Type u_2}
[UpwardEnumerable α]
[UpwardEnumerable β]
[Least? α]
[Least? β]
[LawfulUpwardEnumerableLeast? β]
(f : UpwardEnumerable.Map α β)
[f.PreservesLeast?]
:
theorem
Std.Rxc.LawfulHasSize.ofMap
{α : Type u_1}
{β : Type u_2}
[PRange.UpwardEnumerable α]
[PRange.UpwardEnumerable β]
[LE α]
[LE β]
[HasSize α]
[HasSize β]
[LawfulHasSize β]
(f : PRange.UpwardEnumerable.Map α β)
[f.PreservesLE]
[f.PreservesRxcSize]
:
theorem
Std.Rxo.LawfulHasSize.ofMap
{α : Type u_1}
{β : Type u_2}
[PRange.UpwardEnumerable α]
[PRange.UpwardEnumerable β]
[LT α]
[LT β]
[HasSize α]
[HasSize β]
[LawfulHasSize β]
(f : PRange.UpwardEnumerable.Map α β)
[f.PreservesLT]
[f.PreservesRxoSize]
:
theorem
Std.Rxi.LawfulHasSize.ofMap
{α : Type u_1}
{β : Type u_2}
[PRange.UpwardEnumerable α]
[PRange.UpwardEnumerable β]
[HasSize α]
[HasSize β]
[LawfulHasSize β]
(f : PRange.UpwardEnumerable.Map α β)
[f.PreservesRxiSize]
:
theorem
Std.Rxc.IsAlwaysFinite.ofMap
{α : Type u_1}
{β : Type u_2}
[PRange.UpwardEnumerable α]
[PRange.UpwardEnumerable β]
[LE α]
[LE β]
[IsAlwaysFinite β]
(f : PRange.UpwardEnumerable.Map α β)
[f.PreservesLE]
:
theorem
Std.Rxo.IsAlwaysFinite.ofMap
{α : Type u_1}
{β : Type u_2}
[PRange.UpwardEnumerable α]
[PRange.UpwardEnumerable β]
[LT α]
[LT β]
[IsAlwaysFinite β]
(f : PRange.UpwardEnumerable.Map α β)
[f.PreservesLT]
:
theorem
Std.Rxi.IsAlwaysFinite.ofMap
{α : Type u_2}
{β : Type u_1}
[PRange.UpwardEnumerable α]
[PRange.UpwardEnumerable β]
[IsAlwaysFinite β]
(f : PRange.UpwardEnumerable.Map α β)
: