Library Waterproof.Libs.Logic.ConstructiveLogic
ClassicalEpsilon allows us to lift an uninformative or to an informative or.
Lemma make_sumbool_uninformative_1 : forall P Q : Prop, {P} + {Q} -> P \/ Q.
Proof.
intros P Q H.
destruct H.
- left.
exact p.
- right.
exact q.
Qed.
Lemma make_sumbool_uninformative_2 : forall P Q : Prop, {Q} + {P} -> P \/ Q.
Proof.
intros P Q H.
destruct H.
- right.
exact q.
- left.
exact p.
Qed.
Lemma make_sumtriad_uninformative_1 : forall P Q R: Prop, {P} + {Q} + {R} -> P \/ Q \/ R.
Proof.
intros P Q R H.
destruct H as [H1 | H2].
- destruct H1.
* left.
exact p.
* right.
left.
exact q.
- right.
right.
exact H2.
Qed.
Lemma make_sumtriad_uninformative_2 : forall P Q R: Prop, {P} + {R} + {Q} -> P \/ Q \/ R.
Proof.
intros P Q R H.
destruct H as [H1 | r].
- destruct H1 as [p | q].
* left.
exact p.
* right.
right.
exact q.
- right.
left.
exact r.
Qed.
Lemma make_sumtriad_uninformative_3 : forall P Q R: Prop, {Q} + {P} + {R} -> P \/ Q \/ R.
Proof.
intros P Q R H.
destruct H as [H1 | r].
- destruct H1.
* right.
left.
exact q.
* left.
exact p.
- right.
right.
exact r.
Qed.
Lemma make_sumtriad_uninformative_4 : forall P Q R: Prop, {Q} + {R} + {P} -> P \/ Q \/ R.
Proof.
intros P Q R H.
destruct H as [H1 | p].
- destruct H1 as [q | r].
* right.
left.
exact q.
* right.
right.
exact r.
- left.
exact p.
Qed.
Lemma make_sumtriad_uninformative_5 : forall P Q R: Prop, {R} + {P} + {Q} -> P \/ Q \/ R.
Proof.
intros P Q R H.
destruct H as [H1 | q].
- destruct H1 as [r | p].
* right.
right.
exact r.
* left.
exact p.
- right.
left.
exact q.
Qed.
Lemma make_sumtriad_uninformative_6 : forall P Q R: Prop, {R} + {Q} + {P} -> P \/ Q \/ R.
Proof.
intros P Q R H.
destruct H as [H1 | p].
- destruct H1 as [r | q].
* right.
right.
exact r.
* right.
left.
exact q.
- left.
exact p.
Qed.