Library Fairisle.Libraries.Lib_Basis.Lib_Prop



Inductive or3 (A B C : Prop) : Set :=
  | or3_Left : Aor3 A B C
  | or3_Middle : Bor3 A B C
  | or3_Right : Cor3 A B C.

Lemma sym_and : A B : Prop, A BB A.
intros A B H; elim H; split; auto.
Qed.
Hint Immediate sym_and.

Lemma sym_or : A B : Prop, A BB A.
simple induction 1; auto.
Qed.
Hint Immediate sym_or.

Lemma no_and_l : A B : Prop, ¬ A¬ (A B).
unfold not in |- ×.
intros A B H G; apply H.
elim G; auto.
Qed.
Hint Immediate no_and_l.

Lemma no_and_r : A B : Prop, ¬ B¬ (A B).
unfold not in |- ×.
intros A B H G; apply H.
elim G; auto.
Qed.
Hint Immediate no_and_r.

Lemma no_or : A B : Prop, ¬ AB AB.
intros A B H G; elim G; auto.
intro; absurd A; auto.
Qed.

Lemma no_or_inv : A B : Prop, ¬ AA BB.
intros A B H G; elim G; auto.
intro; absurd A; auto.
Qed.

Lemma no_or_and : A B C D : Prop, ¬ CA B C DA B.
intros.
apply no_or with (C D); auto.
Qed.

Lemma no_or_and_inv :
  A B C D : Prop, ¬ DC D A BA B.
intros.
apply no_or_inv with (C D); auto.
Qed.

Lemma no_no_A : A : Prop, A¬ ¬ A.
unfold not in |- *; auto.
Qed.
Hint Immediate no_no_A.

Lemma impl_no_no : A B : Prop, (AB) → ¬ B¬ A.
unfold not in |- *; auto.
Qed.

Lemma no_or_r : A B : Prop, ¬ AA BB.
intros A B not_A A_or_B.
elim A_or_B; auto.
intro; absurd A; auto.
Qed.

Lemma no_or_l : A B : Prop, ¬ BA BA.
intros A B not_A A_or_B.
elim A_or_B; auto.
intro; absurd B; auto.
Qed.