src/HOL/ex/svc_test.thy
author krauss
Tue, 28 Sep 2010 09:54:07 +0200
changeset 39754 150f831ce4a3
parent 20807 bd3b60f9a343
child 41589 bbd861837ebc
permissions -rw-r--r--
no longer declare .psimps rules as [simp]. This regularly caused confusion (e.g., they show up in simp traces when the regular simp rules are disabled). In the few places where the rules are used, explicitly mentioning them actually clarifies the proof text.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12873
d7f8dfaad46d include SVC_Test;
wenzelm
parents: 7180
diff changeset
     1
17388
495c799df31d tuned headers etc.;
wenzelm
parents: 12873
diff changeset
     2
(* $Id$ *)
495c799df31d tuned headers etc.;
wenzelm
parents: 12873
diff changeset
     3
495c799df31d tuned headers etc.;
wenzelm
parents: 12873
diff changeset
     4
header {* Demonstrating the interface SVC *}
495c799df31d tuned headers etc.;
wenzelm
parents: 12873
diff changeset
     5
495c799df31d tuned headers etc.;
wenzelm
parents: 12873
diff changeset
     6
theory svc_test
495c799df31d tuned headers etc.;
wenzelm
parents: 12873
diff changeset
     7
imports SVC_Oracle
495c799df31d tuned headers etc.;
wenzelm
parents: 12873
diff changeset
     8
begin
7180
35676093459d new theory ex/svc_test.thy
paulson
parents:
diff changeset
     9
20807
wenzelm
parents: 17416
diff changeset
    10
subsubsection {* Propositional Logic *}
wenzelm
parents: 17416
diff changeset
    11
wenzelm
parents: 17416
diff changeset
    12
text {*
wenzelm
parents: 17416
diff changeset
    13
  @{text "blast"}'s runtime for this type of problem appears to be exponential
wenzelm
parents: 17416
diff changeset
    14
  in its length, though @{text "fast"} manages.
wenzelm
parents: 17416
diff changeset
    15
*}
wenzelm
parents: 17416
diff changeset
    16
lemma "P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P=P"
wenzelm
parents: 17416
diff changeset
    17
  by (tactic {* svc_tac 1 *})
wenzelm
parents: 17416
diff changeset
    18
wenzelm
parents: 17416
diff changeset
    19
wenzelm
parents: 17416
diff changeset
    20
subsection {* Some big tautologies supplied by John Harrison *}
wenzelm
parents: 17416
diff changeset
    21
wenzelm
parents: 17416
diff changeset
    22
text {*
wenzelm
parents: 17416
diff changeset
    23
  @{text "auto"} manages; @{text "blast"} and @{text "fast"} take a minute or more.
wenzelm
parents: 17416
diff changeset
    24
*}
wenzelm
parents: 17416
diff changeset
    25
lemma puz013_1: "~(~v12 &
wenzelm
parents: 17416
diff changeset
    26
   v0 &
wenzelm
parents: 17416
diff changeset
    27
   v10 &
wenzelm
parents: 17416
diff changeset
    28
   (v4 | v5) &
wenzelm
parents: 17416
diff changeset
    29
   (v9 | v2) &
wenzelm
parents: 17416
diff changeset
    30
   (v8 | v1) &
wenzelm
parents: 17416
diff changeset
    31
   (v7 | v0) &
wenzelm
parents: 17416
diff changeset
    32
   (v3 | v12) &
wenzelm
parents: 17416
diff changeset
    33
   (v11 | v10) &
wenzelm
parents: 17416
diff changeset
    34
   (~v12 | ~v6 | v7) &
wenzelm
parents: 17416
diff changeset
    35
   (~v10 | ~v3 | v1) &
wenzelm
parents: 17416
diff changeset
    36
   (~v10 | ~v0 | ~v4 | v11) &
wenzelm
parents: 17416
diff changeset
    37
   (~v5 | ~v2 | ~v8) &
wenzelm
parents: 17416
diff changeset
    38
   (~v12 | ~v9 | ~v7) &
wenzelm
parents: 17416
diff changeset
    39
   (~v0 | ~v1 | v4) &
