Errorless average-case heuristics -- proof internals #
This layer proves codec exactness, semantic soundness of complement and decision adapters, and the elementary probability/class monotonicity laws.
theorem
Complexity.HeuristicAnswer.CorrectFor.complement_internal
{answer : HeuristicAnswer}
{truth : Prop}
(hcorrect : answer.CorrectFor truth)
:
answer.complement.CorrectFor ¬truth
theorem
Complexity.HeuristicAlgorithm.IsErrorlessFor.complement_internal
{A : HeuristicAlgorithm}
{L : Language}
(herrorless : A.IsErrorlessFor L)
:
theorem
Complexity.HeuristicAlgorithm.failureProbability_nonneg_internal
(D : FiniteEnsemble (List Bool))
(A : HeuristicAlgorithm)
(n : ℕ)
:
theorem
Complexity.HeuristicAlgorithm.failureProbability_le_one_internal
(D : FiniteEnsemble (List Bool))
(A : HeuristicAlgorithm)
(n : ℕ)
:
theorem
Complexity.HeuristicAlgorithm.answerProbability_nonneg_internal
(D : FiniteEnsemble (List Bool))
(A : HeuristicAlgorithm)
(answer : HeuristicAnswer)
(n : ℕ)
:
theorem
Complexity.HeuristicAlgorithm.answerProbability_le_one_internal
(D : FiniteEnsemble (List Bool))
(A : HeuristicAlgorithm)
(answer : HeuristicAnswer)
(n : ℕ)
:
theorem
Complexity.HeuristicAlgorithm.failureProbability_eq_answerProbability_internal
(D : FiniteEnsemble (List Bool))
(A : HeuristicAlgorithm)
(n : ℕ)
:
theorem
Complexity.HeuristicAlgorithm.IsErrorlessFor.one_sub_languageProbability_sub_failure_le_reject_internal
{A : HeuristicAlgorithm}
{L : Language}
(herrorless : A.IsErrorlessFor L)
(D : FiniteEnsemble (List Bool))
(n : ℕ)
:
1 - D.languageProbability L n - failureProbability D A n ≤ answerProbability D A HeuristicAnswer.reject n
theorem
Complexity.HeuristicAlgorithm.failureProbability_complement_internal
(D : FiniteEnsemble (List Bool))
(A : HeuristicAlgorithm)
(n : ℕ)
:
theorem
Complexity.HeuristicAlgorithm.FailsWithProbabilityAtMost.mono_internal
{D : FiniteEnsemble (List Bool)}
{A : HeuristicAlgorithm}
{δ ε : ℕ → ℚ}
(hfailure : FailsWithProbabilityAtMost D A δ)
(hδε : ∀ (n : ℕ), δ n ≤ ε n)
:
theorem
Complexity.HeuristicAlgorithm.FailsWithProbabilityAtMost.complement_internal
{D : FiniteEnsemble (List Bool)}
{A : HeuristicAlgorithm}
{δ : ℕ → ℚ}
(hfailure : FailsWithProbabilityAtMost D A δ)
:
theorem
Complexity.HeuristicAlgorithm.ofDecision_isPolynomialTime_internal
{decide : List Bool → Bool}
(htime : (fun (x : List Bool) => [decide x]) ∈ FP)
:
(ofDecision decide).IsPolynomialTime
theorem
Complexity.HeuristicAlgorithm.ofDecision_isErrorlessFor_internal
{decide : List Bool → Bool}
{L : Language}
(hdecide : ∀ (x : List Bool), decide x = true ↔ x ∈ L)
:
(ofDecision decide).IsErrorlessFor L
theorem
Complexity.HeuristicAlgorithm.ofDecision_failureProbability_internal
(D : FiniteEnsemble (List Bool))
(decide : List Bool → Bool)
(n : ℕ)
:
theorem
Complexity.HeuristicAlgorithm.ofDecision_failsWithProbabilityAtMost_zero_internal
(D : FiniteEnsemble (List Bool))
(decide : List Bool → Bool)
:
FailsWithProbabilityAtMost D (ofDecision decide) fun (x : ℕ) => 0