theorem
proved
bayesStep_is_update
show as:
view math explainer →
open explainer
Read the cached plain-language explainer.
open lean source
IndisputableMonolith.Statistics.BayesianFilteringFromVFE on GitHub at line 43.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
used by
formal source
40 rw [← Finset.sum_div]
41 exact div_self (ne_of_gt (evidence_pos prior L o)) }
42
43theorem bayesStep_is_update (prior : ProbDist ι) (L : Likelihood ι Obs) (o : Obs) :
44 ∀ i, (bayesStep prior L o).prob i =
45 prior.prob i * L.like o i / evidence prior L o := by
46 intro i
47 rfl
48
49def iterFilter (L : Likelihood ι Obs) : List Obs → ProbDist ι → ProbDist ι
50 | [], p => p
51 | o :: os, p => iterFilter L os (bayesStep p L o)
52
53theorem iterFilter_nil (L : Likelihood ι Obs) (p : ProbDist ι) :
54 iterFilter L [] p = p := rfl
55
56theorem iterFilter_cons (L : Likelihood ι Obs) (o : Obs) (os : List Obs) (p : ProbDist ι) :
57 iterFilter L (o :: os) p = iterFilter L os (bayesStep p L o) := rfl
58
59structure BayesianFilteringCert where
60 evidence_positive : ∀ (prior : ProbDist ι) (L : Likelihood ι Obs) (o : Obs),
61 0 < evidence prior L o
62 bayes_step_update : ∀ (prior : ProbDist ι) (L : Likelihood ι Obs) (o : Obs) (i : ι),
63 (bayesStep prior L o).prob i =
64 prior.prob i * L.like o i / evidence prior L o
65
66theorem bayesianFilteringCert_holds : BayesianFilteringCert (ι := ι) (Obs := Obs) :=
67{ evidence_positive := evidence_pos
68 bayes_step_update := fun prior L o i => bayesStep_is_update prior L o i }
69
70end
71
72end IndisputableMonolith.Statistics.BayesianFilteringFromVFE