src/FOL/ex/Classical.thy
author wenzelm
Tue, 05 Nov 2019 14:16:16 +0100
changeset 71046 b8aeeedf7e68
parent 69590 e65314985426
permissions -rw-r--r--
support for Linux user management;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
31974
e81979a703a4 removed obsolete CVS Ids;
wenzelm
parents: 27148
diff changeset
     1
(*  Title:      FOL/ex/Classical.thy
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
     2
    Author:     Lawrence C Paulson, Cambridge University Computer Laboratory
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
     3
    Copyright   1994  University of Cambridge
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
     4
*)
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
     5
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
     6
section \<open>Classical Predicate Calculus Problems\<close>
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
     7
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
     8
theory Classical
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
     9
imports FOL
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    10
begin
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
    11
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
    12
lemma \<open>(P \<longrightarrow> Q \<or> R) \<longrightarrow> (P \<longrightarrow> Q) \<or> (P \<longrightarrow> R)\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    13
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
    14
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
    15
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    16
subsubsection \<open>If and only if\<close>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    17
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
    18
lemma \<open>(P \<longleftrightarrow> Q) \<longleftrightarrow> (Q \<longleftrightarrow> P)\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    19
  by blast
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    20
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
    21
lemma \<open>\<not> (P \<longleftrightarrow> \<not> P)\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    22
  by blast
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    23
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    24
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    25
subsection \<open>Pelletier's examples\<close>
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
    26
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    27
text \<open>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    28
  Sample problems from
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    29
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    30
    \<^item> F. J. Pelletier,
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    31
    Seventy-Five Problems for Testing Automatic Theorem Provers,
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    32
    J. Automated Reasoning 2 (1986), 191-216.
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    33
    Errata, JAR 4 (1988), 236-236.
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    34
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    35
  The hardest problems -- judging by experience with several theorem
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    36
  provers, including matrix ones -- are 34 and 43.
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
    37
\<close>
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
    38
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
    39
text\<open>1\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
    40
lemma \<open>(P \<longrightarrow> Q) \<longleftrightarrow> (\<not> Q \<longrightarrow> \<not> P)\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    41
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
    42
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
    43
text\<open>2\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
    44
lemma \<open>\<not> \<not> P \<longleftrightarrow> P\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    45
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
    46
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
    47
text\<open>3\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
    48
lemma \<open>\<not> (P \<longrightarrow> Q) \<longrightarrow> (Q \<longrightarrow> P)\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    49
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
    50
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
    51
text\<open>4\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
    52
lemma \<open>(\<not> P \<longrightarrow> Q) \<longleftrightarrow> (\<not> Q \<longrightarrow> P)\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    53
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
    54
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
    55
text\<open>5\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
    56
lemma \<open>((P \<or> Q) \<longrightarrow> (P \<or> R)) \<longrightarrow> (P \<or> (Q \<longrightarrow> R))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    57
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
    58
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
    59
text\<open>6\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
    60
lemma \<open>P \<or> \<not> P\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    61
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
    62
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
    63
text\<open>7\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
    64
lemma \<open>P \<or> \<not> \<not> \<not> P\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    65
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
    66
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    67
text\<open>8. Peirce's law\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
    68
lemma \<open>((P \<longrightarrow> Q) \<longrightarrow> P) \<longrightarrow> P\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    69
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
    70
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
    71
text\<open>9\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
    72
lemma \<open>((P \<or> Q) \<and> (\<not> P \<or> Q) \<and> (P \<or> \<not> Q)) \<longrightarrow> \<not> (\<not> P \<or> \<not> Q)\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    73
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
    74
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
    75
text\<open>10\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
    76
lemma \<open>(Q \<longrightarrow> R) \<and> (R \<longrightarrow> P \<and> Q) \<and> (P \<longrightarrow> Q \<or> R) \<longrightarrow> (P \<longleftrightarrow> Q)\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    77
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
    78
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    79
text\<open>11. Proved in each direction (incorrectly, says Pelletier!!)\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
    80
lemma \<open>P \<longleftrightarrow> P\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    81
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
    82
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    83
text\<open>12. "Dijkstra's law"\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
    84
lemma \<open>((P \<longleftrightarrow> Q) \<longleftrightarrow> R) \<longleftrightarrow> (P \<longleftrightarrow> (Q \<longleftrightarrow> R))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    85
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
    86
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    87
text\<open>13. Distributive law\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
    88
lemma \<open>P \<or> (Q \<and> R) \<longleftrightarrow> (P \<or> Q) \<and> (P \<or> R)\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    89
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
    90
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
    91
text\<open>14\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
    92
