Theory Worklist_Common
theory Worklist_Common
  imports Worklist_Locales
begin
lemma list_ex_foldli:
  "list_ex P xs = foldli xs Not (λ x y. P x ∨ y) False"
  apply (induction xs)
  subgoal
    by simp
  subgoal for x xs
    by (induction xs) auto
  done
lemma (in Search_Space_finite) finitely_branching:
  assumes "reachable a"
  shows "finite ({a'. E a a' ∧ ¬ empty a'})"
proof -
  have "{a'. E a a' ∧ ¬ empty a'} ⊆ {a'. reachable a' ∧ ¬ empty a'}"
    using assms(1) by (auto intro: reachable_step)
  then show ?thesis using finite_reachable
    by (rule finite_subset)
qed
definition (in Search_Space_Key_Defs)
  "map_set_rel =
    {(m, s).
      ⋃(ran m) = s ∧ (∀ k. ∀ x. m k = Some x ⟶ (∀ v ∈ x. key v = k)) ∧
      finite (dom m) ∧ (∀ k S. m k = Some S ⟶ finite S)
    }"
end