diff --git a/Analysis/Forward/Lattices.agda b/Analysis/Forward/Lattices.agda index f365c83..4bbf80b 100644 --- a/Analysis/Forward/Lattices.agda +++ b/Analysis/Forward/Lattices.agda @@ -10,7 +10,6 @@ module Analysis.Forward.Lattices open import Data.String using (String) renaming (_≟_ to _≟ˢ_) open import Data.Product using (proj₁; proj₂; _,_) -open import Data.Unit using (tt) open import Data.Sum using (inj₁; inj₂) open import Data.List using (List; _∷_; []; foldr) open import Data.List.Membership.Propositional using () renaming (_∈_ to _∈ˡ_) @@ -38,7 +37,7 @@ instance -- with keys strings. Use a bundle to avoid explicitly specifying operators. -- It's helpful to export these via 'public' since consumers tend to -- use various variable lattice operations. -module VariableValuesFiniteMap = Lattice.FiniteMap.WithKeys String L tt vars +module VariableValuesFiniteMap = Lattice.FiniteMap String L vars open VariableValuesFiniteMap using () renaming @@ -65,13 +64,13 @@ open IsLattice isLatticeᵛ ; ⊔-idemp to ⊔ᵛ-idemp ) public -open Lattice.FiniteMap.IterProdIsomorphism String L _ +open Lattice.FiniteMap.IterProdIsomorphism String L vars using () renaming ( Provenance-union to Provenance-unionᵐ ) public -open Lattice.FiniteMap.IterProdIsomorphism.WithUniqueKeysAndFixedHeight String L _ vars-Unique +open Lattice.FiniteMap.IterProdIsomorphism.WithUniqueKeysAndFixedHeight String L vars vars-Unique using () renaming ( isFiniteHeightLattice to isFiniteHeightLatticeᵛ @@ -83,7 +82,7 @@ open Lattice.FiniteMap.IterProdIsomorphism.WithUniqueKeysAndFixedHeight String L ⊥ᵛ = Chain.Height.⊥ fixedHeightᵛ -- Finally, the map we care about is (state -> (variables -> value)). Bring that in. -module StateVariablesFiniteMap = Lattice.FiniteMap.WithKeys State VariableValues tt states +module StateVariablesFiniteMap = Lattice.FiniteMap State VariableValues states open StateVariablesFiniteMap using (_[_]; []-∈; m₁≼m₂⇒m₁[ks]≼m₂[ks]; m₁≈m₂⇒k∈m₁⇒k∈km₂⇒v₁≈v₂) renaming @@ -98,7 +97,7 @@ open StateVariablesFiniteMap ; m₁≼m₂⇒m₁[k]≼m₂[k] to m₁≼m₂⇒m₁[k]ᵐ≼m₂[k]ᵐ ) public -open Lattice.FiniteMap.IterProdIsomorphism.WithUniqueKeysAndFixedHeight State VariableValues _ states-Unique +open Lattice.FiniteMap.IterProdIsomorphism.WithUniqueKeysAndFixedHeight State VariableValues states states-Unique using () renaming ( isFiniteHeightLattice to isFiniteHeightLatticeᵐ diff --git a/Lattice/FiniteMap.agda b/Lattice/FiniteMap.agda index a90e2c2..66bb5f6 100644 --- a/Lattice/FiniteMap.agda +++ b/Lattice/FiniteMap.agda @@ -9,10 +9,10 @@ module Lattice.FiniteMap (A : Set) (B : Set) {_≈₂_ : B → B → Set} {_⊔₂_ : B → B → B} {_⊓₂_ : B → B → B} {{≡-Decidable-A : IsDecidable {_} {A} _≡_}} - {{lB : IsLattice B _≈₂_ _⊔₂_ _⊓₂_}} (dummy : ⊤) where + {{lB : IsLattice B _≈₂_ _⊔₂_ _⊓₂_}} (ks : List A) where open IsLattice lB using () renaming (_≼_ to _≼₂_) -open import Lattice.Map A B dummy as Map +open import Lattice.Map A B _ as Map using ( Map ; ⊔-equal-keys @@ -74,7 +74,7 @@ open import Showable using (Showable; show) open import Isomorphism using (IsInverseˡ; IsInverseʳ) open import Chain using (Height) -module WithKeys (ks : List A) where +private module WithKeys (ks : List A) where FiniteMap : Set FiniteMap = Σ Map (λ m → Map.keys m ≡ ks) @@ -131,7 +131,7 @@ module WithKeys (ks : List A) where []-∈ : ∀ {k : A} {v : B} {ks' : List A} (fm : FiniteMap) → k ∈ˡ ks' → (k , v) ∈ fm → v ∈ˡ (fm [ ks' ]) - []-∈ {k} {v} {ks'} (m , _) k∈ks' k,v∈fm = []ᵐ-∈ m k,v∈fm k∈ks' + []-∈ {k} {v} {ks'} (m , _) k∈ks' k,v∈fm = []ᵐ-∈ m k,v∈fm k∈ks' ≈-equiv : IsEquivalence FiniteMap _≈_ ≈-equiv = record @@ -253,9 +253,8 @@ module WithKeys (ks : List A) where ... | yes k∈km₁ | no k∉km₂ = ⊥-elim (∈k-exclusive fm₁ fm₂ (k∈km₁ , k∉km₂)) ... | no k∉km₁ | yes k∈km₂ = ⊥-elim (∈k-exclusive fm₂ fm₁ (k∈km₂ , k∉km₁)) -open WithKeys public - module IterProdIsomorphism where + open WithKeys open import Data.Unit using (tt) open import Lattice.Unit using () renaming @@ -267,7 +266,7 @@ module IterProdIsomorphism where ; ≈-equiv to ≈ᵘ-equiv ; fixedHeight to fixedHeightᵘ ) - open import Lattice.IterProd B ⊤ dummy + open import Lattice.IterProd B ⊤ _ as IP using (IterProd) open IsLattice lB using () @@ -631,3 +630,5 @@ module IterProdIsomorphism where ⊥-contains-bottoms {k} {v} k,v∈⊥ rewrite IP.⊥-built {length ks} {{fhB = fixedHeightᵘ}} = to-build uks k v k,v∈⊥ + +open WithKeys ks public