lemma \<open>(P \<longleftrightarrow> Q) \<longleftrightarrow> ((Q \<or> \<not> P) \<and> (\<not> Q \<or> P))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    93
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
    94
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
    95
text\<open>15\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
    96
lemma \<open>(P \<longrightarrow> Q) \<longleftrightarrow> (\<not> P \<or> Q)\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
    97
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
    98
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
    99
text\<open>16\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   100
lemma \<open>(P \<longrightarrow> Q) \<or> (Q \<longrightarrow> P)\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   101
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   102
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   103
text\<open>17\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   104
lemma \<open>((P \<and> (Q \<longrightarrow> R)) \<longrightarrow> S) \<longleftrightarrow> ((\<not> P \<or> Q \<or> S) \<and> (\<not> P \<or> \<not> R \<or> S))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   105
  by blast
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   106
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   107
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   108
subsection \<open>Classical Logic: examples with quantifiers\<close>
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   109
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   110
lemma \<open>(\<forall>x. P(x) \<and> Q(x)) \<longleftrightarrow> (\<forall>x. P(x)) \<and> (\<forall>x. Q(x))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   111
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   112
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   113
lemma \<open>(\<exists>x. P \<longrightarrow> Q(x)) \<longleftrightarrow> (P \<longrightarrow> (\<exists>x. Q(x)))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   114
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   115
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   116
lemma \<open>(\<exists>x. P(x) \<longrightarrow> Q) \<longleftrightarrow> (\<forall>x. P(x)) \<longrightarrow> Q\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   117
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   118
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   119
lemma \<open>(\<forall>x. P(x)) \<or> Q \<longleftrightarrow> (\<forall>x. P(x) \<or> Q)\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   120
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   121
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   122
text\<open>Discussed in Avron, Gentzen-Type Systems, Resolution and Tableaux,
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   123
  JAR 10 (265-281), 1993.  Proof is trivial!\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   124
lemma \<open>\<not> ((\<exists>x. \<not> P(x)) \<and> ((\<exists>x. P(x)) \<or> (\<exists>x. P(x) \<and> Q(x))) \<and> \<not> (\<exists>x. P(x)))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   125
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   126
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   127
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   128
subsection \<open>Problems requiring quantifier duplication\<close>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   129
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   130
text\<open>Theorem B of Peter Andrews, Theorem Proving via General Matings,
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   131
  JACM 28 (1981).\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   132