wenzelm
parents: 17416
diff changeset
    40
   (~v4 | v7 | v2) &
wenzelm
parents: 17416
diff changeset
    41
   (~v12 | ~v3 | v8) &
wenzelm
parents: 17416
diff changeset
    42
   (~v4 | v5 | v6) &
wenzelm
parents: 17416
diff changeset
    43
   (~v7 | ~v8 | v9) &
wenzelm
parents: 17416
diff changeset
    44
   (~v10 | ~v11 | v12))"
wenzelm
parents: 17416
diff changeset
    45
  by (tactic {* svc_tac 1 *})
wenzelm
parents: 17416
diff changeset
    46
wenzelm
parents: 17416
diff changeset
    47
lemma dk17_be:
wenzelm
parents: 17416
diff changeset
    48
  "(GE17 <-> ~IN4 & ~IN3 & ~IN2 & ~IN1) &
wenzelm
parents: 17416
diff changeset
    49
    (GE0 <-> GE17 & ~IN5) &
wenzelm
parents: 17416
diff changeset
    50
    (GE22 <-> ~IN9 & ~IN7 & ~IN6 & IN0) &
wenzelm
parents: 17416
diff changeset
    51
    (GE19 <-> ~IN5 & ~IN4 & ~IN3 & ~IN0) &
wenzelm
parents: 17416
diff changeset
    52
    (GE20 <-> ~IN7 & ~IN6) &
wenzelm
parents: 17416
diff changeset
    53
    (GE18 <-> ~IN6 & ~IN2 & ~IN1 & ~IN0) &
wenzelm
parents: 17416
diff changeset
    54
    (GE21 <-> IN9 & ~IN7 & IN6 & ~IN0) &
wenzelm
parents: 17416
diff changeset
    55
    (GE23 <-> GE22 & GE0) &
wenzelm
parents: 17416
diff changeset
    56
    (GE25 <-> ~IN9 & ~IN7 & IN6 & ~IN0) &
wenzelm
parents: 17416
diff changeset
    57
    (GE26 <-> IN9 & ~IN7 & ~IN6 & IN0) &
wenzelm
parents: 17416
diff changeset
    58
    (GE2 <-> GE20 & GE19) &
wenzelm
parents: 17416
diff changeset
    59
    (GE1 <-> GE18 & ~IN7) &
wenzelm
parents: 17416
diff changeset
    60
    (GE24 <-> GE23 | GE21 & GE0) &
wenzelm
parents: 17416
diff changeset
    61
    (GE5 <-> ~IN5 & IN4 | IN5 & ~IN4) &
wenzelm
parents: 17416
diff changeset
    62
    (GE6 <-> GE0 & IN7 & ~IN6 & ~IN0) &
wenzelm
parents: 17416
diff changeset
    63
    (GE12 <-> GE26 & GE0 | GE25 & GE0) &
wenzelm
parents: 17416
diff changeset
    64
    (GE14 <-> GE2 & IN8 & ~IN2 & IN1) &
wenzelm
parents: 17416
diff changeset
    65
    (GE27 <-> ~IN8 & IN5 & ~IN4 & ~IN3) &
wenzelm
parents: 17416
diff changeset
    66
    (GE9 <-> GE1 & ~IN5 & ~IN4 & IN3) &
wenzelm
parents: 17416
diff changeset
    67
    (GE7 <-> GE24 | GE2 & IN2 & ~IN1) &
wenzelm
parents: 17416
diff changeset
    68
    (GE10 <-> GE6 | GE5 & GE1 & ~IN3) &
wenzelm
parents: 17416
diff changeset
    69
    (GE15 <-> ~IN8 | IN9) &
wenzelm
parents: 17416
diff changeset
    70
    (GE16 <-> GE12 | GE14 & ~IN9) &
wenzelm
parents: 17416
diff changeset
    71
    (GE4 <->
wenzelm
parents: 17416
diff changeset
    72
     GE5 & GE1 & IN8 & ~IN3 |
wenzelm
parents: 17416
diff changeset
    73
     GE0 & ~IN7 & IN6 & ~IN0 |
wenzelm
parents: 17416
diff changeset
    74
     GE2 & IN2 & ~IN1) &
