Unrestricted depth-three lower bound: marker mixture #
Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a.
Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Computability/DepthThree/MarkerMixture.lean
Imports, namespaces, module visibility, documentation, and formatting are adapted for complexitylib. The source theorem statements and mathematical proofs are retained.
noncomputable def
Complexity.DepthThreeLowerBound.markerSelected
{I : Type u}
[Fintype I]
(c : ℕ)
(π : Equiv.Perm (I ⊕ Fin c))
:
Finset I
Determine which clause object is selected by a marker sample.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
Complexity.DepthThreeLowerBound.mem_markerSelected
{I : Type u}
[Fintype I]
(c : ℕ)
(π : Equiv.Perm (I ⊕ Fin c))
(i : I)
:
i ∈ markerSelected c π ↔ ∀ (m : Fin c), permutationRank π (Sum.inl i) < permutationRank π (Sum.inr m)
noncomputable def
Complexity.DepthThreeLowerBound.markerSample
{I : Type u}
[Fintype I]
[instDecidableEqI : DecidableEq I]
{A : Type v}
(C : I → A → Bool)
(c : ℕ)
(π : Equiv.Perm (I ⊕ Fin c))
(x : A)
:
Sample a marker from its permutation-based distribution.
Equations
- Complexity.DepthThreeLowerBound.markerSample C c π x = decide (∀ i ∈ Complexity.DepthThreeLowerBound.markerSelected c π, C i x = true)
Instances For
@[simp]
theorem
Complexity.DepthThreeLowerBound.markerSample_eq_true
{I : Type u}
[Fintype I]
[instDecidableEqI : DecidableEq I]
{A : Type v}
(C : I → A → Bool)
(c : ℕ)
(π : Equiv.Perm (I ⊕ Fin c))
(x : A)
:
The objects indexed by the marker construction.
Instances For
theorem
Complexity.DepthThreeLowerBound.markerActive_nonempty
{I : Type u}
[Fintype I]
{A : Type v}
(C : I → A → Bool)
(x : A)
{c : ℕ}
(hc : 0 < c)
:
(markerActive C x c).Nonempty
theorem
Complexity.DepthThreeLowerBound.markerObjects_subset
{I : Type u}
[Fintype I]
{A : Type v}
(C : I → A → Bool)
(x : A)
(c : ℕ)
:
markerObjects c ⊆ markerActive C x c
theorem
Complexity.DepthThreeLowerBound.markerSample_iff_first_marker
{I : Type u}
[Fintype I]
[instDecidableEqI : DecidableEq I]
{A : Type v}
(C : I → A → Bool)
(x : A)
{c : ℕ}
(hc : 0 < c)
(π : Equiv.Perm (I ⊕ Fin c))
:
theorem
Complexity.DepthThreeLowerBound.marker_mixture_ratio
{I : Type u}
[Fintype I]
[instDecidableEqI : DecidableEq I]
{A : Type v}
(C : I → A → Bool)
(x : A)
{c : ℕ}
(hc : 0 < c)
:
theorem
Complexity.DepthThreeLowerBound.markerSample_of_all_true
{I : Type u}
[Fintype I]
[instDecidableEqI : DecidableEq I]
{A : Type v}
(C : I → A → Bool)
(x : A)
(c : ℕ)
(π : Equiv.Perm (I ⊕ Fin c))
(hC : ∀ (i : I), C i x = true)
:
theorem
Complexity.DepthThreeLowerBound.markerSample_of_isEmpty
{I : Type u}
[Fintype I]
[instDecidableEqI : DecidableEq I]
{A : Type v}
[IsEmpty I]
(C : I → A → Bool)
(x : A)
(c : ℕ)
(π : Equiv.Perm (I ⊕ Fin c))
:
theorem
Complexity.DepthThreeLowerBound.marker_product_mixture_ratio
{A : Type v}
{H : Type uDepth1}
[Fintype H]
[DecidableEq H]
{J : H → Type uDepth2}
[(h : H) → Fintype (J h)]
[(h : H) → DecidableEq (J h)]
(C : (h : H) → J h → A → Bool)
(c : H → ℕ)
(hc : ∀ (h : H), 0 < c h)
(x : A)
: