📥 Download raw
{-# OPTIONS --cubical-compatible #-}
module Padova2025.ProvingBasics.Equality.Base where

Definition

In blackboard mathematics, “x = y” is an assertion, a statement. For instance, this assertion might be true, or it might be false. In the Agda community, x ≡ y is a type—the type of witnesses that x and y are equal. For instance, this type could be inhabited, or it could be empty.

If in blackboard mathematics we would prove that x = y, in Agda we exhibit a value of type x ≡ y.

The following three lines set up these types:

infix 4 _≡_
data _≡_ {X : Set} : X → X → Set where
  refl : {a : X} → a ≡ a

The basic equality symbol = is used in Agda only for definitions. For formulating assumptions or results involing equality, we use .

For applications in some later parts of Let’s play Agda, we will not adopt the preceding code as our official definition of equality, even though it would work just fine for almost all of our developments. The problem with the definition above is that it only introduces equality types for small types X, i.e. those which live in Set. But sometimes we would also like to refer to equality between values of larger types, living in Set₁, Set₂ or beyond.

open import Agda.Primitive

infix 4 _≡_
data _≡_ { : Level} {X : Set } : X  X  Set  where
  refl : {a : X}  a  a