wenzelm
parents: 17416
diff changeset
    75
    (GE13 <-> GE27 & GE1) &
wenzelm
parents: 17416
diff changeset
    76
    (GE11 <-> GE9 | GE6 & ~IN8) &
wenzelm
parents: 17416
diff changeset
    77
    (GE8 <-> GE1 & ~IN5 & IN4 & ~IN3 | GE2 & ~IN2 & IN1) &
wenzelm
parents: 17416
diff changeset
    78
    (OUT0 <-> GE7 & ~IN8) &
wenzelm
parents: 17416
diff changeset
    79
    (OUT1 <-> GE7 & IN8) &
wenzelm
parents: 17416
diff changeset
    80
    (OUT2 <-> GE8 & ~IN9 | GE10 & IN8) &
wenzelm
parents: 17416
diff changeset
    81
    (OUT3 <-> GE8 & IN9 & ~IN8 | GE11 & ~IN9 | GE12 & ~IN8) &
wenzelm
parents: 17416
diff changeset
    82
    (OUT4 <-> GE11 & IN9 | GE12 & IN8) &
wenzelm
parents: 17416
diff changeset
    83
    (OUT5 <-> GE14 & IN9) &
wenzelm
parents: 17416
diff changeset
    84
    (OUT6 <-> GE13 & ~IN9) &
wenzelm
parents: 17416
diff changeset
    85
    (OUT7 <-> GE13 & IN9) &
wenzelm
parents: 17416
diff changeset
    86
    (OUT8 <-> GE9 & ~IN8 | GE15 & GE6 | GE4 & IN9) &
wenzelm
parents: 17416
diff changeset
    87
    (OUT9 <-> GE9 & IN8 | ~GE15 & GE10 | GE16) &
wenzelm
parents: 17416
diff changeset
    88
    (OUT10 <-> GE7) &
wenzelm
parents: 17416
diff changeset
    89
    (WRES0 <-> ~IN5 & ~IN4 & ~IN3 & ~IN2 & ~IN1) &
wenzelm
parents: 17416
diff changeset
    90
    (WRES1 <-> ~IN7 & ~IN6 & ~IN2 & ~IN1 & ~IN0) &
wenzelm
parents: 17416
diff changeset
    91
    (WRES2 <-> ~IN7 & ~IN6 & ~IN5 & ~IN4 & ~IN3 & ~IN0) &
wenzelm
parents: 17416
diff changeset
    92
    (WRES5 <-> ~IN5 & IN4 | IN5 & ~IN4) &
wenzelm
parents: 17416
diff changeset
    93
    (WRES6 <-> WRES0 & IN7 & ~IN6 & ~IN0) &
wenzelm
parents: 17416
diff changeset
    94
    (WRES9 <-> WRES1 & ~IN5 & ~IN4 & IN3) &
wenzelm
parents: 17416
diff changeset
    95
    (WRES7 <->
wenzelm
parents: 17416
diff changeset
    96
     WRES0 & ~IN9 & ~IN7 & ~IN6 & IN0 |
wenzelm
parents: 17416
diff changeset
    97
     WRES0 & IN9 & ~IN7 & IN6 & ~IN0 |
wenzelm
parents: 17416
diff changeset
    98
     WRES2 & IN2 & ~IN1) &
wenzelm
parents: 17416
diff changeset
    99
    (WRES10 <-> WRES6 | WRES5 & WRES1 & ~IN3) &
wenzelm
parents: 17416
diff changeset
   100
    (WRES12 <->
wenzelm
parents: 17416
diff changeset
   101
     WRES0 & IN9 & ~IN7 & ~IN6 & IN0 |
wenzelm
parents: 17416
diff changeset
   102
     WRES0 & ~IN9 & ~IN7 & IN6 & ~IN0) &
wenzelm
parents: 17416
diff changeset
   103
    (WRES14 <-> WRES2 & IN8 & ~IN2 & IN1) &
wenzelm
parents: 17416
diff changeset
   104
    (WRES15 <-> ~IN8 | IN9) &
