The distance between integers
Content created by Fredrik Bakke, Egbert Rijke, Jonathan Prieto-Cubides, Bryan Lu, Victor Blanchi and malarbol.
Created on 2022-01-26.
Last modified on 2024-03-28.
module elementary-number-theory.distance-integers where
Imports
open import elementary-number-theory.absolute-value-integers open import elementary-number-theory.difference-integers open import elementary-number-theory.distance-natural-numbers open import elementary-number-theory.integers open import elementary-number-theory.natural-numbers open import elementary-number-theory.nonnegative-integers open import elementary-number-theory.positive-and-negative-integers open import elementary-number-theory.positive-integers open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.coproduct-types open import foundation.identity-types
Idea
The distance function between integers measures how far two integers are apart.
Definition
dist-ℤ : ℤ → ℤ → ℕ dist-ℤ x y = abs-ℤ (x -ℤ y) ap-dist-ℤ : {x x' y y' : ℤ} → x = x' → y = y' → dist-ℤ x y = dist-ℤ x' y' ap-dist-ℤ p q = ap-binary dist-ℤ p q left-zero-law-dist-ℤ : (x : ℤ) → dist-ℤ zero-ℤ x = abs-ℤ x left-zero-law-dist-ℤ x = ap abs-ℤ (left-zero-law-diff-ℤ x) ∙ abs-neg-ℤ x right-zero-law-dist-ℤ : (x : ℤ) → dist-ℤ x zero-ℤ = abs-ℤ x right-zero-law-dist-ℤ x = ap abs-ℤ (right-zero-law-diff-ℤ x) dist-int-ℕ : (x y : ℕ) → dist-ℤ (int-ℕ x) (int-ℕ y) = dist-ℕ x y dist-int-ℕ zero-ℕ zero-ℕ = refl dist-int-ℕ zero-ℕ (succ-ℕ y) = left-zero-law-dist-ℤ (int-ℕ (succ-ℕ y)) dist-int-ℕ (succ-ℕ x) zero-ℕ = right-zero-law-dist-ℤ (int-ℕ (succ-ℕ x)) dist-int-ℕ (succ-ℕ x) (succ-ℕ y) = ( ( ap-dist-ℤ (inv (succ-int-ℕ x)) (inv (succ-int-ℕ y))) ∙ ( ap abs-ℤ (diff-succ-ℤ (int-ℕ x) (int-ℕ y)))) ∙ ( dist-int-ℕ x y) dist-abs-ℤ : (x y : ℤ) → (H : is-nonnegative-ℤ x) → (K : is-nonnegative-ℤ y) → dist-ℕ (abs-ℤ x) (abs-ℤ y) = dist-ℤ x y dist-abs-ℤ (inr (inl _)) y H K = equational-reasoning dist-ℕ 0 (abs-ℤ y) = abs-ℤ y by left-unit-law-dist-ℕ (abs-ℤ y) = dist-ℤ (zero-ℤ) y by inv (left-zero-law-dist-ℤ y) dist-abs-ℤ (inr (inr x)) (inr (inl _)) H K = equational-reasoning dist-ℕ (abs-ℤ (inr (inr x))) 0 = succ-ℕ x by right-unit-law-dist-ℕ (abs-ℤ (inr (inr x))) = dist-ℤ (inr (inr x)) zero-ℤ by inv (right-zero-law-dist-ℤ (inr (inr x))) dist-abs-ℤ (inr (inr x)) (inr (inr y)) H K = equational-reasoning dist-ℕ (succ-ℕ x) (succ-ℕ y) = dist-ℤ (int-ℕ (succ-ℕ x)) (int-ℕ (succ-ℕ y)) by inv (dist-int-ℕ (succ-ℕ x) (succ-ℕ y))
Recent changes
- 2024-03-28. malarbol and Fredrik Bakke. Refactoring positive integers (#1059).
- 2023-10-16. Fredrik Bakke. Compatibility patch for Agda 2.6.4 (#846).
- 2023-06-10. Egbert Rijke and Fredrik Bakke. Cleaning up synthetic homotopy theory (#649).
- 2023-05-22. Fredrik Bakke, Victor Blanchi, Egbert Rijke and Jonathan Prieto-Cubides. Pre-commit stuff (#627).
- 2023-05-06. Egbert Rijke. Big cleanup throughout library (#594).