Make 'isLattice' for simple types be an instance
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
This commit is contained in:
@@ -45,14 +45,15 @@ tt ⊓ tt = tt
|
||||
⊔-idemp : (x : ⊤) → (x ⊔ x) ≈ x
|
||||
⊔-idemp tt = Eq.refl
|
||||
|
||||
isJoinSemilattice : IsSemilattice ⊤ _≈_ _⊔_
|
||||
isJoinSemilattice = record
|
||||
{ ≈-equiv = ≈-equiv
|
||||
; ≈-⊔-cong = ≈-⊔-cong
|
||||
; ⊔-assoc = ⊔-assoc
|
||||
; ⊔-comm = ⊔-comm
|
||||
; ⊔-idemp = ⊔-idemp
|
||||
}
|
||||
instance
|
||||
isJoinSemilattice : IsSemilattice ⊤ _≈_ _⊔_
|
||||
isJoinSemilattice = record
|
||||
{ ≈-equiv = ≈-equiv
|
||||
; ≈-⊔-cong = ≈-⊔-cong
|
||||
; ⊔-assoc = ⊔-assoc
|
||||
; ⊔-comm = ⊔-comm
|
||||
; ⊔-idemp = ⊔-idemp
|
||||
}
|
||||
|
||||
≈-⊓-cong : ∀ {ab₁ ab₂ ab₃ ab₄} → ab₁ ≈ ab₂ → ab₃ ≈ ab₄ → (ab₁ ⊓ ab₃) ≈ (ab₂ ⊓ ab₄)
|
||||
≈-⊓-cong {tt} {tt} {tt} {tt} _ _ = Eq.refl
|
||||
@@ -66,36 +67,32 @@ isJoinSemilattice = record
|
||||
⊓-idemp : (x : ⊤) → (x ⊓ x) ≈ x
|
||||
⊓-idemp tt = Eq.refl
|
||||
|
||||
isMeetSemilattice : IsSemilattice ⊤ _≈_ _⊓_
|
||||
isMeetSemilattice = record
|
||||
{ ≈-equiv = ≈-equiv
|
||||
; ≈-⊔-cong = ≈-⊓-cong
|
||||
; ⊔-assoc = ⊓-assoc
|
||||
; ⊔-comm = ⊓-comm
|
||||
; ⊔-idemp = ⊓-idemp
|
||||
}
|
||||
instance
|
||||
isMeetSemilattice : IsSemilattice ⊤ _≈_ _⊓_
|
||||
isMeetSemilattice = record
|
||||
{ ≈-equiv = ≈-equiv
|
||||
; ≈-⊔-cong = ≈-⊓-cong
|
||||
; ⊔-assoc = ⊓-assoc
|
||||
; ⊔-comm = ⊓-comm
|
||||
; ⊔-idemp = ⊓-idemp
|
||||
}
|
||||
|
||||
absorb-⊔-⊓ : (x y : ⊤) → (x ⊔ (x ⊓ y)) ≈ x
|
||||
absorb-⊔-⊓ tt tt = Eq.refl
|
||||
instance
|
||||
isLattice : IsLattice ⊤ _≈_ _⊔_ _⊓_
|
||||
isLattice = record
|
||||
{ joinSemilattice = isJoinSemilattice
|
||||
; meetSemilattice = isMeetSemilattice
|
||||
; absorb-⊔-⊓ = λ { tt tt → Eq.refl }
|
||||
; absorb-⊓-⊔ = λ { tt tt → Eq.refl }
|
||||
}
|
||||
|
||||
absorb-⊓-⊔ : (x y : ⊤) → (x ⊓ (x ⊔ y)) ≈ x
|
||||
absorb-⊓-⊔ tt tt = Eq.refl
|
||||
|
||||
isLattice : IsLattice ⊤ _≈_ _⊔_ _⊓_
|
||||
isLattice = record
|
||||
{ joinSemilattice = isJoinSemilattice
|
||||
; meetSemilattice = isMeetSemilattice
|
||||
; absorb-⊔-⊓ = absorb-⊔-⊓
|
||||
; absorb-⊓-⊔ = absorb-⊓-⊔
|
||||
}
|
||||
|
||||
lattice : Lattice ⊤
|
||||
lattice = record
|
||||
{ _≈_ = _≈_
|
||||
; _⊔_ = _⊔_
|
||||
; _⊓_ = _⊓_
|
||||
; isLattice = isLattice
|
||||
}
|
||||
lattice : Lattice ⊤
|
||||
lattice = record
|
||||
{ _≈_ = _≈_
|
||||
; _⊔_ = _⊔_
|
||||
; _⊓_ = _⊓_
|
||||
; isLattice = isLattice
|
||||
}
|
||||
|
||||
open Chain _≈_ ≈-equiv (IsLattice._≺_ isLattice) (IsLattice.≺-cong isLattice)
|
||||
|
||||
@@ -107,25 +104,26 @@ private
|
||||
isLongest {tt} {tt} (step (tt⊔tt≈tt , tt̷≈tt) _ _) = ⊥-elim (tt̷≈tt refl)
|
||||
isLongest (done _) = z≤n
|
||||
|
||||
fixedHeight : IsLattice.FixedHeight isLattice 0
|
||||
fixedHeight = record
|
||||
{ ⊥ = tt
|
||||
; ⊤ = tt
|
||||
; longestChain = longestChain
|
||||
; bounded = isLongest
|
||||
}
|
||||
instance
|
||||
fixedHeight : IsLattice.FixedHeight isLattice 0
|
||||
fixedHeight = record
|
||||
{ ⊥ = tt
|
||||
; ⊤ = tt
|
||||
; longestChain = longestChain
|
||||
; bounded = isLongest
|
||||
}
|
||||
|
||||
isFiniteHeightLattice : IsFiniteHeightLattice ⊤ 0 _≈_ _⊔_ _⊓_
|
||||
isFiniteHeightLattice = record
|
||||
{ isLattice = isLattice
|
||||
; fixedHeight = fixedHeight
|
||||
}
|
||||
isFiniteHeightLattice : IsFiniteHeightLattice ⊤ 0 _≈_ _⊔_ _⊓_
|
||||
isFiniteHeightLattice = record
|
||||
{ isLattice = isLattice
|
||||
; fixedHeight = fixedHeight
|
||||
}
|
||||
|
||||
finiteHeightLattice : FiniteHeightLattice ⊤
|
||||
finiteHeightLattice = record
|
||||
{ height = 0
|
||||
; _≈_ = _≈_
|
||||
; _⊔_ = _⊔_
|
||||
; _⊓_ = _⊓_
|
||||
; isFiniteHeightLattice = isFiniteHeightLattice
|
||||
}
|
||||
finiteHeightLattice : FiniteHeightLattice ⊤
|
||||
finiteHeightLattice = record
|
||||
{ height = 0
|
||||
; _≈_ = _≈_
|
||||
; _⊔_ = _⊔_
|
||||
; _⊓_ = _⊓_
|
||||
; isFiniteHeightLattice = isFiniteHeightLattice
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user