------------------------------------------------------------------------
-- The Agda standard library
--
-- Bundles for metrics
------------------------------------------------------------------------
-- The contents of this module should be accessed via `Function.Metric`.
{-# OPTIONS --without-K --safe #-}
module Function.Metric.Bundles where
open import Algebra.Core using (Op₂)
open import Level using (Level; suc; _⊔_)
open import Relation.Binary.Core using (Rel)
open import Function.Metric.Structures
open import Function.Metric.Core
------------------------------------------------------------------------
-- ProtoMetric
record ProtoMetric (a i ℓ₁ ℓ₂ ℓ₃ : Level)
: Set (suc (a ⊔ i ⊔ ℓ₁ ⊔ ℓ₂ ⊔ ℓ₃)) where
field
Carrier : Set a
Image : Set i
_≈_ : Rel Carrier ℓ₁
_≈ᵢ_ : Rel Image ℓ₂
_≤_ : Rel Image ℓ₃
0# : Image
d : DistanceFunction Carrier Image
isProtoMetric : IsProtoMetric _≈_ _≈ᵢ_ _≤_ 0# d
open IsProtoMetric isProtoMetric public
------------------------------------------------------------------------
-- PreMetric
record PreMetric (a i ℓ₁ ℓ₂ ℓ₃ : Level)
: Set (suc (a ⊔ i ⊔ ℓ₁ ⊔ ℓ₂ ⊔ ℓ₃)) where
field
Carrier : Set a
Image : Set i
_≈_ : Rel Carrier ℓ₁
_≈ᵢ_ : Rel Image ℓ₂
_≤_ : Rel Image ℓ₃
0# : Image
d : DistanceFunction Carrier Image
isPreMetric : IsPreMetric _≈_ _≈ᵢ_ _≤_ 0# d
open IsPreMetric isPreMetric public
protoMetric : ProtoMetric a i ℓ₁ ℓ₂ ℓ₃
protoMetric = record
{ isProtoMetric = isProtoMetric
}
------------------------------------------------------------------------
-- QuasiSemiMetric
record QuasiSemiMetric (a i ℓ₁ ℓ₂ ℓ₃ : Level)
: Set (suc (a ⊔ i ⊔ ℓ₁ ⊔ ℓ₂ ⊔ ℓ₃)) where
field
Carrier : Set a
Image : Set i
_≈_ : Rel Carrier ℓ₁
_≈ᵢ_ : Rel Image ℓ₂
_≤_ : Rel Image ℓ₃
0# : Image
d : DistanceFunction Carrier Image
isQuasiSemiMetric : IsQuasiSemiMetric _≈_ _≈ᵢ_ _≤_ 0# d
open IsQuasiSemiMetric isQuasiSemiMetric public
preMetric : PreMetric a i ℓ₁ ℓ₂ ℓ₃
preMetric = record
{ isPreMetric = isPreMetric
}
open PreMetric preMetric public
using (protoMetric)
------------------------------------------------------------------------
-- SemiMetric
record SemiMetric (a i ℓ₁ ℓ₂ ℓ₃ : Level)
: Set (suc (a ⊔ i ⊔ ℓ₁ ⊔ ℓ₂ ⊔ ℓ₃)) where
field
Carrier : Set a
Image : Set i
_≈_ : Rel Carrier ℓ₁
_≈ᵢ_ : Rel Image ℓ₂
_≤_ : Rel Image ℓ₃
0# : Image
d : DistanceFunction Carrier Image
isSemiMetric : IsSemiMetric _≈_ _≈ᵢ_ _≤_ 0# d
open IsSemiMetric isSemiMetric public
quasiSemiMetric : QuasiSemiMetric a i ℓ₁ ℓ₂ ℓ₃
quasiSemiMetric = record
{ isQuasiSemiMetric = isQuasiSemiMetric
}
open QuasiSemiMetric quasiSemiMetric public
using (protoMetric; preMetric)
------------------------------------------------------------------------
-- GeneralMetric
-- Note that this package is not necessarily a metric in the classical
-- sense as there is no way to ensure that the _∙_ operator really
-- represents addition. See `Function.Metric.Nat` and
-- `Function.Metric.Rational` for more specialised `Metric` and
-- `UltraMetric` packages.
-- See the discussion accompanying the `IsGeneralMetric` structure for
-- more details.
record GeneralMetric (a i ℓ₁ ℓ₂ ℓ₃ : Level)
: Set (suc (a ⊔ i ⊔ ℓ₁ ⊔ ℓ₂ ⊔ ℓ₃)) where
field
Carrier : Set a
Image : Set i
_≈_ : Rel Carrier ℓ₁
_≈ᵢ_ : Rel Image ℓ₂
_≤_ : Rel Image ℓ₃
0# : Image
_∙_ : Op₂ Image
d : DistanceFunction Carrier Image
isGeneralMetric : IsGeneralMetric _≈_ _≈ᵢ_ _≤_ 0# _∙_ d
open IsGeneralMetric isGeneralMetric public
semiMetric : SemiMetric a i ℓ₁ ℓ₂ ℓ₃
semiMetric = record
{ isSemiMetric = isSemiMetric
}
open SemiMetric semiMetric public
using (protoMetric; preMetric; quasiSemiMetric)
Generated from commit 2fd14c996b195ef101dff8919e837907ca0a08aa.