Require Import Arith. Require Import List. Theorem apply_example2: forall (A:Prop), (forall (B:Prop), B -> A) -> A. Proof. intros. apply H with (B := True). exact I. (* apply I, reflexivity also work *) Qed. Theorem search_example: forall (n:nat), 0 < n -> n < n+n. Proof. intros. Search nat. Search (_ < _ + _). Abort. Print "+". Print "<". Print "<=". Theorem and_example: forall (A B:Prop), A /\ B -> B /\ A. Proof. intros. destruct H. split. assumption. assumption. Qed. Print "/\". Print "\/". Theorem or_example: forall (A B:Prop), A \/ B -> B \/ A. Proof. intros. destruct H. right. assumption. left. assumption. Qed. Theorem exists_example: forall (f:nat->nat), (exists n, f(n)=0) -> (exists n, f(n)+n=n). Proof. intros. destruct H. exists x. rewrite H. reflexivity. Qed. Theorem specialize_example: forall (A:Prop), (forall (B:Prop), B -> A) -> A. Proof. intros. specialize H with (B := True). apply H. reflexivity. Qed. Print True. Print eq. Print False.