Move the lattice etc. instances into Lattice.Map
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
This commit is contained in:
69
Lattice.agda
69
Lattice.agda
@@ -215,48 +215,6 @@ module IsSemilatticeInstances where
|
||||
)
|
||||
}
|
||||
|
||||
module ForMap {a} {A B : Set a}
|
||||
(≡-dec-A : Decidable (_≡_ {a} {A}))
|
||||
(_≈₂_ : B → B → Set a)
|
||||
(_⊔₂_ : B → B → B)
|
||||
(sB : IsSemilattice B _≈₂_ _⊔₂_) where
|
||||
|
||||
open import Lattice.Map A B ≡-dec-A
|
||||
open IsSemilattice sB renaming
|
||||
( ≈-refl to ≈₂-refl; ≈-sym to ≈₂-sym; ≈-⊔-cong to ≈₂-⊔₂-cong
|
||||
; ⊔-assoc to ⊔₂-assoc; ⊔-comm to ⊔₂-comm; ⊔-idemp to ⊔₂-idemp
|
||||
)
|
||||
|
||||
module MapEquiv = IsEquivalenceInstances.ForMap A B ≡-dec-A _≈₂_ (IsSemilattice.≈-equiv sB)
|
||||
open MapEquiv using (_≈_) public
|
||||
|
||||
infixl 20 _⊔_
|
||||
infixl 20 _⊓_
|
||||
|
||||
_⊔_ : Map → Map → Map
|
||||
m₁ ⊔ m₂ = union _⊔₂_ m₁ m₂
|
||||
|
||||
_⊓_ : Map → Map → Map
|
||||
m₁ ⊓ m₂ = intersect _⊔₂_ m₁ m₂
|
||||
|
||||
MapIsUnionSemilattice : IsSemilattice Map _≈_ _⊔_
|
||||
MapIsUnionSemilattice = record
|
||||
{ ≈-equiv = MapEquiv.LiftEquivalence
|
||||
; ≈-⊔-cong = λ {m₁} {m₂} {m₃} {m₄} → union-cong _≈₂_ _⊔₂_ ≈₂-⊔₂-cong {m₁} {m₂} {m₃} {m₄}
|
||||
; ⊔-assoc = union-assoc _≈₂_ ≈₂-refl ≈₂-sym _⊔₂_ ⊔₂-assoc
|
||||
; ⊔-comm = union-comm _≈₂_ ≈₂-refl ≈₂-sym _⊔₂_ ⊔₂-comm
|
||||
; ⊔-idemp = union-idemp _≈₂_ ≈₂-refl ≈₂-sym _⊔₂_ ⊔₂-idemp
|
||||
}
|
||||
|
||||
MapIsIntersectSemilattice : IsSemilattice Map _≈_ _⊓_
|
||||
MapIsIntersectSemilattice = record
|
||||
{ ≈-equiv = MapEquiv.LiftEquivalence
|
||||
; ≈-⊔-cong = λ {m₁} {m₂} {m₃} {m₄} → intersect-cong _≈₂_ _⊔₂_ ≈₂-⊔₂-cong {m₁} {m₂} {m₃} {m₄}
|
||||
; ⊔-assoc = intersect-assoc _≈₂_ ≈₂-refl ≈₂-sym _⊔₂_ ⊔₂-assoc
|
||||
; ⊔-comm = intersect-comm _≈₂_ ≈₂-refl ≈₂-sym _⊔₂_ ⊔₂-comm
|
||||
; ⊔-idemp = intersect-idemp _≈₂_ ≈₂-refl ≈₂-sym _⊔₂_ ⊔₂-idemp
|
||||
}
|
||||
|
||||
module IsLatticeInstances where
|
||||
module ForNat where
|
||||
open Nat
|
||||
@@ -329,33 +287,6 @@ module IsLatticeInstances where
|
||||
)
|
||||
}
|
||||
|
||||
module ForMap {a} {A B : Set a}
|
||||
(≡-dec-A : Decidable (_≡_ {a} {A}))
|
||||
(_≈₂_ : B → B → Set a)
|
||||
(_⊔₂_ : B → B → B)
|
||||
(_⊓₂_ : B → B → B)
|
||||
(lB : IsLattice B _≈₂_ _⊔₂_ _⊓₂_) where
|
||||
|
||||
open import Lattice.Map A B ≡-dec-A
|
||||
open IsLattice lB renaming
|
||||
( ≈-refl to ≈₂-refl; ≈-sym to ≈₂-sym
|
||||
; ⊔-idemp to ⊔₂-idemp; ⊓-idemp to ⊓₂-idemp
|
||||
; absorb-⊔-⊓ to absorb-⊔₂-⊓₂; absorb-⊓-⊔ to absorb-⊓₂-⊔₂
|
||||
)
|
||||
|
||||
module MapJoin = IsSemilatticeInstances.ForMap ≡-dec-A _≈₂_ _⊔₂_ (IsLattice.joinSemilattice lB)
|
||||
open MapJoin using (_⊔_; _≈_) public
|
||||
|
||||
module MapMeet = IsSemilatticeInstances.ForMap ≡-dec-A _≈₂_ _⊓₂_ (IsLattice.meetSemilattice lB)
|
||||
open MapMeet using (_⊓_) public
|
||||
|
||||
MapIsLattice : IsLattice Map _≈_ _⊔_ _⊓_
|
||||
MapIsLattice = record
|
||||
{ joinSemilattice = MapJoin.MapIsUnionSemilattice
|
||||
; meetSemilattice = MapMeet.MapIsIntersectSemilattice
|
||||
; absorb-⊔-⊓ = union-intersect-absorb _≈₂_ ≈₂-refl ≈₂-sym _⊔₂_ _⊓₂_ ⊔₂-idemp ⊓₂-idemp absorb-⊔₂-⊓₂ absorb-⊓₂-⊔₂
|
||||
; absorb-⊓-⊔ = intersect-union-absorb _≈₂_ ≈₂-refl ≈₂-sym _⊔₂_ _⊓₂_ ⊔₂-idemp ⊓₂-idemp absorb-⊔₂-⊓₂ absorb-⊓₂-⊔₂
|
||||
}
|
||||
|
||||
module IsFiniteHeightLatticeInstances where
|
||||
module ForProd {a} {A B : Set a}
|
||||
|
||||
Reference in New Issue
Block a user