wenzelm
parents: 17416
diff changeset
   105
    (WRES4 <->
wenzelm
parents: 17416
diff changeset
   106
     WRES5 & WRES1 & IN8 & ~IN3 |
wenzelm
parents: 17416
diff changeset
   107
     WRES2 & IN2 & ~IN1 |
wenzelm
parents: 17416
diff changeset
   108
     WRES0 & ~IN7 & IN6 & ~IN0) &
wenzelm
parents: 17416
diff changeset
   109
    (WRES13 <-> WRES1 & ~IN8 & IN5 & ~IN4 & ~IN3) &
wenzelm
parents: 17416
diff changeset
   110
    (WRES11 <-> WRES9 | WRES6 & ~IN8) &
wenzelm
parents: 17416
diff changeset
   111
    (WRES8 <-> WRES1 & ~IN5 & IN4 & ~IN3 | WRES2 & ~IN2 & IN1)
wenzelm
parents: 17416
diff changeset
   112
    --> (OUT10 <-> WRES7) &
wenzelm
parents: 17416
diff changeset
   113
        (OUT9 <-> WRES9 & IN8 | WRES12 | WRES14 & ~IN9 | ~WRES15 & WRES10) &
wenzelm
parents: 17416
diff changeset
   114
        (OUT8 <-> WRES9 & ~IN8 | WRES15 & WRES6 | WRES4 & IN9) &
wenzelm
parents: 17416
diff changeset
   115
        (OUT7 <-> WRES13 & IN9) &
wenzelm
parents: 17416
diff changeset
   116
        (OUT6 <-> WRES13 & ~IN9) &
wenzelm
parents: 17416
diff changeset
   117
        (OUT5 <-> WRES14 & IN9) &
wenzelm
parents: 17416
diff changeset
   118
        (OUT4 <-> WRES11 & IN9 | WRES12 & IN8) &
wenzelm
parents: 17416
diff changeset
   119
        (OUT3 <-> WRES8 & IN9 & ~IN8 | WRES11 & ~IN9 | WRES12 & ~IN8) &
wenzelm
parents: 17416
diff changeset
   120
        (OUT2 <-> WRES8 & ~IN9 | WRES10 & IN8) &
wenzelm
parents: 17416
diff changeset
   121
        (OUT1 <-> WRES7 & IN8) &
wenzelm
parents: 17416
diff changeset
   122
        (OUT0 <-> WRES7 & ~IN8)"
wenzelm
parents: 17416
diff changeset
   123
  by (tactic {* svc_tac 1 *})
wenzelm
parents: 17416
diff changeset
   124
wenzelm
parents: 17416
diff changeset
   125
text {* @{text "fast"} only takes a couple of seconds. *}
7180
35676093459d new theory ex/svc_test.thy
paulson
parents:
diff changeset
   126
20807
wenzelm
parents: 17416
diff changeset
   127
lemma sqn_be: "(GE0 <-> IN6 & IN1 | ~IN6 & ~IN1) &
wenzelm
parents: 17416
diff changeset
   128
   (GE8 <-> ~IN3 & ~IN1) &
wenzelm
parents: 17416
diff changeset
   129
   (GE5 <-> IN6 | IN5) &
wenzelm
parents: 17416
diff changeset
   130
   (GE9 <-> ~GE0 | IN2 | ~IN5) &
wenzelm
parents: 17416
diff changeset
   131
   (GE1 <-> IN3 | ~IN0) &
wenzelm
parents: 17416
diff changeset
   132
   (GE11 <-> GE8 & IN4) &
wenzelm
parents: 17416
diff changeset
   133
   (GE3 <-> ~IN4 | ~IN2) &
wenzelm
parents: 17416
diff changeset
   134
   (GE34 <-> ~GE5 & IN4 | ~GE9) &
wenzelm
parents: 17416
diff changeset
   135
   (GE2 <-> ~IN4 & IN1) &
wenzelm
parents: 17416
diff changeset
   136
   (GE14 <-> ~GE1 & ~IN4) &
wenzelm
parents: 17416
diff changeset
   137
   (GE19 <-> GE11 & ~GE5) &
wenzelm
parents: 17416
diff changeset
   138
   (GE13 <-> GE8 & ~GE3 & ~IN0) &
