Parameter a b : Prop.

Lemma one :
  (a -> b) -> a -> b.
intro f.
intro x.
apply f.
exact x.
Qed.

Check one.
Print one.

(*
Lemma one' :
  (a -> b) -> a -> b.
auto.
Qed.

Check one'.
Print one'.
*)

(*
Lemma two :
  a \/ b -> b \/ a.
intro x.
elim x.
intro y.
right.
apply y.
intro z.
left.
apply z.
Qed.
*)

(*
Lemma two :
  a \/ b -> b \/ a.
intro x.
elim x.
- intro y.
  right.
  apply y.
- intro z.
  left.
  apply z.
Qed.
*)

(*
Lemma two :
  a \/ b -> b \/ a.
intro x.
destruct x as [y|z].
- right.
  apply y.
- left.
  apply z.
Qed.
*)

Lemma two :
  a \/ b -> b \/ a.
intros [y|z].
- right.
  apply y.
- left.
  apply z.
Qed.

Lemma three :
  a /\ b -> b /\ a.
intros [y z].
split.
- apply z.
- apply y.
Qed.