lemma \<open>(\<exists>x. \<forall>y. P(x) \<longleftrightarrow> P(y)) \<longrightarrow> ((\<exists>x. P(x)) \<longleftrightarrow> (\<forall>y. P(y)))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   133
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   134
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   135
text\<open>Needs multiple instantiation of ALL.\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   136
lemma \<open>(\<forall>x. P(x) \<longrightarrow> P(f(x))) \<and> P(d) \<longrightarrow> P(f(f(f(d))))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   137
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   138
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   139
text\<open>Needs double instantiation of the quantifier\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   140
lemma \<open>\<exists>x. P(x) \<longrightarrow> P(a) \<and> P(b)\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   141
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   142
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   143
lemma \<open>\<exists>z. P(z) \<longrightarrow> (\<forall>x. P(x))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   144
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   145
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   146
lemma \<open>\<exists>x. (\<exists>y. P(y)) \<longrightarrow> P(x)\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   147
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   148
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   149
text\<open>V. Lifschitz, What Is the Inverse Method?, JAR 5 (1989), 1--23. NOT PROVED.\<close>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   150
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   151
  \<open>\<exists>x x'. \<forall>y. \<exists>z z'.
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   152
    (\<not> P(y,y) \<or> P(x,x) \<or> \<not> S(z,x)) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   153
    (S(x,y) \<or> \<not> S(y,z) \<or> Q(z',z')) \<and>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   154
    (Q(x',y) \<or> \<not> Q(y,z') \<or> S(x',x'))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   155
  oops
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   156
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   157
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   158
subsection \<open>Hard examples with quantifiers\<close>
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   159
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   160
text\<open>18\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   161
lemma \<open>\<exists>y. \<forall>x. P(y) \<longrightarrow> P(x)\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   162
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   163
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   164
text\<open>19\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   165
lemma \<open>\<exists>x. \<forall>y z. (P(y) \<longrightarrow> Q(z)) \<longrightarrow> (P(x) \<longrightarrow> Q(x))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   166
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   167
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   168
text\<open>20\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   169
lemma \<open>(\<forall>x y. \<exists>z. \<forall>w. (P(x) \<and> Q(y) \<longrightarrow> R(z) \<and> S(w)))
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   170
  \<longrightarrow> (\<exists>x y. P(x) \<and> Q(y)) \<longrightarrow> (\<exists>z. R(z))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   171
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   172
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   173
text\<open>21\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   174
lemma \<open>(\<exists>x. P \<longrightarrow> Q(x)) \<and> (\<exists>x. Q(x) \<longrightarrow> P) \<longrightarrow> (\<exists>x. P \<longleftrightarrow> Q(x))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   175
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   176
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   177
text\<open>22\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   178
lemma \<open>(\<forall>x. P \<longleftrightarrow> Q(x)) \<longrightarrow> (P \<longleftrightarrow> (\<forall>x. Q(x)))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   179
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   180
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   181
text\<open>23\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   182
lemma \<open>(\<forall>x. P \<or> Q(x)) \<longleftrightarrow> (P \<or> (\<forall>x. Q(x)))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   183
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   184
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   185
text\<open>24\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   186
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   187
  \<open>\<not> (\<exists>x. S(x) \<and> Q(x)) \<and> (\<forall>x. P(x) \<longrightarrow> Q(x) \<or> R(x)) \<and>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   188
    (\<not> (\<exists>x. P(x)) \<longrightarrow> (\<exists>x. Q(x))) \<and> (\<forall>x. Q(x) \<or> R(x) \<longrightarrow> S(x))
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   189
    \<longrightarrow> (\<exists>x. P(x) \<and> R(x))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   190
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   191
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   192
text\<open>25\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   193
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   194
  \<open>(\<exists>x. P(x)) \<and>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   195
    (\<forall>x. L(x) \<longrightarrow> \<not> (M(x) \<and> R(x))) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   196
    (\<forall>x. P(x) \<longrightarrow> (M(x) \<and> L(x))) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   197
    ((\<forall>x. P(x) \<longrightarrow> Q(x)) \<or> (\<exists>x. P(x) \<and> R(x)))
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   198
    \<longrightarrow> (\<exists>x. Q(x) \<and> P(x))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   199
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   200
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   201
text\<open>26\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   202
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   203
  \<open>((\<exists>x. p(x)) \<longleftrightarrow> (\<exists>x. q(x))) \<and>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   204
    (\<forall>x. \<forall>y. p(x) \<and> q(y) \<longrightarrow> (r(x) \<longleftrightarrow> s(y)))
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   205
  \<longrightarrow> ((\<forall>x. p(x) \<longrightarrow> r(x)) \<longleftrightarrow> (\<forall>x. q(x) \<longrightarrow> s(x)))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   206
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   207
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   208
text\<open>27\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   209
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   210
  \<open>(\<exists>x. P(x) \<and> \<not> Q(x)) \<and>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   211
    (\<forall>x. P(x) \<longrightarrow> R(x)) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   212
    (\<forall>x. M(x) \<and> L(x) \<longrightarrow> P(x)) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   213
    ((\<exists>x. R(x) \<and> \<not> Q(x)) \<longrightarrow> (\<forall>x. L(x) \<longrightarrow> \<not> R(x)))
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   214
  \<longrightarrow> (\<forall>x. M(x) \<longrightarrow> \<not> L(x))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   215
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   216
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   217
text\<open>28. AMENDED\<close>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   218
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   219
  \<open>(\<forall>x. P(x) \<longrightarrow> (\<forall>x. Q(x))) \<and>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   220
    ((\<forall>x. Q(x) \<or> R(x)) \<longrightarrow> (\<exists>x. Q(x) \<and> S(x))) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   221
    ((\<exists>x. S(x)) \<longrightarrow> (\<forall>x. L(x) \<longrightarrow> M(x)))
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   222
  \<longrightarrow> (\<forall>x. P(x) \<and> L(x) \<longrightarrow> M(x))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   223
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   224
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   225
text\<open>29. Essentially the same as Principia Mathematica *11.71\<close>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   226
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   227
  \<open>(\<exists>x. P(x)) \<and> (\<exists>y. Q(y))
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   228
    \<longrightarrow> ((\<forall>x. P(x) \<longrightarrow> R(x)) \<and> (\<forall>y. Q(y) \<longrightarrow> S(y)) \<longleftrightarrow>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   229
      (\<forall>x y. P(x) \<and> Q(y) \<longrightarrow> R(x) \<and> S(y)))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   230
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   231
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   232
text\<open>30\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   233
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   234
  \<open>(\<forall>x. P(x) \<or> Q(x) \<longrightarrow> \<not> R(x)) \<and>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   235
    (\<forall>x. (Q(x) \<longrightarrow> \<not> S(x)) \<longrightarrow> P(x) \<and> R(x))
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   236
    \<longrightarrow> (\<forall>x. S(x))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   237
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   238
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   239
text\<open>31\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   240
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   241
  \<open>\<not> (\<exists>x. P(x) \<and> (Q(x) \<or> R(x))) \<and>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   242
    (\<exists>x. L(x) \<and> P(x)) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   243
    (\<forall>x. \<not> R(x) \<longrightarrow> M(x))
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   244
  \<longrightarrow> (\<exists>x. L(x) \<and> M(x))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   245
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   246
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   247
text\<open>32\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   248
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   249
  \<open>(\<forall>x. P(x) \<and> (Q(x) \<or> R(x)) \<longrightarrow> S(x)) \<and>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   250
    (\<forall>x. S(x) \<and> R(x) \<longrightarrow> L(x)) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   251
    (\<forall>x. M(x) \<longrightarrow> R(x))
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   252
  \<longrightarrow> (\<forall>x. P(x) \<and> M(x) \<longrightarrow> L(x))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   253
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   254
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   255
text\<open>33\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   256
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   257
  \<open>(\<forall>x. P(a) \<and> (P(x) \<longrightarrow> P(b)) \<longrightarrow> P(c)) \<longleftrightarrow>
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   258
    (\<forall>x. (\<not> P(a) \<or> P(x) \<or> P(c)) \<and> (\<not> P(a) \<or> \<not> P(b) \<or> P(c)))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   259
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   260
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   261
text\<open>34. AMENDED (TWICE!!). Andrews's challenge.\<close>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   262
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   263
  \<open>((\<exists>x. \<forall>y. p(x) \<longleftrightarrow> p(y)) \<longleftrightarrow> ((\<exists>x. q(x)) \<longleftrightarrow> (\<forall>y. p(y)))) \<longleftrightarrow>
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   264
    ((\<exists>x. \<forall>y. q(x) \<longleftrightarrow> q(y)) \<longleftrightarrow> ((\<exists>x. p(x)) \<longleftrightarrow> (\<forall>y. q(y))))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   265
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   266
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   267
text\<open>35\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   268
lemma \<open>\<exists>x y. P(x,y) \<longrightarrow> (\<forall>u v. P(u,v))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   269
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   270
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   271
text\<open>36\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   272
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   273
  \<open>(\<forall>x. \<exists>y. J(x,y)) \<and>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   274
    (\<forall>x. \<exists>y. G(x,y)) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   275
    (\<forall>x y. J(x,y) \<or> G(x,y) \<longrightarrow> (\<forall>z. J(y,z) \<or> G(y,z) \<longrightarrow> H(x,z)))
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   276
  \<longrightarrow> (\<forall>x. \<exists>y. H(x,y))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   277
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   278
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   279
text\<open>37\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   280
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   281
  \<open>(\<forall>z. \<exists>w. \<forall>x. \<exists>y.
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   282
    (P(x,z) \<longrightarrow> P(y,w)) \<and> P(y,z) \<and> (P(y,w) \<longrightarrow> (\<exists>u. Q(u,w)))) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   283
    (\<forall>x z. \<not> P(x,z) \<longrightarrow> (\<exists>y. Q(y,z))) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   284
    ((\<exists>x y. Q(x,y)) \<longrightarrow> (\<forall>x. R(x,x)))
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   285
  \<longrightarrow> (\<forall>x. \<exists>y. R(x,y))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   286
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   287
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   288
text\<open>38\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   289
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   290
  \<open>(\<forall>x. p(a) \<and> (p(x) \<longrightarrow> (\<exists>y. p(y) \<and> r(x,y))) \<longrightarrow>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   291
    (\<exists>z. \<exists>w. p(z) \<and> r(x,w) \<and> r(w,z)))  \<longleftrightarrow>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   292
    (\<forall>x. (\<not> p(a) \<or> p(x) \<or> (\<exists>z. \<exists>w. p(z) \<and> r(x,w) \<and> r(w,z))) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   293
      (\<not> p(a) \<or> \<not> (\<exists>y. p(y) \<and> r(x,y)) \<or>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   294
      (\<exists>z. \<exists>w. p(z) \<and> r(x,w) \<and> r(w,z))))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   295
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   296
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   297
text\<open>39\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   298
lemma \<open>\<not> (\<exists>x. \<forall>y. F(y,x) \<longleftrightarrow> \<not> F(y,y))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   299
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   300
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   301
text\<open>40. AMENDED\<close>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   302
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   303
  \<open>(\<exists>y. \<forall>x. F(x,y) \<longleftrightarrow> F(x,x)) \<longrightarrow>
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   304
    \<not> (\<forall>x. \<exists>y. \<forall>z. F(z,y) \<longleftrightarrow> \<not> F(z,x))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   305
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   306
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   307
text\<open>41\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   308
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   309
  \<open>(\<forall>z. \<exists>y. \<forall>x. f(x,y) \<longleftrightarrow> f(x,z) \<and> \<not> f(x,x))
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   310
    \<longrightarrow> \<not> (\<exists>z. \<forall>x. f(x,z))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   311
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   312
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   313
text\<open>42\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   314
lemma \<open>\<not> (\<exists>y. \<forall>x. p(x,y) \<longleftrightarrow> \<not> (\<exists>z. p(x,z) \<and> p(z,x)))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   315
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   316
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   317
text\<open>43\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   318
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   319
  \<open>(\<forall>x. \<forall>y. q(x,y) \<longleftrightarrow> (\<forall>z. p(z,x) \<longleftrightarrow> p(z,y)))
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   320
    \<longrightarrow> (\<forall>x. \<forall>y. q(x,y) \<longleftrightarrow> q(y,x))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   321
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   322
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   323
text \<open>
62020
5d208fd2507d isabelle update_cartouches -c -t;
wenzelm
parents: 61490
diff changeset
   324
  Other proofs: Can use \<open>auto\<close>, which cheats by using rewriting!