wenzelm
parents: 17416
diff changeset
   139
   (GE20 <-> ~IN5 & IN2 | GE34) &
wenzelm
parents: 17416
diff changeset
   140
   (GE12 <-> GE2 & ~IN3) &
wenzelm
parents: 17416
diff changeset
   141
   (GE27 <-> GE14 & IN6 | GE19) &
wenzelm
parents: 17416
diff changeset
   142
   (GE10 <-> ~IN6 | IN5) &
wenzelm
parents: 17416
diff changeset
   143
   (GE28 <-> GE13 | GE20 & ~GE1) &
wenzelm
parents: 17416
diff changeset
   144
   (GE6 <-> ~IN5 | IN6) &
wenzelm
parents: 17416
diff changeset
   145
   (GE15 <-> GE2 & IN2) &
wenzelm
parents: 17416
diff changeset
   146
   (GE29 <-> GE27 | GE12 & GE5) &
wenzelm
parents: 17416
diff changeset
   147
   (GE4 <-> IN3 & ~IN0) &
wenzelm
parents: 17416
diff changeset
   148
   (GE21 <-> ~GE10 & ~IN1 | ~IN5 & ~IN2) &
wenzelm
parents: 17416
diff changeset
   149
   (GE30 <-> GE28 | GE14 & IN2) &
wenzelm
parents: 17416
diff changeset
   150
   (GE31 <-> GE29 | GE15 & ~GE6) &
wenzelm
parents: 17416
diff changeset
   151
   (GE7 <-> ~IN6 | ~IN5) &
wenzelm
parents: 17416
diff changeset
   152
   (GE17 <-> ~GE3 & ~IN1) &
wenzelm
parents: 17416
diff changeset
   153
   (GE18 <-> GE4 & IN2) &
wenzelm
parents: 17416
diff changeset
   154
   (GE16 <-> GE2 & IN0) &
wenzelm
parents: 17416
diff changeset
   155
   (GE23 <-> GE19 | GE9 & ~GE1) &
wenzelm
parents: 17416
diff changeset
   156
   (GE32 <-> GE15 & ~IN6 & ~IN0 | GE21 & GE4 & ~IN4 | GE30 | GE31) &
wenzelm
parents: 17416
diff changeset
   157
   (GE33 <->
wenzelm
parents: 17416
diff changeset
   158
    GE18 & ~GE6 & ~IN4 |
wenzelm
parents: 17416
diff changeset
   159
    GE17 & ~GE7 & IN3 |
wenzelm
parents: 17416
diff changeset
   160
    ~GE7 & GE4 & ~GE3 |
wenzelm
parents: 17416
diff changeset
   161
    GE11 & IN5 & ~IN0) &
wenzelm
parents: 17416
diff changeset
   162
   (GE25 <-> GE14 & ~GE6 | GE13 & ~GE5 | GE16 & ~IN5 | GE15 & GE1) &
wenzelm
parents: 17416
diff changeset
   163
   (GE26 <->
wenzelm
parents: 17416
diff changeset
   164
    GE12 & IN5 & ~IN2 |
wenzelm
parents: 17416
diff changeset
   165
    GE10 & GE4 & IN1 |
wenzelm
parents: 17416
diff changeset
   166
    GE17 & ~GE6 & IN0 |
wenzelm
parents: 17416
diff changeset
   167
    GE2 & ~IN6) &
wenzelm
parents: 17416
diff changeset
   168
   (GE24 <-> GE23 | GE16 & GE7) &
wenzelm
parents: 17416
diff changeset
   169
   (OUT0 <->
wenzelm
parents: 17416
diff changeset
   170
    GE6 & IN4 & ~IN1 & IN0 | GE18 & GE0 & ~IN5 | GE12 & ~GE10 | GE24) &
wenzelm
parents: 17416
diff changeset
   171
   (OUT1 <-> GE26 | GE25 | ~GE5 & GE4 & GE3 | GE7 & ~GE1 & IN1) &
wenzelm
parents: 17416
diff changeset
   172
   (OUT2 <-> GE33 | GE32) &
wenzelm
parents: 17416
diff changeset
   173
   (WRES8 <-> ~IN3 & ~IN1) &
