Library nijn.Prelude.Props
False is a proposition
True is a proposition
Propositions are closed under conjunction
Global Instance and_isaprop
{A B : Prop}
`{isaprop A}
`{isaprop B}
: isaprop (A ∧ B).
Proof.
intros x y.
destruct x as [a1 b1], y as [a2 b2].
rewrite (all_eq a1 a2).
rewrite (all_eq b1 b2).
reflexivity.
Qed.
{A B : Prop}
`{isaprop A}
`{isaprop B}
: isaprop (A ∧ B).
Proof.
intros x y.
destruct x as [a1 b1], y as [a2 b2].
rewrite (all_eq a1 a2).
rewrite (all_eq b1 b2).
reflexivity.
Qed.
Assuming functional extensionality, propositions are closed under dependent products
Global Instance forall_isaprop
{X : Type}
{B : X → Prop}
`{∀ (x : X), isaprop (B x)}
: isaprop (∀ (x : X), B x).
Proof.
intros f g.
apply funext.
intro x.
apply all_eq.
Qed.
{X : Type}
{B : X → Prop}
`{∀ (x : X), isaprop (B x)}
: isaprop (∀ (x : X), B x).
Proof.
intros f g.
apply funext.
intro x.
apply all_eq.
Qed.
The order on natural numbers is a proposition
Global Instance nat_le_isaprop
(n m : nat)
: isaprop (n ≤ m).
Proof.
unfold isaprop.
induction m ; intros p q.
- dependent destruction p ; dependent destruction q.
reflexivity.
- dependent destruction p ; dependent destruction q.
+ reflexivity.
+ lia.
+ lia.
+ f_equal.
exact (IHm p q).
Qed.
Global Instance nat_gt_isaprop
(n m : nat)
: isaprop (n > m)
:= _.
Global Instance nat_ge_isaprop
(n m : nat)
: isaprop (n ≥ m)
:= _.
(n m : nat)
: isaprop (n ≤ m).
Proof.
unfold isaprop.
induction m ; intros p q.
- dependent destruction p ; dependent destruction q.
reflexivity.
- dependent destruction p ; dependent destruction q.
+ reflexivity.
+ lia.
+ lia.
+ f_equal.
exact (IHm p q).
Qed.
Global Instance nat_gt_isaprop
(n m : nat)
: isaprop (n > m)
:= _.
Global Instance nat_ge_isaprop
(n m : nat)
: isaprop (n ≥ m)
:= _.