5d208fd2507d isabelle update_cartouches -c -t;
wenzelm
parents: 61490
diff changeset
   325
  \<open>Deepen_tac\<close> alone requires 253 secs.  Or
5d208fd2507d isabelle update_cartouches -c -t;
wenzelm
parents: 61490
diff changeset
   326
  \<open>by (mini_tac 1 THEN Deepen_tac 5 1)\<close>.
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   327
\<close>
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   328
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   329
text\<open>44\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   330
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   331
  \<open>(\<forall>x. f(x) \<longrightarrow> (\<exists>y. g(y) \<and> h(x,y) \<and> (\<exists>y. g(y) \<and> \<not> h(x,y)))) \<and>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   332
    (\<exists>x. j(x) \<and> (\<forall>y. g(y) \<longrightarrow> h(x,y)))
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   333
  \<longrightarrow> (\<exists>x. j(x) \<and> \<not> f(x))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   334
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   335
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   336
text\<open>45\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   337
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   338
  \<open>(\<forall>x. f(x) \<and> (\<forall>y. g(y) \<and> h(x,y) \<longrightarrow> j(x,y))
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   339
      \<longrightarrow> (\<forall>y. g(y) \<and> h(x,y) \<longrightarrow> k(y))) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   340
      \<not> (\<exists>y. l(y) \<and> k(y)) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   341
      (\<exists>x. f(x) \<and> (\<forall>y. h(x,y) \<longrightarrow> l(y)) \<and> (\<forall>y. g(y) \<and> h(x,y) \<longrightarrow> j(x,y)))
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   342
      \<longrightarrow> (\<exists>x. f(x) \<and> \<not> (\<exists>y. g(y) \<and> h(x,y)))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   343
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   344
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   345
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   346
text\<open>46\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   347
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   348
  \<open>(\<forall>x. f(x) \<and> (\<forall>y. f(y) \<and> h(y,x) \<longrightarrow> g(y)) \<longrightarrow> g(x)) \<and>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   349
      ((\<exists>x. f(x) \<and> \<not> g(x)) \<longrightarrow>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   350
       (\<exists>x. f(x) \<and> \<not> g(x) \<and> (\<forall>y. f(y) \<and> \<not> g(y) \<longrightarrow> j(x,y)))) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   351
      (\<forall>x y. f(x) \<and> f(y) \<and> h(x,y) \<longrightarrow> \<not> j(y,x))
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   352
      \<longrightarrow> (\<forall>x. f(x) \<longrightarrow> g(x))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   353
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   354
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   355
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   356
subsection \<open>Problems (mainly) involving equality or functions\<close>
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   357
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   358
text\<open>48\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   359
lemma \<open>(a = b \<or> c = d) \<and> (a = c \<or> b = d) \<longrightarrow> a = d \<or> b = c\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   360
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   361
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   362
text\<open>49. NOT PROVED AUTOMATICALLY. Hard because it involves substitution for
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   363
  Vars; the type constraint ensures that x,y,z have the same type as a,b,u.\<close>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   364
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   365
  \<open>(\<exists>x y::'a. \<forall>z. z = x \<or> z = y) \<and> P(a) \<and> P(b) \<and> a \<noteq> b \<longrightarrow> (\<forall>u::'a. P(u))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   366
  apply safe
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   367
  apply (rule_tac x = \<open>a\<close> in allE, assumption)
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   368
  apply (rule_tac x = \<open>b\<close> in allE, assumption)
