This is an archived version pinned as of the submission of my master's thesis. An up-to-date version may be found online.
Names
module reflection.names where
Imports
open import foundation.booleans open import foundation.cartesian-product-types open import foundation.identity-types open import foundation.unit-type open import foundation.universe-levels open import primitives.machine-integers open import primitives.strings
Idea
The Name-Agda
type represents quoted names, i.e. they are an abstract
syntactic representation of terms. Agda provides primitive functions to
manipulate them, giving them an equality and ordering. A closed term can be
converted to a quoted name by means of the quote
keyword, e.g. quote bool
.
Definition
postulate Name-Agda : UU lzero {-# BUILTIN QNAME Name-Agda #-} primitive primQNameEquality : Name-Agda → Name-Agda → bool primQNameLess : Name-Agda → Name-Agda → bool primShowQName : Name-Agda → String primQNameToWord64s : Name-Agda → Word64 × Word64 primQNameToWord64sInjective : (a b : Name-Agda) → primQNameToWord64s a = primQNameToWord64s b → a = b
Examples
_ : primQNameLess (quote bool) (quote unit) = true _ = refl _ : primShowQName (quote bool) = "foundation.booleans.bool" _ = refl