src/ZF/subset.ML
author wenzelm
Mon, 03 Nov 1997 12:24:13 +0100
changeset 4091 771b1f6422a8
parent 3840 e0baea4d485a
child 5325 f7a5e06adea1
permissions -rw-r--r--
isatool fixclasimp;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 782
diff changeset
     1
(*  Title:      ZF/subset
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     2
    ID:         $Id$
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 782
diff changeset
     3
    Author:     Lawrence C Paulson, Cambridge University Computer Laboratory
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     4
    Copyright   1991  University of Cambridge
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     5
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     6
Derived rules involving subsets
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     7
Union and Intersection as lattice operations
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     8
*)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     9
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    10
(*** cons ***)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    11
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    12
qed_goal "cons_subsetI" ZF.thy "!!a. [| a:C; B<=C |] ==> cons(a,B) <= C"
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    13
 (fn _ => [ Blast_tac 1 ]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    14
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    15
qed_goal "subset_consI" ZF.thy "B <= cons(a,B)"
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    16
 (fn _ => [ Blast_tac 1 ]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    17
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    18
qed_goal "cons_subset_iff" ZF.thy "cons(a,B)<=C <-> a:C & B<=C"
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    19
 (fn _ => [ Blast_tac 1 ]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    20
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    21
(*A safe special case of subset elimination, adding no new variables 
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    22
  [| cons(a,B) <= C; [| a : C; B <= C |] ==> R |] ==> R *)
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1745
diff changeset
    23
bind_thm ("cons_subsetE", cons_subset_iff RS iffD1 RS conjE);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    24
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    25
qed_goal "subset_empty_iff" ZF.thy "A<=0 <-> A=0"
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    26
 (fn _=> [ (Blast_tac 1) ]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    27
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    28
qed_goal "subset_cons_iff" ZF.thy
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    29
    "C<=cons(a,B) <-> C<=B | (a:C & C-{a} <= B)"
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    30
 (fn _=> [ (Blast_tac 1) ]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    31
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    32
(*** succ ***)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    33
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    34
qed_goal "subset_succI" ZF.thy "i <= succ(i)"
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    35
 (fn _=> [ (Blast_tac 1) ]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    36
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    37
(*But if j is an ordinal or is transitive, then i:j implies i<=j! 
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    38
  See ordinal/Ord_succ_subsetI*)
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    39
qed_goalw "succ_subsetI" ZF.thy [succ_def]
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1745
diff changeset
    40
    "!!i j. [| i:j;  i<=j |] ==> succ(i)<=j"
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    41
 (fn _=> [ (Blast_tac 1) ]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    42
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    43
qed_goalw "succ_subsetE" ZF.thy [succ_def] 
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    44
    "[| succ(i) <= j;  [| i:j;  i<=j |] ==> P \
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    45
\    |] ==> P"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    46
 (fn major::prems=>
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    47
  [ (rtac (major RS cons_subsetE) 1),
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    48
    (REPEAT (ares_tac prems 1)) ]);
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    49
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    50
(*** singletons ***)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    51
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    52
qed_goal "singleton_subsetI" ZF.thy "!!a c. a:C ==> {a} <= C"
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    53
 (fn _=> [ (Blast_tac 1) ]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    54
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    55
qed_goal "singleton_subsetD" ZF.thy "!!a C. {a} <= C  ==>  a:C"
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    56
 (fn _=> [ (Blast_tac 1) ]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    57
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    58
(*** Big Union -- least upper bound of a set  ***)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    59
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    60
qed_goal "Union_subset_iff" ZF.thy "Union(A) <= C <-> (ALL x:A. x <= C)"
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    61
 (fn _ => [ Blast_tac 1 ]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    62
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    63
qed_goal "Union_upper" ZF.thy
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1745
diff changeset
    64
    "!!B A. B:A ==> B <= Union(A)"
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    65
 (fn _ => [ Blast_tac 1 ]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    66
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    67
qed_goal "Union_least" ZF.thy
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    68
    "[| !!x. x:A ==> x<=C |] ==> Union(A) <= C"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    69
 (fn [prem]=>
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    70
  [ (rtac (ballI RS (Union_subset_iff RS iffD2)) 1),
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    71
    (etac prem 1) ]);
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    72
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    73
(*** Union of a family of sets  ***)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    74
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    75
goal ZF.thy "A <= (UN i:I. B(i)) <-> A = (UN i:I. A Int B(i))";
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3840
diff changeset
    76
by (blast_tac (claset() addSEs [equalityE]) 1);
760
f0200e91b272 added qed and qed_goal[w]
clasohm
parents: 689
diff changeset
    77
qed "subset_UN_iff_eq";
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    78
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    79
qed_goal "UN_subset_iff" ZF.thy
3840
e0baea4d485a fixed dots;
wenzelm
parents: 2877
diff changeset
    80
     "(UN x:A. B(x)) <= C <-> (ALL x:A. B(x) <= C)"
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    81
 (fn _ => [ Blast_tac 1 ]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    82
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    83
qed_goal "UN_upper" ZF.thy
3840
e0baea4d485a fixed dots;
wenzelm
parents: 2877
diff changeset
    84
    "!!x A. x:A ==> B(x) <= (UN x:A. B(x))"
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    85
 (fn _ => [ etac (RepFunI RS Union_upper) 1 ]);
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    86
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    87
qed_goal "UN_least" ZF.thy
3840
e0baea4d485a fixed dots;
wenzelm
parents: 2877
diff changeset
    88
    "[| !!x. x:A ==> B(x)<=C |] ==> (UN x:A. B(x)) <= C"
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    89
 (fn [prem]=>
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    90
  [ (rtac (ballI RS (UN_subset_iff RS iffD2)) 1),
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    91
    (etac prem 1) ]);
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    92
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    93
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    94
(*** Big Intersection -- greatest lower bound of a nonempty set ***)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    95
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    96
qed_goal "Inter_subset_iff" ZF.thy
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    97
     "!!a A. a: A  ==>  C <= Inter(A) <-> (ALL x:A. C <= x)"
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
    98
 (fn _ => [ Blast_tac 1 ]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    99
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   100
qed_goal "Inter_lower" ZF.thy "!!B A. B:A ==> Inter(A) <= B"
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   101
 (fn _ => [ Blast_tac 1 ]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   102
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   103
qed_goal "Inter_greatest" ZF.thy
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   104
    "[| a:A;  !!x. x:A ==> C<=x |] ==> C <= Inter(A)"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   105
 (fn [prem1,prem2]=>
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   106
  [ (rtac ([prem1, ballI] MRS (Inter_subset_iff RS iffD2)) 1),
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   107
    (etac prem2 1) ]);
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   108
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   109
(*** Intersection of a family of sets  ***)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   110
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   111
qed_goal "INT_lower" ZF.thy
3840
e0baea4d485a fixed dots;
wenzelm
parents: 2877
diff changeset
   112
    "!!x. x:A ==> (INT x:A. B(x)) <= B(x)"
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   113
 (fn _ => [ Blast_tac 1 ]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   114
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   115
qed_goal "INT_greatest" ZF.thy
3840
e0baea4d485a fixed dots;
wenzelm
parents: 2877
diff changeset
   116
    "[| a:A;  !!x. x:A ==> C<=B(x) |] ==> C <= (INT x:A. B(x))"
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   117
 (fn [nonempty,prem] =>
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   118
  [ rtac (nonempty RS RepFunI RS Inter_greatest) 1,
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   119
    REPEAT (eresolve_tac [RepFunE, prem, ssubst] 1) ]);
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   120
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   121
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   122
(*** Finite Union -- the least upper bound of 2 sets ***)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   123
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   124
qed_goal "Un_subset_iff" ZF.thy "A Un B <= C <-> A <= C & B <= C"
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   125
 (fn _ => [ Blast_tac 1 ]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   126
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   127
qed_goal "Un_upper1" ZF.thy "A <= A Un B"
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   128
 (fn _ => [ Blast_tac 1 ]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   129
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   130
qed_goal "Un_upper2" ZF.thy "B <= A Un B"
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   131
 (fn _ => [ Blast_tac 1 ]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   132
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   133
qed_goal "Un_least" ZF.thy "!!A B C. [| A<=C;  B<=C |] ==> A Un B <= C"
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   134
 (fn _ => [ Blast_tac 1 ]);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1745
diff changeset
   135
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   136
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   137
(*** Finite Intersection -- the greatest lower bound of 2 sets *)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   138
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   139
qed_goal "Int_subset_iff" ZF.thy "C <= A Int B <-> C <= A & C <= B"
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   140
 (fn _ => [ Blast_tac 1 ]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   141
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   142
qed_goal "Int_lower1" ZF.thy "A Int B <= A"
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   143
 (fn _ => [ Blast_tac 1 ]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   144
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   145
qed_goal "Int_lower2" ZF.thy "A Int B <= B"
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   146
 (fn _ => [ Blast_tac 1 ]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   147
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   148
qed_goal "Int_greatest" ZF.thy "!!A B C. [| C<=A;  C<=B |] ==> C <= A Int B"
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   149
 (fn _ => [ Blast_tac 1 ]);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1745
diff changeset
   150
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   151
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   152
(*** Set difference *)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   153
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   154
qed_goal "Diff_subset" ZF.thy "A-B <= A"
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   155
 (fn _ => [ Blast_tac 1 ]);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   156
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   157
qed_goal "Diff_contains" ZF.thy
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1745
diff changeset
   158
    "!!C. [| C<=A;  C Int B = 0 |] ==> C <= A-B"
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3840
diff changeset
   159
 (fn _ => [ (blast_tac (claset() addSEs [equalityE]) 1) ]);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1745
diff changeset
   160
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   161
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   162
(** Collect **)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   163
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   164
qed_goal "Collect_subset" ZF.thy "Collect(A,P) <= A"
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   165
 (fn _ => [ Blast_tac 1 ]);
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1745
diff changeset
   166
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   167
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   168
(** RepFun **)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   169
2877
6476784dba1c Converted to call blast_tac.
paulson
parents: 2493
diff changeset
   170
val prems = goal ZF.thy "[| !!x. x:A ==> f(x): B |] ==> {f(x). x:A} <= B";
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3840
diff changeset
   171
by (blast_tac (claset() addIs prems) 1);
760
f0200e91b272 added qed and qed_goal[w]
clasohm
parents: 689
diff changeset
   172
qed "RepFun_subset";
689
bf95dada47ac ZF/Fixedpt/subset_cs: moved to ZF/subset.ML
lcp
parents: 0
diff changeset
   173
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1745
diff changeset
   174
val subset_SIs =
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1745
diff changeset
   175
    [subset_refl, cons_subsetI, subset_consI, 
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1745
diff changeset
   176
     Union_least, UN_least, Un_least, 
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1745
diff changeset
   177
     Inter_greatest, Int_greatest, RepFun_subset,
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1745
diff changeset
   178
     Un_upper1, Un_upper2, Int_lower1, Int_lower2];
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1745
diff changeset
   179
689
bf95dada47ac ZF/Fixedpt/subset_cs: moved to ZF/subset.ML
lcp
parents: 0
diff changeset
   180
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1745
diff changeset
   181
(*A claset for subset reasoning*)
4091
771b1f6422a8 isatool fixclasimp;
wenzelm
parents: 3840
diff changeset
   182
val subset_cs = claset() 
2469
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1745
diff changeset
   183
    delrules [subsetI, subsetCE]
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1745
diff changeset
   184
    addSIs subset_SIs
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1745
diff changeset
   185
    addIs  [Union_upper, Inter_lower]
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1745
diff changeset
   186
    addSEs [cons_subsetE];
b50b8c0eec01 Implicit simpsets and clasets for FOL and ZF
paulson
parents: 1745
diff changeset
   187