(* Title: HOL/HOLCF/IOA/RefMappings.thy Author: Olaf Müller *)
section‹Refinement Mappings in HOLCF/IOA›
theory RefMappings imports Traces begin
default_sort type
definition move :: "('a, 's) ioa ==> ('a, 's) pairs ==> 's ==> 'a ==> 's ==> bool" where"move ioa ex s a t ⟷ is_exec_frag ioa (s, ex) ∧ Finite ex ∧ laststate (s, ex) = t ∧ mk_trace ioa ⋅ ex = (if a ∈ ext ioa then a ↝ nil else nil)"
definition is_ref_map :: "('s1 ==> 's2) ==> ('a, 's1) ioa ==> ('a, 's2) ioa ==> bool" where"is_ref_map f C A ⟷ ((∀s ∈ starts_of C. f s ∈ starts_of A) ∧ (∀s t a. reachable C s ∧ s ←-a←-C→ t ⟶ (∃ex. move A ex (f s) a (f t))))"
definition is_weak_ref_map :: "('s1 ==> 's2) ==> ('a, 's1) ioa ==> ('a, 's2) ioa ==> bool" where"is_weak_ref_map f C A ⟷ ((∀s ∈ starts_of C. f s ∈ starts_of A) ∧ (∀s t a. reachable C s ∧ s ←-a←-C→ t ⟶ (if a ∈ ext C then (f s) ←-a←-A→ (f t) else f s = f t)))"
subsection‹Transitions and moves›
lemma transition_is_ex: "s ←-a←-A→ t ==>∃ex. move A ex s a t" apply (rule_tac x = " (a, t) ↝ nil"in exI) apply (simp add: move_def) done
lemma nothing_is_ex: "a ∉ ext A ∧ s = t ==>∃ex. move A ex s a t" apply (rule_tac x = "nil"in exI) apply (simp add: move_def) done
lemma ei_transitions_are_ex: "s ←-a←-A→ s' ∧ s' ←-a'←-A→ s'' ∧ a' ∉ ext A ==>∃ex. move A ex s a s''" apply (rule_tac x = " (a,s') ↝ (a',s'') ↝nil"in exI) apply (simp add: move_def) done
lemma weak_ref_map2ref_map: "ext C = ext A ==> is_weak_ref_map f C A ==> is_ref_map f C A" apply (unfold is_weak_ref_map_def is_ref_map_def) apply auto apply (case_tac "a ∈ ext A") apply (auto intro: transition_is_ex nothing_is_ex) done
lemma imp_conj_lemma: "(P ==> Q ⟶ R) ==> P ∧ Q ⟶ R" by blast
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.