open import 1Lab.Path.IdentitySystem open import 1Lab.Path open import 1Lab.Type open import Data.Reflection.Meta open import Data.Reflection.Name open import Data.String.Base open import Data.Float.Base open import Data.Char.Base open import Data.Word.Base open import Data.Dec.Base open import Data.Nat.Base open import Data.Id.Base module Data.Reflection.Literal where data Literal : Type where nat : (n : Nat) → Literal word64 : (n : Word64) → Literal float : (x : Float) → Literal char : (c : Char) → Literal string : (s : String) → Literal name : (x : Name) → Literal meta : (x : Meta) → Literal {-# BUILTIN AGDALITERAL Literal #-} {-# BUILTIN AGDALITNAT nat #-} {-# BUILTIN AGDALITWORD64 word64 #-} {-# BUILTIN AGDALITFLOAT float #-} {-# BUILTIN AGDALITCHAR char #-} {-# BUILTIN AGDALITSTRING string #-} {-# BUILTIN AGDALITQNAME name #-} {-# BUILTIN AGDALITMETA meta #-} instance Discrete-Literal : Discrete Literal Discrete-Literal = Discreteᵢ→discrete λ where (nat n) (nat n₁) → case n ≡ᵢ? n₁ of λ where (yes reflᵢ) → yes reflᵢ (no ¬p) → no λ { reflᵢ → ¬p reflᵢ } (word64 n) (word64 n₁) → case n ≡ᵢ? n₁ of λ where (yes reflᵢ) → yes reflᵢ (no ¬p) → no λ { reflᵢ → ¬p reflᵢ } (float x) (float x₁) → case x ≡ᵢ? x₁ of λ where (yes reflᵢ) → yes reflᵢ (no ¬p) → no λ { reflᵢ → ¬p reflᵢ } (char c) (char c₁) → case c ≡ᵢ? c₁ of λ where (yes reflᵢ) → yes reflᵢ (no ¬p) → no λ { reflᵢ → ¬p reflᵢ } (string s) (string s₁) → case s ≡ᵢ? s₁ of λ where (yes reflᵢ) → yes reflᵢ (no ¬p) → no λ { reflᵢ → ¬p reflᵢ } (name x) (name x₁) → case x ≡ᵢ? x₁ of λ where (yes reflᵢ) → yes reflᵢ (no ¬p) → no λ { reflᵢ → ¬p reflᵢ } (meta x) (meta x₁) → case x ≡ᵢ? x₁ of λ where (yes reflᵢ) → yes reflᵢ (no ¬p) → no λ { reflᵢ → ¬p reflᵢ } (nat n) (word64 n₁) → no (λ ()) (nat n) (float x) → no (λ ()) (nat n) (char c) → no (λ ()) (nat n) (string s) → no (λ ()) (nat n) (name x) → no (λ ()) (nat n) (meta x) → no (λ ()) (word64 n) (nat n₁) → no (λ ()) (word64 n) (float x) → no (λ ()) (word64 n) (char c) → no (λ ()) (word64 n) (string s) → no (λ ()) (word64 n) (name x) → no (λ ()) (word64 n) (meta x) → no (λ ()) (float x) (nat n) → no (λ ()) (float x) (word64 n) → no (λ ()) (float x) (char c) → no (λ ()) (float x) (string s) → no (λ ()) (float x) (name x₁) → no (λ ()) (float x) (meta x₁) → no (λ ()) (char c) (nat n) → no (λ ()) (char c) (word64 n) → no (λ ()) (char c) (float x) → no (λ ()) (char c) (string s) → no (λ ()) (char c) (name x) → no (λ ()) (char c) (meta x) → no (λ ()) (string s) (nat n) → no (λ ()) (string s) (word64 n) → no (λ ()) (string s) (float x) → no (λ ()) (string s) (char c) → no (λ ()) (string s) (name x) → no (λ ()) (string s) (meta x) → no (λ ()) (name x) (nat n) → no (λ ()) (name x) (word64 n) → no (λ ()) (name x) (float x₁) → no (λ ()) (name x) (char c) → no (λ ()) (name x) (string s) → no (λ ()) (name x) (meta x₁) → no (λ ()) (meta x) (nat n) → no (λ ()) (meta x) (word64 n) → no (λ ()) (meta x) (float x₁) → no (λ ()) (meta x) (char c) → no (λ ()) (meta x) (string s) → no (λ ()) (meta x) (name x₁) → no (λ ())