62020
5d208fd2507d isabelle update_cartouches -c -t;
wenzelm
parents: 61490
diff changeset
   369
  apply fast  \<comment> \<open>blast's treatment of equality can't do it\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   370
  done
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   371
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   372
text\<open>50. (What has this to do with equality?)\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   373
lemma \<open>(\<forall>x. P(a,x) \<or> (\<forall>y. P(x,y))) \<longrightarrow> (\<exists>x. \<forall>y. P(x,y))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   374
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   375
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   376
text\<open>51\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   377
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   378
  \<open>(\<exists>z w. \<forall>x y. P(x,y) \<longleftrightarrow> (x = z \<and> y = w)) \<longrightarrow>
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   379
    (\<exists>z. \<forall>x. \<exists>w. (\<forall>y. P(x,y) \<longleftrightarrow> y=w) \<longleftrightarrow> x = z)\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   380
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   381
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   382
text\<open>52\<close>
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   383
text\<open>Almost the same as 51.\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   384
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   385
  \<open>(\<exists>z w. \<forall>x y. P(x,y) \<longleftrightarrow> (x = z \<and> y = w)) \<longrightarrow>
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   386
    (\<exists>w. \<forall>y. \<exists>z. (\<forall>x. P(x,y) \<longleftrightarrow> x = z) \<longleftrightarrow> y = w)\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   387
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   388
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   389
text\<open>55\<close>
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   390
text\<open>Non-equational version, from Manthey and Bry, CADE-9 (Springer, 1988).
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   391
  fast DISCOVERS who killed Agatha.\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   392
