mono.ML
author clasohm
Wed, 02 Mar 1994 12:26:55 +0100
changeset 48 21291189b51e
parent 0 7949f97df77a
child 128 89669c58e506
permissions -rw-r--r--
changed "." to "$" and Cons to infix "#" to eliminate ambiguity
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
7949f97df77a Initial revision
clasohm
parents:
diff changeset
     1
(*  Title: 	HOL/mono
7949f97df77a Initial revision
clasohm
parents:
diff changeset
     2
    ID:         $Id$
7949f97df77a Initial revision
clasohm
parents:
diff changeset
     3
    Author: 	Lawrence C Paulson, Cambridge University Computer Laboratory
7949f97df77a Initial revision
clasohm
parents:
diff changeset
     4
    Copyright   1991  University of Cambridge
7949f97df77a Initial revision
clasohm
parents:
diff changeset
     5
7949f97df77a Initial revision
clasohm
parents:
diff changeset
     6
Monotonicity of various operations
7949f97df77a Initial revision
clasohm
parents:
diff changeset
     7
*)
7949f97df77a Initial revision
clasohm
parents:
diff changeset
     8
7949f97df77a Initial revision
clasohm
parents:
diff changeset
     9
val [prem] = goal Set.thy
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    10
    "[| !!x. P(x) ==> Q(x) |] ==> Collect(P) <= Collect(Q)";
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    11
by (fast_tac (set_cs addIs [prem]) 1);
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    12
val Collect_mono = result();
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    13
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    14
goal Set.thy "!!A B. A<=B ==> f``A <= f``B";
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    15
by (fast_tac set_cs 1);
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    16
val image_mono = result();
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    17
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    18
goal Set.thy "!!A B. A<=B ==> Union(A) <= Union(B)";
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    19
by (fast_tac set_cs 1);
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    20
val Union_mono = result();
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    21
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    22
goal Set.thy "!!A B. B<=A ==> Inter(A) <= Inter(B)";
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    23
by (fast_tac set_cs 1);
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    24
val Inter_anti_mono = result();
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    25
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    26
val prems = goal Set.thy
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    27
    "[| A<=B;  !!x. x:A ==> f(x)<=g(x) |] ==> \
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    28
\    (UN x:A. f(x)) <= (UN x:B. g(x))";
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    29
by (fast_tac (set_cs addIs (prems RL [subsetD])) 1);
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    30
val UN_mono = result();
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    31
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    32
val [prem] = goal Set.thy
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    33
    "[| !!x. f(x)<=g(x) |] ==> (UN x. f(x)) <= (UN x. g(x))";
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    34
by (fast_tac (set_cs addIs [prem RS subsetD]) 1);
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    35
val UN1_mono = result();
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    36
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    37
val prems = goal Set.thy
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    38
    "[| B<=A;  !!x. x:A ==> f(x)<=g(x) |] ==> \
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    39
\    (INT x:A. f(x)) <= (INT x:A. g(x))";
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    40
by (fast_tac (set_cs addIs (prems RL [subsetD])) 1);
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    41
val INT_anti_mono = result();
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    42
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    43
(*The inclusion is POSITIVE! *)
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    44
val [prem] = goal Set.thy
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    45
    "[| !!x. f(x)<=g(x) |] ==> (INT x. f(x)) <= (INT x. g(x))";
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    46
by (fast_tac (set_cs addIs [prem RS subsetD]) 1);
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    47
val INT1_mono = result();
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    48
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    49
goal Set.thy "!!A B. [| A<=C;  B<=D |] ==> A Un B <= C Un D";
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    50
by (fast_tac set_cs 1);
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    51
val Un_mono = result();
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    52
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    53
goal Set.thy "!!A B. [| A<=C;  B<=D |] ==> A Int B <= C Int D";
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    54
by (fast_tac set_cs 1);
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    55
val Int_mono = result();
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    56
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    57
goal Set.thy "!!A::'a set. [| A<=C;  D<=B |] ==> A-B <= C-D";
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    58
by (fast_tac set_cs 1);
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    59
val Diff_mono = result();
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    60
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    61
goal Set.thy "!!A B. A<=B ==> Compl(B) <= Compl(A)";
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    62
by (fast_tac set_cs 1);
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    63
val Compl_anti_mono = result();
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    64
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    65
val prems = goal Prod.thy
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    66
    "[| A<=C;  !!x. x:A ==> B<=D |] ==> Sigma(A,%x.B) <= Sigma(C,%x.D)";
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    67
by (cut_facts_tac prems 1);
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    68
by (fast_tac (set_cs addIs (prems RL [subsetD]) 
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    69
                     addSIs [SigmaI] 
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    70
                     addSEs [SigmaE]) 1);
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    71
val Sigma_mono = result();
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    72