Theory Difference_Bound_Matrices.DBM_Misc
theory DBM_Misc
imports
Main
HOL.Real
begin
lemma finite_set_of_finite_funs2:
fixes A :: "'a set"
and B :: "'b set"
and C :: "'c set"
and d :: "'c"
assumes "finite A"
and "finite B"
and "finite C"
shows "finite {f. ∀x. ∀y. (x ∈ A ∧ y ∈ B ⟶ f x y ∈ C) ∧ (x ∉ A ⟶ f x y = d) ∧ (y ∉ B ⟶ f x y = d)}"
proof -
let ?S = "{f. ∀x. ∀y. (x ∈ A ∧ y ∈ B ⟶ f x y ∈ C) ∧ (x ∉ A ⟶ f x y = d) ∧ (y ∉ B ⟶ f x y = d)}"
let ?R = "{g. ∀x. (x ∈ B ⟶ g x ∈ C) ∧ (x ∉ B ⟶ g x = d)}"
let ?Q = "{f. ∀x. (x ∈ A ⟶ f x ∈ ?R) ∧ (x ∉ A ⟶ f x = (λy. d))}"
from finite_set_of_finite_funs[OF assms(2,3)] have "finite ?R" .
from finite_set_of_finite_funs[OF assms(1) this, of "λ y. d"] have "finite ?Q" .
moreover have "?S = ?Q"
by force+
ultimately show ?thesis by simp
qed
end