Skip to content
Snippets Groups Projects
sprop.v 691 B
Newer Older
From Coq Require Export Logic.StrictProp.
Robbert Krebbers's avatar
Robbert Krebbers committed
From stdpp Require Import decidable.
From stdpp Require Import options.

Robbert Krebbers's avatar
Robbert Krebbers committed
(** [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.