src/FOLP/ex/quant.ML
author wenzelm
Sun, 18 Sep 2005 14:25:48 +0200
changeset 17480 fd19f77dcf60
parent 15661 9ef583b08647
child 18678 dd0c569fa43d
permissions -rw-r--r--
converted to Isar theory format;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1464
a608f83e3421 expanded tabs; removed commit() from ROOT.ML
clasohm
parents: 1459
diff changeset
     1
(*  Title:      FOLP/ex/quant.ML
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     2
    ID:         $Id$
1459
d12da312eff4 expanded tabs
clasohm
parents: 0
diff changeset
     3
    Author:     Lawrence C Paulson, Cambridge University Computer Laboratory
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     4
    Copyright   1991  University of Cambridge
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     5
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     6
First-Order Logic: quantifier examples (intuitionistic and classical)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     7
Needs declarations of the theory "thy" and the tactic "tac"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     8
*)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     9
5061
f947332d5465 isatool fixgoal;
wenzelm
parents: 3836
diff changeset
    10
Goal "?p : (ALL x y. P(x,y))  -->  (ALL y x. P(x,y))";
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    11
by tac;
17480
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
    12
result();
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    13
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    14
5061
f947332d5465 isatool fixgoal;
wenzelm
parents: 3836
diff changeset
    15
Goal "?p : (EX x y. P(x,y)) --> (EX y x. P(x,y))";
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    16
by tac;
17480
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
    17
result();
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    18
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    19
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    20
(*Converse is false*)
5061
f947332d5465 isatool fixgoal;
wenzelm
parents: 3836
diff changeset
    21
Goal "?p : (ALL x. P(x)) | (ALL x. Q(x)) --> (ALL x. P(x) | Q(x))";
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    22
by tac;
17480
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
    23
result();
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    24
5061
f947332d5465 isatool fixgoal;
wenzelm
parents: 3836
diff changeset
    25
Goal "?p : (ALL x. P-->Q(x))  <->  (P--> (ALL x. Q(x)))";
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    26
by tac;
17480
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
    27
result();
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    28
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    29
5061
f947332d5465 isatool fixgoal;
wenzelm
parents: 3836
diff changeset
    30
Goal "?p : (ALL x. P(x)-->Q)  <->  ((EX x. P(x)) --> Q)";
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    31
by tac;
17480
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
    32
result();
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    33
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    34
15661
9ef583b08647 reverted renaming of Some/None in comments and strings;
wenzelm
parents: 15531
diff changeset
    35
writeln"Some harder ones";
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    36
5061
f947332d5465 isatool fixgoal;
wenzelm
parents: 3836
diff changeset
    37
Goal "?p : (EX x. P(x) | Q(x)) <-> (EX x. P(x)) | (EX x. Q(x))";
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    38
by tac;
17480
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
    39
result();
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    40
(*6 secs*)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    41
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    42
(*Converse is false*)
5061
f947332d5465 isatool fixgoal;
wenzelm
parents: 3836
diff changeset
    43
Goal "?p : (EX x. P(x)&Q(x)) --> (EX x. P(x))  &  (EX x. Q(x))";
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    44
by tac;
17480
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
    45
result();
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    46
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    47
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    48
writeln"Basic test of quantifier reasoning";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    49
(*TRUE*)
5061
f947332d5465 isatool fixgoal;
wenzelm
parents: 3836
diff changeset
    50
Goal "?p : (EX y. ALL x. Q(x,y)) -->  (ALL x. EX y. Q(x,y))";
17480
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
    51
by tac;
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
    52
result();
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    53
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    54
5061
f947332d5465 isatool fixgoal;
wenzelm
parents: 3836
diff changeset
    55
Goal "?p : (ALL x. Q(x))  -->  (EX x. Q(x))";
17480
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
    56
by tac;
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
    57
result();
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    58
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    59
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    60
writeln"The following should fail, as they are false!";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    61
5061
f947332d5465 isatool fixgoal;
wenzelm
parents: 3836
diff changeset
    62
Goal "?p : (ALL x. EX y. Q(x,y))  -->  (EX y. ALL x. Q(x,y))";
17480
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
    63
