One-shot channel simulation
StructureFinite joint law#✓fully proved
A finite joint law consists of positive integers \(n_X\) and \(n_Y\) and a probability distribution on \(\{0, \dots, n_X - 1\} \times \{0, \dots, n_Y - 1\}\).
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
nx : ℕ
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:30
ny : ℕ
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:31
Used by 26
DefinitionInput law#✓fully proved
The input law of a finite joint law \(p\) on \(\{0, \dots, n_X - 1\} \times \{0, \dots, n_Y - 1\}\) is its first marginal: the law on \(\{0, \dots, n_X - 1\}\) that is the image of \(p\) under \((x, y) \mapsto x\).
noncomputable def FiniteJointLaw.inputLaw (p : FiniteJointLaw) : PMF (Fin p.nx) :=
p.law.map Prod.fst
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
Uses 1 · Used by 4
DefinitionOutput law#✓fully proved
The output law of a finite joint law \(p\) of an input \(X\) and an output \(Y\) is the law of \(Y\): the marginal of \(p\) on the output alphabet, obtained by pushing \(p\) forward along the projection onto the second coordinate.
noncomputable def FiniteJointLaw.outputLaw (p : FiniteJointLaw) : PMF (Fin p.ny) :=
p.law.map Prod.snd
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
Uses 1 · Used by 3
DefinitionMutual information#✓fully proved
The mutual information of a finite joint law \(p\) of \((X, Y)\) is \(I(X; Y) = H(X) + H(Y) - H(X, Y)\), where \(H(X)\) and \(H(Y)\) are the Shannon entropies in bits of the input and output laws of \(p\), and \(H(X, Y)\) is the Shannon entropy in bits of \(p\).
noncomputable def FiniteJointLaw.mutualInformation (p : FiniteJointLaw) : ℝ :=
shannonEntropy p.inputLaw + shannonEntropy p.outputLaw - shannonEntropy p.law
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
noncomputable def shannonEntropy {α : Type*} [Fintype α] (p : PMF α) : ℝ :=
(∑ a, Real.negMulLog (p a).toReal) / Real.log 2
MathlibExt/InformationTheory/FiniteEntropy.lean:44
Uses 4 · Used by 3
StructureFinite extension of a joint law#✓fully proved
A finite extension of a finite joint law \(p\) on \(\{0, \dots, n_X - 1\} \times \{0, \dots, n_Y - 1\}\) consists of a positive integer \(n_S\) and a probability law on triples \((x, y, s)\) with \(s \in \{0, \dots, n_S - 1\}\) whose marginal on the pairs \((x, y)\) is exactly \(p\).
structure FiniteExtension (p : FiniteJointLaw) where
ns : ℕ
ns_pos : 0 < ns
law : PMF ((Fin p.nx × Fin p.ny) × Fin ns)
marginal_eq : law.map Prod.fst = p.law
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
ns : ℕ
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:50
law : PMF ((Fin p.nx × Fin p.ny) × Fin ns)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:52
Uses 1 · Used by 18
DefinitionTrivial extension#✓fully proved
The trivial extension of a finite joint law \(p\) of an input \(X\) and an output \(Y\) has the one-letter auxiliary alphabet \(\{0\}\) and, as its law, the law of \(((X, Y), 0)\) for \((X, Y)\) distributed according to \(p\); its \((X, Y)\) marginal is \(p\).
noncomputable def FiniteExtension.trivial (p : FiniteJointLaw) : FiniteExtension p where
ns := 1
ns_pos := Nat.zero_lt_succ 0
law := p.law.map (fun z => (z, (0 : Fin 1)))
marginal_eq := by
rw [PMF.map_comp]
exact PMF.map_id p.law
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
structure FiniteExtension (p : FiniteJointLaw) where
ns : ℕ
ns_pos : 0 < ns
law : PMF ((Fin p.nx × Fin p.ny) × Fin ns)
marginal_eq : law.map Prod.fst = p.law
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:49
DefinitionAuxiliary marginal of an extension#✓fully proved
For a finite extension \(q\) of a finite joint law \(p\), viewed as the law of a triple \((X, Y, S)\) with \(S\) taking values in \(\{0, \dots, n_S - 1\}\), the auxiliary law is the marginal law of \(S\) under \(q\).
noncomputable def FiniteExtension.auxiliaryLaw {p : FiniteJointLaw}
(q : FiniteExtension p) : PMF (Fin q.ns) :=
q.law.map Prod.snd
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
structure FiniteExtension (p : FiniteJointLaw) where
ns : ℕ
ns_pos : 0 < ns
law : PMF ((Fin p.nx × Fin p.ny) × Fin ns)
marginal_eq : law.map Prod.fst = p.law
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:49
Uses 2 · Used by 6
DefinitionInput-auxiliary law#✓fully proved
Let \(q\) be a finite extension of a finite joint law of \((X, Y)\), that is, a law of \(((X, Y), S)\) with an auxiliary variable \(S\). Its input-auxiliary law is the joint law of \((X, S)\): the image of the law of \(q\) under \(((x, y), s) \mapsto (x, s)\).
noncomputable def FiniteExtension.inputAuxiliaryLaw {p : FiniteJointLaw}
(q : FiniteExtension p) : PMF (Fin p.nx × Fin q.ns) :=
q.law.map (fun z => (z.1.1, z.2))
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
structure FiniteExtension (p : FiniteJointLaw) where
ns : ℕ
ns_pos : 0 < ns
law : PMF ((Fin p.nx × Fin p.ny) × Fin ns)
marginal_eq : law.map Prod.fst = p.law
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:49
Uses 2 · Used by 5
DefinitionOutput-auxiliary law#✓fully proved
Let \(q\) be a finite extension of a finite joint law of \((X, Y)\), that is, a law of \(((X, Y), S)\) with an auxiliary variable \(S\). Its output-auxiliary law is the joint law of \((Y, S)\): the image of the law of \(q\) under \(((x, y), s) \mapsto (y, s)\).
noncomputable def FiniteExtension.outputAuxiliaryLaw {p : FiniteJointLaw}
(q : FiniteExtension p) : PMF (Fin p.ny × Fin q.ns) :=
q.law.map (fun z => (z.1.2, z.2))
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
structure FiniteExtension (p : FiniteJointLaw) where
ns : ℕ
ns_pos : 0 < ns
law : PMF ((Fin p.nx × Fin p.ny) × Fin ns)
marginal_eq : law.map Prod.fst = p.law
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:49
DefinitionMutual information between the input and the auxiliary#✓fully proved
For a finite extension \(q\) of a finite joint law \(p\), viewed as the law of a triple \((X, Y, S)\) whose \((X, Y)\) marginal is \(p\), this is \(I(X; S) = H(X) + H(S) - H(X, S)\), where \(H(X)\) is the Shannon entropy in bits of the \(X\) marginal of \(p\), and \(H(S)\) and \(H(X, S)\) are the Shannon entropies in bits of the \(S\) and \((X, S)\) marginals of \(q\).
noncomputable def FiniteExtension.auxiliaryInformation {p : FiniteJointLaw}
(q : FiniteExtension p) : ℝ :=
shannonEntropy p.inputLaw + shannonEntropy q.auxiliaryLaw -
shannonEntropy q.inputAuxiliaryLaw
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
structure FiniteExtension (p : FiniteJointLaw) where
ns : ℕ
ns_pos : 0 < ns
law : PMF ((Fin p.nx × Fin p.ny) × Fin ns)
marginal_eq : law.map Prod.fst = p.law
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:49
noncomputable def shannonEntropy {α : Type*} [Fintype α] (p : PMF α) : ℝ :=
(∑ a, Real.negMulLog (p a).toReal) / Real.log 2
MathlibExt/InformationTheory/FiniteEntropy.lean:44
Uses 6 · Used by 5
DefinitionConditional entropy of the output given the auxiliary#✓fully proved
For a finite extension \(q\) of a finite joint law \(p\), viewed as the law of a triple \((X, Y, S)\) whose \((X, Y)\) marginal is \(p\), this is \(H(Y \mid S) = H(Y, S) - H(S)\), where \(H(Y, S)\) and \(H(S)\) are the Shannon entropies in bits of the \((Y, S)\) and \(S\) marginals of \(q\).
noncomputable def FiniteExtension.conditionalEntropy {p : FiniteJointLaw}
(q : FiniteExtension p) : ℝ :=
shannonEntropy q.outputAuxiliaryLaw - shannonEntropy q.auxiliaryLaw
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
structure FiniteExtension (p : FiniteJointLaw) where
ns : ℕ
ns_pos : 0 < ns
law : PMF ((Fin p.nx × Fin p.ny) × Fin ns)
marginal_eq : law.map Prod.fst = p.law
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:49
noncomputable def shannonEntropy {α : Type*} [Fintype α] (p : PMF α) : ℝ :=
(∑ a, Real.negMulLog (p a).toReal) / Real.log 2
MathlibExt/InformationTheory/FiniteEntropy.lean:44
Uses 5 · Used by 6
DefinitionConditional entropy of the output given the input and the auxiliary#✓fully proved
For a finite extension of a finite joint law, with input \(X\), output \(Y\) and auxiliary \(S\), the conditional entropy of \(Y\) given \((X, S)\) is \(H(Y \mid X, S) = H(X, Y, S) - H(X, S)\), where \(H\) denotes Shannon entropy in bits, \(H(X, Y, S)\) is the entropy of the law of the extension and \(H(X, S)\) is the entropy of its \((X, S)\) marginal.
It vanishes exactly when \(Y\) is almost surely a deterministic function of \((X, S)\).
noncomputable def FiniteExtension.outputGivenInputAuxiliaryEntropy {p : FiniteJointLaw}
(q : FiniteExtension p) : ℝ :=
shannonEntropy q.law - shannonEntropy q.inputAuxiliaryLaw
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
structure FiniteExtension (p : FiniteJointLaw) where
ns : ℕ
ns_pos : 0 < ns
law : PMF ((Fin p.nx × Fin p.ny) × Fin ns)
marginal_eq : law.map Prod.fst = p.law
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:49
noncomputable def shannonEntropy {α : Type*} [Fintype α] (p : PMF α) : ℝ :=
(∑ a, Real.negMulLog (p a).toReal) / Real.log 2
MathlibExt/InformationTheory/FiniteEntropy.lean:44
Uses 4 · Used by 5
TheoremZero output entropy given input and auxiliary for a one-letter output#✓fully proved
Let \(p\) be a finite joint law of an input \(X\) and an output \(Y\) whose output alphabet has exactly one letter. Then for every finite extension of \(p\) by an auxiliary \(S\), the conditional entropy \(H(Y \mid X, S)\) of the output given the input and the auxiliary is \(0\).
theorem FiniteExtension.outputGivenInputAuxiliaryEntropy_eq_zero_of_output_subsingleton
{p : FiniteJointLaw} [Subsingleton (Fin p.ny)] (q : FiniteExtension p) :
q.outputGivenInputAuxiliaryEntropy = 0
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
structure FiniteExtension (p : FiniteJointLaw) where
ns : ℕ
ns_pos : 0 < ns
law : PMF ((Fin p.nx × Fin p.ny) × Fin ns)
marginal_eq : law.map Prod.fst = p.law
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:49
Uses 6 · Used by 1
TheoremAuxiliary law of the trivial extension#✓fully proved
For every finite joint law \(p\), the auxiliary law of the trivial extension of \(p\) is the point mass at \(0\), the only letter of its one-letter auxiliary alphabet \(\{0\}\).
@[simp] theorem FiniteExtension.trivial_auxiliaryLaw (p : FiniteJointLaw) :
(FiniteExtension.trivial p).auxiliaryLaw = PMF.pure (0 : Fin 1)
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
noncomputable def FiniteExtension.trivial (p : FiniteJointLaw) : FiniteExtension p where
ns := 1
ns_pos := Nat.zero_lt_succ 0
law := p.law.map (fun z => (z, (0 : Fin 1)))
marginal_eq := by
rw [PMF.map_comp]
exact PMF.map_id p.law
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:56
Uses 4
TheoremThe trivial extension has zero auxiliary information#✓fully proved
For every finite joint law \(p\), the mutual information \(I(X; S)\) between the input \(X\) and the auxiliary \(S\) in the trivial extension of \(p\), whose auxiliary alphabet has a single letter, is \(0\).
@[simp] theorem FiniteExtension.trivial_auxiliaryInformation (p : FiniteJointLaw) :
(FiniteExtension.trivial p).auxiliaryInformation = 0
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
noncomputable def FiniteExtension.trivial (p : FiniteJointLaw) : FiniteExtension p where
ns := 1
ns_pos := Nat.zero_lt_succ 0
law := p.law.map (fun z => (z, (0 : Fin 1)))
marginal_eq := by
rw [PMF.map_comp]
exact PMF.map_id p.law
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:56
Uses 7 · Used by 1
TheoremConditional entropy in the trivial extension#✓fully proved
For every finite joint law \(p\) of an input \(X\) and an output \(Y\), the conditional entropy \(H(Y \mid S)\) of the output given the auxiliary \(S\) in the trivial extension of \(p\) equals the Shannon entropy \(H(Y)\) of the output law of \(p\).
@[simp] theorem FiniteExtension.trivial_conditionalEntropy (p : FiniteJointLaw) :
(FiniteExtension.trivial p).conditionalEntropy = shannonEntropy p.outputLaw
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
noncomputable def FiniteExtension.trivial (p : FiniteJointLaw) : FiniteExtension p where
ns := 1
ns_pos := Nat.zero_lt_succ 0
law := p.law.map (fun z => (z, (0 : Fin 1)))
marginal_eq := by
rw [PMF.map_comp]
exact PMF.map_id p.law
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:56
noncomputable def shannonEntropy {α : Type*} [Fintype α] (p : PMF α) : ℝ :=
(∑ a, Real.negMulLog (p a).toReal) / Real.log 2
MathlibExt/InformationTheory/FiniteEntropy.lean:44
TheoremInput marginal of the input-auxiliary law#✓fully proved
Let \(q\) be a finite extension of a finite joint law \(p\) of \((X, Y)\) by an auxiliary variable \(S\). Then the marginal of \(X\) under the joint law of \((X, S)\) in \(q\) equals the law of \(X\) under \(p\).
@[simp] theorem FiniteExtension.inputAuxiliaryLaw_map_fst {p : FiniteJointLaw}
(q : FiniteExtension p) : q.inputAuxiliaryLaw.map Prod.fst = p.inputLaw
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
structure FiniteExtension (p : FiniteJointLaw) where
ns : ℕ
ns_pos : 0 < ns
law : PMF ((Fin p.nx × Fin p.ny) × Fin ns)
marginal_eq : law.map Prod.fst = p.law
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:49
Uses 4
TheoremOutput marginal of the output-auxiliary law#✓fully proved
Let \(q\) be a finite extension of a finite joint law \(p\) of \((X, Y)\) by an auxiliary variable \(S\). Then the marginal of \(Y\) under the joint law of \((Y, S)\) in \(q\) equals the law of \(Y\) under \(p\).
@[simp] theorem FiniteExtension.outputAuxiliaryLaw_map_fst {p : FiniteJointLaw}
(q : FiniteExtension p) : q.outputAuxiliaryLaw.map Prod.fst = p.outputLaw
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
structure FiniteExtension (p : FiniteJointLaw) where
ns : ℕ
ns_pos : 0 < ns
law : PMF ((Fin p.nx × Fin p.ny) × Fin ns)
marginal_eq : law.map Prod.fst = p.law
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:49
Uses 4
TheoremAuxiliary marginal of the input-auxiliary law#✓fully proved
Let \(q\) be a finite extension of a finite joint law of \((X, Y)\) by an auxiliary variable \(S\). Then the marginal of \(S\) under the joint law of \((X, S)\) in \(q\) equals the law of \(S\) in \(q\).
@[simp] theorem FiniteExtension.inputAuxiliaryLaw_map_snd {p : FiniteJointLaw}
(q : FiniteExtension p) : q.inputAuxiliaryLaw.map Prod.snd = q.auxiliaryLaw
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
structure FiniteExtension (p : FiniteJointLaw) where
ns : ℕ
ns_pos : 0 < ns
law : PMF ((Fin p.nx × Fin p.ny) × Fin ns)
marginal_eq : law.map Prod.fst = p.law
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:49
Uses 4
TheoremAuxiliary marginal of the output-auxiliary law#✓fully proved
Let \(q\) be a finite extension of a finite joint law of \((X, Y)\) by an auxiliary variable \(S\). Then the marginal of \(S\) under the joint law of \((Y, S)\) in \(q\) equals the law of \(S\) in \(q\).
@[simp] theorem FiniteExtension.outputAuxiliaryLaw_map_snd {p : FiniteJointLaw}
(q : FiniteExtension p) : q.outputAuxiliaryLaw.map Prod.snd = q.auxiliaryLaw
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
structure FiniteExtension (p : FiniteJointLaw) where
ns : ℕ
ns_pos : 0 < ns
law : PMF ((Fin p.nx × Fin p.ny) × Fin ns)
marginal_eq : law.map Prod.fst = p.law
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:49
Uses 4
TheoremConditional entropy vanishes for a one-letter output#✓fully proved
If the output alphabet of a finite joint law \(p\) of \((X, Y)\) has exactly one element, then for every finite extension of \(p\) by an auxiliary variable \(S\), the conditional entropy \(H(Y \mid S)\) is \(0\).
theorem FiniteExtension.conditionalEntropy_eq_zero_of_output_subsingleton
{p : FiniteJointLaw} [Subsingleton (Fin p.ny)] (q : FiniteExtension p) :
q.conditionalEntropy = 0
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
structure FiniteExtension (p : FiniteJointLaw) where
ns : ℕ
ns_pos : 0 < ns
law : PMF ((Fin p.nx × Fin p.ny) × Fin ns)
marginal_eq : law.map Prod.fst = p.law
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:49
Uses 7 · Used by 1
DefinitionConditional-prefix optimum of a joint law#✓fully proved
For a finite joint law \(p\) of \((X, Y)\), this is the infimum in the extended reals of the conditional entropy \(H(Y \mid S)\) in bits over all finite extensions of \(p\) by an auxiliary variable \(S\) such that \(I(X; S) = 0\) and \(H(Y \mid X, S) = 0\). The infimum of the empty set is \(+\infty\).
noncomputable def conditionalPrefixOptimum (p : FiniteJointLaw) : EReal :=
sInf {h | ∃ q : FiniteExtension p, q.auxiliaryInformation = 0 ∧
q.outputGivenInputAuxiliaryEntropy = 0 ∧
h = (q.conditionalEntropy : EReal)}
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
structure FiniteExtension (p : FiniteJointLaw) where
ns : ℕ
ns_pos : 0 < ns
law : PMF ((Fin p.nx × Fin p.ny) × Fin ns)
marginal_eq : law.map Prod.fst = p.law
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:49
Sources
- Li, arXiv:2501.13736v4, equation cs_h_c.
DefinitionWorst-case conditional-prefix optimum#✓fully proved
For a real number \(t\), the worst-case optimum at \(t\) is the supremum, taken in the extended reals, of the conditional-prefix optimum of \(p\) over all finite joint laws \(p\) of an input \(X\) and an output \(Y\) whose mutual information \(I(X; Y)\), in bits, equals \(t\); it is \(-\infty\) when no such law exists.
noncomputable def worstCaseOptimum (t : ℝ) : EReal :=
sSup {h | ∃ p : FiniteJointLaw, p.mutualInformation = t ∧ h = conditionalPrefixOptimum p}
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
noncomputable def conditionalPrefixOptimum (p : FiniteJointLaw) : EReal :=
sInf {h | ∃ q : FiniteExtension p, q.auxiliaryInformation = 0 ∧
q.outputGivenInputAuxiliaryEntropy = 0 ∧
h = (q.conditionalEntropy : EReal)}
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:198
Uses 3 · Used by 2
DefinitionChannel simulation constant#✓fully proved
The constant \(c_c^*\) is the limit superior in the extended reals, as the real number \(t\) tends to \(+\infty\), of \(W(t) - t - \log_2 t\), where \(W(t)\) is the worst-case optimum at \(t\): the supremum of the conditional-prefix optimum over all finite joint laws whose mutual information in bits is exactly \(t\).
noncomputable def channelSimulationConstant : EReal :=
Filter.limsup (fun t : ℝ => worstCaseOptimum t - (t : EReal) -
(Real.log t / Real.log 2 : EReal)) Filter.atTop
noncomputable def worstCaseOptimum (t : ℝ) : EReal :=
sSup {h | ∃ p : FiniteJointLaw, p.mutualInformation = t ∧ h = conditionalPrefixOptimum p}
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:204
Sources
- Li, arXiv:2501.13736v4, definition of c_c*.
Uses 1
DefinitionUniform outer constant for channel simulation#✓fully proved
A real number \(\alpha\) is a uniform outer constant when there is a real \(\beta > 0\) such that for every finite joint law \(p\) of \((X, Y)\) there is a finite extension of \(p\) by an auxiliary variable \(S\) with \(I(X; S) = 0\) and \(H(Y \mid X, S) = 0\) and
where all entropies and mutual informations are in bits and are computed from the law of \((X, Y, S)\) in the extension.
def HasUniformOuterConstant (α : ℝ) : Prop :=
∃ β : ℝ, 0 < β ∧ ∀ p : FiniteJointLaw, ∃ q : FiniteExtension p,
q.auxiliaryInformation = 0 ∧ q.outputGivenInputAuxiliaryEntropy = 0 ∧
q.conditionalEntropy ≤ p.mutualInformation +
Real.log (p.mutualInformation + β) / Real.log 2 + α
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
structure FiniteExtension (p : FiniteJointLaw) where
ns : ℕ
ns_pos : 0 < ns
law : PMF ((Fin p.nx × Fin p.ny) × Fin ns)
marginal_eq : law.map Prod.fst = p.law
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:49
DefinitionInfimum of the uniform outer constants#✓fully proved
Call a real number \(\alpha\) a uniform outer constant when there is a real \(\beta > 0\) such that every finite joint law \(p\) of an input \(X\) and an output \(Y\) has a finite extension by an auxiliary \(S\) with \(I(X; S) = 0\), \(H(Y \mid X, S) = 0\) and \(H(Y \mid S) \le I(X; Y) + \log_2(I(X; Y) + \beta) + \alpha\), where entropies and mutual informations are in bits. This is the infimum of the set of uniform outer constants, taken in the extended reals, so it is \(+\infty\) when there is none.
noncomputable def uniformOuterConstantInfimum : EReal :=
sInf {h | ∃ α : ℝ, HasUniformOuterConstant α ∧ h = (α : EReal)}
def HasUniformOuterConstant (α : ℝ) : Prop :=
∃ β : ℝ, 0 < β ∧ ∀ p : FiniteJointLaw, ∃ q : FiniteExtension p,
q.auxiliaryInformation = 0 ∧ q.outputGivenInputAuxiliaryEntropy = 0 ∧
q.conditionalEntropy ≤ p.mutualInformation +
Real.log (p.mutualInformation + β) / Real.log 2 + α
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:214
Uses 1
TheoremEach admissible extension bounds the conditional-prefix optimum#✓fully proved
Let \(p\) be a finite joint law of \((X, Y)\) and let \(q\) be a finite extension of \(p\) by an auxiliary variable \(S\) with \(I(X; S) = 0\) and \(H(Y \mid X, S) = 0\). Then the conditional-prefix optimum of \(p\) is at most the conditional entropy \(H(Y \mid S)\) of \(q\).
theorem conditionalPrefixOptimum_le {p : FiniteJointLaw} (q : FiniteExtension p)
(hq : q.auxiliaryInformation = 0)
(hqrec : q.outputGivenInputAuxiliaryEntropy = 0) :
conditionalPrefixOptimum p ≤ (q.conditionalEntropy : EReal)
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
structure FiniteExtension (p : FiniteJointLaw) where
ns : ℕ
ns_pos : 0 < ns
law : PMF ((Fin p.nx × Fin p.ny) × Fin ns)
marginal_eq : law.map Prod.fst = p.law
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:49
noncomputable def conditionalPrefixOptimum (p : FiniteJointLaw) : EReal :=
sInf {h | ∃ q : FiniteExtension p, q.auxiliaryInformation = 0 ∧
q.outputGivenInputAuxiliaryEntropy = 0 ∧
h = (q.conditionalEntropy : EReal)}
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:198
Uses 6 · Used by 1
TheoremThe conditional-prefix optimum vanishes for a one-letter output#✓fully proved
If the output alphabet of a finite joint law \(p\) has exactly one element, then the conditional-prefix optimum of \(p\) equals \(0\).
theorem conditionalPrefixOptimum_eq_zero_of_output_subsingleton
(p : FiniteJointLaw) [Subsingleton (Fin p.ny)] :
conditionalPrefixOptimum p = 0
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
noncomputable def conditionalPrefixOptimum (p : FiniteJointLaw) : EReal :=
sInf {h | ∃ q : FiniteExtension p, q.auxiliaryInformation = 0 ∧
q.outputGivenInputAuxiliaryEntropy = 0 ∧
h = (q.conditionalEntropy : EReal)}
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:198
Uses 11
TheoremThe worst-case optimum dominates each conditional-prefix optimum#✓fully proved
For every finite joint law \(p\) of \((X, Y)\), the conditional-prefix optimum of \(p\) is at most the worst-case optimum at \(t = I(X; Y)\), the mutual information of \(p\) in bits.
theorem conditionalPrefixOptimum_le_worstCaseOptimum (p : FiniteJointLaw) :
conditionalPrefixOptimum p ≤ worstCaseOptimum p.mutualInformation
structure FiniteJointLaw where
nx : ℕ
ny : ℕ
nx_pos : 0 < nx
ny_pos : 0 < ny
law : PMF (Fin nx × Fin ny)
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:29
noncomputable def conditionalPrefixOptimum (p : FiniteJointLaw) : EReal :=
sInf {h | ∃ q : FiniteExtension p, q.auxiliaryInformation = 0 ∧
q.outputGivenInputAuxiliaryEntropy = 0 ∧
h = (q.conditionalEntropy : EReal)}
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:198
noncomputable def worstCaseOptimum (t : ℝ) : EReal :=
sSup {h | ∃ p : FiniteJointLaw, p.mutualInformation = t ∧ h = conditionalPrefixOptimum p}
MathlibExt/InformationTheory/FiniteChannelSimulation.lean:204
Uses 4
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.