OAI/Probability/CubeShuffle/PairRouting.lean
86 declarations, 0 contain sorry, 0 declared as axioms
- def
OAI.CubeShuffle.PairRouting.occupiedline 13 - lemma
OAI.CubeShuffle.PairRouting.mem_occupiedline 17 - def
OAI.CubeShuffle.PairRouting.requiredline 20 - def
OAI.CubeShuffle.PairRouting.Compatibleline 22 - def
OAI.CubeShuffle.PairRouting.colorsline 25 - lemma
OAI.CubeShuffle.PairRouting.required_colorsline 29 - lemma
OAI.CubeShuffle.PairRouting.colors_compatibleline 35 - def
OAI.CubeShuffle.PairRouting.chosenCoinline 39 - lemma
OAI.CubeShuffle.PairRouting.chosenCoin_applyline 44 - lemma
OAI.CubeShuffle.PairRouting.colors_eq_iffline 51 - instance
OAI.CubeShuffle.PairRouting.(instance at line 63)line 63 - lemma
OAI.CubeShuffle.PairRouting.colors_probabilityline 68Source documentation
Exact fair-coin probability at an outer pair layer, including impossible assignments. No cardinality or independence of marked paths is assumed.
lemma colors_probability (x : ι → Bool × α) (c : ι → Bool) : finiteMean (fun ξ : α → Bool => if colors x ξ = c then (1 : ℝ) else 0) = if Compatible x c then 1/(2:ℝ)^(occupied x).card else 0 := by …Mentions: OAI.CubeShuffle.finiteMean, OAI.CubeShuffle.PairRouting.colors, OAI.CubeShuffle.PairRouting.Compatible, OAI.CubeShuffle.PairRouting.occupied
- lemma
OAI.CubeShuffle.PairRouting.Compatible.tail_injectiveline 82 - def
OAI.CubeShuffle.PairRouting.childEmbeddingline 93 - def
OAI.CubeShuffle.PairRouting.liftline 101 - def
OAI.CubeShuffle.PairRouting.sandwichline 107 - def
OAI.CubeShuffle.PairRouting.ChildMatchesline 110 - instance
OAI.CubeShuffle.PairRouting.(instance at line 113)line 113 - lemma
OAI.CubeShuffle.PairRouting.sandwich_matches_iffline 117 - lemma
OAI.CubeShuffle.PairRouting.sandwich_probabilityline 130Source documentation
Exact expansion by the binary child assignments at one actual outer pair layer on each side. The factors 2^-b count occupied switches, not paths.
lemma sandwich_probability [DecidableEq ι] (p : Bool → Equiv.Perm α) (x y : ι → Bool × α) : finiteMean (fun coins : (α → Bool) × (α → Bool) => if ∀ i, sandwich coins.1 coins.2 p (x i) = y i then (1:ℝ) else 0) = ∑ c : ι → Bool, (if Compatible x c then 1/(2:ℝ)^(occupied x).card else 0) * (if Compatible y c then 1/(2:ℝ)^(occupied y).card else 0) * (if ChildMatches p x y c then 1 else 0) := by …Mentions: OAI.CubeShuffle.finiteMean, OAI.CubeShuffle.PairRouting.sandwich, OAI.CubeShuffle.PairRouting.Compatible, OAI.CubeShuffle.PairRouting.occupied, OAI.CubeShuffle.PairRouting.ChildMatches
- lemma
OAI.CubeShuffle.PairRouting.childMatches_splitline 160 - def
OAI.CubeShuffle.PairRouting.tupleProbabilityline 176 - lemma
OAI.CubeShuffle.PairRouting.childMatches_meanline 182 - lemma
OAI.CubeShuffle.PairRouting.sandwich_meanline 201Source documentation
The exact recursive transition identity before taking any moment bound.
lemma sandwich_mean [DecidableEq ι] {Ω Ω' : Type*} [Fintype Ω] [Fintype Ω'] (P : Ω → Equiv.Perm α) (Q : Ω' → Equiv.Perm α) (x y : ι → Bool × α) : finiteMean (fun ω : Ω × Ω' => finiteMean (fun coins : (α → Bool) × (α → Bool) => if ∀ i, sandwich coins.1 coins.2 (fun b => if b then Q ω.2 else P ω.1) (x i) = y i then (1:ℝ) else 0)) = ∑ c : ι → Bool, (if Compatible x c then 1/(2:ℝ)^(occupied x).card else 0) * (if Compatible y c then 1/(2:ℝ)^(occupied y).card else 0) * (tupleProbability P (fun i : {i // c i = false} => (x i.val).2) (fun i : {i // c i = false} => (y i.val).2) * tupleProbability Q (fun i : {i // c i = true} => (x i.val).2) (fun i : {i // c i = true} => (y i.val).2)) := by …Mentions: OAI.CubeShuffle.finiteMean, OAI.CubeShuffle.PairRouting.sandwich, OAI.CubeShuffle.PairRouting.Compatible, OAI.CubeShuffle.PairRouting.occupied, OAI.CubeShuffle.PairRouting.tupleProbability
- abbrev
OAI.CubeShuffle.PairRouting.BothAssignmentsline 226 - instance
OAI.CubeShuffle.PairRouting.(instance at line 229)line 229 - def
OAI.CubeShuffle.PairRouting.labelSetline 232 - def
OAI.CubeShuffle.PairRouting.alternatingProjectionline 234 - def
OAI.CubeShuffle.PairRouting.assignmentColoringline 236 - lemma
OAI.CubeShuffle.PairRouting.assignmentColoring_injectiveline 275 - lemma
OAI.CubeShuffle.PairRouting.bothAssignments_cardline 285 - lemma
OAI.CubeShuffle.PairRouting.occupied_labelSetline 298 - lemma
OAI.CubeShuffle.PairRouting.image_snd_childJoinline 303 - lemma
OAI.CubeShuffle.PairRouting.image_lift_childJoinline 308 - lemma
OAI.CubeShuffle.PairRouting.occupied_lift_cardline 314 - lemma
OAI.CubeShuffle.PairRouting.bothAssignments_occupied_boundline 331 - lemma
OAI.CubeShuffle.PairRouting.compatible_pairLayer_iffline 345 - def
OAI.CubeShuffle.PairRouting.alternatingCyclesline 366Source documentation
Full alternating cycles, not their projection-side overcount. This is the cycle count needed for sparse low-level blocks.
noncomputable def alternatingCycles (e : ι ↪ Bool × α) (p : Bool → Equiv.Perm α) : ℕ := …
- lemma
OAI.CubeShuffle.PairRouting.occupied_eq_fibersline 371 - lemma
OAI.CubeShuffle.PairRouting.card_labelSetline 377 - lemma
OAI.CubeShuffle.PairRouting.occupied_card_doubleline 382 - lemma
OAI.CubeShuffle.PairRouting.bothAssignments_exact_boundline 393 - abbrev
OAI.CubeShuffle.PairRouting.Assignmentsline 413 - instance
OAI.CubeShuffle.PairRouting.(instance at line 416)line 416 - def
OAI.CubeShuffle.PairRouting.switchedEmbeddingline 418 - def
OAI.CubeShuffle.PairRouting.routedEmbeddingline 421 - lemma
OAI.CubeShuffle.PairRouting.occupied_pairLayerline 425 - def
OAI.CubeShuffle.PairRouting.assignmentsEquivline 428 - lemma
OAI.CubeShuffle.PairRouting.assignments_actual_boundline 437 - lemma
OAI.CubeShuffle.PairRouting.assignments_actual_exponent_nonnegline 445 - def
OAI.CubeShuffle.PairRouting.compatibleSetline 457 - lemma
OAI.CubeShuffle.PairRouting.mem_compatibleSetline 462 - lemma
OAI.CubeShuffle.PairRouting.card_compatibleSetline 468 - def
OAI.CubeShuffle.PairRouting.outerWeightline 473 - lemma
OAI.CubeShuffle.PairRouting.outerWeight_posline 477 - lemma
OAI.CubeShuffle.PairRouting.sum_colors_factorline 482 - lemma
OAI.CubeShuffle.PairRouting.sandwich_weighted_probabilityline 499Source documentation
Arbitrary weights can be kept as functions of the actual child assignment; no change from the physical switch measure to uniformly sampled assignments.
lemma sandwich_weighted_probability (p : Bool → Equiv.Perm α) (x y : ι → Bool × α) (W : (ι → Bool) → ℝ) : finiteMean (fun coins : (α → Bool) × (α → Bool) => if ∀ i, sandwich coins.1 coins.2 p (x i) = y i then W (colors x coins.1) else 0) = outerWeight x y * ∑ c ∈ compatibleSet x y, if ChildMatches p x y c then W c else 0 := by …Mentions: OAI.CubeShuffle.finiteMean, OAI.CubeShuffle.PairRouting.sandwich, OAI.CubeShuffle.PairRouting.colors, OAI.CubeShuffle.PairRouting.outerWeight, OAI.CubeShuffle.PairRouting.compatibleSet, OAI.CubeShuffle.PairRouting.ChildMatches
- lemma
OAI.CubeShuffle.PairRouting.tupleProbability_nonnegline 526 - lemma
OAI.CubeShuffle.PairRouting.sandwich_power_boundline 532Source documentation
One precise Hölder step in the source recursive density expansion.
lemma sandwich_power_bound {Ω Ω' : Type*} [Fintype Ω] [Fintype Ω'] (P : Ω → Equiv.Perm α) (Q : Ω' → Equiv.Perm α) (x y : ι → Bool × α) (a : ℝ) (ha : 0 ≤ a) : (finiteMean (fun ω : Ω × Ω' => finiteMean (fun coins : (α → Bool) × (α → Bool) => if ∀ i, sandwich coins.1 coins.2 (fun b => if b then Q ω.2 else P ω.1) (x i) = y i then (1:ℝ) else 0)))^(1+a) ≤ (outerWeight x y)^(1+a) * ((compatibleSet x y).card:ℝ)^a * ∑ c ∈ compatibleSet x y, (tupleProbability P (fun i : {i // c i = false} => (x i.val).2) (fun i : {i // c i = false} => (y i.val).2))^(1+a) * (tupleProbability Q (fun i : {i // c i = true} => (x i.val).2) (fun i : {i // c i = true} => (y i.val).2))^(1+a) := by …Mentions: OAI.CubeShuffle.finiteMean, OAI.CubeShuffle.PairRouting.sandwich, OAI.CubeShuffle.PairRouting.outerWeight, OAI.CubeShuffle.PairRouting.compatibleSet, OAI.CubeShuffle.PairRouting.tupleProbability
- abbrev
OAI.CubeShuffle.BenesCoinsline 573Source documentation
Two genuine independent butterfly coin fields; the first routes outward on the output side, the second outward on the input side.
abbrev BenesCoins (d : ℕ) := (SwitchIndex d → Bool) × (SwitchIndex d → Bool)
Mentions: OAI.CubeShuffle.SwitchIndex
- def
OAI.CubeShuffle.palindromePermline 575 - def
OAI.CubeShuffle.sandwichShuffleline 579Source documentation
Exact rearrangement, not a resampling assumption.
def sandwichShuffle {A B C D E F : Type*} : ((A × B) × C) × ((D × E) × F) ≃ ((A × D) × (B × E)) × (F × C) where … - def
OAI.CubeShuffle.benesStepEquivline 586 - lemma
OAI.CubeShuffle.childLift_mulline 590 - lemma
OAI.CubeShuffle.childLift_invline 595 - lemma
OAI.CubeShuffle.pairSwitch_invline 598 - lemma
OAI.CubeShuffle.palindromePerm_stepline 600 - lemma
OAI.CubeShuffle.headTail_switchline 616 - lemma
OAI.CubeShuffle.headTail_childline 619 - lemma
OAI.CubeShuffle.palindromePerm_coordinatesline 623Source documentation
The complete actual recursive Beneš construction in product coordinates.
lemma palindromePerm_coordinates (d : ℕ) (c : BenesCoins d × BenesCoins d) (coins : (Card d → Bool) × (Card d → Bool)) (x : Card (d+1)) : headTailEquiv d (palindromePerm (d+1) ((benesStepEquiv d).symm (c,coins)) x) = PairRouting.sandwich coins.1 coins.2 (fun b => palindromePerm d (if b then c.2 else c.1)) (headTailEquiv d x) := by …Mentions: OAI.CubeShuffle.BenesCoins, OAI.CubeShuffle.Card, OAI.CubeShuffle.headTailEquiv, OAI.CubeShuffle.palindromePerm, OAI.CubeShuffle.benesStepEquiv, OAI.CubeShuffle.PairRouting.sandwich
- def
OAI.CubeShuffle.palindromeCostline 634Source documentation
Full alternating-cycle count along the ACTUAL sampled routing, recursively. At each child the labels are exactly those sent into it by the actual input coins.
noncomputable def palindromeCost : (d : ℕ) → {ι : Type*} → [Fintype ι] → (ι ↪ Card d) → BenesCoins d → ℕ | 0, _, _, _, _ => 0 | d+1, _, _, e, ω => let σ := benesStepEquiv d ω …Mentions: OAI.CubeShuffle.Card, OAI.CubeShuffle.BenesCoins, OAI.CubeShuffle.benesStepEquiv
- lemma
OAI.CubeShuffle.CycleColoring.alternating_cycle_twoline 650 - lemma
OAI.CubeShuffle.CycleColoring.alternating_cycle_count_doubleline 668 - lemma
OAI.CubeShuffle.CycleColoring.alternating_cycle_count_zeroline 677 - lemma
OAI.CubeShuffle.PairRouting.alternatingCycles_doubleline 687 - lemma
OAI.CubeShuffle.PairRouting.alternatingCycles_zeroline 692 - lemma
OAI.CubeShuffle.PairRouting.colors_chosenCoinline 703 - def
OAI.CubeShuffle.PairRouting.coloredEmbeddingline 709 - lemma
OAI.CubeShuffle.PairRouting.coloredEmbedding_applyline 713 - lemma
OAI.CubeShuffle.PairRouting.switchedEmbedding_eq_coloredline 720 - lemma
OAI.CubeShuffle.PairRouting.assignments_match_boundline 729 - lemma
OAI.CubeShuffle.PairRouting.occupied_sum_geline 749 - lemma
OAI.CubeShuffle.PairRouting.assignment_weight_boundline 757Source documentation
The exact cancellation giving the source factor 2^(-h+z), before taking its a-th power. Natural subtraction is justified by occupied-pair cardinalities.
lemma assignment_weight_bound (x y : ι ↪ Bool × α) (c : ι → Bool) (hc : c ∈ compatibleSet x y) (p : Bool → Equiv.Perm α) (hm : ChildMatches p x y c) : ((compatibleSet x y).card:ℝ) * outerWeight x y ≤ (2:ℝ)^((alternatingCycles (coloredEmbedding x c (mem_compatibleSet x y c |>.mp hc).1) p : ℝ) - Fintype.card ι) := by …Mentions: OAI.CubeShuffle.PairRouting.compatibleSet, OAI.CubeShuffle.PairRouting.ChildMatches, OAI.CubeShuffle.PairRouting.outerWeight, OAI.CubeShuffle.PairRouting.alternatingCycles, OAI.CubeShuffle.PairRouting.coloredEmbedding, OAI.CubeShuffle.PairRouting.mem_compatibleSet
- lemma
OAI.CubeShuffle.PairRouting.assignment_factor_boundline 778 - lemma
OAI.CubeShuffle.PairRouting.sandwich_weighted_probability_subtypeline 795 - lemma
OAI.CubeShuffle.PairRouting.color_card_addline 806