src/HOLCF/IOA/meta_theory/Sequence.thy
author kleing
Tue, 13 May 2003 08:59:21 +0200
changeset 14024 213dcc39358f
parent 12338 de0f4a63baa5
child 14981 e73f8140af78
permissions -rw-r--r--
HOL-Real -> HOL-Complex
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     1
(*  Title:      HOLCF/IOA/meta_theory/Sequence.thy
3275
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
     2
    ID:         $Id$
12218
wenzelm
parents: 12114
diff changeset
     3
    Author:     Olaf Müller
wenzelm
parents: 12114
diff changeset
     4
    License:    GPL (GNU GENERAL PUBLIC LICENSE)
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     5
12218
wenzelm
parents: 12114
diff changeset
     6
Sequences over flat domains with lifted elements.
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     7
*)  
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     8
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     9
Sequence = Seq + 
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    10
12338
de0f4a63baa5 renamed class "term" to "type" (actually "HOL.type");
wenzelm
parents: 12218
diff changeset
    11
default type
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    12
12338
de0f4a63baa5 renamed class "term" to "type" (actually "HOL.type");
wenzelm
parents: 12218
diff changeset
    13
types 'a Seq = ('a::type lift)seq
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    14
3952
dca1bce88ec8 replaced ops by consts;
wenzelm
parents: 3275
diff changeset
    15
consts
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    16
7229
6773ba0c36d5 renamed Cons to Consq in order to avoid clash with List.Cons;
wenzelm
parents: 4559
diff changeset
    17
  Consq            ::"'a            => 'a Seq -> 'a Seq"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    18
  Filter           ::"('a => bool)  => 'a Seq -> 'a Seq"
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    19
  Map              ::"('a => 'b)    => 'a Seq -> 'b Seq"
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    20
  Forall           ::"('a => bool)  => 'a Seq => bool"
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    21
  Last             ::"'a Seq        -> 'a lift"
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    22
  Dropwhile,
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    23
  Takewhile        ::"('a => bool)  => 'a Seq -> 'a Seq" 
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    24
  Zip              ::"'a Seq        -> 'b Seq -> ('a * 'b) Seq"
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    25
  Flat             ::"('a Seq) seq   -> 'a Seq"
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    26
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    27
  Filter2          ::"('a => bool)  => 'a Seq -> 'a Seq"
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    28
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    29
syntax
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    30
7229
6773ba0c36d5 renamed Cons to Consq in order to avoid clash with List.Cons;
wenzelm
parents: 4559
diff changeset
    31
 "@Consq"         ::"'a => 'a Seq => 'a Seq"       ("(_/>>_)"  [66,65] 65)
4283
92707e24b62b managed merge details;
mueller
parents: 3952
diff changeset
    32
 (* list Enumeration *)
92707e24b62b managed merge details;
mueller
parents: 3952
diff changeset
    33
  "_totlist"      :: args => 'a Seq                          ("[(_)!]")
92707e24b62b managed merge details;
mueller
parents: 3952
diff changeset
    34
  "_partlist"     :: args => 'a Seq                          ("[(_)?]")
92707e24b62b managed merge details;
mueller
parents: 3952
diff changeset
    35
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    36
12114
a8e860c86252 eliminated old "symbols" syntax, use "xsymbols" instead;
wenzelm
parents: 12028
diff changeset
    37
syntax (xsymbols)
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    38
7229
6773ba0c36d5 renamed Cons to Consq in order to avoid clash with List.Cons;
wenzelm
parents: 4559
diff changeset
    39
 "@Consq"     ::"'a => 'a Seq => 'a Seq"       ("(_\\<leadsto>_)"  [66,65] 65)
4283
92707e24b62b managed merge details;
mueller
parents: 3952
diff changeset
    40
 
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    41
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    42
translations
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    43
10835
nipkow
parents: 7229
diff changeset
    44
  "a>>s"         == "Consq a$s"
4283
92707e24b62b managed merge details;
mueller
parents: 3952
diff changeset
    45
  "[x, xs!]"     == "x>>[xs!]"
92707e24b62b managed merge details;
mueller
parents: 3952
diff changeset
    46
  "[x!]"         == "x>>nil"
92707e24b62b managed merge details;
mueller
parents: 3952
diff changeset
    47
  "[x, xs?]"     == "x>>[xs?]"
92707e24b62b managed merge details;
mueller
parents: 3952
diff changeset
    48
  "[x?]"         == "x>>UU" 
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    49
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    50
defs
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    51
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    52
7229
6773ba0c36d5 renamed Cons to Consq in order to avoid clash with List.Cons;
wenzelm
parents: 4559
diff changeset
    53
Consq_def     "Consq a == LAM s. Def a ## s"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    54
10835
nipkow
parents: 7229
diff changeset
    55
Filter_def    "Filter P == sfilter$(flift2 P)"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    56
10835
nipkow
parents: 7229
diff changeset
    57
Map_def       "Map f  == smap$(flift2 f)"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    58
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    59
Forall_def    "Forall P == sforall (flift2 P)"
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    60
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    61
Last_def      "Last == slast"
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    62
10835
nipkow
parents: 7229
diff changeset
    63
Dropwhile_def "Dropwhile P == sdropwhile$(flift2 P)"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    64
10835
nipkow
parents: 7229
diff changeset
    65
Takewhile_def "Takewhile P == stakewhile$(flift2 P)"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    66
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    67
Flat_def      "Flat == sflat"
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    68
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    69
Zip_def
10835
nipkow
parents: 7229
diff changeset
    70
  "Zip == (fix$(LAM h t1 t2. case t1 of 
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    71
               nil   => nil
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    72
             | x##xs => (case t2 of 
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    73
                          nil => UU 
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    74
                        | y##ys => (case x of 
12028
52aa183c15bb replaced Undef by UU;
wenzelm
parents: 10835
diff changeset
    75
                                      UU  => UU
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    76
                                    | Def a => (case y of 
12028
52aa183c15bb replaced Undef by UU;
wenzelm
parents: 10835
diff changeset
    77
                                                  UU => UU
10835
nipkow
parents: 7229
diff changeset
    78
                                                | Def b => Def (a,b)##(h$xs$ys))))))"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    79
10835
nipkow
parents: 7229
diff changeset
    80
Filter2_def    "Filter2 P == (fix$(LAM h t. case t of 
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    81
            nil => nil
12028
52aa183c15bb replaced Undef by UU;
wenzelm
parents: 10835
diff changeset
    82
	  | x##xs => (case x of UU => UU | Def y => (if P y                                 
10835
nipkow
parents: 7229
diff changeset
    83
                     then x##(h$xs)
nipkow
parents: 7229
diff changeset
    84
                     else     h$xs))))" 
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    85
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    86
rules
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    87
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    88
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    89
(* for test purposes should be deleted FIX !! *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    90
adm_all    "adm f"
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    91
12338
de0f4a63baa5 renamed class "term" to "type" (actually "HOL.type");
wenzelm
parents: 12218
diff changeset
    92
end