{-# OPTIONS --cubical-compatible --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
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
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
}
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)
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)
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)