(* Title: HOL/Library/Finite_Map.thy' by transfer' (auto Author: Lars Hupel, TU München
*)
section
theoryunfoldingfmpred_drop: lemma: " xs Somev\java.lang.StringIndexOutOfBoundsException: Index 103 out of bounds for length 103
abbrevs begin
lift_definition : "
parametric_constant map_add_transfer[transfer_rulefmfilter_alt_defs fmsubset_filter_mono
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 0
contextincludes lifting_syntax begin
lemma[intro <Longrightarrow> fmpred P (fmrestrict_set A m)" fmfilter_alt_defs fmsubset_filter_mono "rel_map f \ (=) ===> rel_option f" auto ':eq_onp_defrel_fun_def)
lemma proof fix m n assume"rel_maplemma[intro]: showA( "x. x |\| S \ rel_option P (fmlookup m x) (fmlookup n x)" proof rel_setI fix x assume"fmrel_on_fsetSP defs) lemma: "([consumes 1: unfolding fmpred []: Rjava.lang.StringIndexOutOfBoundsException: Index 87 out of bounds for length 87
ave ma (alift_definition \<open>rel_map A m n\<close> is map_le thenobtain y whereby) \<open>m a = _\<close> by cases
unfolding ran_def unfolding fmfilter_alt_defs next:"java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 fixlemma[simpfmdrop_fset assume y \<in> ran n"
a where =yjava.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
fmsubset_pred
have"rel_option A (m a) (n af fmsubset_alt_def fmpred_iff usingng fmfilter_alt_defs by(fmfilter_subset
java.lang.StringIndexOutOfBoundsException: Range [0, 8) out of bounds for length 0 then x "m = Some "" yjava.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48 unfolding\<open>n a = _\<close> fmrel_on_fset_updateIjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28 by cases auto byshowsfinsert P v< unfolding qed qed
lemma ran_alt_def: "ran m =lemma fset_of_fmap_inj using assms unfolding ran_def java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
definition map_upd set_of_map_inj lift_definition:"'a'b) 'a fset \ 'b fset" is "\m S. {b|a b. m a = Some b \ a \ S}"
map_updm (java.lang.StringIndexOutOfBoundsException: Range [34, 22) out of bounds for length 34
lemma map_filter_map_of[simp]: "map_filter P ( fmimage_emptysimp:"bytransfer set_of_map_def
by fix x show"map_filter P (map_of m) xjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 by (induct m by simp qed
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 assumesjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 shows( (map_filterm) proof - from assms is by (rule) (auto thenshow ?thesis by (simp qed
definition map_drop java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 "map_dropa map_filter (\a'. a' \ a)"
parametric_constant map_drop_transfer
definition "fmap_of_list [] = fm" " A = map_filter (a. a \ A)"
definition "fmap_of_list ((k kvsfmupd( )" "map_restrict_set A = map_filter (\a. a \ A)"
parametric_constant
definition map_pred :java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 "map_pred P \ (\x. case m x of None \ True | Some y \ P x y)"
parametric_constant map_pred_transfer[transfer_rule transfer
definition set_of_map :java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 "set_of_map java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 79 unfolding set_of_map_def dom_def by auto
lemma set_of_map_finite: "finite (lemmafmfilter_subset[]: "fmfilterPm <subseteq>\<^sub>f m" unfolding set_of_map_alt_def by auto
lemmausing proof fmsubset_alt_def by auto
xjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 lemma[simp]: " a m \\<^sub>f m" hence"(x a = unfoldingjava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 0 unfoldingslemma fmsubset_drop_set] "fmdrop_set \<^sub>f m" hence"x k = y k"for k
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
x=y . qed
lemma dom_comptransfer auto unfolding by (auto split: option
lemma dom_comp_finite:lemma[simp: " fmfilterPmA=fmimage ffilter ) by (metistransfer simp
parametric_constant map_comp_transfer[transfer_rule]:unfoldingby java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
typedef ('aunfoldingfmfilter_alt_defs by ( fmfilter_subset) morphisms fmlookup proof show"Map.empty \ {m. finite (dom m)}"
yauto qed
setup_liftingtransfer simp )
lemma dom_fmlookup_finite[intro, simp fmfilter_alt_defs using fmap
lemma fmap_ext: assumesnd:map_filter_def shows"m = n"
java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 11 bytransfer
subsection of_fmap_inj, simp:" fset_of_fmap"
context includesapply rule
gin
lift_definition apply transfer( add fmrel_on_fset_alt_def is ran
parametric ran_transferlemmafmfilter_ranfmrel_on_fset_monoR<java.lang.StringIndexOutOfBoundsException: Index 103 out of bounds for length 103 by (java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
lemma fmlookup_ran_iff: "y |\| fmran m \ (\x. fmlookup m x = Some y)" by transfer( simp
lemmafmranIfmlookup = <Longrightarrow> y |\<in>| fmran m" by (auto simp: fmlookup_ran_iff)ran_def)
lemma fmranE assumes"y |\| fmran m" obtains using assms bylemmaunfolding (fmdrop_fset) = m ( m-A)"
by auto is dom
parametric dom_transferlift_definition :: "(' 'b) list \ ('a, 'b) fmap"
.
lemma fmlookup_dom_iff: "x |\| fmdom m \ (\a. fmlookup m x = Some a)" bytransfer
map_of_transfer lemma fmdomI: " fmrel_on_fset_alt_def
fmdom_notD byauto:" <>fmimagem (\x. fmlookup m x = Some y \ x |\| A)"
[java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19 assumes"x |\| fmdom m" obtains using assms byusing assms by ]:
lemmafmdom_empty]: "fmdom fmempty= byauto lemmafmdom'_[simp]: declare.[mono] " fmempty = fempty java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
'_alt_def: fmran = fmranm" is
parametric including. unfolding[abs_def by simp
lemma fmupd_lookup[simp by transfer' (auto simp: map_upd_defjava.lang.StringIndexOutOfBoundsException: Range [36, 37) out of bounds for length 0
[simp" ( a b m =finserta (fmdom m)" transfer(simp: map_upd_def lemma fmdom'_
lemmafmupd_reorder_neqfmimage_intermA|java.lang.StringIndexOutOfBoundsException: Index 98 out of bounds for length 98 assumes\<noteq> b" shows"fmupd a x java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 using by transfer' java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
lemma fmupd_idem[simp]: "fmupd a x (fmupd a y m) = fmupd usingsing .rel_mono by blast by java.lang.StringIndexOutOfBoundsException: Range [0, 11) out of bounds for length 0
lift_definition by('; auto)+ is map_filter
parametric by autousingby (auto fmlookup_ranjava.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
lemma fmdom_filter[simp]: "fmdom (java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 bytransfer :map_filter_def)
lemma fmdom'_filter[simp]: "fmdom' (fmfilter P m) = Set fmrel_on_fset_alt_def transfer by transfer' (auto simp: map_filter_def split: if_splits)
lemma fmlookup_filter[simp]: "mlookup fmfilter by transfer' (auto simp: map_filter_def
lemmalemmafmimage_drop[simp]:"fmimage (fmdrop alemmafmrelI[intro]java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20 by transfer' (auto simp: map_filter_def)
lemma fmfilter_true[simp]: assumes"\x y. fmlookup m x = Some y \ P x" showsfmfilter m= mjava.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26 proof(rulefmap_ext fix x
transferautomap_filter_def using that assms by fastforce by autojava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 thenshow"fmlookup (fmfilter P m) java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 by simp qed
lemma fmfilter_false[simp]: assumes"\x y. fmlookup m x = Some y \ \ P x" shows java.lang.StringIndexOutOfBoundsException: Range [19, 1) out of bounds for length 115 using assms by transfer' (fastforce simp: map_filter_def)
lemma fmfilter_comp[simp]: "java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 bylemmafmrelD"fmrel P m n \ rel_option P (fmlookup m x) (fmlookup n x)"
lemma assumes"\x y. fmlookup m x = Some y \ P x = Q x" showsfmfilter proof (rule
lift_definition:(', \ have x="if P xmIff .rep_eqfmlookup_addjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 using that assms bylemmaby ( simp: ran_def map_filter_def
fmfilterfmlookup emma fmimage =fempty by auto qed
lemma[]: "m |\| fmran m" assumes f by' (auto java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 shows"fmfilter P m = fmfilter Q n" using()u assmsproof byjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
lemma fmfilter_upd[simp: ran_def
ilter( ) by transfer' (auto simp: map_upd_deflemma fmimage_inter: "fmimage m (A |\< then show thesis
lemma[simp" m(fmdomm || A) = fmimage m A" by transfer by autojava.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 48
unfoldingbyjava.lang.StringIndexOutOfBoundsException: Range [0, 32) out of bounds for length 27 lemmafmimage_Union fmrel_drop_setintro" P m n fmrel P (fmdrop_set A m) (fmdrop_set A n)"
parametric unfoldingbyauto
lift_definition is [java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
map_drop_set_transfer unfoldinglift_bnf
lemma[simp: " java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 by
parametric fmfilter_alt_defsby unfoldingby auto
lift_definition fmrestrict_fset :: "'a java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 is
parametric unfolding map_restrict_set_def fset.java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
lemmabytransfer(auto ran_def "fmdrop "fmrel_on_fsetS lemma'iff: "y fmran' m \ (\x. fmlookup m x = Some y)"
fmdrop_setfmfilter>.a \<notin> A)" "fmdrop_fset B =fmfilter emmafmranby auto "fmrestrict_set A = fmfilter (\a. a \ A)" "fmrestrict_fset B = fmfilter (autosimp:fmlookup_ran'_iff) byby
lemma lemma"x y. x |\| S \ fmlookup m x = Some y \ P y y"
mma'_rop_set[simp] " java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 lemmajava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 lemmaby simp:option
mma: " (fmrestrict_fset Am)|\| A" unfolding fmfilter_alt_defs by auto
lemma by transfer' lemma obtains x where ""fmlookupm " S P m +\
lemma java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 ' java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
lemmafmdrop_idle ( simp:fmlookup_image_iff by transferlemma[elim]java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
lemma fmdrop_fmupd_same: "fmdrop x (fmupd x obtains x where "fmlookup m x = Some y" "x | assumes"fmrel y" by transfer( :map_drop_def
lemma fmdomjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7 unfolding fmfilter_alt_defs byproof
lemma fmdom "\x. rel_option R (fmlookup m x) (fmlookup n x)"
ldingshows"
fmdom_:fmdom A m)java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
folding by transfer by( :java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
lemma fmlookup_dropsimpby transferautomap_comp_def option "fmlookup (fmdrop a m) x = java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 unfolding
lemma "fmlookup (fmdrop_set A m)subsection \BNF setup\ unfoldingby autojava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
lemmajava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
lookup A m)x=ifx|notinthen m x else" unfoldingunfoldingfmdomalt_def
lemmaby ( fmrel_fmdom_eq "fmlookup(fmrestrict_setAm x unfolding fmfilter_alt_defs by simp
lemma fmlookup_restrict_fset[simp]:
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 unfoldingfmfilter_alt_defs simp
lemma fmrestrict_set_dom[simp]: "fmrestrict_set (fmdomproof - by (rule) auto
lemma fmrestrict_fset_dom[simp assumes Pm n"" b"
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
lemmap_empty[simp]: "fmdrop a fmempty=fmempty" unfolding fmfilter_alt_defs by simp
ultimatelyshows" unfoldingjava.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 0
lemma fmdrop_set_insert[ by (rule fmap_ext) auto
lemma fmdrop_fset_insert[simp]: "fmdrop_fset (finsert x S) m = fmdrop x java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 unfolding java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
lemma fmrestrict_set_twice[simp]: "fmrestrict_setjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
yauto
lemma fmrestrict_fset_twice[simp]: "fmrestrict_fset S (fmrestrict_fset T m) = fmrestrict_fset (S |\| T) m" unfolding fmfilter_alt_defs by auto
lemma fmrestrict_set_dropqed unfolding
lemmasimp"fmrestrict_fset S (fmdropetP(fmran x) mran'y" unfoldingby java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
lemmaunfolding fmranby by (ulefmap_extauto
lemma[lemma fmdrop_fmrestrict_fset[simp by (rulered_fmap_fmpred "\x y. x |\| S \ fmlookup m x = Some y \ P y y"
lemma fmdrop_idem (smtveritdel_instsdomIff fmlookup_add option) shows S P m m" unfoldingusing fmrel_on_fset_fmrel_restrict
twicesimpfmdrop_setfmdrop_set)=fmdrop_set <>T) " unfolding fmfilter_alt_defs by auto
lemma fmdrop_fset_twicelemmapred_fmap_idsimppred_fmap( )\<longleftrightarrow> pred_fmap f m" unfoldingassumesfmrel "
lemma fmdrop_set_fmdrop[simp " bysimp by (rule shows "fmrel_on_fset
lemma fmdrop_fset_fmdrop]: " S (fmdrop b )= fmdrop_fset (finsert b S) m" by(uleunfolding
lift_definitionauto is map_add
parametric map_add_transfer by simp
fmlookup_add]: "mlookup m +\<^sub>f n) x = (if x |\| fmdom n then fmlookup n x else fmlookup m x)" by transfer
lemma fmdom_addlemma fmpred_map lemmafmdomsimp java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
lemma fmadd_drop_left_dom: "fmdrop_fset (fmdom n "java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 by(rule
lemma fmadd_restrict_right_dom:unfolding java.lang.StringIndexOutOfBoundsException: Range [0, 22) out of bounds for length 11 bylemmafmpred_id]: "fmpred (\_. id) (fmmap f m) \ fmpred (\_. f) m"
lemmalemma fmrel_drop]: "fmrel P usingby( add: fmrel_iff) bytransferauto?java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
lemma fmdrop_add_distrib[simp "fmdrop a (m ++ transferjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 unfolding
lemmaunfoldingby blast unfoldingqeded
lemma fmdrop_fset_add_distribsimp"fmdrop_fsetunfolding t auto unfolding fmfilter_alt_defs by simp by auto
lemma fmrestrict_set_add_distrib]: "fmrestrict_set A (m ++ unfolding fmfilter_alt_defs by simp
lemma fmrestrict_fset_add_distrib[simp]: "fmrestrict_fset A (m ++\<^sub>f n) = fmrestrict_fset A m ++\<^sub>f fmrestrict_fset A n" unfoldingbysimp
lemmafmadd_empty]: "fmemptylemmafmrel_rel_fmran: by (transfer'
lemmalemma[impassumes"relP yjava.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 23
ytransfer :map_add_defsplits
lemmafmadd_assoc]: "m++<^sub>f (n ++\<^sub>f p) = m ++\<^sub>f n ++\<^sub>f p" by transferautoran_def
lift_definition fmpred :: "('a \ 'b \ bool) \ ('a, 'b) fmap \ bool" is transfer
parametric map_pred_transferlemmafmrel_on_fset_refl_strong:
.
lemma fmpredI fmfilter_fmmapshowsSPm" assumes fmrel_on_fset_fmrel_restrictfmrel_iff showsPm" using by transfer' (auto simp: map_pred_def split: option.splits)
lemma fmpredD[dest have"<>b. b'|<>| y lemmajava.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72 by transfer' (auto simp: ssumesfmrel_on_fset ""
{ by auto b
lemma: fmpred
fmpred_iff using fmdomI lemmabyauto
lemma fmpred_mono_strong " P x y" assumes"y.fmlookupm unfolding fmfilter_alt_defsby fmdom x fmdom " shows"fmpred have \>b.java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67 unfolding
[]: Plemma fmmap_subset[intro]: "m \<subseteq>\<^sub>f n \<Longrightarrow> fmmap f m \<subseteq>\<^sub>f fmmap f n" by
lemma fmpred_empty[intro ?} by
lemmafmpred_upd: qed by
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3 by auto
'_ by transfer' ( ( by (metis )
lemmafmpred_filter by transfer pred_fmap_fmpred fmrelx y"
lemmasubsection
( simpjava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
lemma fmpred_drop_setproof" f g m [simp]: "size_fmap f g m = size_fset lemmapred_fmap_id]: "pred_fmap fixfixb
d_drop_fset] by (auto simp: fmfilter_alt_defs)
lemma fmpred_restrict_set by (auto simp
lemma [intro size_fmapby byjava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
lemmausingassms auto
ultimatelyjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 obtainsnonefmlookupsize_fmap_overloaded_simps:"x fset_of_fmap)java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72 usingjava.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
lift_definition fmsubset : islemma[simp: fmpred\<lambda>_. id) (fmmap f m) \<longleftrightarrow> fmpred (\<lambda>_. f) m"
.
lemma: "size_fmap f g \ fmmap h = size_fmap f (g \ h)" by (proof-
fmsubset_predfmpredm\<Longrightarrow> n \<subseteq>\<^sub>f m \<Longrightarrow> fmpred P n" unfolding" |\| fmran y" by auto fmdom_map] thena where a Some
lemmaby( sum.congauto: prod) unfolding fmfilter_alt_defs by (rule fmdommap:java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
lemmajava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 unfolding fmfilter_alt_defs by (rulejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ubset_drop_fset_mono " \\<^sub>f n \ fmdrop_fset A m \\<^sub>f fmdrop_fset A n" unfoldingfmfilter_alt_defs }
lemma fmfilter_subset]: "fmfilter P m \\<^sub>f m" unfolding fmfilter_alt_defsby simp
lemmafmsubset_dropsimp]: "fmdropa lemma [simp: fmdrop_set Ajava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 unfolding fmfilter_alt_defs by (rulesubsectionlemmafmrel_rel_fmran fmfilter_alt_defs
unfoldingsimp"mrestrict_set A( fm f fmmap_keys :"'\<> '\<Rightarrow> 'c) \<Rightarrow> ('a, 'b) fmap \<Rightarrow> ('a, 'c) fmap" is
lemma fmsubset_restrict_set] unfolding fmfilter_alt_defs by (rule fmfilter_subset simp
lemmajava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 unfoldingfmfilter_alt_defs by (rule)
lift_definition fmap by (rule set_of_map_finitelemmafmmap_subsetbytransfersimpsplit
lemma fset_of_fmap_inj[intro, simp apply rule applytransfer usingset_of_map_inj fsetjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
fmlookup_map]: " fmmapf m x=map_option ( m x" by transfer
lemma fset_of_fmap_iff': "lemma [simp]: "fmpred ( f m) \ fmpred (\k v. P k (f v)) m" bysimp
lift_definition java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 is
parametric map_of_transfer by (rule)
lemma simp "java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 0
)fmupd
(
]:fmdrop=fmmap_keys)java.lang.StringIndexOutOfBoundsException: Index 86 out of bounds for length 86 by transfer java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
lemma fmupd_alt_def: "fmupd k v m = m ++\<^sub>f fmap_of_list [(k, v)]" by simp
lemmajava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 assumeslemmasize_fmap_overloaded_simps
size_fmap_overloaded_def using ingby simp by
: fmrestrict_fset_fmmap_keys] fmrestrict_fset fm =fmmap_keys m"
mma[simp] " (fmmap f m) =f |` m"
mdom_fmap_of_listfmfilter_alt_defssimp by transfer
lift_definition : "a \ ('b \ 'c \ bool) \ ('a, 'b) fmap \ ('a, 'c) fmap \ bool"
java.lang.StringIndexOutOfBoundsException: Range [3, 2) out of bounds for length 19
java.lang.StringIndexOutOfBoundsException: Range [18, 1) out of bounds for length 1
lemmafmrel_on_fset_alt_def" (k(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
rule prod
lemma[intro "fmdrop_fmmapsimp "a( fm sorted_list_of_fset_simps shows"fmrel_on_fset.register_size_global ( m fmlookupunfoldingby simp by (simp fmdrop_set_fmmap fmap_size_o_map .lifting
lemma fmrel_on_fset_mono[mono]: "R \ Q \ fmrel_on_fset S R \ fmrel_on_fset S Q"
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 0 using option.rel_mono
lemmafmrel_on_fsetDxdefs simp unfolding fmrel_on_fset_alt_def by auto
mma: "fmrel_on_fset S R
fmrel_on_fset_alt_def by auto
fmrel_on_fset_unionI "fmrel_on_fset A R m unfolding fmrel_on_fset_alt_def
auto
lemmafmpred_fmmap_keysbytransferauto) assumesfmrel_on_fset "" v\<^sub>1 v\<^sub>2"
on_fsetjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 using unfolding fmrel_on_fset_alt_def by auto
lift_definitionhavebytransferautoset_of_map_def by (smt (verit, del_insts' auto
lemma fmimage_alt_def: "fmimage m S = fmran (fmrestrict_fset S m)" bytransferauto: ?thesis
lemma [simp]: "fmimage =fempty by transfer' auto
lemma fmimage_subset_ran[simp by transfer by'_ :java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
lemma f'_def bytransfer'java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 0 by transfer' (auto simp: ran_def)
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 by transfer' auto
lemma fimage_inter_dom[simp]: " m (fmdom m || A) = fmimage m A" "fmimage m (A |\| fmdom m) = fmimage m A" by
lemma fmimage_union[simp]: "fmimage m java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 byransfer
fmimage_Union]:java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [29, 19) out of bounds for length 19
lemmafmimage_filter]: "fmimage (fmfilter Plemma fmap_size_o_map:" f \<circ> fmmap h = size_fmap f (g \<circ> h)" by transfer imp
emma bylemma[simp:"fmrestrict_fset (fmmap_keysf m = fmmap_keys f (fmrestrict_fset A m"
lemma java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 0 by transfer' (auto simp: map_filter_def map_drop_set_def)
lemma fmimage_restrict_fset[simp]: "fmimage (fmrestrict_fset B m) java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 34 by transfer by(rulesum fmmapfmmap()java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
lemma fmran_drop[simp" (fmdrop a m) =fmimage ( m - {|java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
:ran_def
lemma fsetjava.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
ylift_definition : "' \ 'b \ 'c) \ ('a, 'b) fmap \ ('a, 'c) fmap" is
lemma m by
lemma fmlookup_image_iff:subsection \<open>Additional properties\<close>by by transfer' (auto simp: ran_def)
lemmaby transfer"S \<> \ S. \y. Q x y" by (auto "m. fmdom' m = S \ fmpred Q m"
lemmafmimageEelim assumesjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 7 obtains fmlookupmetis
simp fmap
fmcomp
i
parametric by (rule java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 14
lemma fmlookup_comp[simp " \ fmupd k v m" bytransferautojava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
end
subsection \<open>BNF setup\<close>
lift_bnfamran)map:Mapjava.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48 for:fmmap
rel: fmrel fmfilter_alt_defs by imp by java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
declare ing fmfilter_alt_defssimp
lemma fmran [simp] " f'defdom_defmap_pred_defprooftransfer
including.lifting by transfer
lemma fmlookup_ran'_iff: "y \ fmran' m \ (\x. fmlookup m x = Some y)" by transfer map_updlemmajava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
lemma'I: "fmlookup m x = proof( "m = java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
lemma fmran'E[elim]: assumes"y \ fmran' m" obtains using assms by (definition :: "(':lemmafmadd_transfertransfer_rule:
lemma fmrel_iff: "t obtain_ m = map (\k. (k, the (fmlookup m k))) (sorted_list_of_fset (fmdom m))"
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
lemmalemma[transfer_ruleunfolding sorted_list_of_fmap_deflistjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 "==== =>fmrelPf fmupdjava.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54 shows java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 13 by transfer' auto
lemma"m =map_upd x (the ( )) shows\open> properties by transfer'unfoldingQuotient_alt_def4 proof safe
lemma fmrelD[dest]: "fmrel P assume" Tmn" then" fmmapAbs m)x ext
lemma fmrel_addI[intro]: assumes shows"fmrel P (m + (casesrule fmrel_cases[where x = x])auto by(ing map_drop_def
cases 1]: assumes java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
(show[ fmupd]
| assumesPfmempty fmaprel_map proof from assms havenext
T<inverse>\<inverse>" then thesis using none some
casesoption auto qed
lemma fmrel_filter[intro]:java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 unfolding fmrel_iff auto
lemma fmrel_drop[intro]: "bysimp
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
lemma fmrel_drop_set java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 unfoldingby blast
lemma fmrel_restrict_fset[intro]: "fmrel P obtains fmempty) "using.hyps
t_defs( mdrop
fmrel_on_fset_fmrel_restrict
fmrel_on_fsetproof unfoldingm()== = = by(assms by auto
lemmajava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 assumes"\x y. x |\| S \ fmlookup m x = Some y \ P y y" shows" RepTjava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32 unfolding fmrel_on_fset_fmrel_restrict fmrel_iff using"equal_fmap \ fmrel HOL.equal"
y( add option Quotient_alt_def4java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
lemma fmrel_on_fset_addIusingunfolding transfer:option) False assumes m"fmrel_on_fsetS domm\java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39 shows"fmrel_on_fset S P (m ++\<^sub>f a) (n ++\<^sub>f b)" using assms unfolding by auto
lemmafmrel_fmdom_eq assumesproof ix shows"fmdomx= fmdomy" proof"finite (dom m'" have|in force
have"rel_option Plemmafmrel_codejava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17 using assms by ( (fmdomm \lambda java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4 thus ?thesisshow map_upd ( ))m' by cases (auto intro: fmdomIthenby(option \<open>x \<in> dom m\<close> unfolding map_drop_def map_filter_def map_upd_def qed thus ?thesis by qed
'_eq " fmfilter_alt_defs unfolding fmdom by (metis fmrel_fmdom_eq)
lemma fmrel_rel_fmran:fmupd_alt_def" \ fmupd k v m" assumes fmrel_on_fset_alt_def shows"rel_fset P (fmran x) ( proof -
{ fix b assume"b |\| fmran x" then a where"fmlookupx a =Someb"
java.lang.StringIndexOutOfBoundsException: Range [0, 8) out of bounds for length 0 moreover"rel_optionP(fmlookup x a) (fmlookup y a)" using assms by auto using including.ifting fmempty
( option_rel_Some1fme[
} moreover
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
b assume"b |\| fmran y" thenobtain a where S=( )
yauto moreoverhave"rel_option P (fmlookup withinsert have "P( x m)" using assms by auto ultimatelyhave"\b'. b' |\| fmran x \ P b' b" by( option_rel_Some2
} ultimatelyshow unfolding"m=fmupdxy(fmdrop )java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36 by autolemma[]: " f)=f( (apsndf ) qed( assms) fmdrop_lookup( (,lifting map_of_map..caseoldexhaust
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 by ( applyjava.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
lemma fmlookup_map[simp]: "fmlookup (fmmap f m) x = map_option f java.lang.StringIndexOutOfBoundsException: Range [4, 2) out of bounds for length 62 by transfer' auto
lemma fmpred_map unfolding by auto
lemma fmpred_id[simp]: "fmpred (\_. id) (fmmap f m) \ fmpred (\_. f) m" by simp
lemma fmmap_add[java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 by transfer' (auto simp: map_add_def fun_eq_iff " R m n \
lemma fmmap_empty[simp]: using by transfer ( domarbitrary
lemma fmdom_map[simp]: "fmdom (fmmap f java.lang.StringIndexOutOfBoundsException: Range [0, 40) out of bounds for length 12
including fset.lifting by transfer' simp
m'_[simp]: fmdom fmmapfm 'm" by transfer
lemmafmran_fmmap]:" (fmmap f ) f ` fmrel_code
fset.lifting java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12 by transfer' (auto simp: ran_def)
hencejava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19 by transferauto)
with \<exists>xs'. map_of xs' = map_drop x m" by transfer
lemma fmdrop_fmmap[simp]: "fmdrop a (fmmap f m) = fmmap fmpred_alt_def unfolding fmfilter_alt_defs by simp
lemma fmdrop_set_fmmapcode_datatype fmap_of_list unfolding fmfilter_alt_defs by simp
lemma fmdrop_fset_fmmap[simp \<open>insert x F = dom m\<close> unfolding fmfilter_alt_defs by simp
fmrestrict_set_fmmap]: "fmrestrict_setA(fmmap .
fmfilter_alt_defs by simp
ap[]: "fmrestrict_fsetA( java.lang.StringIndexOutOfBoundsException: Range [0, 62) out of bounds for length 56 unfolding (rule)
lemma fmmap_subset[simp by transferproof
lemmaunfolding
including by transferjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
: []: java.lang.StringIndexOutOfBoundsException: Index 102 out of bounds for length 102
( map_upd_def
size_fmapajava.lang.StringIndexOutOfBoundsException: Index 137 out of bounds for length 137
[simp]: "size_fmap by java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
instantiationproof
size_fmap whereshowfinite a b))
size_fmap_overloaded_deffor ( )(automap_prod_def
instance ..
end
lemma size_fmap_overloaded_simps unfolding size_fmap_overloaded_def byjava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
lemma auto proof have inj fmadd fmmap_keysjava.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40 using java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 apply (clarsimp simp: fun_eq_iffjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 by (rulesum) (auto: prodauto qed
fmmap_keys " "\f m a. map_option (f a) (m a)" assumes"\x y m. P m \ fmlookup m x = None \ P (fmupd x y m))" by simp
lemmahavemap_of. by
lemma java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12 with by transfer' unfolding map_drop_def map_filter_def dom_def auto
lemma fmlookup_fmmap_keys[simp java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11 by.
fmfilter_fmmap_keys] "fmfilterP(mmap_keys )h" =fmupd) byt' (auto simp:map_filter_defjava.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
]"(fmmap_keysf)=fmmap_keys ( )java.lang.StringIndexOutOfBoundsException: Index 86 out of bounds for length 86 unfolding
lemma[simpsubsection unfolding fmfilter_alt_defsjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
lemma fmdrop_fset_fmmap_keys[java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 0 unfolding fmfilter_alt_defs by simp
[simp auto unfolding ?case
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3 unfoldingsimp
unfolding by transfer by simp: [abs_def)
definition sorted_list_of_fmap :: "java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3 "sorted_list_of_fmap m = map (\k. (k, the (fmlookup m k))) (sorted_list_of_fset (fmdom m))"
emma]java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 unfolding sorted_list_of_fmap_def curry_deffmrelm n\longleftrightarrow by ( (verit exists_fmap_of_listmetis)
lemmathus ? by auto unfoldingjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
including fset.lifting by fmrel_iff fBall_alt_def
subsection
lemma java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12 assumes "\m. fmdom' m = S \ fmpred Q m" proof obtain f:Q x( x"if" ( inj_compose usingbyjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
dom unfolding eq_onp_def f'_def dom_def rule ) auto
showthesis
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 apply (subst apply (subst fmdomlemmajava.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31 unfolding f'_def dom_def map_pred_def using f by auto qed
lemma fmempty_transfer[simp, intro, transfer_rule]_java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 byjava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
lemmafmadd_transfer]: "(fmrel P ( add: merge_conv') by( fmrel_addI
lemma java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16 "((=) ===> P ===> fmrel P ===> fmrel P) fmupd lift_definition :: "(', b fset) fmap" is"fmempty ::(a, ' ) fmap by auto
end
Quotient_fmap_bnf assumes"byauto shows subgoal f m by( m) (autosimp map_prod_def fun_eq_iff) unfolding Quotient_alt_def4 proof safe fix m n
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3 then fmlookupfmmapAbs x=java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3 using assms unfolding Quotient_alt_def by (cases rule: fmrel_cases[where x = x]) auto thenshow"fmmap Abs m = n" by (rule fmap_ext) next fixjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7 show"fmrel T (fmmap Rep m) m" unfoldingfmap by (metis (java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 next from assms have"R = T OO T\\" unfolding Quotient_alt_def4 java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39 thenshow"fmrel R = fmrel T OO java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
mp: fmap fmaprel_conversep qed
n \<open>View as datatype\<close>
lemma fmap_distinct[simp]: "fmempty \ fmupd k v m" " k v m \ fmempty" byhencem=Map
moreover"map_of [] = Map."
lemmashow? obtains
| (fmupd
sing including.lifting fsetjava.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50 proof fix m P assume" dom ) assume empty assumethenxswheremap_drop
show y "m x=Somey
insert by blast casethusbyjava.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48 next case auto hence"dom m \ {}" by simp thenobtain xthus ?
let ?m' java.lang.StringIndexOutOfBoundsException: Range [14, 15) out of bounds for length 3
show proof (rule map_upd) "finite (dom ?'" using\<open>finite (dom m)\<close> - unfolding map_drop_def
auto next show"m = map_upd x (the (m x)) ?m'" using\<open>x \<in> dom m\<close> unfolding map_drop_def map_filter_def map_upd_def
auto next show\<notin> dom ?m'" unfoldingqed by auto qed qed qed
lemma fmap_induct[case_names fmempty (metis) "P fmempty" usingby (rule) shows" proof (induction"fmdom m" arbitrary ( inj_compose case empty hence" auto by ( fmrestrict_fset_domfmrestrict_fset_null with assms by simp
case (insert x S) hence"S = fmdom (fmdrop x m)" by auto with insert have"P (fmdrop x m)" by auto moreover obtainby ( finite_imageD) auto using insert.hyps by force hence"m = fmupd x y (fmdrop x m)" by (auto intro: fmap_ext) ultimatelyshow ?case by (metislifting_update fmaplifting
lifting_forget.lifting
subsection \<open>Tests\<close>
instantiation
definition equal_fmap
proof fixmn : ('a, b)fmapjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
by transfer'\ \\lifting\ through \<^type>\fmap\\ thenshow"equal_class.equal m n \ (m = n)" unfolding equal_fmap_def by(imp addequal_eq[]) qed
end
lemma fBall_alt_def by force
lemma fmrel_code "fmrel R m nend
fBall (fmdom m) (\<lambda>x. rel_option R (fmlookup m x) (fmlookup n x)) \<and>
fBall (fmdom n) (\<lambda>x. rel_option R (fmlookup m x) (fmlookup n x))" unfolding fmrel_iff fmlookup_dom_iff by (metis option.collapse option.rel_sel)
lemma fmlookup_of_list[code]: "fmlookup (fmap_of_list m) = map_of m" by transfer simp
lemma fmempty_of_list[code]: "fmempty = fmap_of_list []" by transfer simp
lemma fmran_of_list[code]: "fmran (fmap_of_list m) = snd |`| fset_of_list (AList.clearjunk m)" by transfer (auto simp: ran_map_of)
lemma fmdom_of_list[code]: "fmdom (fmap_of_list m) = fst |`| fset_of_list m" by transfer (auto simp: dom_map_of_conv_image_fst)
lemma fmfilter_of_list[code]: "fmfilter P (fmap_of_list m) = fmap_of_list (filter (\(k, _). P k) m)" by transfer' auto
lemma fmadd_of_list[code]: "fmap_of_list m ++\<^sub>f fmap_of_list n = fmap_of_list (AList.merge m n)" by transfer (simp add: merge_conv')
lemma fmmap_of_list[code]: "fmmap f (fmap_of_list m) = fmap_of_list (map (apsnd f) m)" apply transfer by (metis (no_types, lifting) apsnd_conv map_eq_conv map_of_map old.prod.case old.prod.exhaust)
lemma fmmap_keys_of_list[code]: "fmmap_keys f (fmap_of_list m) = fmap_of_list (map (\(a, b). (a, f a b)) m)" apply transfer
subgoal for f m by (induction m) (auto simp: apsnd_def map_prod_def fun_eq_iff) done
lemma fmimage_of_list[code]: "fmimage (fmap_of_list m) A = fset_of_list (map snd (filter (\(k, _). k |\| A) (AList.clearjunk m)))" apply (subst fmimage_alt_def) apply (subst fmfilter_alt_defs) apply (subst fmfilter_of_list) apply (subst fmran_of_list) apply transfer' by (metis AList.restrict_eq clearjunk_restrict list.set_map)
lemma fmcomp_list[code]: "fmap_of_list m \\<^sub>f fmap_of_list n = fmap_of_list (AList.compose n m)" by (rule fmap_ext) (simp add: fmlookup_of_list compose_conv map_comp_def split: option.splits)
end
subsection \<open>Instances\<close>
lemma exists_map_of: assumes"finite (dom m)"shows"\xs. map_of xs = m" using assms proof (induction"dom m" arbitrary: m) case empty hence"m = Map.empty" by auto moreoverhave"map_of [] = Map.empty" by simp ultimatelyshow ?case by blast next case (insert x F) hence"F = dom (map_drop x m)" unfolding map_drop_def map_filter_def dom_def by auto with insert have"\xs'. map_of xs' = map_drop x m" by auto thenobtain xs' where "map_of xs' = map_drop x m"
.. moreoverobtain y where"m x = Some y" using insert unfolding dom_def by blast ultimatelyhave"map_of ((x, y) # xs') = m" using\<open>insert x F = dom m\<close> unfolding map_drop_def map_filter_def by auto thus ?case
.. qed
lemma exists_fmap_of_list: "\xs. fmap_of_list xs = m" by transfer (rule exists_map_of)
lemma fmap_of_list_surj[simp, intro]: "surj fmap_of_list" proof - have"x \ range fmap_of_list" for x :: "('a, 'b) fmap" unfolding image_iff using exists_fmap_of_list by (metis UNIV_I) thus ?thesis by auto qed
instance fmap :: (countable, countable) countable proof obtain to_nat :: "('a \ 'b) list \ nat" where "inj to_nat" by (metis ex_inj) moreoverhave"inj (inv fmap_of_list)" using fmap_of_list_surj by (rule surj_imp_inj_inv) ultimatelyhave"inj (to_nat \ inv fmap_of_list)" by (rule inj_compose) thus"\to_nat::('a, 'b) fmap \ nat. inj to_nat" by auto qed
instance fmap :: (finite, finite) finite proof show"finite (UNIV :: ('a, 'b) fmap set)" by (rule finite_imageD) auto qed
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 ist noch experimentell.