by tac handle ERROR => writeln"Failed, as expected";
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    64
(*Check that subgoals remain: proof failed.*)
17480
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
    65
getgoal 1;
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    66
5061
f947332d5465 isatool fixgoal;
wenzelm
parents: 3836
diff changeset
    67
Goal "?p : (EX x. Q(x))  -->  (ALL x. Q(x))";
17480
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
    68
by tac handle ERROR => writeln"Failed, as expected";
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
    69
getgoal 1;
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    70
5061
f947332d5465 isatool fixgoal;
wenzelm
parents: 3836
diff changeset
    71
Goal "?p : P(?a) --> (ALL x. P(x))";
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    72
by tac handle ERROR => writeln"Failed, as expected";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    73
(*Check that subgoals remain: proof failed.*)
17480
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
    74
getgoal 1;
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    75
5061
f947332d5465 isatool fixgoal;
wenzelm
parents: 3836
diff changeset
    76
Goal
3836
f1a1817659e6 fixed dots;
wenzelm
parents: 1464
diff changeset
    77
    "?p : (P(?a) --> (ALL x. Q(x))) --> (ALL x. P(x) --> Q(x))";
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    78
by tac handle ERROR => writeln"Failed, as expected";
17480
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
    79
getgoal 1;
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    80
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    81
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    82
writeln"Back to things that are provable...";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    83
5061
f947332d5465 isatool fixgoal;
wenzelm
parents: 3836
diff changeset
    84
Goal "?p : (ALL x. P(x)-->Q(x)) & (EX x. P(x)) --> (EX x. Q(x))";
17480
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
    85
by tac;
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
    86
result();
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    87
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    88
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    89
(*An example of why exI should be delayed as long as possible*)
5061
f947332d5465 isatool fixgoal;
wenzelm
parents: 3836
diff changeset
    90
Goal "?p : (P --> (EX x. Q(x))) & P --> (EX x. Q(x))";
17480
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
    91
by tac;
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
    92
result();
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    93
5061
f947332d5465 isatool fixgoal;
wenzelm
parents: 3836
diff changeset
    94
Goal "?p : (ALL x. P(x)-->Q(f(x))) & (ALL x. Q(x)-->R(g(x))) & P(d) --> R(?a)";
17480
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
    95
by tac;
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
    96
(*Verify that no subgoals remain.*)
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
    97
uresult();
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    98
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    99
5061
f947332d5465 isatool fixgoal;
wenzelm
parents: 3836
diff changeset
   100
Goal "?p : (ALL x. Q(x))  -->  (EX x. Q(x))";
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   101
by tac;
17480
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
   102
result();
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   103
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   104
15661
9ef583b08647 reverted renaming of Some/None in comments and strings;
wenzelm
parents: 15531
diff changeset
   105
writeln"Some slow ones";
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   106
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   107
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   108
(*Principia Mathematica *11.53  *)
5061
f947332d5465 isatool fixgoal;
wenzelm
parents: 3836
diff changeset
   109
Goal "?p : (ALL x y. P(x) --> Q(y)) <-> ((EX x. P(x)) --> (ALL y. Q(y)))";
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   110
by tac;
17480
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
   111
result();
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   112
(*6 secs*)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   113
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   114
(*Principia Mathematica *11.55  *)
5061
f947332d5465 isatool fixgoal;
wenzelm
parents: 3836
diff changeset
   115
Goal "?p : (EX x y. P(x) & Q(x,y)) <-> (EX x. P(x) & (EX y. Q(x,y)))";
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   116
by tac;
17480
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
   117
result();
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   118
(*9 secs*)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   119
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   120
(*Principia Mathematica *11.61  *)
5061
f947332d5465 isatool fixgoal;
wenzelm
parents: 3836
diff changeset
   121
Goal "?p : (EX y. ALL x. P(x) --> Q(x,y)) --> (ALL x. P(x) --> (EX y. Q(x,y)))";
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   122
by tac;
17480
fd19f77dcf60 converted to Isar theory format;
wenzelm
parents: 15661
diff changeset
   123
result();
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
   124
(*3 secs*)