wenzelm
parents: 17416
diff changeset
   174
   (WRES0 <-> IN6 & IN1 | ~IN6 & ~IN1) &
wenzelm
parents: 17416
diff changeset
   175
   (WRES2 <-> ~IN4 & IN1) &
wenzelm
parents: 17416
diff changeset
   176
   (WRES3 <-> ~IN4 | ~IN2) &
wenzelm
parents: 17416
diff changeset
   177
   (WRES1 <-> IN3 | ~IN0) &
wenzelm
parents: 17416
diff changeset
   178
   (WRES4 <-> IN3 & ~IN0) &
wenzelm
parents: 17416
diff changeset
   179
   (WRES5 <-> IN6 | IN5) &
wenzelm
parents: 17416
diff changeset
   180
   (WRES11 <-> WRES8 & IN4) &
wenzelm
parents: 17416
diff changeset
   181
   (WRES9 <-> ~WRES0 | IN2 | ~IN5) &
wenzelm
parents: 17416
diff changeset
   182
   (WRES10 <-> ~IN6 | IN5) &
wenzelm
parents: 17416
diff changeset
   183
   (WRES6 <-> ~IN5 | IN6) &
wenzelm
parents: 17416
diff changeset
   184
   (WRES7 <-> ~IN6 | ~IN5) &
wenzelm
parents: 17416
diff changeset
   185
   (WRES12 <-> WRES2 & ~IN3) &
wenzelm
parents: 17416
diff changeset
   186
   (WRES13 <-> WRES8 & ~WRES3 & ~IN0) &
wenzelm
parents: 17416
diff changeset
   187
   (WRES14 <-> ~WRES1 & ~IN4) &
wenzelm
parents: 17416
diff changeset
   188
   (WRES15 <-> WRES2 & IN2) &
wenzelm
parents: 17416
diff changeset
   189
   (WRES17 <-> ~WRES3 & ~IN1) &
wenzelm
parents: 17416
diff changeset
   190
   (WRES18 <-> WRES4 & IN2) &
wenzelm
parents: 17416
diff changeset
   191
   (WRES19 <-> WRES11 & ~WRES5) &
wenzelm
parents: 17416
diff changeset
   192
   (WRES20 <-> ~IN5 & IN2 | ~WRES5 & IN4 | ~WRES9) &
wenzelm
parents: 17416
diff changeset
   193
   (WRES21 <-> ~WRES10 & ~IN1 | ~IN5 & ~IN2) &
wenzelm
parents: 17416
diff changeset
   194
   (WRES16 <-> WRES2 & IN0)
wenzelm
parents: 17416
diff changeset
   195
   --> (OUT2 <->
wenzelm
parents: 17416
diff changeset
   196
        WRES11 & IN5 & ~IN0 |
wenzelm
parents: 17416
diff changeset
   197
        ~WRES7 & WRES4 & ~WRES3 |
wenzelm
parents: 17416
diff changeset
   198
        WRES12 & WRES5 |
wenzelm
parents: 17416
diff changeset
   199
        WRES13 |
wenzelm
parents: 17416
diff changeset
   200
        WRES14 & IN2 |
wenzelm
parents: 17416
diff changeset
   201
        WRES14 & IN6 |
wenzelm
parents: 17416
diff changeset
   202
        WRES15 & ~WRES6 |
wenzelm
parents: 17416
diff changeset
   203
        WRES15 & ~IN6 & ~IN0 |
wenzelm
parents: 17416
diff changeset
   204
        WRES17 & ~WRES7 & IN3 |
wenzelm
parents: 17416
diff changeset
   205
        WRES18 & ~WRES6 & ~IN4 |
wenzelm
parents: 17416
diff changeset
   206
        WRES20 & ~WRES1 |
wenzelm
parents: 17416
diff changeset
   207
        WRES21 & WRES4 & ~IN4 |
wenzelm
parents: 17416
diff changeset
   208
        WRES19) &
