section‹State Space Representation as Function \label{sec:StateFun}›
theory StateFun imports DistinctTreeProver begin
text‹The state space is represented as a function from names to
. We neither fix the type of names nor the type of values. We
lookup and update functions and provide simprocs that simplify
containing these, similar to HOL-records.
lookup and update function get constructor/destructor functions as
. These are used to embed various HOL-types into the
value type. Conceptually the abstract value type is a sum of
types that we attempt to store in the state space.
update is actually generalized to a map function. The map supplies
compositionality, especially if you think of nested state
.›
definition K_statefun :: "'a ==> 'b ==> 'a"where"K_statefun c x ≡ c"
lemma K_statefun_apply [simp]: "K_statefun c x = c" by (simp add: K_statefun_def)
lemma K_statefun_comp [simp]: "(K_statefun c ∘ f) = K_statefun c" by (rule ext) (simp add: comp_def)
lemma K_statefun_cong [cong]: "K_statefun c x = K_statefun c x" by (rule refl)
definition lookup :: "('v ==> 'a) ==> 'n ==> ('n ==> 'v) ==> 'a" where"lookup destr n s = destr (s n)"
definition update :: "('v ==> 'a1) ==> ('a2 ==> 'v) ==> 'n ==> ('a1 ==> 'a2) ==> ('n ==> 'v) ==> ('n ==> 'v)" where"update destr constr n f s = s(n := constr (f (destr (s n))))"
lemma lookup_update_same: "(∧v. destr (constr v) = v) ==> lookup destr n (update destr constr n f s) = f (destr (s n))" by (simp add: lookup_def update_def)
lemma lookup_update_id_same: "lookup destr n (update destr' id n (K_statefun (lookup id n s')) s) = lookup destr n s'" by (simp add: lookup_def update_def)
lemma lookup_update_other: "n≠m ==> lookup destr n (update destr' constr m f s) = lookup destr n s" by (simp add: lookup_def update_def)
lemma id_id_cancel: "id (id x) = x" by (simp add: id_def)
lemma conj_cong: "P ≡ P' ==> Q ≡ Q' ==> (P ∧ Q) ≡ (P' ∧ Q')" by simp
lemma update_apply: "(update destr constr n f s x) = (if x=n then constr (f (destr (s n))) else s x)" by (simp add: update_def)
lemma ex_id: "∃x. id x = y" by (simp add: id_def)
lemma swap_ex_eq: "∃s. f s = x ≡ True ==> ∃s. x = f s ≡ True" apply (rule eq_reflection) apply auto done
lemmas meta_ext = eq_reflection [OF ext]
(* This lemma only works if the store is welltyped: "\<exists>x.s''n''=(cx)" oringeneralwhenc(dx)=x, (forexample:c=idandd=id)
*) lemma"update d c n (K_statespace (lookup d n s)) s = s" apply (simp add: update_def lookup_def) apply (rule ext) apply simp oops
end
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.