src/HOL/BCV/DFA_Framework.thy
author nipkow
Wed, 29 Nov 2000 17:23:27 +0100
changeset 10539 5929460a41df
parent 9791 a39e5d43de55
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9791
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     1
(*  Title:      HOL/BCV/DFA_Framework.thy
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     2
    ID:         $Id$
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     3
    Author:     Tobias Nipkow
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     4
    Copyright   2000 TUM
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     5
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     6
The relationship between dataflow analysis and a welltyped-insruction predicate.
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     7
*)
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     8
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     9
DFA_Framework = Listn +
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    10
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    11
constdefs
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    12
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    13
 stable :: 's ord =>
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    14
           (nat => 's => 's)
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    15
           => (nat => nat list) => 's list => nat => bool
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    16
"stable r step succs ss p == !q:set(succs p). step p (ss!p) <=_r ss!q"
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    17
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    18
 stables :: 's ord => (nat => 's => 's)
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    19
            => (nat => nat list) => 's list => bool
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    20
"stables r step succs ss == !p<size ss. stable r step succs ss p"
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    21
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    22
 is_dfa :: 's ord
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    23
           => ('s list => 's list)
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    24
           => (nat => 's => 's)
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    25
           => (nat => nat list)
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    26
           => nat => 's set => bool
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    27
"is_dfa r dfa step succs n A == !ss : list n A.
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    28
   dfa ss : list n A & stables r step succs (dfa ss) & ss <=[r] dfa ss &
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    29
   (!ts: list n A. ss <=[r] ts & stables r step succs ts
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    30
                     --> dfa ss <=[r] ts)"
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    31
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    32
 is_bcv :: 's ord => 's => ('s list => nat => bool)
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    33
           => nat => 's set => ('s list => 's list) => bool
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    34
"is_bcv r T wti n A bcv == !ss : list n A.
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    35
   (!p<n. (bcv ss)!p ~= T) =
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    36
   (? ts: list n A. ss <=[r] ts & welltyping T wti ts)"
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    37
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    38
 wti_is_stable_topless ::
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    39
    's ord => 's
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    40
    => (nat => 's => 's)
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    41
    => ('s list => nat => bool)
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    42
    => (nat => nat list)
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    43
    => nat => 's set => bool
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    44
"wti_is_stable_topless r T step wti succs n A == !ss p.
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    45
   ss : list n A & (!p<n. ss!p ~= T) & p < n -->
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    46
   wti ss p = stable r step succs ss p"
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    47
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    48
 welltyping :: 's => ('s list => nat => bool) => 's list => bool
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    49
"welltyping T wti ts == !p<size(ts). ts!p ~= T & wti ts p"
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    50
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    51
end