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 Data.List.Relation.Unary.Any using (Any; here; there)
 | 
				
			||||||
open import Relation.Nullary using (¬_)
 | 
					open import Relation.Nullary using (¬_)
 | 
				
			||||||
open import Isomorphism using (IsInverseˡ; IsInverseʳ)
 | 
					open import Isomorphism using (IsInverseˡ; IsInverseʳ)
 | 
				
			||||||
 | 
					open import Chain using (Height)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
open import Lattice.Map ≡-dec-A lB
 | 
					open import Lattice.Map ≡-dec-A lB
 | 
				
			||||||
    using
 | 
					    using
 | 
				
			||||||
@ -104,6 +105,14 @@ module IterProdIsomorphism where
 | 
				
			|||||||
        _∈ᵐ_ : ∀ {ks : List A} → A × B → FiniteMap ks → Set
 | 
					        _∈ᵐ_ : ∀ {ks : List A} → A × B → FiniteMap ks → Set
 | 
				
			||||||
        _∈ᵐ_ {ks} = _∈_ ks
 | 
					        _∈ᵐ_ {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
 | 
					    -- The left inverse is: from (to x) = x
 | 
				
			||||||
    from-to-inverseˡ : ∀ {ks : List A} (uks : Unique ks) →
 | 
					    from-to-inverseˡ : ∀ {ks : List A} (uks : Unique ks) →
 | 
				
			||||||
                      IsInverseˡ (_≈ᵐ_ {ks}) (_≈ⁱᵖ_ {length ks})
 | 
					                      IsInverseˡ (_≈ᵐ_ {ks}) (_≈ⁱᵖ_ {length ks})
 | 
				
			||||||
@ -407,3 +416,12 @@ module IterProdIsomorphism where
 | 
				
			|||||||
            (to-⊔-distr uks) (from-⊔-distr {ks})
 | 
					            (to-⊔-distr uks) (from-⊔-distr {ks})
 | 
				
			||||||
            (from-to-inverseʳ uks) (from-to-inverseˡ uks)
 | 
					            (from-to-inverseʳ uks) (from-to-inverseˡ uks)
 | 
				
			||||||
            using (isFiniteHeightLattice; finiteHeightLattice) public
 | 
					            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