equal
deleted
inserted
replaced
73 by (depth_prolog_tac horns26); (*6 secs*) |
73 by (depth_prolog_tac horns26); (*6 secs*) |
74 |
74 |
75 |
75 |
76 |
76 |
77 writeln"Problem 43 NOW PROVED AUTOMATICALLY!!"; |
77 writeln"Problem 43 NOW PROVED AUTOMATICALLY!!"; |
78 goal HOL.thy "(! x. ! y. q(x,y) = (! z. p(z,x) = p(z,y)::bool)) \ |
78 goal HOL.thy "(! x. ! y. q(x,y) = (! z. p(z,x) = (p(z,y)::bool))) \ |
79 \ --> (! x. (! y. q(x,y) = q(y,x)::bool))"; |
79 \ --> (! x. (! y. q(x,y) = (q(y,x)::bool)))"; |
80 by (rtac ccontr 1); |
80 by (rtac ccontr 1); |
81 val [prem43] = gethyps 1; |
81 val [prem43] = gethyps 1; |
82 val nnf43 = make_nnf prem43; |
82 val nnf43 = make_nnf prem43; |
83 val xsko43 = skolemize nnf43; |
83 val xsko43 = skolemize nnf43; |
84 by (cut_facts_tac [xsko43] 1 THEN REPEAT (etac exE 1)); |
84 by (cut_facts_tac [xsko43] 1 THEN REPEAT (etac exE 1)); |
159 goal HOL.thy "(Q-->R) & (R-->P&Q) & (P-->Q|R) --> (P=Q)"; |
159 goal HOL.thy "(Q-->R) & (R-->P&Q) & (P-->Q|R) --> (P=Q)"; |
160 by (safe_meson_tac 1); |
160 by (safe_meson_tac 1); |
161 result(); |
161 result(); |
162 |
162 |
163 (*11. Proved in each direction (incorrectly, says Pelletier!!) *) |
163 (*11. Proved in each direction (incorrectly, says Pelletier!!) *) |
164 goal HOL.thy "P=P::bool"; |
164 goal HOL.thy "P=(P::bool)"; |
165 by (safe_meson_tac 1); |
165 by (safe_meson_tac 1); |
166 result(); |
166 result(); |
167 |
167 |
168 (*12. "Dijkstra's law"*) |
168 (*12. "Dijkstra's law"*) |
169 goal HOL.thy "((P = Q) = R) = (P = (Q = R))"; |
169 goal HOL.thy "((P = Q) = R) = (P = (Q = R))"; |
402 goal HOL.thy "~ (? y. ! x. p(x,y) = (~ (? z. p(x,z) & p(z,x))))"; |
402 goal HOL.thy "~ (? y. ! x. p(x,y) = (~ (? z. p(x,z) & p(z,x))))"; |
403 by (safe_meson_tac 1); |
403 by (safe_meson_tac 1); |
404 result(); |
404 result(); |
405 |
405 |
406 writeln"Problem 43 NOW PROVED AUTOMATICALLY!!"; |
406 writeln"Problem 43 NOW PROVED AUTOMATICALLY!!"; |
407 goal HOL.thy "(! x. ! y. q(x,y) = (! z. p(z,x) = p(z,y)::bool)) \ |
407 goal HOL.thy "(! x. ! y. q(x,y) = (! z. p(z,x) = (p(z,y)::bool))) \ |
408 \ --> (! x. (! y. q(x,y) = q(y,x)::bool))"; |
408 \ --> (! x. (! y. q(x,y) = (q(y,x)::bool)))"; |
409 by (safe_meson_tac 1); |
409 by (safe_meson_tac 1); |
410 result(); |
410 result(); |
411 |
411 |
412 writeln"Problem 44"; |
412 writeln"Problem 44"; |
413 goal HOL.thy "(! x. f(x) --> \ |
413 goal HOL.thy "(! x. f(x) --> \ |