src/HOL/Nonstandard_Analysis/Star.thy
changeset 81142 6ad2c917dd2e
parent 80914 d97fdabd9e2b
equal deleted inserted replaced
81141:3e3e7a68cd80 81142:6ad2c917dd2e
     9 theory Star
     9 theory Star
    10   imports NSA
    10   imports NSA
    11 begin
    11 begin
    12 
    12 
    13 definition  \<comment> \<open>internal sets\<close>
    13 definition  \<comment> \<open>internal sets\<close>
    14   starset_n :: "(nat \<Rightarrow> 'a set) \<Rightarrow> 'a star set"  (\<open>*sn* _\<close> [80] 80)
    14   starset_n :: "(nat \<Rightarrow> 'a set) \<Rightarrow> 'a star set"
       
    15     (\<open>(\<open>open_block notation=\<open>prefix starset_n\<close>\<close>*sn* _)\<close> [80] 80)
    15   where "*sn* As = Iset (star_n As)"
    16   where "*sn* As = Iset (star_n As)"
    16 
    17 
    17 definition InternalSets :: "'a star set set"
    18 definition InternalSets :: "'a star set set"
    18   where "InternalSets = {X. \<exists>As. X = *sn* As}"
    19   where "InternalSets = {X. \<exists>As. X = *sn* As}"
    19 
    20 
    21   is_starext :: "('a star \<Rightarrow> 'a star) \<Rightarrow> ('a \<Rightarrow> 'a) \<Rightarrow> bool"
    22   is_starext :: "('a star \<Rightarrow> 'a star) \<Rightarrow> ('a \<Rightarrow> 'a) \<Rightarrow> bool"
    22   where "is_starext F f \<longleftrightarrow>
    23   where "is_starext F f \<longleftrightarrow>
    23     (\<forall>x y. \<exists>X \<in> Rep_star x. \<exists>Y \<in> Rep_star y. y = F x \<longleftrightarrow> eventually (\<lambda>n. Y n = f(X n)) \<U>)"
    24     (\<forall>x y. \<exists>X \<in> Rep_star x. \<exists>Y \<in> Rep_star y. y = F x \<longleftrightarrow> eventually (\<lambda>n. Y n = f(X n)) \<U>)"
    24 
    25 
    25 definition  \<comment> \<open>internal functions\<close>
    26 definition  \<comment> \<open>internal functions\<close>
    26   starfun_n :: "(nat \<Rightarrow> 'a \<Rightarrow> 'b) \<Rightarrow> 'a star \<Rightarrow> 'b star"  (\<open>*fn* _\<close> [80] 80)
    27   starfun_n :: "(nat \<Rightarrow> 'a \<Rightarrow> 'b) \<Rightarrow> 'a star \<Rightarrow> 'b star"
       
    28     (\<open>(\<open>open_block notation=\<open>prefix starfun_n\<close>\<close>*fn* _)\<close> [80] 80)
    27   where "*fn* F = Ifun (star_n F)"
    29   where "*fn* F = Ifun (star_n F)"
    28 
    30 
    29 definition InternalFuns :: "('a star => 'b star) set"
    31 definition InternalFuns :: "('a star => 'b star) set"
    30   where "InternalFuns = {X. \<exists>F. X = *fn* F}"
    32   where "InternalFuns = {X. \<exists>F. X = *fn* F}"
    31 
    33