src/HOL/Analysis/Embed_Measure.thy
changeset 70136 f03a01a18c6e
parent 69768 7e4966eaf781
child 71633 07bec530f02e
equal deleted inserted replaced
70135:ad6d4a14adb5 70136:f03a01a18c6e
    20   This is useful e.\,g.\ when \<open>f\<close> is injective, i.\,e.\ it is some kind of ``tagging'' function.
    20   This is useful e.\,g.\ when \<open>f\<close> is injective, i.\,e.\ it is some kind of ``tagging'' function.
    21   For instance, suppose we have some algebraaic datatype of values with various constructors,
    21   For instance, suppose we have some algebraaic datatype of values with various constructors,
    22   including a constructor \<open>RealVal\<close> for real numbers. Then \<open>embed_measure\<close> allows us to lift a 
    22   including a constructor \<open>RealVal\<close> for real numbers. Then \<open>embed_measure\<close> allows us to lift a 
    23   measure on real numbers to the appropriate subset of that algebraic datatype.
    23   measure on real numbers to the appropriate subset of that algebraic datatype.
    24 \<close>
    24 \<close>
    25 definition%important embed_measure :: "'a measure \<Rightarrow> ('a \<Rightarrow> 'b) \<Rightarrow> 'b measure" where
    25 definition\<^marker>\<open>tag important\<close> embed_measure :: "'a measure \<Rightarrow> ('a \<Rightarrow> 'b) \<Rightarrow> 'b measure" where
    26   "embed_measure M f = measure_of (f ` space M) {f ` A |A. A \<in> sets M}
    26   "embed_measure M f = measure_of (f ` space M) {f ` A |A. A \<in> sets M}
    27                            (\<lambda>A. emeasure M (f -` A \<inter> space M))"
    27                            (\<lambda>A. emeasure M (f -` A \<inter> space M))"
    28 
    28 
    29 lemma space_embed_measure: "space (embed_measure M f) = f ` space M"
    29 lemma space_embed_measure: "space (embed_measure M f) = f ` space M"
    30   unfolding embed_measure_def
    30   unfolding embed_measure_def