The constrains relation #
Addresses can be said to constrain each other in a number of ways.
This is detailed below. The Constrains
relation is well-founded.
Main declarations #
ConNF.Constrains
: The constrains relation.ConNF.constrains_wf
: The constrains relation is well-founded.ConNF.small_constrains
: Only a small amount of things are constrained by a particular address.
Addresses can be said to constrain each other in a number of ways.
(L, A) ≺ (a, A)
whena ∈ L
andL
is a litter. We can say that an atom is constrained by the litter it belongs to.(N°, A) ≺ (N, A)
whenN
is a near-litter not equal to its corresponding litterN°
.(a, A) ≺ (N, A)
for alla ∈ N ∆ N°
.(x, A ⬝ (γ ⟶ δ) ⬝ B) ≺ (f_{γ,δ}(t), A ⬝ (γ ⟶ ε) ⬝ (ε ⟶ ⊥))
for all pathsA : β ⟶ γ
andδ, ε < γ
withδ ≠ ε
,t
aγ
-tangle, where(x, B)
lies in theδ
-support int
.
This choice of relation makes some parts of the freedom of action theorem easier to prove.
- atom: ∀ [inst : ConNF.Params] [inst_1 : ConNF.Level] [inst_2 : ConNF.BasePositions] [inst_3 : ConNF.FOAAssumptions] {β : ConNF.Λ} (A : ConNF.ExtendedIndex ↑β) (a : ConNF.Atom), { path := A, value := Sum.inr a.1.toNearLitter } ≺ { path := A, value := Sum.inl a }
- nearLitter: ∀ [inst : ConNF.Params] [inst_1 : ConNF.Level] [inst_2 : ConNF.BasePositions] [inst_3 : ConNF.FOAAssumptions] {β : ConNF.Λ} (A : ConNF.ExtendedIndex ↑β) (N : ConNF.NearLitter), ¬N.IsLitter → { path := A, value := Sum.inr N.fst.toNearLitter } ≺ { path := A, value := Sum.inr N }
- symmDiff: ∀ [inst : ConNF.Params] [inst_1 : ConNF.Level] [inst_2 : ConNF.BasePositions] [inst_3 : ConNF.FOAAssumptions] {β : ConNF.Λ} (A : ConNF.ExtendedIndex ↑β) (N : ConNF.NearLitter), ∀ a ∈ symmDiff (ConNF.litterSet N.fst) ↑N, { path := A, value := Sum.inl a } ≺ { path := A, value := Sum.inr N }
- fuzz: ∀ [inst : ConNF.Params] [inst_1 : ConNF.Level] [inst_2 : ConNF.BasePositions] [inst_3 : ConNF.FOAAssumptions] {β : ConNF.Λ} (A : ConNF.ExtendedIndex ↑β) (L : ConNF.Litter) (h : ConNF.InflexibleCoe A L), ∀ c ∈ h.t.support, { path := (h.path.B.cons ⋯).comp c.path, value := c.value } ≺ { path := A, value := Sum.inr L.toNearLitter }
- fuzzBot: ∀ [inst : ConNF.Params] [inst_1 : ConNF.Level] [inst_2 : ConNF.BasePositions] [inst_3 : ConNF.FOAAssumptions] {β : ConNF.Λ} (A : ConNF.ExtendedIndex ↑β) (L : ConNF.Litter) (h : ConNF.InflexibleBot A L), { path := h.path.B.cons ⋯, value := Sum.inl h.a } ≺ { path := A, value := Sum.inr L.toNearLitter }
Instances For
We declare new notation for the "constrains" relation on addresses.
Addresses can be said to constrain each other in a number of ways.
(L, A) ≺ (a, A)
whena ∈ L
andL
is a litter. We can say that an atom is constrained by the litter it belongs to.(N°, A) ≺ (N, A)
whenN
is a near-litter not equal to its corresponding litterN°
.(a, A) ≺ (N, A)
for alla ∈ N ∆ N°
.(x, A ⬝ (γ ⟶ δ) ⬝ B) ≺ (f_{γ,δ}(t), A ⬝ (γ ⟶ ε) ⬝ (ε ⟶ ⊥))
for all pathsA : β ⟶ γ
andδ, ε < γ
withδ ≠ ε
,t
aγ
-tangle, where(x, B)
lies in theδ
-support int
.
This choice of relation makes some parts of the freedom of action theorem easier to prove.
Equations
- ConNF.«term_≺_» = Lean.ParserDescr.trailingNode `ConNF.term_≺_ 50 51 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≺ ") (Lean.ParserDescr.cat `term 51))
Instances For
Instances For
If c
constrains d
, then the position of c
is less than the position of d
.
The ≺
relation is well-founded.
We establish some useful lemmas that show what addresses can possibly constrain what other addresses.
The constrains relation is stable under composition of paths. The converse is false.
We establish a strict partial order <
on addresses given by the transitive closure of the
constrains relation. This is well-founded.
Equations
- ConNF.instPartialOrderAddressSomeΛ = PartialOrder.mk ⋯
Equations
- ⋯ = ⋯
Equations
- ConNF.instWellFoundedRelationAddressSomeΛ = { rel := fun (x x_1 : ConNF.Address ↑β) => x < x_1, wf := ⋯ }
There is a small amount of addresses that constrain a given address.
The reflexive transitive closure of a set of addresses.
Equations
- ConNF.reflTransClosure S = {c : ConNF.Address ↑β | ∃ d ∈ S, c ≤ d}
Instances For
The transitive closure of a set of addresses.
Equations
- ConNF.transClosure S = {c : ConNF.Address ↑β | ∃ d ∈ S, c < d}
Instances For
Gadget that helps us prove that the reflTransClosure
of a small set is small.
Equations
- ConNF.nthClosure S 0 = S
- ConNF.nthClosure S n.succ = {c : ConNF.Address ↑β | ∃ d ∈ ConNF.nthClosure S n, c ≺ d}
Instances For
The nthClosure
of a small set is small.
The reflTransClosure
of a set is the ℕ
-indexed union of the n
th closures.
The reflTransClosure
of a small set is small.
The transClosure
of a small set is small.