OAI/Algebra/DepthFive/PathInjectivity.lean
21 declarations, 0 contain sorry, 0 declared as axioms
- theorem
OAI.Problem335.matrixEntryPaths_nodup_localline 13Source documentation
The recursive path enumeration never repeats a path.
private theorem matrixEntryPaths_nodup_local [Fintype ι] [DecidableEq ι] (labels : List σ) (i j : ι) : (matrixEntryPaths labels i j).Nodup := by …Mentions: OAI.Problem335.matrixEntryPaths
- def
OAI.Problem335.edgeListShiftline 37Source documentation
Differentiated coordinates have sign -1, multiplied coordinates sign +1.
def edgeListShift (side : σ → Bool) : List (σ × ι × ι) → ((σ × ι × ι) →₀ ℤ) | [] => 0 | e :: p => Finsupp.single e (if side e.1 then -1 else 1) + edgeListShift side p
- theorem
OAI.Problem335.edgeListShift_nilline 41 - theorem
OAI.Problem335.edgeListShift_consline 44 - theorem
OAI.Problem335.edgeListShift_apply_eq_zeroline 50Source documentation
A layer absent from a path has no coordinate shift.
theorem edgeListShift_apply_eq_zero (side : σ → Bool) (p : List (σ × ι × ι)) (e : σ × ι × ι) (he : e.1 ∉ p.map Prod.fst) : edgeListShift side p e = 0 := by …Mentions: OAI.Problem335.edgeListShift
- theorem
OAI.Problem335.edgeListShift_apply_of_not_memline 64Source documentation
A coordinate absent from the edge list receives no shift.
theorem edgeListShift_apply_of_not_mem (side : σ → Bool) (p : List (σ × ι × ι)) (e : σ × ι × ι) (he : e ∉ p) : edgeListShift side p e = 0 := by …Mentions: OAI.Problem335.edgeListShift
- theorem
OAI.Problem335.edgeListShift_injective_of_labelsline 74Source documentation
With a fixed nonrepeating layer list, the signed shift determines the whole path.
theorem edgeListShift_injective_of_labels (side : σ → Bool) (labels : List σ) (hlabels : labels.Nodup) (p q : List (σ × ι × ι)) (hp : p.map Prod.fst = labels) (hq : q.map Prod.fst = labels) (hshift : edgeListShift side p = edgeListShift side q) : p = q := by …Mentions: OAI.Problem335.edgeListShift
- theorem
OAI.Problem335.edgeListShift_apply_of_memline 107Source documentation
A selected coordinate occurs with its single creation/annihilation sign.
theorem edgeListShift_apply_of_mem (side : σ → Bool) (p : List (σ × ι × ι)) (hlabels : (p.map Prod.fst).Nodup) (e : σ × ι × ι) (he : e ∈ p) : edgeListShift side p e = if side e.1 then -1 else 1 := by …Mentions: OAI.Problem335.edgeListShift
- theorem
OAI.Problem335.edgeListShift_applyline 126Source documentation
With one edge per layer, coordinate shifts are precisely signed membership.
theorem edgeListShift_apply [DecidableEq σ] [DecidableEq ι] (side : σ → Bool) (p : List (σ × ι × ι)) (hlabels : (p.map Prod.fst).Nodup) (e : σ × ι × ι) : edgeListShift side p e = if e ∈ p then (if side e.1 then -1 else 1) else 0 := by …Mentions: OAI.Problem335.edgeListShift
- theorem
OAI.Problem335.matrixEntryPaths_shift_injectiveline 137Source documentation
Finite path indices are distinguished by their signed exponent shifts.
theorem matrixEntryPaths_shift_injective [Fintype ι] [DecidableEq ι] (side : σ → Bool) (labels : List σ) (hlabels : labels.Nodup) (i j : ι) : Function.Injective (fun p : Fin (matrixEntryPaths labels i j).length => edgeListShift side ((matrixEntryPaths labels i j).get p)) := by …Mentions: OAI.Problem335.matrixEntryPaths, OAI.Problem335.edgeListShift
- theorem
OAI.Problem335.matrixEntryPaths_translated_shift_injectiveline 148Source documentation
From any fixed input exponent, two distinct paths reach distinct output exponents.
theorem matrixEntryPaths_translated_shift_injective [Fintype ι] [DecidableEq ι] (side : σ → Bool) (labels : List σ) (hlabels : labels.Nodup) (i j : ι) (input : (σ × ι × ι) →₀ ℤ) : Function.Injective (fun p : Fin (matrixEntryPaths labels i j).length => input + edgeListShift side ((matrixEntryPaths labels i j).get p)) := by …Mentions: OAI.Problem335.matrixEntryPaths, OAI.Problem335.edgeListShift
- theorem
OAI.Problem335.edgeListShift_eq_sumline 158Source documentation
The signed list shift is the sum of the individual signed coordinates.
theorem edgeListShift_eq_sum (side : σ → Bool) (p : List (σ × ι × ι)) : edgeListShift side p = (p.map (fun e => Finsupp.single e (if side e.1 then (-1 : ℤ) else 1))).sum := by …Mentions: OAI.Problem335.edgeListShift
- theorem
OAI.Problem335.edgeList_lengthline 166Source documentation
A list containing all layer labels in order has the expected length.
theorem edgeList_length {n : ℕ} (p : List (Fin n × ι × ι)) (hp : p.map Prod.fst = List.finRange n) : p.length = n := by … - def
OAI.Problem335.edgeProfileline 171Source documentation
Convert an edge list ordered by layer into its finite coordinate profile.
def edgeProfile {n : ℕ} (p : List (Fin n × ι × ι)) (hp : p.map Prod.fst = List.finRange n) (t : Fin n) : ι × ι := … - theorem
OAI.Problem335.edgeProfile_labelline 176Source documentation
In an ordered edge list, the edge in position
tis labelled byt.theorem edgeProfile_label {n : ℕ} (p : List (Fin n × ι × ι)) (hp : p.map Prod.fst = List.finRange n) (t : Fin n) : (p[t.val]'(by rw [edgeList_length p hp]; exact t.isLt)).1 = t := by …Mentions: OAI.Problem335.edgeList_length
- theorem
OAI.Problem335.edgeList_eq_ofFn_profileline 186Source documentation
Rebuilding the ordered edge list from its profile changes nothing.
theorem edgeList_eq_ofFn_profile {n : ℕ} (p : List (Fin n × ι × ι)) (hp : p.map Prod.fst = List.finRange n) : p = List.ofFn (fun t : Fin n => (t, edgeProfile p hp t)) := by …Mentions: OAI.Problem335.edgeProfile
- theorem
OAI.Problem335.edgeListShift_eq_sum_profileline 196Source documentation
The list shift agrees with the layerwise finite sum used by profile operators.
theorem edgeListShift_eq_sum_profile {n : ℕ} (side : Fin n → Bool) (p : List (Fin n × ι × ι)) (hp : p.map Prod.fst = List.finRange n) : edgeListShift side p = ∑ t : Fin n, Finsupp.single (t, edgeProfile p hp t) (if side t then (-1 : ℤ) else 1) := by …Mentions: OAI.Problem335.edgeListShift, OAI.Problem335.edgeProfile
- theorem
OAI.Problem335.matrixEntryPaths_profile_injectiveline 205Source documentation
Ordered edge-list indices have distinct layer profiles.
theorem matrixEntryPaths_profile_injective [Fintype ι] [DecidableEq ι] (n : ℕ) (i j : ι) : Function.Injective (fun p : Fin (matrixEntryPaths (List.finRange n) i j).length => edgeProfile ((matrixEntryPaths (List.finRange n) i j).get p) (matrixEntryPaths_get_labels (List.finRange n) i j p)) := by …Mentions: OAI.Problem335.matrixEntryPaths, OAI.Problem335.edgeProfile, OAI.Problem335.matrixEntryPaths_get_labels
- theorem
OAI.Problem335.edgeListShift_nonnegative_iffline 218Source documentation
The signed output is nonnegative exactly when every requested derivative is available.
theorem edgeListShift_nonnegative_iff [DecidableEq σ] [DecidableEq ι] (side : σ → Bool) (p : List (σ × ι × ι)) (hlabels : (p.map Prod.fst).Nodup) (input : (σ × ι × ι) → ℕ) : (∀ e, 0 ≤ (input e : ℤ) + edgeListShift side p e) ↔ ∀ e ∈ p, side e.1 = true → 1 ≤ input e := by …Mentions: OAI.Problem335.edgeListShift
- theorem
OAI.Problem335.edgeListShift_apply_profileline 242Source documentation
Read a signed edge-list shift using its unique coordinate profile in one layer.
theorem edgeListShift_apply_profile [DecidableEq ι] {n : ℕ} (side : Fin n → Bool) (p : List (Fin n × ι × ι)) (hp : p.map Prod.fst = List.finRange n) (t : Fin n) (a b : ι) : edgeListShift side p (t, a, b) = if edgeProfile p hp t = (a, b) then (if side t then -1 else 1) else 0 := by …Mentions: OAI.Problem335.edgeListShift, OAI.Problem335.edgeProfile
- theorem
OAI.Problem335.edgeListShift_sub_eq_iffline 257Source documentation
Four ordered edge lists have compatible global shifts exactly when their coordinate differences agree separately in every layer.
theorem edgeListShift_sub_eq_iff {n : ℕ} (side : Fin n → Bool) (p q r s : List (Fin n × ι × ι)) (hp : p.map Prod.fst = List.finRange n) (hq : q.map Prod.fst = List.finRange n) (hr : r.map Prod.fst = List.finRange n) (hs : s.map Prod.fst = List.finRange n) : edgeListShift side p - edgeListShift side q = edgeListShift side r - edgeListShift side s ↔ ∀ t : Fin n, Finsupp.single (edgeProfile p hp t) (1 : ℤ) - Finsupp.single (edgeProfile q hq t) 1 = Finsupp.single (edgeProfile r hr t) 1 - …Mentions: OAI.Problem335.edgeListShift, OAI.Problem335.edgeProfile