wenzelm
parents: 17416
diff changeset
   209
       (OUT1 <->
wenzelm
parents: 17416
diff changeset
   210
        ~WRES5 & WRES4 & WRES3 |
wenzelm
parents: 17416
diff changeset
   211
        WRES7 & ~WRES1 & IN1 |
wenzelm
parents: 17416
diff changeset
   212
        WRES2 & ~IN6 |
wenzelm
parents: 17416
diff changeset
   213
        WRES10 & WRES4 & IN1 |
wenzelm
parents: 17416
diff changeset
   214
        WRES12 & IN5 & ~IN2 |
wenzelm
parents: 17416
diff changeset
   215
        WRES13 & ~WRES5 |
wenzelm
parents: 17416
diff changeset
   216
        WRES14 & ~WRES6 |
wenzelm
parents: 17416
diff changeset
   217
        WRES15 & WRES1 |
wenzelm
parents: 17416
diff changeset
   218
        WRES16 & ~IN5 |
wenzelm
parents: 17416
diff changeset
   219
        WRES17 & ~WRES6 & IN0) &
wenzelm
parents: 17416
diff changeset
   220
       (OUT0 <->
wenzelm
parents: 17416
diff changeset
   221
        WRES6 & IN4 & ~IN1 & IN0 |
wenzelm
parents: 17416
diff changeset
   222
        WRES9 & ~WRES1 |
wenzelm
parents: 17416
diff changeset
   223
        WRES12 & ~WRES10 |
wenzelm
parents: 17416
diff changeset
   224
        WRES16 & WRES7 |
wenzelm
parents: 17416
diff changeset
   225
        WRES18 & WRES0 & ~IN5 |
wenzelm
parents: 17416
diff changeset
   226
        WRES19)"
wenzelm
parents: 17416
diff changeset
   227
  by (tactic {* svc_tac 1 *})
wenzelm
parents: 17416
diff changeset
   228
wenzelm
parents: 17416
diff changeset
   229
wenzelm
parents: 17416
diff changeset
   230
subsection {* Linear arithmetic *}
wenzelm
parents: 17416
diff changeset
   231
wenzelm
parents: 17416
diff changeset
   232
lemma "x ~= 14 & x ~= 13 & x ~= 12 & x ~= 11 & x ~= 10 & x ~= 9 &
wenzelm
parents: 17416
diff changeset
   233
      x ~= 8 & x ~= 7 & x ~= 6 & x ~= 5 & x ~= 4 & x ~= 3 &
wenzelm
parents: 17416
diff changeset
   234
      x ~= 2 & x ~= 1 & 0 < x & x < 16 --> 15 = (x::int)"
wenzelm
parents: 17416
diff changeset
   235
  by (tactic {* svc_tac 1 *})
wenzelm
parents: 17416
diff changeset
   236
wenzelm
parents: 17416
diff changeset
   237
text {*merely to test polarity handling in the presence of biconditionals*}
wenzelm
parents: 17416
diff changeset
   238
lemma "(x < (y::int)) = (x+1 <= y)"
wenzelm
parents: 17416
diff changeset
   239
  by (tactic {* svc_tac 1 *})
wenzelm
parents: 17416
diff changeset
   240
wenzelm
parents: 17416
diff changeset
   241
wenzelm
parents: 17416
diff changeset
   242
subsection {* Natural number examples requiring implicit "non-negative" assumptions *}
wenzelm
parents: 17416
diff changeset
   243
wenzelm
parents: 17416
diff changeset
   244
lemma "(3::nat)*a <= 2 + 4*b + 6*c  & 11 <= 2*a + b + 2*c &
wenzelm
parents: 17416
diff changeset
   245
      a + 3*b <= 5 + 2*c  --> 2 + 3*b <= 2*a + 6*c"
wenzelm
parents: 17416
diff changeset
   246
  by (tactic {* svc_tac 1 *})
wenzelm
parents: 17416
diff changeset
   247
wenzelm
parents: 17416
diff changeset
   248
lemma "(n::nat) < 2 ==> (n = 0) | (n = 1)"
wenzelm
parents: 17416
diff changeset
   249
  by (tactic {* svc_tac 1 *})
7180
35676093459d new theory ex/svc_test.thy
paulson
parents:
diff changeset
   250
35676093459d new theory ex/svc_test.thy
paulson
parents:
diff changeset
   251
end