lemma edom_evalHeap_subset:"edom (evalHeap h eval) ⊆ domA h" by (induct h eval rule:evalHeap.induct) (auto dest:subsetD[OF edom_fun_upd_subset] simp del: fun_upd_apply)
lemma evalHeap_cong[fundef_cong]: "[ heap1 = heap2 ; (∧ e. e ∈ snd ` set heap2 ==> eval1 e = eval2 e) ] ==> evalHeap heap1 eval1 = evalHeap heap2 eval2" by (induct heap2 eval2 arbitrary:heap1 rule:evalHeap.induct, auto)
lemma lookupEvalHeap: assumes"v ∈ domA h" shows"(evalHeap h f) v = f (the (map_of h v))" using assms by (induct h f rule: evalHeap.induct) auto
lemma lookupEvalHeap': assumes"map_of Γ v = Some e" shows"(evalHeap Γ f) v = f e" using assms by (induct Γ f rule: evalHeap.induct) auto
lemma lookupEvalHeap_other[simp]: assumes"v ∉ domA Γ" shows"(evalHeap Γ f) v = ⊥" using assms by (induct Γ f rule: evalHeap.induct) auto
lemma env_restr_evalHeap_noop: "domA h ⊆ S ==> env_restr S (evalHeap h eval) = evalHeap h eval" apply (rule ext) apply (case_tac "x ∈ S") apply (auto simp add: lookupEvalHeap intro: lookupEvalHeap_other) done
lemma env_restr_evalHeap_same[simp]: "env_restr (domA h) (evalHeap h eval) = evalHeap h eval" by (simp add: env_restr_evalHeap_noop)
lemma evalHeap_cong': "[ (∧ x. x ∈ domA heap ==> eval1 (the (map_of heap x)) = eval2 (the (map_of heap x))) ] ==> evalHeap heap eval1 = evalHeap heap eval2" apply (rule ext) apply (case_tac "x ∈ domA heap") apply (auto simp add: lookupEvalHeap) done
lemma lookupEvalHeapNotAppend[simp]: assumes"x ∉ domA Γ" shows"(evalHeap (Γ@h) f) x = evalHeap h f x" using assms by (induct Γ, auto)
lemma evalHeap_delete[simp]: "evalHeap (delete x Γ) eval = env_delete x (evalHeap Γ eval)" by (induct Γ) auto
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.