fact: Fixpoint bfs_aux (w w2 : list (state * move)) (sufficient : state) (settled : state_fmap) : (list (state * move) * state_fmap) := match w with | (s, m) :: w' => match find settled s with | Some _ => bfs_aux w' w2 sufficient settled | None => if state_eq_dec s sufficient then (nil, add settled s m) else bfs_aux w' (step s ++ w2) sufficient (add settled s m) end | nil => (w2, settled) end.
imports: mathcomp(all_ssreflect) ZArith QArith List String OrderedType OrderedTypeEx FMapAVL