src/HOL/IMP/Abs_Int0.thy
changeset 46346 10c18630612a
parent 46334 3858dc8eabd8
child 46355 42a01315d998
equal deleted inserted replaced
46345:202f8b8086a3 46346:10c18630612a
     7 subsection "Computable Abstract Interpretation"
     7 subsection "Computable Abstract Interpretation"
     8 
     8 
     9 text{* Abstract interpretation over type @{text st} instead of
     9 text{* Abstract interpretation over type @{text st} instead of
    10 functions. *}
    10 functions. *}
    11 
    11 
    12 context Val_abs
    12 context Gamma
    13 begin
    13 begin
    14 
    14 
    15 fun aval' :: "aexp \<Rightarrow> 'av st \<Rightarrow> 'av" where
    15 fun aval' :: "aexp \<Rightarrow> 'av st \<Rightarrow> 'av" where
    16 "aval' (N n) S = num' n" |
    16 "aval' (N n) S = num' n" |
    17 "aval' (V x) S = lookup S x" |
    17 "aval' (V x) S = lookup S x" |
    24 
    24 
    25 text{* The for-clause (here and elsewhere) only serves the purpose of fixing
    25 text{* The for-clause (here and elsewhere) only serves the purpose of fixing
    26 the name of the type parameter @{typ 'av} which would otherwise be renamed to
    26 the name of the type parameter @{typ 'av} which would otherwise be renamed to
    27 @{typ 'a}. *}
    27 @{typ 'a}. *}
    28 
    28 
    29 locale Abs_Int = Val_abs \<gamma> for \<gamma> :: "'av::SL_top \<Rightarrow> val set"
    29 locale Abs_Int = Gamma where \<gamma>=\<gamma> for \<gamma> :: "'av::SL_top \<Rightarrow> val set"
    30 begin
    30 begin
    31 
    31 
    32 fun step' :: "'av st option \<Rightarrow> 'av st option acom \<Rightarrow> 'av st option acom" where
    32 fun step' :: "'av st option \<Rightarrow> 'av st option acom \<Rightarrow> 'av st option acom" where
    33 "step' S (SKIP {P}) = (SKIP {S})" |
    33 "step' S (SKIP {P}) = (SKIP {S})" |
    34 "step' S (x ::= e {P}) =
    34 "step' S (x ::= e {P}) =