Newer
Older
From Coq Require Export Logic.StrictProp.
(** [StrictProp] is enabled by default since Coq 8.12. To make prior versions
of Coq happy we need to allow it explicitly. *)
Global Set Allow StrictProp.
Lemma unsquash (P : Prop) `{!Decision P} : Squash P → P.
Proof.
intros HP. destruct (decide P) as [?|HnotP]; [assumption|].
assert sEmpty as []. destruct HP. destruct HnotP; assumption.
Qed.
Definition SIs_true (b : bool) : SProp := Squash (Is_true b).
Lemma SIs_true_intro b : Is_true b → SIs_true b.
Proof. apply squash. Qed.
Lemma SIs_true_elim b : SIs_true b → Is_true b.
Proof. apply (unsquash _). Qed.