File tree Expand file tree Collapse file tree 2 files changed +9
-9
lines changed
Expand file tree Collapse file tree 2 files changed +9
-9
lines changed Original file line number Diff line number Diff line change @@ -129,6 +129,9 @@ def step {env : Environment} : List (State → Outcomes) :=
129129 [@certify env, @vote env]
130130
131131
132+ def prune (ε : Float) : Probabilities → Probabilities :=
133+ HashMap.filter (fun _ p => p > ε)
134+
132135def evolve (transition : State → Outcomes) : Probabilities → Probabilities :=
133136 HashMap.fold
134137 (
@@ -145,13 +148,10 @@ def chain (transitions : List (State → Outcomes)) : Probabilities → Probabil
145148 | [] => id
146149 | (t :: ts) => chain ts ∘ evolve t
147150
148- def simulate (env : Environment) (start : Probabilities) : Nat → Probabilities
151+ def simulate (env : Environment) (start : Probabilities) (ε : Float) : Nat → Probabilities
149152| 0 => start
150- | n + 1 => let state' := chain (@step env) start
151- simulate env state' n
152-
153- def prune (ε : Float) : Probabilities → Probabilities :=
154- HashMap.filter (fun _ p => p > ε)
153+ | n + 1 => let state' := prune ε $ chain (@step env) start
154+ simulate env state' ε n
155155
156156def totalProbability (states : Probabilities) : Probability :=
157157 states.values.sum
Original file line number Diff line number Diff line change @@ -5,11 +5,11 @@ import Linleios
55def env : Environment := makeEnvironment 0 .05 0 .95 0 .90 600 0 .75 1 4 7
66
77def s0 : Probabilities := default
8- def sn := simulate env s0 2
8+ def sn := simulate env s0 1e-6 2
99def pn := totalProbability sn
1010
1111def main : IO Unit :=
1212 do
1313 let print {α : Type } [Repr α] (x : α) : IO Unit := IO.println (reprPrec x 0 ).pretty
14- print $ prune 0 sn
15- print pn
14+ print sn
15+ print $ 1 - pn
You can’t perform that action at this time.
0 commit comments