Conjunction of propositions
module foundation.conjunction where
Imports
open import foundation.decidable-types open import foundation-core.cartesian-product-types open import foundation-core.decidable-propositions open import foundation-core.dependent-pair-types open import foundation-core.equivalences open import foundation-core.logical-equivalences open import foundation-core.propositions open import foundation-core.universe-levels
Idea
The conjunction of two propositions P
and Q
is the proposition that both P
and Q
hold.
Definition
conj-Prop = prod-Prop _∧_ = conj-Prop
Note: The symbol used for the conjunction _∧_
is the
logical and ∧
(agda-input: \wedge
\and
).
type-conj-Prop : {l1 l2 : Level} → Prop l1 → Prop l2 → UU (l1 ⊔ l2) type-conj-Prop P Q = type-Prop (conj-Prop P Q) abstract is-prop-type-conj-Prop : {l1 l2 : Level} (P : Prop l1) (Q : Prop l2) → is-prop (type-conj-Prop P Q) is-prop-type-conj-Prop P Q = is-prop-type-Prop (conj-Prop P Q) conj-Decidable-Prop : {l1 l2 : Level} → Decidable-Prop l1 → Decidable-Prop l2 → Decidable-Prop (l1 ⊔ l2) pr1 (conj-Decidable-Prop P Q) = type-conj-Prop (prop-Decidable-Prop P) (prop-Decidable-Prop Q) pr1 (pr2 (conj-Decidable-Prop P Q)) = is-prop-type-conj-Prop (prop-Decidable-Prop P) (prop-Decidable-Prop Q) pr2 (pr2 (conj-Decidable-Prop P Q)) = is-decidable-prod ( is-decidable-Decidable-Prop P) ( is-decidable-Decidable-Prop Q)
Properties
Introduction rule for conjunction
intro-conj-Prop : {l1 l2 : Level} (P : Prop l1) (Q : Prop l2) → type-Prop P → type-Prop Q → type-conj-Prop P Q pr1 (intro-conj-Prop P Q p q) = p pr2 (intro-conj-Prop P Q p q) = q
The universal property of conjunction
iff-universal-property-conj-Prop : {l1 l2 : Level} (P : Prop l1) (Q : Prop l2) {l3 : Level} (R : Prop l3) → (type-hom-Prop R P × type-hom-Prop R Q) ↔ type-hom-Prop R (conj-Prop P Q) pr1 (iff-universal-property-conj-Prop P Q R) (f , g) r = (f r , g r) pr1 (pr2 (iff-universal-property-conj-Prop P Q R) h) r = pr1 (h r) pr2 (pr2 (iff-universal-property-conj-Prop P Q R) h) r = pr2 (h r) equiv-universal-property-conj-Prop : {l1 l2 : Level} (P : Prop l1) (Q : Prop l2) {l3 : Level} (R : Prop l3) → (type-hom-Prop R P × type-hom-Prop R Q) ≃ type-hom-Prop R (conj-Prop P Q) equiv-universal-property-conj-Prop P Q R = equiv-iff' ( conj-Prop (hom-Prop R P) (hom-Prop R Q)) ( hom-Prop R (conj-Prop P Q)) ( iff-universal-property-conj-Prop P Q R)