% A simple direct proof
% Induction is ruled out by specifying no induction variable.

%theorem identity : forall* {P:atm} exists {D: !^ (` P => ` P)} true.
%establish 5 {} (identity _).

%theorem curry : forall* {P:atm} {Q:atm} {R:atm}
	         exists {D: !^ ((` P & ` Q => ` R) => (` P => (` Q => ` R)))} true.
%establish 12 {} (curry _).   % OK

%theorem uncurry : forall* {P:atm} {Q:atm} {R:atm}
	           exists {D: !^ ((` P => (` Q => ` R)) => (` P & ` Q => ` R))} true.
% %establish 12 {} (uncurry _). % 12 terminates?

%theorem split : forall* {P:atm}  {Q:atm} {R:atm}
		 exists {D: !^ ((` P => ` Q & ` R) => (` P => ` Q) & (` P => ` R))} true.
% %establish 15 {} (split _).  % OK

%theorem join : forall* {P:atm}  {Q:atm} {R:atm}
		 exists {D: !^ ((` P => ` Q) & (` P => ` R) => (` P => ` Q & ` R))} true.
% %establish 12 {} (join _). % OK