schematic_goal
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   393
  \<open>lives(agatha) \<and> lives(butler) \<and> lives(charles) \<and>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   394
   (killed(agatha,agatha) \<or> killed(butler,agatha) \<or> killed(charles,agatha)) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   395
   (\<forall>x y. killed(x,y) \<longrightarrow> hates(x,y) \<and> \<not> richer(x,y)) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   396
   (\<forall>x. hates(agatha,x) \<longrightarrow> \<not> hates(charles,x)) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   397
   (hates(agatha,agatha) \<and> hates(agatha,charles)) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   398
   (\<forall>x. lives(x) \<and> \<not> richer(x,agatha) \<longrightarrow> hates(butler,x)) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   399
   (\<forall>x. hates(agatha,x) \<longrightarrow> hates(butler,x)) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   400
   (\<forall>x. \<not> hates(x,agatha) \<or> \<not> hates(x,butler) \<or> \<not> hates(x,charles)) \<longrightarrow>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   401
    killed(?who,agatha)\<close>
62020
5d208fd2507d isabelle update_cartouches -c -t;
wenzelm
parents: 61490
diff changeset
   402
  by fast  \<comment> \<open>MUCH faster than blast\<close>
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   403
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   404
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   405
text\<open>56\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   406
lemma \<open>(\<forall>x. (\<exists>y. P(y) \<and> x = f(y)) \<longrightarrow> P(x)) \<longleftrightarrow> (\<forall>x. P(x) \<longrightarrow> P(f(x)))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   407
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   408
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   409
text\<open>57\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   410
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   411
  \<open>P(f(a,b), f(b,c)) \<and> P(f(b,c), f(a,c)) \<and>
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   412
    (\<forall>x y z. P(x,y) \<and> P(y,z) \<longrightarrow> P(x,z)) \<longrightarrow> P(f(a,b), f(a,c))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   413
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   414
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   415
text\<open>58  NOT PROVED AUTOMATICALLY\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   416
lemma \<open>(\<forall>x y. f(x) = g(y)) \<longrightarrow> (\<forall>x y. f(f(x)) = f(g(y)))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   417
  by (slow elim: subst_context)
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   418
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   419
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   420
text\<open>59\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   421
lemma \<open>(\<forall>x. P(x) \<longleftrightarrow> \<not> P(f(x))) \<longrightarrow> (\<exists>x. P(x) \<and> \<not> P(f(x)))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   422
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   423
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   424
text\<open>60\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   425
lemma \<open>\<forall>x. P(x,f(x)) \<longleftrightarrow> (\<exists>y. (\<forall>z. P(z,y) \<longrightarrow> P(z,f(x))) \<and> P(x,y))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   426
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   427
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   428
text\<open>62 as corrected in JAR 18 (1997), page 135\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   429
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   430
  \<open>(\<forall>x. p(a) \<and> (p(x) \<longrightarrow> p(f(x))) \<longrightarrow> p(f(f(x)))) \<longleftrightarrow>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   431
    (\<forall>x. (\<not> p(a) \<or> p(x) \<or> p(f(f(x)))) \<and>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   432
      (\<not> p(a) \<or> \<not> p(f(x)) \<or> p(f(f(x)))))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   433
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   434
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   435
text \<open>From Davis, Obvious Logical Inferences, IJCAI-81, 530-531
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   436
  fast indeed copes!\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   437
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   438
  \<open>(\<forall>x. F(x) \<and> \<not> G(x) \<longrightarrow> (\<exists>y. H(x,y) \<and> J(y))) \<and>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   439
    (\<exists>x. K(x) \<and> F(x) \<and> (\<forall>y. H(x,y) \<longrightarrow> K(y))) \<and>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   440
    (\<forall>x. K(x) \<longrightarrow> \<not> G(x)) \<longrightarrow> (\<exists>x. K(x) \<and> J(x))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   441
  by fast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   442
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   443
text \<open>From Rudnicki, Obvious Inferences, JAR 3 (1987), 383-393.
60770
240563fbf41d isabelle update_cartouches;
wenzelm
parents: 58889
diff changeset
   444
  It does seem obvious!\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   445
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   446
  \<open>(\<forall>x. F(x) \<and> \<not> G(x) \<longrightarrow> (\<exists>y. H(x,y) \<and> J(y))) \<and>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   447
    (\<exists>x. K(x) \<and> F(x) \<and> (\<forall>y. H(x,y) \<longrightarrow> K(y))) \<and>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   448
    (\<forall>x. K(x) \<longrightarrow> \<not> G(x)) \<longrightarrow> (\<exists>x. K(x) \<longrightarrow> \<not> G(x))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   449
  by fast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   450
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   451
text \<open>Halting problem: Formulation of Li Dafa (AAR Newsletter 27, Oct 1994.)
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   452
  author U. Egly.\<close>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   453
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   454
  \<open>((\<exists>x. A(x) \<and> (\<forall>y. C(y) \<longrightarrow> (\<forall>z. D(x,y,z)))) \<longrightarrow>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   455
     (\<exists>w. C(w) \<and> (\<forall>y. C(y) \<longrightarrow> (\<forall>z. D(w,y,z)))))
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   456
    \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   457
    (\<forall>w. C(w) \<and> (\<forall>u. C(u) \<longrightarrow> (\<forall>v. D(w,u,v))) \<longrightarrow>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   458
          (\<forall>y z.
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   459
              (C(y) \<and> P(y,z) \<longrightarrow> Q(w,y,z) \<and> OO(w,g)) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   460
              (C(y) \<and> \<not> P(y,z) \<longrightarrow> Q(w,y,z) \<and> OO(w,b))))
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   461
    \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   462
    (\<forall>w. C(w) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   463
      (\<forall>y z.
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   464
          (C(y) \<and> P(y,z) \<longrightarrow> Q(w,y,z) \<and> OO(w,g)) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   465
          (C(y) \<and> \<not> P(y,z) \<longrightarrow> Q(w,y,z) \<and> OO(w,b))) \<longrightarrow>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   466
      (\<exists>v. C(v) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   467
            (\<forall>y. ((C(y) \<and> Q(w,y,y)) \<and> OO(w,g) \<longrightarrow> \<not> P(v,y)) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   468
                    ((C(y) \<and> Q(w,y,y)) \<and> OO(w,b) \<longrightarrow> P(v,y) \<and> OO(v,b)))))
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   469
     \<longrightarrow> \<not> (\<exists>x. A(x) \<and> (\<forall>y. C(y) \<longrightarrow> (\<forall>z. D(x,y,z))))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   470
  by (blast 12)
