# Conjunction ```agda module foundation.conjunction where ``` <details><summary>Imports</summary> ```agda open import foundation.decidable-types open import foundation.dependent-pair-types open import foundation.logical-equivalences open import foundation.propositional-truncations open import foundation.universal-property-cartesian-product-types open import foundation.universe-levels open import foundation-core.cartesian-product-types open import foundation-core.decidable-propositions open import foundation-core.equivalences open import foundation-core.function-types open import foundation-core.propositions ``` </details> ## Idea The {{#concept "conjunction" Disambiguation="of propositions" WDID=Q191081 WD="logical conjunction" Agda=conjunction-Prop}} `P ∧ Q` of two [propositions](foundation-core.propositions.md) `P` and `Q` is the proposition that both `P` and `Q` hold and is thus defined by the [cartesian product](foundation-core.cartesian-product-types.md) of their underlying types ```text P ∧ Q := P × Q ``` The conjunction of two propositions satisfies the universal property of the [meet](order-theory.greatest-lower-bounds-large-posets.md) in the [locale of propositions](foundation.large-locale-of-propositions.md). This means that any span of propositions over `P` and `Q` factor (uniquely) through the conjunction ```text R / ∶ \ / ∶ \ ∨ ∨ ∨ P <--- P ∧ Q ---> Q. ``` In other words, we have a [logical equivalence](foundation.logical-equivalences.md) ```text (R → P) ∧ (R → Q) ↔ (R → P ∧ Q) ``` for every proposition `R`. In fact, `R` can be any type. The {{#concept "recursion principle" Disambiguation"of the conjunction of propositions" Agda=elimination-principle-conjunction-Prop}} of the conjunction of propositions states that to define a function `P ∧ Q → R` into a proposition `R`, or indeed any type, is equivalent to defining a function `P → Q → R`. ## Definitions ### The conjunction ```agda module _ {l1 l2 : Level} (P : Prop l1) (Q : Prop l2) where conjunction-Prop : Prop (l1 ⊔ l2) conjunction-Prop = product-Prop P Q type-conjunction-Prop : UU (l1 ⊔ l2) type-conjunction-Prop = type-Prop conjunction-Prop is-prop-conjunction-Prop : is-prop type-conjunction-Prop is-prop-conjunction-Prop = is-prop-type-Prop conjunction-Prop infixr 15 _∧_ _∧_ : Prop (l1 ⊔ l2) _∧_ = conjunction-Prop ``` **Note**: The symbol used for the conjunction `_∧_` is the [logical and](https://codepoints.net/U+2227) `∧` (agda-input: `\wedge` or `\and`). ### The conjunction of decidable propositions ```agda module _ {l1 l2 : Level} (P : Decidable-Prop l1) (Q : Decidable-Prop l2) where is-decidable-conjunction-Decidable-Prop : is-decidable ( type-conjunction-Prop (prop-Decidable-Prop P) (prop-Decidable-Prop Q)) is-decidable-conjunction-Decidable-Prop = is-decidable-product ( is-decidable-Decidable-Prop P) ( is-decidable-Decidable-Prop Q) conjunction-Decidable-Prop : Decidable-Prop (l1 ⊔ l2) conjunction-Decidable-Prop = ( type-conjunction-Prop (prop-Decidable-Prop P) (prop-Decidable-Prop Q) , is-prop-conjunction-Prop (prop-Decidable-Prop P) (prop-Decidable-Prop Q) , is-decidable-conjunction-Decidable-Prop) ``` ### The introduction rule and projections for the conjunction of propositions While we define the introduction rule and projections for the conjunction below, we advice users to use the standard pairing and projection functions for the cartesian product types: `pair`, `pr1` and `pr2`. ```agda module _ {l1 l2 : Level} (P : Prop l1) (Q : Prop l2) where intro-conjunction-Prop : type-Prop P → type-Prop Q → type-conjunction-Prop P Q intro-conjunction-Prop = pair pr1-conjunction-Prop : type-conjunction-Prop P Q → type-Prop P pr1-conjunction-Prop = pr1 pr2-conjunction-Prop : type-conjunction-Prop P Q → type-Prop Q pr2-conjunction-Prop = pr2 ``` ### The elimination principle of the conjunction ```agda module _ {l1 l2 : Level} (P : Prop l1) (Q : Prop l2) where ev-conjunction-Prop : {l : Level} (R : Prop l) → type-Prop (((P ∧ Q) ⇒ R) ⇒ P ⇒ Q ⇒ R) ev-conjunction-Prop R = ev-pair elimination-principle-conjunction-Prop : UUω elimination-principle-conjunction-Prop = {l : Level} (R : Prop l) → has-converse (ev-conjunction-Prop R) ``` ## Properties ### The conjunction satisfies the recursion principle of the conjunction ```agda module _ {l1 l2 : Level} (P : Prop l1) (Q : Prop l2) where elim-conjunction-Prop : elimination-principle-conjunction-Prop P Q elim-conjunction-Prop R f (p , q) = f p q ``` ### The conjunction is the meet in the locale of propositions ```agda module _ {l1 l2 l3 : Level} (P : Prop l1) (Q : Prop l2) (C : UU l3) where map-distributive-conjunction-Prop : type-conjunction-Prop (function-Prop C P) (function-Prop C Q) → C → type-conjunction-Prop P Q map-distributive-conjunction-Prop (f , g) y = (f y , g y) map-inv-distributive-conjunction-Prop : (C → type-conjunction-Prop P Q) → type-conjunction-Prop (function-Prop C P) (function-Prop C Q) map-inv-distributive-conjunction-Prop f = (pr1 ∘ f , pr2 ∘ f) is-equiv-map-distributive-conjunction-Prop : is-equiv map-distributive-conjunction-Prop is-equiv-map-distributive-conjunction-Prop = is-equiv-has-converse ( conjunction-Prop (function-Prop C P) (function-Prop C Q)) ( function-Prop C (conjunction-Prop P Q)) ( map-inv-distributive-conjunction-Prop) distributive-conjunction-Prop : type-conjunction-Prop (function-Prop C P) (function-Prop C Q) ≃ (C → type-conjunction-Prop P Q) distributive-conjunction-Prop = ( map-distributive-conjunction-Prop , is-equiv-map-distributive-conjunction-Prop) module _ {l1 l2 l3 : Level} (P : Prop l1) (Q : Prop l2) (R : Prop l3) where is-greatest-binary-lower-bound-conjunction-Prop : type-Prop (((R ⇒ P) ∧ (R ⇒ Q)) ⇔ (R ⇒ P ∧ Q)) is-greatest-binary-lower-bound-conjunction-Prop = ( map-distributive-conjunction-Prop P Q (type-Prop R) , map-inv-distributive-conjunction-Prop P Q (type-Prop R)) ``` ## See also - The indexed counterpart to conjunction is [universal quantification](foundation.universal-quantification.md). ## Table of files about propositional logic The following table gives an overview of basic constructions in propositional logic and related considerations. {{#include tables/propositional-logic.md}} ## External links - [logical conjunction](https://ncatlab.org/nlab/show/logical+conjunction) at $n$Lab - [Logical conjunction](https://en.wikipedia.org/wiki/Logical_conjunction) at Wikipedia