| author | paulson | 
| Tue, 10 Feb 2004 12:17:04 +0100 | |
| changeset 14379 | ea10a8c3e9cf | 
| parent 3836 | f1a1817659e6 | 
| child 15531 | 08c8dad8e399 | 
| permissions | -rw-r--r-- | 
| 1464 | 1 | (* Title: FOLP/ex/int.ML | 
| 0 | 2 | ID: $Id$ | 
| 1459 | 3 | Author: Lawrence C Paulson, Cambridge University Computer Laboratory | 
| 0 | 4 | Copyright 1991 University of Cambridge | 
| 5 | ||
| 6 | Intuitionistic First-Order Logic | |
| 7 | ||
| 8 | Single-step commands: | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 9 | by (IntPr.step_tac 1); | 
| 0 | 10 | by (biresolve_tac safe_brls 1); | 
| 11 | by (biresolve_tac haz_brls 1); | |
| 12 | by (assume_tac 1); | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 13 | by (IntPr.safe_tac 1); | 
| 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 14 | by (IntPr.mp_tac 1); | 
| 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 15 | by (IntPr.fast_tac 1); | 
| 0 | 16 | *) | 
| 17 | ||
| 1464 | 18 | writeln"File FOLP/ex/int.ML"; | 
| 0 | 19 | |
| 20 | (*Note: for PROPOSITIONAL formulae... | |
| 21 | ~A is classically provable iff it is intuitionistically provable. | |
| 22 | Therefore A is classically provable iff ~~A is intuitionistically provable. | |
| 23 | ||
| 24 | Let Q be the conjuction of the propositions A|~A, one for each atom A in | |
| 25 | P. If P is provable classically, then clearly P&Q is provable | |
| 26 | intuitionistically, so ~~(P&Q) is also provable intuitionistically. | |
| 27 | The latter is intuitionistically equivalent to ~~P&~~Q, hence to ~~P, | |
| 28 | since ~~Q is intuitionistically provable. Finally, if P is a negation then | |
| 29 | ~~P is intuitionstically equivalent to P. [Andy Pitts] | |
| 30 | *) | |
| 31 | ||
| 32 | goal IFOLP.thy "?p : ~~(P&Q) <-> ~~P & ~~Q"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 33 | by (IntPr.fast_tac 1); | 
| 0 | 34 | result(); | 
| 35 | ||
| 36 | goal IFOLP.thy "?p : ~~~P <-> ~P"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 37 | by (IntPr.fast_tac 1); | 
| 0 | 38 | result(); | 
| 39 | ||
| 40 | goal IFOLP.thy "?p : ~~((P --> Q | R) --> (P-->Q) | (P-->R))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 41 | by (IntPr.fast_tac 1); | 
| 0 | 42 | result(); | 
| 43 | ||
| 44 | goal IFOLP.thy "?p : (P<->Q) <-> (Q<->P)"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 45 | by (IntPr.fast_tac 1); | 
| 0 | 46 | result(); | 
| 47 | ||
| 48 | ||
| 49 | writeln"Lemmas for the propositional double-negation translation"; | |
| 50 | ||
| 51 | goal IFOLP.thy "?p : P --> ~~P"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 52 | by (IntPr.fast_tac 1); | 
| 0 | 53 | result(); | 
| 54 | ||
| 55 | goal IFOLP.thy "?p : ~~(~~P --> P)"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 56 | by (IntPr.fast_tac 1); | 
| 0 | 57 | result(); | 
| 58 | ||
| 59 | goal IFOLP.thy "?p : ~~P & ~~(P --> Q) --> ~~Q"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 60 | by (IntPr.fast_tac 1); | 
| 0 | 61 | result(); | 
| 62 | ||
| 63 | ||
| 64 | writeln"The following are classically but not constructively valid."; | |
| 65 | ||
| 66 | (*The attempt to prove them terminates quickly!*) | |
| 67 | goal IFOLP.thy "?p : ((P-->Q) --> P) --> P"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 68 | by (IntPr.fast_tac 1) handle ERROR => writeln"Failed, as expected"; | 
| 0 | 69 | (*Check that subgoals remain: proof failed.*) | 
| 70 | getgoal 1; | |
| 71 | ||
| 72 | goal IFOLP.thy "?p : (P&Q-->R) --> (P-->R) | (Q-->R)"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 73 | by (IntPr.fast_tac 1) handle ERROR => writeln"Failed, as expected"; | 
| 0 | 74 | getgoal 1; | 
| 75 | ||
| 76 | ||
| 77 | writeln"Intuitionistic FOL: propositional problems based on Pelletier."; | |
| 78 | ||
| 79 | writeln"Problem ~~1"; | |
| 80 | goal IFOLP.thy "?p : ~~((P-->Q) <-> (~Q --> ~P))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 81 | by (IntPr.fast_tac 1); | 
| 0 | 82 | result(); | 
| 83 | (*5 secs*) | |
| 84 | ||
| 85 | ||
| 86 | writeln"Problem ~~2"; | |
| 87 | goal IFOLP.thy "?p : ~~(~~P <-> P)"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 88 | by (IntPr.fast_tac 1); | 
| 0 | 89 | result(); | 
| 90 | (*1 secs*) | |
| 91 | ||
| 92 | ||
| 93 | writeln"Problem 3"; | |
| 94 | goal IFOLP.thy "?p : ~(P-->Q) --> (Q-->P)"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 95 | by (IntPr.fast_tac 1); | 
| 0 | 96 | result(); | 
| 97 | ||
| 98 | writeln"Problem ~~4"; | |
| 99 | goal IFOLP.thy "?p : ~~((~P-->Q) <-> (~Q --> P))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 100 | by (IntPr.fast_tac 1); | 
| 0 | 101 | result(); | 
| 102 | (*9 secs*) | |
| 103 | ||
| 104 | writeln"Problem ~~5"; | |
| 105 | goal IFOLP.thy "?p : ~~((P|Q-->P|R) --> P|(Q-->R))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 106 | by (IntPr.fast_tac 1); | 
| 0 | 107 | result(); | 
| 108 | (*10 secs*) | |
| 109 | ||
| 110 | ||
| 111 | writeln"Problem ~~6"; | |
| 112 | goal IFOLP.thy "?p : ~~(P | ~P)"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 113 | by (IntPr.fast_tac 1); | 
| 0 | 114 | result(); | 
| 115 | ||
| 116 | writeln"Problem ~~7"; | |
| 117 | goal IFOLP.thy "?p : ~~(P | ~~~P)"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 118 | by (IntPr.fast_tac 1); | 
| 0 | 119 | result(); | 
| 120 | ||
| 121 | writeln"Problem ~~8. Peirce's law"; | |
| 122 | goal IFOLP.thy "?p : ~~(((P-->Q) --> P) --> P)"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 123 | by (IntPr.fast_tac 1); | 
| 0 | 124 | result(); | 
| 125 | ||
| 126 | writeln"Problem 9"; | |
| 127 | goal IFOLP.thy "?p : ((P|Q) & (~P|Q) & (P| ~Q)) --> ~ (~P | ~Q)"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 128 | by (IntPr.fast_tac 1); | 
| 0 | 129 | result(); | 
| 130 | (*9 secs*) | |
| 131 | ||
| 132 | ||
| 133 | writeln"Problem 10"; | |
| 134 | goal IFOLP.thy "?p : (Q-->R) --> (R-->P&Q) --> (P-->(Q|R)) --> (P<->Q)"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 135 | by (IntPr.fast_tac 1); | 
| 0 | 136 | result(); | 
| 137 | ||
| 138 | writeln"11. Proved in each direction (incorrectly, says Pelletier!!) "; | |
| 139 | goal IFOLP.thy "?p : P<->P"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 140 | by (IntPr.fast_tac 1); | 
| 0 | 141 | |
| 142 | writeln"Problem ~~12. Dijkstra's law "; | |
| 143 | goal IFOLP.thy "?p : ~~(((P <-> Q) <-> R) <-> (P <-> (Q <-> R)))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 144 | by (IntPr.fast_tac 1); | 
| 0 | 145 | result(); | 
| 146 | ||
| 147 | goal IFOLP.thy "?p : ((P <-> Q) <-> R) --> ~~(P <-> (Q <-> R))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 148 | by (IntPr.fast_tac 1); | 
| 0 | 149 | result(); | 
| 150 | ||
| 151 | writeln"Problem 13. Distributive law"; | |
| 152 | goal IFOLP.thy "?p : P | (Q & R) <-> (P | Q) & (P | R)"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 153 | by (IntPr.fast_tac 1); | 
| 0 | 154 | result(); | 
| 155 | ||
| 156 | writeln"Problem ~~14"; | |
| 157 | goal IFOLP.thy "?p : ~~((P <-> Q) <-> ((Q | ~P) & (~Q|P)))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 158 | by (IntPr.fast_tac 1); | 
| 0 | 159 | result(); | 
| 160 | ||
| 161 | writeln"Problem ~~15"; | |
| 162 | goal IFOLP.thy "?p : ~~((P --> Q) <-> (~P | Q))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 163 | by (IntPr.fast_tac 1); | 
| 0 | 164 | result(); | 
| 165 | ||
| 166 | writeln"Problem ~~16"; | |
| 167 | goal IFOLP.thy "?p : ~~((P-->Q) | (Q-->P))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 168 | by (IntPr.fast_tac 1); | 
| 0 | 169 | result(); | 
| 170 | ||
| 171 | writeln"Problem ~~17"; | |
| 172 | goal IFOLP.thy | |
| 173 | "?p : ~~(((P & (Q-->R))-->S) <-> ((~P | Q | S) & (~P | ~R | S)))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 174 | by (IntPr.fast_tac 1); | 
| 0 | 175 | (*over 5 minutes?? -- printing the proof term takes 40 secs!!*) | 
| 176 | result(); | |
| 177 | ||
| 178 | ||
| 179 | writeln"** Examples with quantifiers **"; | |
| 180 | ||
| 181 | writeln"The converse is classical in the following implications..."; | |
| 182 | ||
| 3836 | 183 | goal IFOLP.thy "?p : (EX x. P(x)-->Q) --> (ALL x. P(x)) --> Q"; | 
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 184 | by (IntPr.fast_tac 1); | 
| 0 | 185 | result(); | 
| 186 | ||
| 3836 | 187 | goal IFOLP.thy "?p : ((ALL x. P(x))-->Q) --> ~ (ALL x. P(x) & ~Q)"; | 
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 188 | by (IntPr.fast_tac 1); | 
| 0 | 189 | result(); | 
| 190 | ||
| 191 | goal IFOLP.thy "?p : ((ALL x. ~P(x))-->Q) --> ~ (ALL x. ~ (P(x)|Q))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 192 | by (IntPr.fast_tac 1); | 
| 0 | 193 | result(); | 
| 194 | ||
| 3836 | 195 | goal IFOLP.thy "?p : (ALL x. P(x)) | Q --> (ALL x. P(x) | Q)"; | 
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 196 | by (IntPr.fast_tac 1); | 
| 0 | 197 | result(); | 
| 198 | ||
| 199 | goal IFOLP.thy "?p : (EX x. P --> Q(x)) --> (P --> (EX x. Q(x)))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 200 | by (IntPr.fast_tac 1); | 
| 0 | 201 | result(); | 
| 202 | ||
| 203 | ||
| 204 | ||
| 205 | ||
| 206 | writeln"The following are not constructively valid!"; | |
| 207 | (*The attempt to prove them terminates quickly!*) | |
| 208 | ||
| 3836 | 209 | goal IFOLP.thy "?p : ((ALL x. P(x))-->Q) --> (EX x. P(x)-->Q)"; | 
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 210 | by (IntPr.fast_tac 1) handle ERROR => writeln"Failed, as expected"; | 
| 0 | 211 | getgoal 1; | 
| 212 | ||
| 3836 | 213 | goal IFOLP.thy "?p : (P --> (EX x. Q(x))) --> (EX x. P-->Q(x))"; | 
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 214 | by (IntPr.fast_tac 1) handle ERROR => writeln"Failed, as expected"; | 
| 0 | 215 | getgoal 1; | 
| 216 | ||
| 3836 | 217 | goal IFOLP.thy "?p : (ALL x. P(x) | Q) --> ((ALL x. P(x)) | Q)"; | 
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 218 | by (IntPr.fast_tac 1) handle ERROR => writeln"Failed, as expected"; | 
| 0 | 219 | getgoal 1; | 
| 220 | ||
| 221 | goal IFOLP.thy "?p : (ALL x. ~~P(x)) --> ~~(ALL x. P(x))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 222 | by (IntPr.fast_tac 1) handle ERROR => writeln"Failed, as expected"; | 
| 0 | 223 | getgoal 1; | 
| 224 | ||
| 225 | (*Classically but not intuitionistically valid. Proved by a bug in 1986!*) | |
| 226 | goal IFOLP.thy "?p : EX x. Q(x) --> (ALL x. Q(x))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 227 | by (IntPr.fast_tac 1) handle ERROR => writeln"Failed, as expected"; | 
| 0 | 228 | getgoal 1; | 
| 229 | ||
| 230 | ||
| 231 | writeln"Hard examples with quantifiers"; | |
| 232 | ||
| 233 | (*The ones that have not been proved are not known to be valid! | |
| 234 | Some will require quantifier duplication -- not currently available*) | |
| 235 | ||
| 236 | writeln"Problem ~~18"; | |
| 237 | goal IFOLP.thy "?p : ~~(EX y. ALL x. P(y)-->P(x))"; | |
| 238 | (*NOT PROVED*) | |
| 239 | ||
| 240 | writeln"Problem ~~19"; | |
| 241 | goal IFOLP.thy "?p : ~~(EX x. ALL y z. (P(y)-->Q(z)) --> (P(x)-->Q(x)))"; | |
| 242 | (*NOT PROVED*) | |
| 243 | ||
| 244 | writeln"Problem 20"; | |
| 245 | goal IFOLP.thy "?p : (ALL x y. EX z. ALL w. (P(x)&Q(y)-->R(z)&S(w))) \ | |
| 246 | \ --> (EX x y. P(x) & Q(y)) --> (EX z. R(z))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 247 | by (IntPr.fast_tac 1); | 
| 0 | 248 | result(); | 
| 249 | ||
| 250 | writeln"Problem 21"; | |
| 251 | goal IFOLP.thy | |
| 252 | "?p : (EX x. P-->Q(x)) & (EX x. Q(x)-->P) --> ~~(EX x. P<->Q(x))"; | |
| 253 | (*NOT PROVED*) | |
| 254 | ||
| 255 | writeln"Problem 22"; | |
| 256 | goal IFOLP.thy "?p : (ALL x. P <-> Q(x)) --> (P <-> (ALL x. Q(x)))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 257 | by (IntPr.fast_tac 1); | 
| 0 | 258 | result(); | 
| 259 | ||
| 260 | writeln"Problem ~~23"; | |
| 261 | goal IFOLP.thy "?p : ~~ ((ALL x. P | Q(x)) <-> (P | (ALL x. Q(x))))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 262 | by (IntPr.best_tac 1); | 
| 0 | 263 | result(); | 
| 264 | ||
| 265 | writeln"Problem 24"; | |
| 266 | goal IFOLP.thy "?p : ~(EX x. S(x)&Q(x)) & (ALL x. P(x) --> Q(x)|R(x)) & \ | |
| 3836 | 267 | \ (~(EX x. P(x)) --> (EX x. Q(x))) & (ALL x. Q(x)|R(x) --> S(x)) \ | 
| 2573 
f3e04805895a
Correction to Problem 24 (with unsatisfactory proof)
 paulson parents: 
