src/CCL/Set.thy
author wenzelm
Tue, 13 Jun 2006 23:41:39 +0200
changeset 19876 11d447d5d68c
parent 17456 bcf7544875b2
child 20140 98acc6d0fab6
permissions -rw-r--r--
tuned;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
17456
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
     1
(*  Title:      CCL/Set.thy
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     2
    ID:         $Id$
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     3
*)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     4
17456
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
     5
header {* Extending FOL by a modified version of HOL set theory *}
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
     6
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
     7
theory Set
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
     8
imports FOL
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
     9
begin
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    10
3935
52c14fe8f16b adapted to qualified names;
wenzelm
parents: 3837
diff changeset
    11
global
52c14fe8f16b adapted to qualified names;
wenzelm
parents: 3837
diff changeset
    12
17456
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    13
typedecl 'a set
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    14
arities set :: ("term") "term"
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    15
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    16
consts
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    17
  Collect       :: "['a => o] => 'a set"                    (*comprehension*)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    18
  Compl         :: "('a set) => 'a set"                     (*complement*)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    19
  Int           :: "['a set, 'a set] => 'a set"         (infixl 70)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    20
  Un            :: "['a set, 'a set] => 'a set"         (infixl 65)
17456
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    21
  Union         :: "(('a set)set) => 'a set"                (*...of a set*)
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    22
  Inter         :: "(('a set)set) => 'a set"                (*...of a set*)
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    23
  UNION         :: "['a set, 'a => 'b set] => 'b set"       (*general*)
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    24
  INTER         :: "['a set, 'a => 'b set] => 'b set"       (*general*)
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    25
  Ball          :: "['a set, 'a => o] => o"                 (*bounded quants*)
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    26
  Bex           :: "['a set, 'a => o] => o"                 (*bounded quants*)
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    27
  mono          :: "['a set => 'b set] => o"                (*monotonicity*)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    28
  ":"           :: "['a, 'a set] => o"                  (infixl 50) (*membership*)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    29
  "<="          :: "['a set, 'a set] => o"              (infixl 50)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    30
  singleton     :: "'a => 'a set"                       ("{_}")
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    31
  empty         :: "'a set"                             ("{}")
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    32
  "oo"          :: "['b => 'c, 'a => 'b, 'a] => 'c"     (infixr 50) (*composition*)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    33
3935
52c14fe8f16b adapted to qualified names;
wenzelm
parents: 3837
diff changeset
    34
syntax
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    35
  "@Coll"       :: "[idt, o] => 'a set"                 ("(1{_./ _})") (*collection*)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    36
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    37
  (* Big Intersection / Union *)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    38
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    39
  "@INTER"      :: "[idt, 'a set, 'b set] => 'b set"    ("(INT _:_./ _)" [0, 0, 0] 10)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    40
  "@UNION"      :: "[idt, 'a set, 'b set] => 'b set"    ("(UN _:_./ _)" [0, 0, 0] 10)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    41
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    42
  (* Bounded Quantifiers *)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    43
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    44
  "@Ball"       :: "[idt, 'a set, o] => o"              ("(ALL _:_./ _)" [0, 0, 0] 10)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    45
  "@Bex"        :: "[idt, 'a set, o] => o"              ("(EX _:_./ _)" [0, 0, 0] 10)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    46
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    47
translations
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    48
  "{x. P}"      == "Collect(%x. P)"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    49
  "INT x:A. B"  == "INTER(A, %x. B)"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    50
  "UN x:A. B"   == "UNION(A, %x. B)"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    51
  "ALL x:A. P"  == "Ball(A, %x. P)"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    52
  "EX x:A. P"   == "Bex(A, %x. P)"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    53
3935
52c14fe8f16b adapted to qualified names;
wenzelm
parents: 3837
diff changeset
    54
local
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    55
17456
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    56
axioms
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    57
  mem_Collect_iff:       "(a : {x. P(x)}) <-> P(a)"
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    58
  set_extension:         "A=B <-> (ALL x. x:A <-> x:B)"
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    59
17456
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    60
defs
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    61
  Ball_def:      "Ball(A, P)  == ALL x. x:A --> P(x)"
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    62
  Bex_def:       "Bex(A, P)   == EX x. x:A & P(x)"
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    63
  mono_def:      "mono(f)     == (ALL A B. A <= B --> f(A) <= f(B))"
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    64
  subset_def:    "A <= B      == ALL x:A. x:B"
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    65
  singleton_def: "{a}         == {x. x=a}"
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    66
  empty_def:     "{}          == {x. False}"
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    67
  Un_def:        "A Un B      == {x. x:A | x:B}"
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    68
  Int_def:       "A Int B     == {x. x:A & x:B}"
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    69
  Compl_def:     "Compl(A)    == {x. ~x:A}"
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    70
  INTER_def:     "INTER(A, B) == {y. ALL x:A. y: B(x)}"
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    71
  UNION_def:     "UNION(A, B) == {y. EX x:A. y: B(x)}"
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    72
  Inter_def:     "Inter(S)    == (INT x:S. x)"
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    73
  Union_def:     "Union(S)    == (UN x:S. x)"
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    74
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 3935
diff changeset
    75
ML {* use_legacy_bindings (the_context ()) *}
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    76
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    77
end
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    78