% [Sperschneider, p11] Some patients like every doctor. % No patient likes a quack. Therefore no doctor is a quack. quack: THEORY BEGIN % Non-empty set of people People: TYPE+ % Doctors and Quacks Patient, Doctor, Quack: [People -> bool] % Likes(x,y) says x likes y Likes: [ [People, People] -> bool] x, y: VAR People %------------------------------------------------------- Quack_nonthm_because_of_typo: THEOREM % no.. % Rule? (grind) % Trying repeated skolemization, instantiation, and if-lifting, % this yields 2 subgoals: % Quack_thm_typo.1 : % % {-1} Patient(x!1) % {-2} Likes(x!1, x!2) % {-3} Doctor(x!2) % {-4} (Quack(x!2)) % |------- % {1} (Quack(y!1)) % My comment (i.e. not by PVS): We are stuck! % % Rule? (postpone) % Postponing Quack_thm_typo.1. % % Quack_thm_typo.2 : % % {-1} Patient(x!1) % {-2} Likes(x!1, x!2) % {-3} Doctor(x!2) % {-4} (Quack(x!2)) % |------- % {1} Likes(x!1, y!1) % My comment (i.e. not by PVS): We are stuck! (EXISTS x: Patient(x) AND (FORALL y: Doctor(y) IMPLIES Likes(x,y))) AND (FORALL x: EXISTS y: Patient(x) AND Likes(x,y) IMPLIES not(Quack(y))) IMPLIES (FORALL x: Doctor(x) IMPLIES not(Quack(x))) %------------------------------------------------------- % Fixed typo : second EXISTS -> FORALL % (grind) does it. Quack_thm: THEOREM (EXISTS x: Patient(x) AND (FORALL y: Doctor(y) IMPLIES Likes(x,y))) AND (FORALL x: FORALL y: Patient(x) AND Likes(x,y) IMPLIES not(Quack(y))) IMPLIES (FORALL x: Doctor(x) IMPLIES not(Quack(x))) END quack