| 11229 |      1 | (*  Title:      HOL/MicroJava/BV/Typing_Framework.thy
 | 
|  |      2 |     ID:         $Id$
 | 
|  |      3 |     Author:     Tobias Nipkow
 | 
|  |      4 |     Copyright   2000 TUM
 | 
|  |      5 | *)
 | 
|  |      6 | 
 | 
|  |      7 | header "Typing and Dataflow Analysis Framework"
 | 
|  |      8 | 
 | 
|  |      9 | theory Typing_Framework = Listn:
 | 
|  |     10 | 
 | 
|  |     11 | text {* 
 | 
|  |     12 |   The relationship between dataflow analysis and a welltyped-insruction predicate. 
 | 
|  |     13 | *}
 | 
|  |     14 | 
 | 
|  |     15 | constdefs
 | 
|  |     16 |  bounded :: "(nat => nat list) => nat => bool"
 | 
|  |     17 | "bounded succs n == !p<n. !q:set(succs p). q<n"
 | 
|  |     18 | 
 | 
|  |     19 |  stable :: "'s ord =>
 | 
|  |     20 |            (nat => 's => 's)
 | 
|  |     21 |            => (nat => nat list) => 's list => nat => bool"
 | 
|  |     22 | "stable r step succs ss p == !q:set(succs p). step p (ss!p) <=_r ss!q"
 | 
|  |     23 | 
 | 
|  |     24 |  stables :: "'s ord => (nat => 's => 's)
 | 
|  |     25 |             => (nat => nat list) => 's list => bool"
 | 
|  |     26 | "stables r step succs ss == !p<size ss. stable r step succs ss p"
 | 
|  |     27 | 
 | 
|  |     28 |  is_bcv :: "'s ord => 's => (nat => 's => 's) => (nat => nat list)
 | 
|  |     29 |            => nat => 's set => ('s list => 's list) => bool"
 | 
|  |     30 | "is_bcv r T step succs n A bcv == !ss : list n A.
 | 
|  |     31 |    (!p<n. (bcv ss)!p ~= T) =
 | 
|  |     32 |    (? ts: list n A. ss <=[r] ts & welltyping r T step succs ts)"
 | 
|  |     33 | 
 | 
|  |     34 |  welltyping ::
 | 
|  |     35 | "'s ord => 's => (nat => 's => 's) => (nat => nat list) => 's list => bool"
 | 
|  |     36 | "welltyping r T step succs ts ==
 | 
|  |     37 |  !p<size(ts). ts!p ~= T & stable r step succs ts p"
 | 
|  |     38 | 
 | 
|  |     39 | end
 |