# Theory Typing_Framework

Up to index of Isabelle/HOL/MicroJava

theory Typing_Framework
imports Listn
begin

    (*  Title:      HOL/MicroJava/BV/Typing_Framework.thy
        ID:         $Id: Typing_Framework.thy,v 1.9 2005/06/17 14:13:08 haftmann Exp $
        Author:     Tobias Nipkow
        Copyright   2000 TUM
    *)

    header {* \isaheader{Typing and Dataflow Analysis Framework} *}

    theory Typing_Framework imports Listn begin

    text {*
      The relationship between dataflow analysis and a welltyped-instruction predicate.
    *}
    types
      's step_type = "nat => 's => (nat × 's) list"

    constdefs
     stable :: "'s ord => 's step_type => 's list => nat => bool"
    "stable r step ss p == !(q,s'):set(step p (ss!p)). s' <=_r ss!q"

     stables :: "'s ord => 's step_type => 's list => bool"
    "stables r step ss == !p<size ss. stable r step ss p"

     wt_step ::
    "'s ord => 's => 's step_type => 's list => bool"
    "wt_step r T step ts ==
     !p<size(ts). ts!p ~= T & stable r step ts p"

     is_bcv :: "'s ord => 's => 's step_type
               => nat => 's set => ('s list => 's list) => bool"
    "is_bcv r T step n A bcv == !ss : list n A.
       (!p<n. (bcv ss)!p ~= T) =
       (? ts: list n A. ss <=[r] ts & wt_step r T step ts)"

    end