62020
5d208fd2507d isabelle update_cartouches -c -t;
wenzelm
parents: 61490
diff changeset
   471
    \<comment> \<open>Needed because the search for depths below 12 is very slow.\<close>
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   472
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   473
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   474
text \<open>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   475
  Halting problem II: credited to M. Bruschi by Li Dafa in JAR 18(1),
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   476
  p. 105.
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   477
\<close>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   478
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   479
  \<open>((\<exists>x. A(x) \<and> (\<forall>y. C(y) \<longrightarrow> (\<forall>z. D(x,y,z)))) \<longrightarrow>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   480
     (\<exists>w. C(w) \<and> (\<forall>y. C(y) \<longrightarrow> (\<forall>z. D(w,y,z)))))
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   481
    \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   482
    (\<forall>w. C(w) \<and> (\<forall>u. C(u) \<longrightarrow> (\<forall>v. D(w,u,v))) \<longrightarrow>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   483
          (\<forall>y z.
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   484
              (C(y) \<and> P(y,z) \<longrightarrow> Q(w,y,z) \<and> OO(w,g)) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   485
              (C(y) \<and> \<not> P(y,z) \<longrightarrow> Q(w,y,z) \<and> OO(w,b))))
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   486
    \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   487
    ((\<exists>w. C(w) \<and> (\<forall>y. (C(y) \<and> P(y,y) \<longrightarrow> Q(w,y,y) \<and> OO(w,g)) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   488
                           (C(y) \<and> \<not> P(y,y) \<longrightarrow> Q(w,y,y) \<and> OO(w,b))))
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   489
     \<longrightarrow>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   490
     (\<exists>v. C(v) \<and> (\<forall>y. (C(y) \<and> P(y,y) \<longrightarrow> P(v,y) \<and> OO(v,g)) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   491
                           (C(y) \<and> \<not> P(y,y) \<longrightarrow> P(v,y) \<and> OO(v,b)))))
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   492
    \<longrightarrow>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   493
    ((\<exists>v. C(v) \<and> (\<forall>y. (C(y) \<and> P(y,y) \<longrightarrow> P(v,y) \<and> OO(v,g)) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   494
                           (C(y) \<and> \<not> P(y,y) \<longrightarrow> P(v,y) \<and> OO(v,b))))
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   495
     \<longrightarrow>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   496
     (\<exists>u. C(u) \<and> (\<forall>y. (C(y) \<and> P(y,y) \<longrightarrow> \<not> P(u,y)) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   497
                           (C(y) \<and> \<not> P(y,y) \<longrightarrow> P(u,y) \<and> OO(u,b)))))
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   498
     \<longrightarrow> \<not> (\<exists>x. A(x) \<and> (\<forall>y. C(y) \<longrightarrow> (\<forall>z. D(x,y,z))))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   499
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   500
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   501
text \<open>Challenge found on info-hol.\<close>
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   502
lemma \<open>\<forall>x. \<exists>v w. \<forall>y z. P(x) \<and> Q(y) \<longrightarrow> (P(v) \<or> R(w)) \<and> (R(z) \<longrightarrow> Q(v))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   503
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   504
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   505
text \<open>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   506
  Attributed to Lewis Carroll by S. G. Pulman. The first or last assumption
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   507
  can be deleted.\<close>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   508
