Skip to content

Commit 58cf21f

Browse files
committed
Incorporated pruning into simulation
1 parent 0037e5d commit 58cf21f

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

analysis/markov/Linleios/Evolve.lean

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff 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+
132135
def 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

156156
def totalProbability (states : Probabilities) : Probability :=
157157
states.values.sum

analysis/markov/Main.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ import Linleios
55
def env : Environment := makeEnvironment 0.05 0.95 0.90 600 0.75 1 4 7
66

77
def s0 : Probabilities := default
8-
def sn := simulate env s0 2
8+
def sn := simulate env s0 1e-6 2
99
def pn := totalProbability sn
1010

1111
def 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

0 commit comments

Comments
 (0)