Trees #
In this file, we define the notion of a tree on a type.
Main declarations #
ConNF.Tree
: The type family of trees parametrised by a given type.
An α
-tree of X
associates an object of type X
to each path α ↝ ⊥
.
Equations
- ConNF.Tree X α = (α ↝ ⊥ → X)
Instances For
instance
ConNF.Tree.instDerivative
[ConNF.Params]
{X : Type u_1}
{α β : ConNF.TypeIndex}
:
ConNF.Derivative (ConNF.Tree X α) (ConNF.Tree X β) α β
Equations
- ConNF.Tree.instDerivative = ConNF.Derivative.mk (fun (T : ConNF.Tree X α) (A : α ↝ β) (B : β ↝ ⊥) => T (A ⇘ B)) ⋯
@[simp]
theorem
ConNF.Tree.deriv_apply
[ConNF.Params]
{X : Type u_1}
{α β : ConNF.TypeIndex}
(T : ConNF.Tree X α)
(A : α ↝ β)
(B : β ↝ ⊥)
:
@[simp]
theorem
ConNF.Tree.deriv_nil
[ConNF.Params]
{X : Type u_1}
{α : ConNF.TypeIndex}
(T : ConNF.Tree X α)
:
theorem
ConNF.Tree.deriv_deriv
[ConNF.Params]
{X : Type u_1}
{α β γ : ConNF.TypeIndex}
(T : ConNF.Tree X α)
(A : α ↝ β)
(B : β ↝ γ)
:
theorem
ConNF.Tree.deriv_sderiv
[ConNF.Params]
{X : Type u_1}
{α β γ : ConNF.TypeIndex}
(T : ConNF.Tree X α)
(A : α ↝ β)
(h : γ < β)
:
@[simp]
theorem
ConNF.Tree.sderiv_apply
[ConNF.Params]
{X : Type u_1}
{α β : ConNF.TypeIndex}
(T : ConNF.Tree X α)
(h : β < α)
(B : β ↝ ⊥)
:
instance
ConNF.Tree.instBotDerivative
[ConNF.Params]
{X : Type u_1}
{α : ConNF.TypeIndex}
:
ConNF.BotDerivative (ConNF.Tree X α) X α
Equations
- ConNF.Tree.instBotDerivative = ConNF.BotDerivative.mk (fun (T : ConNF.Tree X α) (A : α ↝ ⊥) => T A) ⋯
@[simp]
theorem
ConNF.Tree.botDeriv_eq
[ConNF.Params]
{X : Type u_1}
{α : ConNF.TypeIndex}
(T : ConNF.Tree X α)
(A : α ↝ ⊥)
:
theorem
ConNF.Tree.botSderiv_eq
[ConNF.Params]
{X : Type u_1}
{α : ConNF.TypeIndex}
(T : ConNF.Tree X α)
:
instance
ConNF.Tree.group
[ConNF.Params]
{X : Type u_1}
{α : ConNF.TypeIndex}
[Group X]
:
Group (ConNF.Tree X α)
The group structure on the type of α
-trees of X
is given by "branchwise" multiplication,
given by Pi.group
.
Equations
- ConNF.Tree.group = Pi.group
@[simp]
theorem
ConNF.Tree.one_apply
[ConNF.Params]
{X : Type u_1}
{α : ConNF.TypeIndex}
[Group X]
(A : α ↝ ⊥)
:
1 A = 1
@[simp]
theorem
ConNF.Tree.one_deriv
[ConNF.Params]
{X : Type u_1}
{α β : ConNF.TypeIndex}
[Group X]
(A : α ↝ β)
:
@[simp]
theorem
ConNF.Tree.one_sderiv
[ConNF.Params]
{X : Type u_1}
{α β : ConNF.TypeIndex}
[Group X]
(h : β < α)
:
@[simp]
@[simp]
theorem
ConNF.Tree.mul_apply
[ConNF.Params]
{X : Type u_1}
{α : ConNF.TypeIndex}
[Group X]
(T₁ T₂ : ConNF.Tree X α)
(A : α ↝ ⊥)
:
@[simp]
theorem
ConNF.Tree.mul_deriv
[ConNF.Params]
{X : Type u_1}
{α β : ConNF.TypeIndex}
[Group X]
(T₁ T₂ : ConNF.Tree X α)
(A : α ↝ β)
:
@[simp]
theorem
ConNF.Tree.mul_sderiv
[ConNF.Params]
{X : Type u_1}
{α β : ConNF.TypeIndex}
[Group X]
(T₁ T₂ : ConNF.Tree X α)
(h : β < α)
:
@[simp]
theorem
ConNF.Tree.mul_sderivBot
[ConNF.Params]
{X : Type u_1}
{α : ConNF.TypeIndex}
[Group X]
(T₁ T₂ : ConNF.Tree X α)
:
@[simp]
theorem
ConNF.Tree.inv_apply
[ConNF.Params]
{X : Type u_1}
{α : ConNF.TypeIndex}
[Group X]
(T : ConNF.Tree X α)
(A : α ↝ ⊥)
:
@[simp]
theorem
ConNF.Tree.inv_deriv
[ConNF.Params]
{X : Type u_1}
{α β : ConNF.TypeIndex}
[Group X]
(T : ConNF.Tree X α)
(A : α ↝ β)
:
@[simp]
theorem
ConNF.Tree.inv_sderiv
[ConNF.Params]
{X : Type u_1}
{α β : ConNF.TypeIndex}
[Group X]
(T : ConNF.Tree X α)
(h : β < α)
:
@[simp]
theorem
ConNF.Tree.inv_sderivBot
[ConNF.Params]
{X : Type u_1}
{α : ConNF.TypeIndex}
[Group X]
(T : ConNF.Tree X α)
:
@[simp]
theorem
ConNF.Tree.npow_apply
[ConNF.Params]
{X : Type u_1}
{α : ConNF.TypeIndex}
[Group X]
(T : ConNF.Tree X α)
(A : α ↝ ⊥)
(n : ℕ)
:
@[simp]
theorem
ConNF.Tree.zpow_apply
[ConNF.Params]
{X : Type u_1}
{α : ConNF.TypeIndex}
[Group X]
(T : ConNF.Tree X α)
(A : α ↝ ⊥)
(n : ℤ)
:
instance
ConNF.Tree.partialOrder
[ConNF.Params]
{X : Type u_1}
{α : ConNF.TypeIndex}
[PartialOrder X]
:
PartialOrder (ConNF.Tree X α)
The partial order on the type of α
-trees of X
is given by "branchwise" comparison.
Equations
- ConNF.Tree.partialOrder = Pi.partialOrder
theorem
ConNF.Tree.le_iff
[ConNF.Params]
{X : Type u_1}
{α : ConNF.TypeIndex}
[PartialOrder X]
(T₁ T₂ : ConNF.Tree X α)
:
Cardinality bounds on trees #
theorem
ConNF.card_tree_le
[ConNF.Params]
{X : Type u}
{α : ConNF.TypeIndex}
(h : Cardinal.mk X ≤ Cardinal.mk ConNF.μ)
:
Cardinal.mk (ConNF.Tree X α) ≤ Cardinal.mk ConNF.μ
theorem
ConNF.card_tree_lt
[ConNF.Params]
{X : Type u}
{α : ConNF.TypeIndex}
(h : Cardinal.mk X < Cardinal.mk ConNF.μ)
:
Cardinal.mk (ConNF.Tree X α) < Cardinal.mk ConNF.μ
theorem
ConNF.card_tree_eq
[ConNF.Params]
{X : Type u}
{α : ConNF.TypeIndex}
(h : Cardinal.mk X = Cardinal.mk ConNF.μ)
:
Cardinal.mk (ConNF.Tree X α) = Cardinal.mk ConNF.μ