Similarity of elements in large strict preorders
Content created by Fredrik Bakke.
Created on 2025-05-02.
Last modified on 2025-05-02.
module order-theory.similarity-of-elements-large-strict-preorders where
Imports
open import foundation.binary-relations open import foundation.cartesian-product-types open import foundation.conjunction open import foundation.dependent-pair-types open import foundation.equivalence-relations open import foundation.equivalences open import foundation.fundamental-theorem-of-identity-types open import foundation.identity-types open import foundation.large-binary-relations open import foundation.logical-equivalences open import foundation.propositions open import foundation.subtypes open import foundation.torsorial-type-families open import foundation.universe-levels open import order-theory.large-strict-preorders open import order-theory.similarity-of-elements-strict-preorders open import order-theory.strict-preorders
Idea
Two elements x
and y
of a
large strict preorder P
are said to
be
similar¶,
or indiscernible, if for every z : P
we have
z < x
if and only ifz < y
, andx < z
if and only ify < z
.
We refer to the first condition as similarity from below¶ and the second condition as similarity from above¶.
In informal writing we will use the notation x ≈ y
to assert that x
and y
are similar elements in a large strict preorder P
.
Definitions
Similarity from below of elements in large strict preorders
module _ {α : Level → Level} {β : Level → Level → Level} (P : Large-Strict-Preorder α β) where sim-from-below-level-Large-Strict-Preorder : {l1 l2 : Level} (l : Level) → (x : type-Large-Strict-Preorder P l1) (y : type-Large-Strict-Preorder P l2) → UU (α l ⊔ β l l1 ⊔ β l l2) sim-from-below-level-Large-Strict-Preorder l x y = (u : type-Large-Strict-Preorder P l) → le-Large-Strict-Preorder P u x ↔ le-Large-Strict-Preorder P u y sim-from-below-level-prop-Large-Strict-Preorder : {l1 l2 : Level} (l : Level) → (x : type-Large-Strict-Preorder P l1) (y : type-Large-Strict-Preorder P l2) → Prop (α l ⊔ β l l1 ⊔ β l l2) sim-from-below-level-prop-Large-Strict-Preorder l x y = Π-Prop ( type-Large-Strict-Preorder P l) ( λ u → le-prop-Large-Strict-Preorder P u x ⇔ le-prop-Large-Strict-Preorder P u y) is-prop-sim-from-below-level-Large-Strict-Preorder : {l1 l2 : Level} (l : Level) → (x : type-Large-Strict-Preorder P l1) (y : type-Large-Strict-Preorder P l2) → is-prop (sim-from-below-level-Large-Strict-Preorder l x y) is-prop-sim-from-below-level-Large-Strict-Preorder l x y = is-prop-type-Prop (sim-from-below-level-prop-Large-Strict-Preorder l x y) sim-from-below-Large-Strict-Preorder : {l1 l2 : Level} → (x : type-Large-Strict-Preorder P l1) (y : type-Large-Strict-Preorder P l2) → UUω sim-from-below-Large-Strict-Preorder x y = {l : Level} → sim-from-below-level-Large-Strict-Preorder l x y
Similarity from above of elements in large strict preorders
module _ {α : Level → Level} {β : Level → Level → Level} (P : Large-Strict-Preorder α β) where sim-from-above-level-Large-Strict-Preorder : {l1 l2 : Level} (l : Level) → (x : type-Large-Strict-Preorder P l1) (y : type-Large-Strict-Preorder P l2) → UU (α l ⊔ β l1 l ⊔ β l2 l) sim-from-above-level-Large-Strict-Preorder l x y = (u : type-Large-Strict-Preorder P l) → le-Large-Strict-Preorder P x u ↔ le-Large-Strict-Preorder P y u sim-from-above-level-prop-Large-Strict-Preorder : {l1 l2 : Level} (l : Level) → (x : type-Large-Strict-Preorder P l1) (y : type-Large-Strict-Preorder P l2) → Prop (α l ⊔ β l1 l ⊔ β l2 l) sim-from-above-level-prop-Large-Strict-Preorder l x y = Π-Prop ( type-Large-Strict-Preorder P l) ( λ u → le-prop-Large-Strict-Preorder P x u ⇔ le-prop-Large-Strict-Preorder P y u) is-prop-sim-from-above-level-Large-Strict-Preorder : {l1 l2 : Level} (l : Level) → (x : type-Large-Strict-Preorder P l1) (y : type-Large-Strict-Preorder P l2) → is-prop (sim-from-above-level-Large-Strict-Preorder l x y) is-prop-sim-from-above-level-Large-Strict-Preorder l x y = is-prop-type-Prop (sim-from-above-level-prop-Large-Strict-Preorder l x y) sim-from-above-Large-Strict-Preorder : {l1 l2 : Level} → (x : type-Large-Strict-Preorder P l1) (y : type-Large-Strict-Preorder P l2) → UUω sim-from-above-Large-Strict-Preorder x y = {l : Level} → sim-from-above-level-Large-Strict-Preorder l x y
Similarity of elements in large strict preorders
module _ {α : Level → Level} {β : Level → Level → Level} (P : Large-Strict-Preorder α β) where sim-level-Large-Strict-Preorder : {l1 l2 : Level} (l : Level) → (x : type-Large-Strict-Preorder P l1) (y : type-Large-Strict-Preorder P l2) → UU (α l ⊔ β l1 l ⊔ β l2 l ⊔ β l l1 ⊔ β l l2) sim-level-Large-Strict-Preorder l x y = ( sim-from-below-level-Large-Strict-Preorder P l x y) × ( sim-from-above-level-Large-Strict-Preorder P l x y) sim-level-prop-Large-Strict-Preorder : {l1 l2 : Level} (l : Level) → (x : type-Large-Strict-Preorder P l1) (y : type-Large-Strict-Preorder P l2) → Prop (α l ⊔ β l1 l ⊔ β l2 l ⊔ β l l1 ⊔ β l l2) sim-level-prop-Large-Strict-Preorder l x y = ( sim-from-below-level-prop-Large-Strict-Preorder P l x y) ∧ ( sim-from-above-level-prop-Large-Strict-Preorder P l x y) is-prop-sim-level-Large-Strict-Preorder : {l1 l2 : Level} (l : Level) → (x : type-Large-Strict-Preorder P l1) (y : type-Large-Strict-Preorder P l2) → is-prop (sim-level-Large-Strict-Preorder l x y) is-prop-sim-level-Large-Strict-Preorder l x y = is-prop-type-Prop (sim-level-prop-Large-Strict-Preorder l x y) record sim-Large-Strict-Preorder {l1 l2 : Level} (x : type-Large-Strict-Preorder P l1) (y : type-Large-Strict-Preorder P l2) : UUω where field sim-from-below-sim-Large-Strict-Preorder : sim-from-below-Large-Strict-Preorder P x y sim-from-above-sim-Large-Strict-Preorder : sim-from-above-Large-Strict-Preorder P x y open sim-Large-Strict-Preorder public
Properties
The similarity relation is reflexive
module _ {α : Level → Level} {β : Level → Level → Level} (P : Large-Strict-Preorder α β) where refl-sim-from-below-level-Large-Strict-Preorder : (l : Level) → is-reflexive-Large-Relation ( type-Large-Strict-Preorder P) ( sim-from-below-level-Large-Strict-Preorder P l) refl-sim-from-below-level-Large-Strict-Preorder l x u = id-iff refl-sim-from-below-Large-Strict-Preorder : {l1 : Level} (x : type-Large-Strict-Preorder P l1) → sim-from-below-Large-Strict-Preorder P x x refl-sim-from-below-Large-Strict-Preorder x u = id-iff refl-sim-from-above-level-Large-Strict-Preorder : (l : Level) → is-reflexive-Large-Relation ( type-Large-Strict-Preorder P) ( sim-from-above-level-Large-Strict-Preorder P l) refl-sim-from-above-level-Large-Strict-Preorder l x u = id-iff refl-sim-from-above-Large-Strict-Preorder : {l1 : Level} (x : type-Large-Strict-Preorder P l1) → sim-from-above-Large-Strict-Preorder P x x refl-sim-from-above-Large-Strict-Preorder x u = id-iff refl-sim-level-Large-Strict-Preorder : (l : Level) → is-reflexive-Large-Relation ( type-Large-Strict-Preorder P) ( sim-level-Large-Strict-Preorder P l) refl-sim-level-Large-Strict-Preorder l x = ( refl-sim-from-below-level-Large-Strict-Preorder l x , refl-sim-from-above-level-Large-Strict-Preorder l x) refl-sim-Large-Strict-Preorder : {l1 : Level} (x : type-Large-Strict-Preorder P l1) → sim-Large-Strict-Preorder P x x refl-sim-Large-Strict-Preorder x = λ where .sim-from-below-sim-Large-Strict-Preorder → refl-sim-from-below-Large-Strict-Preorder x .sim-from-above-sim-Large-Strict-Preorder → refl-sim-from-above-Large-Strict-Preorder x
The similarity relation is transitive
module _ {α : Level → Level} {β : Level → Level → Level} (P : Large-Strict-Preorder α β) where transitive-sim-from-below-level-Large-Strict-Preorder : (l : Level) → is-transitive-Large-Relation ( type-Large-Strict-Preorder P) ( sim-from-below-level-Large-Strict-Preorder P l) transitive-sim-from-below-level-Large-Strict-Preorder l x y z p q u = p u ∘iff q u transitive-sim-from-below-Large-Strict-Preorder : {l1 l2 l3 : Level} (x : type-Large-Strict-Preorder P l1) (y : type-Large-Strict-Preorder P l2) (z : type-Large-Strict-Preorder P l3) → sim-from-below-Large-Strict-Preorder P y z → sim-from-below-Large-Strict-Preorder P x y → sim-from-below-Large-Strict-Preorder P x z transitive-sim-from-below-Large-Strict-Preorder x y z p q u = p u ∘iff q u transitive-sim-from-above-level-Large-Strict-Preorder : (l : Level) → is-transitive-Large-Relation ( type-Large-Strict-Preorder P) ( sim-from-above-level-Large-Strict-Preorder P l) transitive-sim-from-above-level-Large-Strict-Preorder l x y z p q u = p u ∘iff q u transitive-sim-from-above-Large-Strict-Preorder : {l1 l2 l3 : Level} (x : type-Large-Strict-Preorder P l1) (y : type-Large-Strict-Preorder P l2) (z : type-Large-Strict-Preorder P l3) → sim-from-above-Large-Strict-Preorder P y z → sim-from-above-Large-Strict-Preorder P x y → sim-from-above-Large-Strict-Preorder P x z transitive-sim-from-above-Large-Strict-Preorder x y z p q u = p u ∘iff q u transitive-sim-level-Large-Strict-Preorder : (l : Level) → is-transitive-Large-Relation ( type-Large-Strict-Preorder P) ( sim-level-Large-Strict-Preorder P l) transitive-sim-level-Large-Strict-Preorder l x y z p q = ( transitive-sim-from-below-level-Large-Strict-Preorder l x y z (pr1 p) (pr1 q) , transitive-sim-from-above-level-Large-Strict-Preorder l x y z (pr2 p) (pr2 q)) transitive-sim-Large-Strict-Preorder : {l1 l2 l3 : Level} (x : type-Large-Strict-Preorder P l1) (y : type-Large-Strict-Preorder P l2) (z : type-Large-Strict-Preorder P l3) → sim-Large-Strict-Preorder P y z → sim-Large-Strict-Preorder P x y → sim-Large-Strict-Preorder P x z transitive-sim-Large-Strict-Preorder x y z p q = λ where .sim-from-below-sim-Large-Strict-Preorder → transitive-sim-from-below-Large-Strict-Preorder x y z ( sim-from-below-sim-Large-Strict-Preorder p) ( sim-from-below-sim-Large-Strict-Preorder q) .sim-from-above-sim-Large-Strict-Preorder → transitive-sim-from-above-Large-Strict-Preorder x y z ( sim-from-above-sim-Large-Strict-Preorder p) ( sim-from-above-sim-Large-Strict-Preorder q)
The similarity relation is symmetric
module _ {α : Level → Level} {β : Level → Level → Level} (P : Large-Strict-Preorder α β) where symmetric-sim-from-below-level-Large-Strict-Preorder : (l : Level) → is-symmetric-Large-Relation ( type-Large-Strict-Preorder P) ( sim-from-below-level-Large-Strict-Preorder P l) symmetric-sim-from-below-level-Large-Strict-Preorder l x y p u = inv-iff (p u) symmetric-sim-from-below-Large-Strict-Preorder : {l1 l2 : Level} (x : type-Large-Strict-Preorder P l1) (y : type-Large-Strict-Preorder P l2) → sim-from-below-Large-Strict-Preorder P x y → sim-from-below-Large-Strict-Preorder P y x symmetric-sim-from-below-Large-Strict-Preorder x y p u = inv-iff (p u) symmetric-sim-from-above-level-Large-Strict-Preorder : (l : Level) → is-symmetric-Large-Relation ( type-Large-Strict-Preorder P) ( sim-from-above-level-Large-Strict-Preorder P l) symmetric-sim-from-above-level-Large-Strict-Preorder l x y p u = inv-iff (p u) symmetric-sim-from-above-Large-Strict-Preorder : {l1 l2 : Level} (x : type-Large-Strict-Preorder P l1) (y : type-Large-Strict-Preorder P l2) → sim-from-above-Large-Strict-Preorder P x y → sim-from-above-Large-Strict-Preorder P y x symmetric-sim-from-above-Large-Strict-Preorder x y p u = inv-iff (p u) symmetric-sim-level-Large-Strict-Preorder : (l : Level) → is-symmetric-Large-Relation ( type-Large-Strict-Preorder P) ( sim-level-Large-Strict-Preorder P l) symmetric-sim-level-Large-Strict-Preorder l x y p = ( symmetric-sim-from-below-level-Large-Strict-Preorder l x y (pr1 p) , symmetric-sim-from-above-level-Large-Strict-Preorder l x y (pr2 p)) symmetric-sim-Large-Strict-Preorder : {l1 l2 : Level} (x : type-Large-Strict-Preorder P l1) (y : type-Large-Strict-Preorder P l2) → sim-Large-Strict-Preorder P x y → sim-Large-Strict-Preorder P y x symmetric-sim-Large-Strict-Preorder x y p = λ where .sim-from-below-sim-Large-Strict-Preorder → symmetric-sim-from-below-Large-Strict-Preorder x y ( sim-from-below-sim-Large-Strict-Preorder p) .sim-from-above-sim-Large-Strict-Preorder → symmetric-sim-from-above-Large-Strict-Preorder x y ( sim-from-above-sim-Large-Strict-Preorder p)
Recent changes
- 2025-05-02. Fredrik Bakke. Strict orders (#1419).