This commit is contained in:
wadler 2018-10-02 12:49:58 +01:00
commit f777c60c21
3 changed files with 6 additions and 7 deletions

View file

@ -528,7 +528,7 @@ and instead we write `_≐_ {A} x y` to provide access to the implicit
parameter `A` which appears on the right-hand side. parameter `A` which appears on the right-hand side.
This is our first use of _levels_. We cannot assign `Set` the type This is our first use of _levels_. We cannot assign `Set` the type
`Set`, since this would lead to contradictions such as Russel's `Set`, since this would lead to contradictions such as Russell's
Paradox and Girard's Paradox. Instead, there is a hierarchy of types, Paradox and Girard's Paradox. Instead, there is a hierarchy of types,
where `Set : Set₁`, `Set₁ : Set₂`, and so on. In fact, `Set` itself where `Set : Set₁`, `Set₁ : Set₂`, and so on. In fact, `Set` itself
is just an abbreviation for `Set₀`. Since the equation defining `_≐_` is just an abbreviation for `Set₀`. Since the equation defining `_≐_`

View file

@ -38,19 +38,19 @@ open import Data.Nat using (; zero; suc; _+_; _*_; _∸_)
Operators pop up all the time, and mathematicians have agreed Operators pop up all the time, and mathematicians have agreed
on names for some of the most common properties. on names for some of the most common properties.
* _Identity_ Operator `+` has left identity `0` if `0 + n ≡ n`, and * _Identity_. Operator `+` has left identity `0` if `0 + n ≡ n`, and
right identity `0` if `n + 0 ≡ n`, for all `n`. A value that is both right identity `0` if `n + 0 ≡ n`, for all `n`. A value that is both
a left and right identity is just called an identity. Identity is also a left and right identity is just called an identity. Identity is also
sometimes called _unit_. sometimes called _unit_.
* _Associativity_ Operator `+` is associative if the location * _Associativity_. Operator `+` is associative if the location
of parentheses does not matter: `(m + n) + p ≡ m + (n + p)`, of parentheses does not matter: `(m + n) + p ≡ m + (n + p)`,
for all `m`, `n`, and `p`. for all `m`, `n`, and `p`.
* _Commutatitivity_ Operator `+` is commutative if order or * _Commutatitivity_. Operator `+` is commutative if order or
arguments does not matter: `m + n ≡ n + m`, for all `m` and `n`. arguments does not matter: `m + n ≡ n + m`, for all `m` and `n`.
* _Distributivity_ Operator `*` distributes over operator `+` from the * _Distributivity_. Operator `*` distributes over operator `+` from the
left if `(m + n) * p ≡ (m * p) + (n * p)`, for all `m`, `n`, and `p`, left if `(m + n) * p ≡ (m * p) + (n * p)`, for all `m`, `n`, and `p`,
and from the right if `m * (p + q) ≡ (m * p) + (m * q)`, for all `m`, and from the right if `m * (p + q) ≡ (m * p) + (m * q)`, for all `m`,
`p`, and `q`. `p`, and `q`.
@ -248,7 +248,7 @@ We have named the proof `+-assoc`. In Agda, identifiers can consist of
any sequence of characters not including spaces or the characters `@.(){};_`. any sequence of characters not including spaces or the characters `@.(){};_`.
Let's unpack this code. The signature states that we are Let's unpack this code. The signature states that we are
defining the identifier `+-assoc` which provide evidence for the defining the identifier `+-assoc` which provides evidence for the
proposition: proposition:
∀ (m n p : ) → (m + n) + p ≡ m + (n + p) ∀ (m n p : ) → (m + n) + p ≡ m + (n + p)

View file

@ -713,7 +713,6 @@ and back is the identity.
--------------- ---------------
to (from x) ≡ x to (from x) ≡ x
\end{code}
(Hint: For each of these, you may first need to prove related (Hint: For each of these, you may first need to prove related
properties of `One`.) properties of `One`.)