class
QuasiBorelSpace.Functor
(F : (A : Type u_2) β [QuasiBorelSpace A] β Type u_1)
:
Type (max u_1 (u_2 + 1))
A QuasiBorelSpace Functor is a function F : Type β Type such that:
FmapsQuasiBorelSpaces toQuasiBorelSpaces.
- There is a mapping from morphisms to morphisms.
- The mapping preserves the identity morphism.
- map_comp {A : Type u_2} [QuasiBorelSpace A] {B : Type u_2} [QuasiBorelSpace B] {C : Type u_2} [QuasiBorelSpace C] (f : B βπ C) (g : A βπ B) : (map f).comp (map g) = map (f.comp g)
- The mapping distributes over composition.
Instances
@[simp]
theorem
QuasiBorelSpace.Functor.map_comp_coe
{F : (A : Type u_1) β [QuasiBorelSpace A] β Type u_2}
[Functor F]
{A : Type u_1}
[QuasiBorelSpace A]
{B : Type u_1}
[QuasiBorelSpace B]
{C : Type u_1}
[QuasiBorelSpace C]
(f : B βπ C)
(g : A βπ B)
(x : F A)
:
A Sequence is a sequence of types S : β β Type such that:
- quasiBorelSpace {n : β} : QuasiBorelSpace (S n)
- Every
S nis aQuasiBorelSpace.
- Every
- There is a projection from each type to its predecessor.
Instances
theorem
QuasiBorelSpace.Comp.ext
{F : (A : Type u_1) β [QuasiBorelSpace A] β Type u_2}
[Functor F]
{S : β β Type u_1}
[Sequence S]
{n : β}
{x y : Comp F S n}
(h : QuasiBorelSpace.Comp.getβ x = QuasiBorelSpace.Comp.getβΒΉ y)
:
theorem
QuasiBorelSpace.Comp.ext_iff
{F : (A : Type u_1) β [QuasiBorelSpace A] β Type u_2}
[Functor F]
{S : β β Type u_1}
[Sequence S]
{n : β}
{x y : Comp F S n}
:
instance
QuasiBorelSpace.Comp.inst
{F : (A : Type u_1) β [QuasiBorelSpace A] β Type u_2}
[Functor F]
{S : β β Type u_1}
[Sequence S]
{n : β}
:
QuasiBorelSpace (Comp F S n)
theorem
QuasiBorelSpace.Comp.isHom_mk
{F : (A : Type u_2) β [QuasiBorelSpace A] β Type u_1}
[Functor F]
{S : β β Type u_2}
[Sequence S]
{n : β}
:
theorem
QuasiBorelSpace.Comp.isHom_get
{F : (A : Type u_2) β [QuasiBorelSpace A] β Type u_1}
[Functor F]
{S : β β Type u_2}
[Sequence S]
{n : β}
:
@[simp]
theorem
QuasiBorelSpace.Comp.project_def
{F : (A : Type u_1) β [QuasiBorelSpace A] β Type u_2}
[Functor F]
{S : β β Type u_1}
[Sequence S]
(n : β)
:
Sequence.project n = { toFun := fun (x : Comp F S (n + 1)) => { get := (Functor.map (Sequence.project n)) (QuasiBorelSpace.Comp.getβ x) },
property := β― }
Equations
- QuasiBorelSpace.Limit.instDFunLikeNat = { coe := QuasiBorelSpace.Limit.toFun, coe_injective' := β― }
def
QuasiBorelSpace.Limit.Simps.coe
{S : β β Type u_1}
[Sequence S]
(f : Limit S)
(n : β)
:
S n
A simps projection for function coercion.
Equations
- QuasiBorelSpace.Limit.Simps.coe f = βf
Instances For
def
QuasiBorelSpace.Limit.copy
{S : β β Type u_1}
[Sequence S]
(f : Limit S)
(f' : (n : β) β S n)
(h : f' = βf)
:
Limit S
Copy of a QuasiBorelHom with a new toFun equal to the old one.
Useful to fix definitional equalities.
Instances For
structure
QuasiBorelSpace.Iter
(F : (A : Type u_1) β [QuasiBorelSpace A] β Type u_1)
[Functor F]
(n : β)
:
Type u_1
The Sequence obtained by iterating a Functor.
Instances For
instance
QuasiBorelSpace.Iter.inst
{F : (A : Type u_1) β [QuasiBorelSpace A] β Type u_1}
[Functor F]
{n : β}
:
QuasiBorelSpace (Iter F n)
@[simp]
theorem
QuasiBorelSpace.Iter.isHom_get
{F : (A : Type u_1) β [QuasiBorelSpace A] β Type u_1}
[Functor F]
{n : β}
:
@[simp]
theorem
QuasiBorelSpace.Iter.isHom_mk
{F : (A : Type u_1) β [QuasiBorelSpace A] β Type u_1}
[Functor F]
{n : β}
:
def
QuasiBorelSpace.Iter.zero
{F : (A : Type) β [QuasiBorelSpace A] β Type}
[Functor F]
:
Iter F 0
Zero element constructor.
Instances For
instance
QuasiBorelSpace.Iter.instSubsingletonOfNatNat
{F : (A : Type u_1) β [QuasiBorelSpace A] β Type u_1}
[Functor F]
:
Subsingleton (Iter F 0)
instance
QuasiBorelSpace.Iter.instSequence
{F : (A : Type) β [QuasiBorelSpace A] β Type}
[Functor F]
:
Equations
- QuasiBorelSpace.Iter.instSequence = { quasiBorelSpace := @QuasiBorelSpace.Iter.inst F instβ, project := fun {n : β} => QuasiBorelSpace.Iter.projectβ n }
@[simp]
theorem
QuasiBorelSpace.Iter.project_zero
{F : (A : Type) β [QuasiBorelSpace A] β Type}
[Functor F]
:
@[simp]
theorem
QuasiBorelSpace.Iter.project_succ
{F : (A : Type) β [QuasiBorelSpace A] β Type}
[Functor F]
{n : β}
:
def
QuasiBorelSpace.Iter.unfold
{A : Type}
[QuasiBorelSpace A]
{F : (A : Type) β [QuasiBorelSpace A] β Type}
[Functor F]
(f : A βπ F A)
(n : β)
:
Constructs an Iterated sequence of a Functor from an unfolding function.
Equations
- QuasiBorelSpace.Iter.unfold f 0 = { toFun := fun (x : A) => QuasiBorelSpace.Iter.zero, property := β― }
- QuasiBorelSpace.Iter.unfold f n.succ = { toFun := fun (x : A) => QuasiBorelSpace.Iter.succ ((QuasiBorelSpace.Functor.map (QuasiBorelSpace.Iter.unfold f n)) (f x)), property := β― }
Instances For
class
QuasiBorelSpace.Continuous
(F : (A : Type u_1) β [QuasiBorelSpace A] β Type u_2)
[Functor F]
:
Type (max (u_1 + 1) u_2)
A functor F is continuous if it preserves Limits.
Instances
@[simp]
theorem
QuasiBorelSpace.Continuous.seq_unseq_coe
{F : (A : Type u_2) β [QuasiBorelSpace A] β Type u_1}
[Functor F]
[Continuous F]
{S : β β Type u_2}
[Sequence S]
(x : Limit (Comp F S))
:
@[simp]
theorem
QuasiBorelSpace.Continuous.unseq_seq_coe
{F : (A : Type u_1) β [QuasiBorelSpace A] β Type u_2}
[Functor F]
[Continuous F]
{S : β β Type u_1}
[Sequence S]
(x : F (Limit S))
:
The greatest fixed point of a Functor.
- get : QuasiBorelSpace.Limit (QuasiBorelSpace.Iter F)
Instances For
instance
QuasiBorelSpace.Nu.inst
{F : (A : Type) β [QuasiBorelSpace A] β Type}
[Functor F]
:
QuasiBorelSpace (Nu F)
@[simp]
theorem
QuasiBorelSpace.Nu.isHom_get
{F : (A : Type) β [QuasiBorelSpace A] β Type}
[Functor F]
:
@[simp]
def
QuasiBorelSpace.Nu.roll
{F : (A : Type) β [QuasiBorelSpace A] β Type}
[Functor F]
[Continuous F]
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
QuasiBorelSpace.Nu.unroll
{F : (A : Type) β [QuasiBorelSpace A] β Type}
[Functor F]
[Continuous F]
:
Unrolls a Functor out of a Nu.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
QuasiBorelSpace.Nu.roll_unroll
{F : (A : Type) β [QuasiBorelSpace A] β Type}
[Functor F]
[Continuous F]
(x : Nu F)
:
@[simp]
theorem
QuasiBorelSpace.Nu.unroll_roll
{F : (A : Type) β [QuasiBorelSpace A] β Type}
[Functor F]
[Continuous F]
(x : F (Nu F))
:
def
QuasiBorelSpace.Nu.unfold
{A : Type}
[QuasiBorelSpace A]
{F : (A : Type) β [QuasiBorelSpace A] β Type}
[Functor F]
(f : A βπ F A)
:
Constructs a Nu from an unfolding.
Equations
- QuasiBorelSpace.Nu.unfold f = { toFun := fun (x : A) => { get := { toFun := fun (n : β) => (QuasiBorelSpace.Iter.unfold f n) x, property := β― } }, property := β― }