lemma
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   509
  \<open>(\<forall>x. honest(x) \<and> industrious(x) \<longrightarrow> healthy(x)) \<and>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   510
    \<not> (\<exists>x. grocer(x) \<and> healthy(x)) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   511
    (\<forall>x. industrious(x) \<and> grocer(x) \<longrightarrow> honest(x)) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   512
    (\<forall>x. cyclist(x) \<longrightarrow> industrious(x)) \<and>
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   513
    (\<forall>x. \<not> healthy(x) \<and> cyclist(x) \<longrightarrow> \<not> honest(x))
69590
e65314985426 isabelle update_inner_syntax_cartouches;
wenzelm
parents: 62020
diff changeset
   514
    \<longrightarrow> (\<forall>x. grocer(x) \<longrightarrow> \<not> cyclist(x))\<close>
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   515
  by blast
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   516
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   517
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   518
(*Runtimes for old versions of this file:
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   519
Thu Jul 23 1992: loaded in 467s using iffE [on SPARC2]
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   520
Mon Nov 14 1994: loaded in 144s [on SPARC10, with deepen_tac]
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   521
Wed Nov 16 1994: loaded in 138s [after addition of norm_term_skip]
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   522
Mon Nov 21 1994: loaded in 131s [DEPTH_FIRST suppressing repetitions]
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   523
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   524
Further runtimes on a Sun-4
61489
b8d375aee0df more symbols;
wenzelm
parents: 61337
diff changeset
   525
Tue Mar  4 1997: loaded in 93s (version 94-7)
14236
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   526
Tue Mar  4 1997: loaded in 89s
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   527
Thu Apr  3 1997: loaded in 44s--using mostly Blast_tac
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   528
Thu Apr  3 1997: loaded in 96s--addition of two Halting Probs
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   529
Thu Apr  3 1997: loaded in 98s--using lim-1 for all haz rules
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   530
Tue Dec  2 1997: loaded in 107s--added 46; new equalSubst
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   531
Fri Dec 12 1997: loaded in 91s--faster proof reconstruction
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   532
Thu Dec 18 1997: loaded in 94s--two new "obvious theorems" (??)
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   533
*)
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   534
c73d62ce9d1c partial conversion to Isar scripts
paulson
parents:
diff changeset
   535
end