Prove that the bottom map's valyes are all bottoms
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
This commit is contained in:
parent
b78cb91f2a
commit
69d1ecebae
@ -28,6 +28,7 @@ open import Data.List.Relation.Unary.All using (All)
|
||||
open import Data.List.Relation.Unary.Any using (Any; here; there)
|
||||
open import Relation.Nullary using (¬_)
|
||||
open import Isomorphism using (IsInverseˡ; IsInverseʳ)
|
||||
open import Chain using (Height)
|
||||
|
||||
open import Lattice.Map ≡-dec-A lB
|
||||
using
|
||||
@ -104,6 +105,14 @@ module IterProdIsomorphism where
|
||||
_∈ᵐ_ : ∀ {ks : List A} → A × B → FiniteMap ks → Set
|
||||
_∈ᵐ_ {ks} = _∈_ ks
|
||||
|
||||
to-build : ∀ {b : B} {ks : List A} (uks : Unique ks) →
|
||||
let fm = to uks (IP.build b tt (length ks))
|
||||
in ∀ (k : A) (v : B) → (k , v) ∈ᵐ fm → v ≡ b
|
||||
to-build {b} {k ∷ ks'} (push _ uks') k v (here refl) = refl
|
||||
to-build {b} {k ∷ ks'} (push _ uks') k' v (there k',v∈m') =
|
||||
to-build {ks = ks'} uks' k' v k',v∈m'
|
||||
|
||||
|
||||
-- The left inverse is: from (to x) = x
|
||||
from-to-inverseˡ : ∀ {ks : List A} (uks : Unique ks) →
|
||||
IsInverseˡ (_≈ᵐ_ {ks}) (_≈ⁱᵖ_ {length ks})
|
||||
@ -407,3 +416,12 @@ module IterProdIsomorphism where
|
||||
(to-⊔-distr uks) (from-⊔-distr {ks})
|
||||
(from-to-inverseʳ uks) (from-to-inverseˡ uks)
|
||||
using (isFiniteHeightLattice; finiteHeightLattice) public
|
||||
|
||||
-- Helpful lemma: all entries of the 'bottom' map are assigned to bottom.
|
||||
|
||||
open Height (IsFiniteHeightLattice.fixedHeight isFiniteHeightLattice) using (⊥)
|
||||
|
||||
⊥-contains-bottoms : ∀ {k : A} {v : B} → (k , v) ∈ᵐ ⊥ → v ≡ (Height.⊥ fhB)
|
||||
⊥-contains-bottoms {k} {v} k,v∈⊥
|
||||
rewrite IP.⊥-built (length ks) ≈₂-dec ≈ᵘ-dec h₂ 0 fhB fixedHeightᵘ =
|
||||
to-build uks k v k,v∈⊥
|
||||
|
Loading…
Reference in New Issue
Block a user