1464diff
changeset | 268 | \ --> ~~(EX x. P(x)&R(x))"; | 
| 
f3e04805895a
Correction to Problem 24 (with unsatisfactory proof)
 paulson parents: 
1464diff
changeset | 269 | (*Not clear why fast_tac, best_tac, ASTAR and ITER_DEEPEN all take forever*) | 
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 270 | by IntPr.safe_tac; | 
| 2573 
f3e04805895a
Correction to Problem 24 (with unsatisfactory proof)
 paulson parents: 
1464diff
changeset | 271 | by (etac impE 1); | 
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 272 | by (IntPr.fast_tac 1); | 
| 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 273 | by (IntPr.fast_tac 1); | 
| 0 | 274 | result(); | 
| 275 | ||
| 276 | writeln"Problem 25"; | |
| 277 | goal IFOLP.thy "?p : (EX x. P(x)) & \ | |
| 278 | \ (ALL x. L(x) --> ~ (M(x) & R(x))) & \ | |
| 279 | \ (ALL x. P(x) --> (M(x) & L(x))) & \ | |
| 280 | \ ((ALL x. P(x)-->Q(x)) | (EX x. P(x)&R(x))) \ | |
| 281 | \ --> (EX x. Q(x)&P(x))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 282 | by (IntPr.best_tac 1); | 
| 0 | 283 | result(); | 
| 284 | ||
| 285 | writeln"Problem 29. Essentially the same as Principia Mathematica *11.71"; | |
| 286 | goal IFOLP.thy "?p : (EX x. P(x)) & (EX y. Q(y)) \ | |
| 287 | \ --> ((ALL x. P(x)-->R(x)) & (ALL y. Q(y)-->S(y)) <-> \ | |
| 288 | \ (ALL x y. P(x) & Q(y) --> R(x) & S(y)))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 289 | by (IntPr.fast_tac 1); | 
| 0 | 290 | result(); | 
| 291 | ||
| 292 | writeln"Problem ~~30"; | |
| 293 | goal IFOLP.thy "?p : (ALL x. (P(x) | Q(x)) --> ~ R(x)) & \ | |
| 294 | \ (ALL x. (Q(x) --> ~ S(x)) --> P(x) & R(x)) \ | |
| 295 | \ --> (ALL x. ~~S(x))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 296 | by (IntPr.fast_tac 1); | 
| 0 | 297 | result(); | 
| 298 | ||
| 299 | writeln"Problem 31"; | |
| 3836 | 300 | goal IFOLP.thy "?p : ~(EX x. P(x) & (Q(x) | R(x))) & \ | 
| 0 | 301 | \ (EX x. L(x) & P(x)) & \ | 
| 302 | \ (ALL x. ~ R(x) --> M(x)) \ | |
| 303 | \ --> (EX x. L(x) & M(x))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 304 | by (IntPr.fast_tac 1); | 
| 0 | 305 | result(); | 
| 306 | ||
| 307 | writeln"Problem 32"; | |
| 308 | goal IFOLP.thy "?p : (ALL x. P(x) & (Q(x)|R(x))-->S(x)) & \ | |
| 309 | \ (ALL x. S(x) & R(x) --> L(x)) & \ | |
| 310 | \ (ALL x. M(x) --> R(x)) \ | |
| 311 | \ --> (ALL x. P(x) & M(x) --> L(x))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 312 | by (IntPr.best_tac 1); (*SLOW*) | 
| 0 | 313 | result(); | 
| 314 | ||
| 315 | writeln"Problem 39"; | |
| 316 | goal IFOLP.thy "?p : ~ (EX x. ALL y. F(y,x) <-> ~F(y,y))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 317 | by (IntPr.fast_tac 1); | 
| 0 | 318 | result(); | 
| 319 | ||
| 320 | writeln"Problem 40. AMENDED"; | |
| 321 | goal IFOLP.thy "?p : (EX y. ALL x. F(x,y) <-> F(x,x)) --> \ | |
| 322 | \ ~(ALL x. EX y. ALL z. F(z,y) <-> ~ F(z,x))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 323 | by (IntPr.fast_tac 1); | 
| 0 | 324 | result(); | 
| 325 | ||
| 326 | writeln"Problem 44"; | |
| 1459 | 327 | goal IFOLP.thy "?p : (ALL x. f(x) --> \ | 
| 328 | \ (EX y. g(y) & h(x,y) & (EX y. g(y) & ~ h(x,y)))) & \ | |
| 329 | \ (EX x. j(x) & (ALL y. g(y) --> h(x,y))) \ | |
| 0 | 330 | \ --> (EX x. j(x) & ~f(x))"; | 
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 331 | by (IntPr.fast_tac 1); | 
| 0 | 332 | result(); | 
| 333 | ||
| 334 | writeln"Problem 48"; | |
| 335 | goal IFOLP.thy "?p : (a=b | c=d) & (a=c | b=d) --> a=d | b=c"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 336 | by (IntPr.fast_tac 1); | 
| 0 | 337 | result(); | 
| 338 | ||
| 339 | writeln"Problem 51"; | |
| 340 | goal IFOLP.thy | |
| 341 | "?p : (EX z w. ALL x y. P(x,y) <-> (x=z & y=w)) --> \ | |
| 342 | \ (EX z. ALL x. EX w. (ALL y. P(x,y) <-> y=w) <-> x=z)"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 343 | by (IntPr.best_tac 1); (*60 seconds*) | 
| 0 | 344 | result(); | 
| 345 | ||
| 346 | writeln"Problem 56"; | |
| 347 | goal IFOLP.thy | |
| 348 | "?p : (ALL x. (EX y. P(y) & x=f(y)) --> P(x)) <-> (ALL x. P(x) --> P(f(x)))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 349 | by (IntPr.fast_tac 1); | 
| 0 | 350 | result(); | 
| 351 | ||
| 352 | writeln"Problem 57"; | |
| 353 | goal IFOLP.thy | |
| 354 | "?p : P(f(a,b), f(b,c)) & P(f(b,c), f(a,c)) & \ | |
| 355 | \ (ALL x y z. P(x,y) & P(y,z) --> P(x,z)) --> P(f(a,b), f(a,c))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 356 | by (IntPr.fast_tac 1); | 
| 0 | 357 | result(); | 
| 358 | ||
| 359 | writeln"Problem 60"; | |
| 360 | goal IFOLP.thy | |
| 361 | "?p : ALL x. P(x,f(x)) <-> (EX y. (ALL z. P(z,y) --> P(z,f(x))) & P(x,y))"; | |
| 2603 
4988dda71c0b
Renamed structure Int (intuitionistic prover) to IntPr to prevent clash
 paulson parents: 
2573diff
changeset | 362 | by (IntPr.fast_tac 1); | 
| 0 | 363 | result(); | 
| 364 | ||
| 365 | writeln"Reached end of file."; |