section‹Fixpoint of Converging Program Transformations›
theory Fixpoint imports Compiler begin
context fixes
m :: "'a ==> nat"and
f :: "'a ==> 'a option" begin
function fixpoint :: "'a ==> 'a option"where "fixpoint x = ( case f x of None ==> None | Some x' ==> if m x' < m x then fixpoint x' else Some x' )" by pat_completeness auto termination proof (relation "measure m") show"wf (measure m)"by auto next fix x x' assume"f x = Some x'"and"m x' < m x" thus"(x', x) ∈ measure m"by simp qed
end
lemma fixpoint_to_comp_pow: "fixpoint m f x = y ==>∃n. option_comp_pow f n x = y" proof (induction x arbitrary: y rule: fixpoint.induct[where f = f and m = m]) case (1 x) show ?case proof (cases "f x") case None thenshow ?thesis using"1.prems" by (metis (no_types, lifting) fixpoint.simps option.case_eq_if option_comp_pow.simps(1)) next case (Some a) show ?thesis proof (cases "m a < m x") case True hence"fixpoint m f a = y" using"1.prems" Some by simp thenshow ?thesis using"1.IH"[OF Some True] by (metis Some bind.simps(2) old.nat.exhaust option_comp_def option_comp_pow.simps(1,3)) next case False thenshow ?thesis using"1.prems" Some apply simp by (metis option_comp_pow.simps(2)) qed qed qed
lemma fixpoint_eq_comp_pow: "∃n. fixpoint m f x = option_comp_pow f n x" by (metis fixpoint_to_comp_pow)
lemma compiler_composition_fixpoint: assumes "compiler step final load step final load match order compile" shows"compiler step final load step final load (rel_comp_pow match) (lexp order++) (fixpoint m compile)" proof (rule compiler.intro) show"compiler_axioms load load (rel_comp_pow match) (fixpoint m compile)" proof unfold_locales fix p1 p2 s2 assume"fixpoint m compile p1 = Some p2"and"load p2 s2" obtain n where"fixpoint m compile p1 = option_comp_pow compile n p1" using fixpoint_eq_comp_pow by metis
thus"∃s1 i. load p1 s1 ∧ rel_comp_pow match i s1 s2" using‹fixpoint m compile p1 = Some p2› assms compiler.compile_load compiler_composition_pow using‹load p2 s2›by fastforce qed qed (auto intro: assms compiler.axioms backward_simulation_pow)
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.