diff options
Diffstat (limited to 'src/Helium/Data/Pseudocode/Properties.agda')
-rw-r--r-- | src/Helium/Data/Pseudocode/Properties.agda | 109 |
1 files changed, 0 insertions, 109 deletions
diff --git a/src/Helium/Data/Pseudocode/Properties.agda b/src/Helium/Data/Pseudocode/Properties.agda deleted file mode 100644 index d73b4dd..0000000 --- a/src/Helium/Data/Pseudocode/Properties.agda +++ /dev/null @@ -1,109 +0,0 @@ ------------------------------------------------------------------------- --- Agda Helium --- --- Basic properties of the pseudocode data types ------------------------------------------------------------------------- - -{-# OPTIONS --without-K --safe #-} - -module Helium.Data.Pseudocode.Properties where - -import Data.Nat as ℕ -open import Data.Product using (_,_; uncurry) -open import Data.Vec using ([]; _∷_) -open import Function using (_∋_) -open import Helium.Data.Pseudocode.Core -import Relation.Binary.Consequences as Consequences -open import Relation.Binary.PropositionalEquality using (_≡_; refl; cong; cong₂) -open import Relation.Nullary using (Dec; yes; no) -open import Relation.Nullary.Decidable.Core using (map′) -open import Relation.Nullary.Product using (_×-dec_) - -infixl 4 _≟ᵗ_ _≟ˢ_ - -_≟ᵗ_ : ∀ (t t′ : Type) → Dec (t ≡ t′) -bool ≟ᵗ bool = yes refl -bool ≟ᵗ int = no (λ ()) -bool ≟ᵗ fin n = no (λ ()) -bool ≟ᵗ real = no (λ ()) -bool ≟ᵗ bit = no (λ ()) -bool ≟ᵗ bits n = no (λ ()) -bool ≟ᵗ tuple n x = no (λ ()) -bool ≟ᵗ array t′ n = no (λ ()) -int ≟ᵗ bool = no (λ ()) -int ≟ᵗ int = yes refl -int ≟ᵗ fin n = no (λ ()) -int ≟ᵗ real = no (λ ()) -int ≟ᵗ bit = no (λ ()) -int ≟ᵗ bits n = no (λ ()) -int ≟ᵗ tuple n x = no (λ ()) -int ≟ᵗ array t′ n = no (λ ()) -fin n ≟ᵗ bool = no (λ ()) -fin n ≟ᵗ int = no (λ ()) -fin m ≟ᵗ fin n = map′ (cong fin) (λ { refl → refl }) (m ℕ.≟ n) -fin n ≟ᵗ real = no (λ ()) -fin n ≟ᵗ bit = no (λ ()) -fin n ≟ᵗ bits n₁ = no (λ ()) -fin n ≟ᵗ tuple n₁ x = no (λ ()) -fin n ≟ᵗ array t′ n₁ = no (λ ()) -real ≟ᵗ bool = no (λ ()) -real ≟ᵗ int = no (λ ()) -real ≟ᵗ fin n = no (λ ()) -real ≟ᵗ real = yes refl -real ≟ᵗ bit = no (λ ()) -real ≟ᵗ bits n = no (λ ()) -real ≟ᵗ tuple n x = no (λ ()) -real ≟ᵗ array t′ n = no (λ ()) -bit ≟ᵗ bool = no (λ ()) -bit ≟ᵗ int = no (λ ()) -bit ≟ᵗ fin n = no (λ ()) -bit ≟ᵗ real = no (λ ()) -bit ≟ᵗ bit = yes refl -bit ≟ᵗ bits n = no (λ ()) -bit ≟ᵗ tuple n x = no (λ ()) -bit ≟ᵗ array t n = no (λ ()) -bits n ≟ᵗ bool = no (λ ()) -bits n ≟ᵗ int = no (λ ()) -bits n ≟ᵗ fin n₁ = no (λ ()) -bits n ≟ᵗ real = no (λ ()) -bits m ≟ᵗ bit = no (λ ()) -bits m ≟ᵗ bits n = map′ (cong bits) (λ { refl → refl }) (m ℕ.≟ n) -bits n ≟ᵗ tuple n₁ x = no (λ ()) -bits n ≟ᵗ array t′ n₁ = no (λ ()) -tuple n x ≟ᵗ bool = no (λ ()) -tuple n x ≟ᵗ int = no (λ ()) -tuple n x ≟ᵗ fin n₁ = no (λ ()) -tuple n x ≟ᵗ real = no (λ ()) -tuple n x ≟ᵗ bit = no (λ ()) -tuple n x ≟ᵗ bits n₁ = no (λ ()) -tuple _ [] ≟ᵗ tuple _ [] = yes refl -tuple _ [] ≟ᵗ tuple _ (y ∷ ys) = no (λ ()) -tuple _ (x ∷ xs) ≟ᵗ tuple _ [] = no (λ ()) -tuple _ (x ∷ xs) ≟ᵗ tuple _ (y ∷ ys) = map′ (λ { (refl , refl) → refl }) (λ { refl → refl , refl }) (x ≟ᵗ y ×-dec tuple _ xs ≟ᵗ tuple _ ys) -tuple n x ≟ᵗ array t′ n₁ = no (λ ()) -array t n ≟ᵗ bool = no (λ ()) -array t n ≟ᵗ int = no (λ ()) -array t n ≟ᵗ fin n₁ = no (λ ()) -array t n ≟ᵗ real = no (λ ()) -array t n ≟ᵗ bit = no (λ ()) -array t n ≟ᵗ bits n₁ = no (λ ()) -array t n ≟ᵗ tuple n₁ x = no (λ ()) -array t m ≟ᵗ array t′ n = map′ (uncurry (cong₂ array)) (λ { refl → refl , refl }) (t ≟ᵗ t′ ×-dec m ℕ.≟ n) - -_≟ˢ_ : ∀ (t t′ : Sliced) → Dec (t ≡ t′) -bits ≟ˢ bits = yes refl -bits ≟ˢ array x = no (λ ()) -array x ≟ˢ bits = no (λ ()) -array x ≟ˢ array y = map′ (cong array) (λ { refl → refl }) (x ≟ᵗ y) - -bits-injective : ∀ {m n} → (Type ∋ bits m) ≡ bits n → m ≡ n -bits-injective refl = refl - -array-injective₁ : ∀ {t t′ m n} → (Type ∋ array t m) ≡ array t′ n → t ≡ t′ -array-injective₁ refl = refl - -array-injective₂ : ∀ {t t′ m n} → (Type ∋ array t m) ≡ array t′ n → m ≡ n -array-injective₂ refl = refl - -typeEqRecomp : ∀ {t t′} → .(eq : t ≡ t′) → t ≡ t′ -typeEqRecomp = Consequences.dec⇒recomputable _≟ᵗ_ |