(* Title: FOL/ex/Classical.thy Author: Lawrence C Paulson, Cambridge University Computer Laboratory Copyright 1994 University of Cambridge
*)
section‹Classical Predicate Calculus Problems›
theory Classical imports FOL begin
lemma‹(P ⟶ Q ∨ R) ⟶ (P ⟶ Q) ∨ (P ⟶ R)› by blast
subsubsection ‹Ifand only if›
lemma‹(P ⟷ Q) ⟷ (Q ⟷ P)› by blast
lemma‹¬ (P ⟷¬ P)› by blast
subsection‹Pelletier's examples\
text‹
Sample problems from
🚫 F. J. Pelletier,
Seventy-Five Problems for Testing Automatic Theorem Provers,
J. Automated Reasoning 2 (1986), 191-216.
Errata, JAR 4 (1988), 236-236.
The hardest problems -- judging by experience with several theorem
provers, including matrix ones -- are 34 and 43. ›
text‹Theorem B of Peter Andrews, Theorem Proving via General Matings,
JACM 28 (1981).› lemma‹(∃x. ∀y. P(x) ⟷ P(y)) ⟶ ((∃x. P(x)) ⟷ (∀y. P(y)))› by blast
text‹Needs multiple instantiation of ALL.› lemma‹(∀x. P(x) ⟶ P(f(x))) ∧ P(d) ⟶ P(f(f(f(d))))› by blast
text‹Needs double instantiation of the quantifier› lemma‹∃x. P(x) ⟶ P(a) ∧ P(b)› by blast
lemma‹∃z. P(z) ⟶ (∀x. P(x))› by blast
lemma‹∃x. (∃y. P(y)) ⟶ P(x)› by blast
text‹V. Lifschitz, What Is the Inverse Method?, JAR 5 (1989), 1--23. NOT PROVED.› lemma ‹∃x x'. \y. \z z'.
(¬ P(y,y) ∨ P(x,x) ∨¬ S(z,x)) ∧
(S(x,y) ∨¬ S(y,z) ∨ Q(z',z')) ∧
(Q(x',y) \ \ Q(y,z') ∨ S(x',x'))› oops
subsection‹Hard examples with quantifiers›
text‹18› lemma‹∃y. ∀x. P(y) ⟶ P(x)› by blast
text‹19› lemma‹∃x. ∀y z. (P(y) ⟶ Q(z)) ⟶ (P(x) ⟶ Q(x))› by blast
text‹20› lemma‹(∀x y. ∃z. ∀w. (P(x) ∧ Q(y) ⟶ R(z) ∧ S(w))) ⟶ (∃x y. P(x) ∧ Q(y)) ⟶ (∃z. R(z))› by blast
text‹21› lemma‹(∃x. P ⟶ Q(x)) ∧ (∃x. Q(x) ⟶ P) ⟶ (∃x. P ⟷ Q(x))› by blast
text‹22› lemma‹(∀x. P ⟷ Q(x)) ⟶ (P ⟷ (∀x. Q(x)))› by blast
text‹23› lemma‹(∀x. P ∨ Q(x)) ⟷ (P ∨ (∀x. Q(x)))› by blast
subsection‹Problems (mainly) involving equality or functions›
text‹48› lemma‹(a = b ∨ c = d) ∧ (a = c ∨ b = d) ⟶ a = d ∨ b = c› by blast
text‹49. NOT PROVED AUTOMATICALLY. Hard because it involves substitution for
Vars; the type constraint ensures that x,y,z have the same type as a,b,u.› lemma ‹(∃x y::'a. \z. z = x \ z = y) \ P(a) \ P(b) \ a \ b \ (\u::'a. P(u))› apply safe apply (rule_tac x = ‹a›in allE, assumption) apply (rule_tac x = ‹b›in allE, assumption) apply fast 🍋‹blast's treatment of equality can't do it› done
text‹50. (What has this to do with equality?)› lemma‹(∀x. P(a,x) ∨ (∀y. P(x,y))) ⟶ (∃x. ∀y. P(x,y))› by blast
text‹51› lemma ‹(∃z w. ∀x y. P(x,y) ⟷ (x = z ∧ y = w)) ⟶
(∃z. ∀x. ∃w. (∀y. P(x,y) ⟷ y=w) ⟷ x = z)› by blast
text‹52› text‹Almost the same as 51.› lemma ‹(∃z w. ∀x y. P(x,y) ⟷ (x = z ∧ y = w)) ⟶
(∃w. ∀y. ∃z. (∀x. P(x,y) ⟷ x = z) ⟷ y = w)› by blast
text‹55› text‹Non-equational version, from Manthey and Bry, CADE-9 (Springer, 1988).
fast DISCOVERS who killed Agatha.›
schematic_goal ‹lives(agatha) ∧ lives(butler) ∧ lives(charles) ∧
(killed(agatha,agatha) ∨ killed(butler,agatha) ∨ killed(charles,agatha)) ∧
(∀x y. killed(x,y) ⟶ hates(x,y) ∧¬ richer(x,y)) ∧
(∀x. hates(agatha,x) ⟶¬ hates(charles,x)) ∧
(hates(agatha,agatha) ∧ hates(agatha,charles)) ∧
(∀x. lives(x) ∧¬ richer(x,agatha) ⟶ hates(butler,x)) ∧
(∀x. hates(agatha,x) ⟶ hates(butler,x)) ∧
(∀x. ¬ hates(x,agatha) ∨¬ hates(x,butler) ∨¬ hates(x,charles)) ⟶
killed(?who,agatha)› by fast 🍋‹MUCH faster than blast›
text‹56› lemma‹(∀x. (∃y. P(y) ∧ x = f(y)) ⟶ P(x)) ⟷ (∀x. P(x) ⟶ P(f(x)))› by blast
text‹57› lemma ‹P(f(a,b), f(b,c)) ∧ P(f(b,c), f(a,c)) ∧
(∀x y z. P(x,y) ∧ P(y,z) ⟶ P(x,z)) ⟶ P(f(a,b), f(a,c))› by blast
text‹58 NOT PROVED AUTOMATICALLY› lemma‹(∀x y. f(x) = g(y)) ⟶ (∀x y. f(f(x)) = f(g(y)))› by (slow elim: subst_context)
text‹Challenge found on info-hol.› lemma‹∀x. ∃v w. ∀y z. P(x) ∧ Q(y) ⟶ (P(v) ∨ R(w)) ∧ (R(z) ⟶ Q(v))› by blast
text‹
Attributed to Lewis Carroll by S. G. Pulman. The first or last assumption
can be deleted.› lemma ‹(∀x. honest(x) ∧ industrious(x) ⟶ healthy(x)) ∧ ¬ (∃x. grocer(x) ∧ healthy(x)) ∧
(∀x. industrious(x) ∧ grocer(x) ⟶ honest(x)) ∧
(∀x. cyclist(x) ⟶ industrious(x)) ∧
(∀x. ¬ healthy(x) ∧ cyclist(x) ⟶¬ honest(x)) ⟶ (∀x. grocer(x) ⟶¬ cyclist(x))› by blast
(*Runtimes for old versions of this file: Thu Jul 23 1992: loaded in 467s using iffE [on SPARC2] Mon Nov 14 1994: loaded in 144s [on SPARC10, with deepen_tac] Wed Nov 16 1994: loaded in 138s [after addition of norm_term_skip] Mon Nov 21 1994: loaded in 131s [DEPTH_FIRST suppressing repetitions]
Further runtimes on a Sun-4 Tue Mar 4 1997: loaded in 93s (version 94-7) Tue Mar 4 1997: loaded in 89s Thu Apr 3 1997: loaded in 44s--using mostly Blast_tac Thu Apr 3 1997: loaded in 96s--addition of two Halting Probs Thu Apr 3 1997: loaded in 98s--using lim-1 for all haz rules Tue Dec 2 1997: loaded in 107s--added 46; new equalSubst Fri Dec 12 1997: loaded in 91s--faster proof reconstruction Thu Dec 18 1997: loaded in 94s--two new "obvious theorems" (??)
*)
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.