Added (practice) label to unlabeled exercises

This commit is contained in:
Reza Gharibi 2019-08-15 20:44:16 +04:30 committed by Wen Kokke
parent f20abd92eb
commit 8f27869beb
18 changed files with 62 additions and 62 deletions

View file

@ -431,7 +431,7 @@ Show sum is commutative up to isomorphism.
-- Your code goes here -- Your code goes here
``` ```
#### Exercise `⊎-assoc` #### Exercise `⊎-assoc` (practice)
Show sum is associative up to isomorphism. Show sum is associative up to isomorphism.
@ -502,7 +502,7 @@ Show empty is the left identity of sums up to isomorphism.
-- Your code goes here -- Your code goes here
``` ```
#### Exercise `⊥-identityʳ` #### Exercise `⊥-identityʳ` (practice)
Show empty is the right identity of sums up to isomorphism. Show empty is the right identity of sums up to isomorphism.
@ -742,7 +742,7 @@ distributive law, and explain how it relates to the weak version.
``` ```
#### Exercise `⊎×-implies-×⊎` #### Exercise `⊎×-implies-×⊎` (practice)
Show that a disjunct of conjuncts implies a conjunct of disjuncts: Show that a disjunct of conjuncts implies a conjunct of disjuncts:
``` ```

View file

@ -303,7 +303,7 @@ postulate
-- Your code goes here -- Your code goes here
``` ```
#### Exercise `_≡?_` #### Exercise `_≡?_` (practice)
Define a function to decide whether two naturals are equal: Define a function to decide whether two naturals are equal:
``` ```
@ -535,7 +535,7 @@ indicating that the order of the equations determines which of the
first or the second can match. This time the answer is different depending first or the second can match. This time the answer is different depending
on which matches; but either is equally valid. on which matches; but either is equally valid.
#### Exercise `erasure` #### Exercise `erasure` (practice)
Show that erasure relates corresponding boolean and decidable operations: Show that erasure relates corresponding boolean and decidable operations:
``` ```

View file

@ -71,7 +71,7 @@ distributes over another operator. A careful author will often call
out these properties---or their lack---for instance by pointing out out these properties---or their lack---for instance by pointing out
that a newly introduced operator is associative but not commutative. that a newly introduced operator is associative but not commutative.
#### Exercise `operators` {#operators} #### Exercise `operators` (practice) {#operators}
Give another example of a pair of operators that have an identity Give another example of a pair of operators that have an identity
and are associative, commutative, and distribute over one another. and are associative, commutative, and distribute over one another.
@ -900,7 +900,7 @@ for all naturals `m`, `n`, and `p`.
``` ```
#### Exercise `*-comm` {#times-comm} #### Exercise `*-comm` (practice) {#times-comm}
Show multiplication is commutative, that is, Show multiplication is commutative, that is,
@ -914,7 +914,7 @@ you will need to formulate and prove suitable lemmas.
``` ```
#### Exercise `0∸n≡0` {#zero-monus} #### Exercise `0∸n≡0` (practice) {#zero-monus}
Show Show
@ -927,7 +927,7 @@ for all naturals `n`. Did your proof require induction?
``` ```
#### Exercise `∸-|-assoc` {#monus-plus-assoc} #### Exercise `∸-|-assoc` (practice) {#monus-plus-assoc}
Show that monus associates with addition, that is, Show that monus associates with addition, that is,

View file

@ -436,7 +436,7 @@ module ≲-Reasoning where
open ≲-Reasoning open ≲-Reasoning
``` ```
#### Exercise `≃-implies-≲` #### Exercise `≃-implies-≲` (practice)
Show that every isomorphism implies an embedding. Show that every isomorphism implies an embedding.
``` ```
@ -451,7 +451,7 @@ postulate
-- Your code goes here -- Your code goes here
``` ```
#### Exercise `_⇔_` {#iff} #### Exercise `_⇔_` (practice) {#iff}
Define equivalence of propositions (also known as "if and only if") as follows: Define equivalence of propositions (also known as "if and only if") as follows:
``` ```

View file

@ -525,7 +525,7 @@ parameterised on _n_ types will have a map that is parameterised on
_n_ functions. _n_ functions.
#### Exercise `map-compose` #### Exercise `map-compose` (practice)
Prove that the map of a composition is equal to the composition of two maps: Prove that the map of a composition is equal to the composition of two maps:
``` ```
@ -535,7 +535,7 @@ postulate
``` ```
The last step of the proof requires extensionality. The last step of the proof requires extensionality.
#### Exercise `map-++-commute` #### Exercise `map-++-commute` (practice)
Prove the following relationship between map and append: Prove the following relationship between map and append:
``` ```
@ -544,7 +544,7 @@ postulate
→ map f (xs ++ ys) ≡ map f xs ++ map f ys → map f (xs ++ ys) ≡ map f xs ++ map f ys
``` ```
#### Exercise `map-Tree` #### Exercise `map-Tree` (practice)
Define a type of trees with leaves of type `A` and internal Define a type of trees with leaves of type `A` and internal
nodes of type `B`: nodes of type `B`:
@ -640,7 +640,7 @@ postulate
``` ```
#### Exercise `map-is-foldr` #### Exercise `map-is-foldr` (practice)
Show that map can be defined using fold: Show that map can be defined using fold:
``` ```
@ -650,7 +650,7 @@ postulate
``` ```
This requires extensionality. This requires extensionality.
#### Exercise `fold-Tree` #### Exercise `fold-Tree` (practice)
Define a suitable fold function for the type of trees given earlier: Define a suitable fold function for the type of trees given earlier:
``` ```
@ -663,7 +663,7 @@ postulate
-- Your code goes here -- Your code goes here
``` ```
#### Exercise `map-is-fold-Tree` #### Exercise `map-is-fold-Tree` (practice)
Demonstrate an analogue of `map-is-foldr` for the type of trees. Demonstrate an analogue of `map-is-foldr` for the type of trees.
@ -781,7 +781,7 @@ foldr-monoid-++ _⊗_ e monoid-⊗ xs ys =
``` ```
#### Exercise `foldl` #### Exercise `foldl` (practice)
Define a function `foldl` which is analogous to `foldr`, but where Define a function `foldl` which is analogous to `foldr`, but where
operations associate to the left rather than the right. For example: operations associate to the left rather than the right. For example:
@ -794,7 +794,7 @@ operations associate to the left rather than the right. For example:
``` ```
#### Exercise `foldr-monoid-foldl` #### Exercise `foldr-monoid-foldl` (practice)
Show that if `_⊗_` and `e` form a monoid, then `foldr _⊗_ e` and Show that if `_⊗_` and `e` form a monoid, then `foldr _⊗_ e` and
`foldl _⊗_ e` always compute the same result. `foldl _⊗_ e` always compute the same result.
@ -1005,7 +1005,7 @@ for some element of a list. Give their definitions.
``` ```
#### Exercise `All-∀` #### Exercise `All-∀` (practice)
Show that `All P xs` is isomorphic to `∀ {x} → x ∈ xs → P x`. Show that `All P xs` is isomorphic to `∀ {x} → x ∈ xs → P x`.
@ -1014,7 +1014,7 @@ Show that `All P xs` is isomorphic to `∀ {x} → x ∈ xs → P x`.
``` ```
#### Exercise `Any-∃` #### Exercise `Any-∃` (practice)
Show that `Any P xs` is isomorphic to `∃[ x ∈ xs ] P x`. Show that `Any P xs` is isomorphic to `∃[ x ∈ xs ] P x`.

View file

@ -76,7 +76,7 @@ after zero; and `2` is shorthand for `suc (suc zero)`, which is the
same as `suc 1`, the successor of one; and `3` is shorthand for the same as `suc 1`, the successor of one; and `3` is shorthand for the
successor of two; and so on. successor of two; and so on.
#### Exercise `seven` {#seven} #### Exercise `seven` (practice) {#seven}
Write out `7` in longhand. Write out `7` in longhand.
@ -426,7 +426,7 @@ is not like testimony in a court which must be weighed to determine
whether the witness is trustworthy. Rather, it is ironclad. The whether the witness is trustworthy. Rather, it is ironclad. The
other word for evidence, which we will use interchangeably, is _proof_. other word for evidence, which we will use interchangeably, is _proof_.
#### Exercise `+-example` {#plus-example} #### Exercise `+-example` (practice) {#plus-example}
Compute `3 + 4`, writing out your reasoning as a chain of equations. Compute `3 + 4`, writing out your reasoning as a chain of equations.
@ -487,7 +487,7 @@ Here we have omitted the signature declaring `_ : 2 * 3 ≡ 6`, since
it can easily be inferred from the corresponding term. it can easily be inferred from the corresponding term.
#### Exercise `*-example` {#times-example} #### Exercise `*-example` (practice) {#times-example}
Compute `3 * 4`, writing out your reasoning as a chain of equations. Compute `3 * 4`, writing out your reasoning as a chain of equations.

View file

@ -197,7 +197,7 @@ is irreflexive, that is, `n < n` holds for no `n`.
``` ```
#### Exercise `trichotomy` #### Exercise `trichotomy` (practice)
Show that strict inequality satisfies Show that strict inequality satisfies
[trichotomy]({{ site.baseurl }}/Relations/#trichotomy), [trichotomy]({{ site.baseurl }}/Relations/#trichotomy),

View file

@ -92,7 +92,7 @@ postulate
Compare this with the result (`→-distrib-×`) in Compare this with the result (`→-distrib-×`) in
Chapter [Connectives]({{ site.baseurl }}/Connectives/). Chapter [Connectives]({{ site.baseurl }}/Connectives/).
#### Exercise `⊎∀-implies-∀⊎` #### Exercise `⊎∀-implies-∀⊎` (practice)
Show that a disjunction of universals implies a universal of disjunctions: Show that a disjunction of universals implies a universal of disjunctions:
``` ```
@ -103,7 +103,7 @@ postulate
Does the converse hold? If so, prove; if not, explain why. Does the converse hold? If so, prove; if not, explain why.
#### Exercise `∀-×` #### Exercise `∀-×` (practice)
Consider the following type. Consider the following type.
``` ```
@ -244,7 +244,7 @@ postulate
∃[ x ] (B x ⊎ C x) ≃ (∃[ x ] B x) ⊎ (∃[ x ] C x) ∃[ x ] (B x ⊎ C x) ≃ (∃[ x ] B x) ⊎ (∃[ x ] C x)
``` ```
#### Exercise `∃×-implies-×∃` #### Exercise `∃×-implies-×∃` (practice)
Show that an existential of conjunctions implies a conjunction of existentials: Show that an existential of conjunctions implies a conjunction of existentials:
``` ```
@ -254,7 +254,7 @@ postulate
``` ```
Does the converse hold? If so, prove; if not, explain why. Does the converse hold? If so, prove; if not, explain why.
#### Exercise `∃-⊎` #### Exercise `∃-⊎` (practice)
Let `Tri` and `B` be as in Exercise `∀-×`. Let `Tri` and `B` be as in Exercise `∀-×`.
Show that `∃[ x ] B x` is isomorphic to `B aa ⊎ B bb ⊎ B cc`. Show that `∃[ x ] B x` is isomorphic to `B aa ⊎ B bb ⊎ B cc`.
@ -361,7 +361,7 @@ follows by `odd-suc`.
This completes the proof in the backward direction. This completes the proof in the backward direction.
#### Exercise `∃-even-odd` #### Exercise `∃-even-odd` (practice)
How do the proofs become more difficult if we replace `m * 2` and `1 + m * 2` How do the proofs become more difficult if we replace `m * 2` and `1 + m * 2`
by `2 * m` and `2 * m + 1`? Rewrite the proofs of `∃-even` and `∃-odd` when by `2 * m` and `2 * m + 1`? Rewrite the proofs of `∃-even` and `∃-odd` when
@ -371,7 +371,7 @@ restated in this way.
-- Your code goes here -- Your code goes here
``` ```
#### Exercise `∃-|-≤` #### Exercise `∃-|-≤` (practice)
Show that `y ≤ z` holds if and only if there exists a `x` such that Show that `y ≤ z` holds if and only if there exists a `x` such that
`x + y ≡ z`. `x + y ≡ z`.

View file

@ -229,7 +229,7 @@ lack---for instance by saying that a newly introduced relation is a
partial order but not a total order. partial order but not a total order.
#### Exercise `orderings` {#orderings} #### Exercise `orderings` (practice) {#orderings}
Give an example of a preorder that is not a partial order. Give an example of a preorder that is not a partial order.
@ -347,7 +347,7 @@ and `suc n ≤ suc m` and must show `suc m ≡ suc n`. The inductive
hypothesis `≤-antisym m≤n n≤m` establishes that `m ≡ n`, and our goal hypothesis `≤-antisym m≤n n≤m` establishes that `m ≡ n`, and our goal
follows by congruence. follows by congruence.
#### Exercise `≤-antisym-cases` {#leq-antisym-cases} #### Exercise `≤-antisym-cases` (practice) {#leq-antisym-cases}
The above proof omits cases where one argument is `z≤n` and one The above proof omits cases where one argument is `z≤n` and one
argument is `s≤s`. Why is it ok to omit them? argument is `s≤s`. Why is it ok to omit them?
@ -593,7 +593,7 @@ Show that strict inequality is transitive.
-- Your code goes here -- Your code goes here
``` ```
#### Exercise `trichotomy` {#trichotomy} #### Exercise `trichotomy` (practice) {#trichotomy}
Show that strict inequality satisfies a weak version of trichotomy, in Show that strict inequality satisfies a weak version of trichotomy, in
the sense that for any `m` and `n` that one of the following holds: the sense that for any `m` and `n` that one of the following holds:
@ -611,7 +611,7 @@ similar to that used for totality.
-- Your code goes here -- Your code goes here
``` ```
#### Exercise `+-mono-<` {#plus-mono-less} #### Exercise `+-mono-<` (practice) {#plus-mono-less}
Show that addition is monotonic with respect to strict inequality. Show that addition is monotonic with respect to strict inequality.
As with inequality, some additional definitions may be required. As with inequality, some additional definitions may be required.
@ -628,7 +628,7 @@ Show that `suc m ≤ n` implies `m < n`, and conversely.
-- Your code goes here -- Your code goes here
``` ```
#### Exercise `<-trans-revisited` {#less-trans-revisited} #### Exercise `<-trans-revisited` (practice) {#less-trans-revisited}
Give an alternative proof that strict inequality is transitive, Give an alternative proof that strict inequality is transitive,
using the relation between strict inequality and inequality and using the relation between strict inequality and inequality and

View file

@ -120,7 +120,7 @@ data _⊢_⇓_ : ∀{Γ} → ClosEnv Γ → (Γ ⊢ ★) → Clos → Set where
call-by-value. call-by-value.
#### Exercise `big-step-eg` #### Exercise `big-step-eg` (practice)
Show that `(ƛ ƛ # 1) · ((ƛ # 0 · # 0) · (ƛ # 0 · # 0))` Show that `(ƛ ƛ # 1) · ((ƛ # 0 · # 0) · (ƛ # 0 · # 0))`
terminates under big-step call-by-name evaluation. terminates under big-step call-by-name evaluation.
@ -374,7 +374,7 @@ cbn→reduce {M}{Δ}{δ}{N} M⇓c
⟨ subst (exts σ) N , rs ⟩ ⟨ subst (exts σ) N , rs ⟩
``` ```
#### Exercise `big-alt-implies-multi` #### Exercise `big-alt-implies-multi` (practice)
Formulate an alternative big-step semantics, of the form `M ↓ N`, Formulate an alternative big-step semantics, of the form `M ↓ N`,
for call-by-name that uses substitution instead of environments. for call-by-name that uses substitution instead of environments.

View file

@ -169,7 +169,7 @@ However, leaving the simulation small let's us focus on the essence.
It's a handy technical trick that we can have a large source language, It's a handy technical trick that we can have a large source language,
but only bother to include in the simulation the terms of interest. but only bother to include in the simulation the terms of interest.
#### Exercise `_†` #### Exercise `_†` (practice)
Formalise the translation from source to target given in the introduction. Formalise the translation from source to target given in the introduction.
Show that `M † ≡ N` implies `M ~ N`, and conversely. Show that `M † ≡ N` implies `M ~ N`, and conversely.
@ -198,7 +198,7 @@ commutes with values. That is, if `M ~ M†` and `M` is a value then
It is a straightforward case analysis, where here the only value It is a straightforward case analysis, where here the only value
of interest is a lambda abstraction. of interest is a lambda abstraction.
#### Exercise `~val⁻¹` #### Exercise `~val⁻¹` (practice)
Show that this also holds in the reverse direction: if `M ~ M†` Show that this also holds in the reverse direction: if `M ~ M†`
and `Value M†` then `Value M`. and `Value M†` then `Value M`.
@ -456,7 +456,7 @@ In its structure, it looks a little bit like a proof of progress:
we have `N [ x := V ] ~ N† [ x := V† ]`. we have `N [ x := V ] ~ N† [ x := V† ]`.
#### Exercise `sim⁻¹` #### Exercise `sim⁻¹` (practice)
Show that we also have a simulation in the other direction, and hence that we have Show that we also have a simulation in the other direction, and hence that we have
a bisimulation. a bisimulation.
@ -465,7 +465,7 @@ a bisimulation.
-- Your code goes here -- Your code goes here
``` ```
#### Exercise `products` #### Exercise `products` (practice)
Show that the two formulations of products in Show that the two formulations of products in
Chapter [More]({{ site.baseurl }}/More/) Chapter [More]({{ site.baseurl }}/More/)

View file

@ -141,7 +141,7 @@ data _⇛*_ : ∀ {Γ A} → (Γ ⊢ A) → (Γ ⊢ A) → Set where
``` ```
#### Exercise `par-diamond-eg` #### Exercise `par-diamond-eg` (practice)
Revisit the counter example to the diamond property for reduction by Revisit the counter example to the diamond property for reduction by
showing that the diamond property holds for parallel reduction in that showing that the diamond property holds for parallel reduction in that

View file

@ -966,7 +966,7 @@ Substitution preserves types, and Preservation.
We now turn to proving the remaining results from the We now turn to proving the remaining results from the
previous development. previous development.
#### Exercise `V¬—→` #### Exercise `V¬—→` (practice)
Following the previous development, show values do Following the previous development, show values do
not reduce, and its corollary, terms that reduce are not not reduce, and its corollary, terms that reduce are not

View file

@ -196,7 +196,7 @@ defined earlier.
``` ```
#### Exercise `mulᶜ` #### Exercise `mulᶜ` (practice)
Write out the definition of a lambda term that multiplies Write out the definition of a lambda term that multiplies
two natural numbers represented as Church numerals. Your two natural numbers represented as Church numerals. Your
@ -740,7 +740,7 @@ The three constructors specify, respectively, that `—↠′` includes `—→`
and is reflexive and transitive. A good exercise is to show that and is reflexive and transitive. A good exercise is to show that
the two definitions are equivalent (indeed, one embeds in the other). the two definitions are equivalent (indeed, one embeds in the other).
#### Exercise `—↠≲—↠′` #### Exercise `—↠≲—↠′` (practice)
Show that the first notion of reflexive and transitive closure Show that the first notion of reflexive and transitive closure
above embeds into the second. Why are they not isomorphic? above embeds into the second. Why are they not isomorphic?
@ -901,7 +901,7 @@ _ =
In the next chapter, we will see how to compute such reduction sequences. In the next chapter, we will see how to compute such reduction sequences.
#### Exercise `plus-example` #### Exercise `plus-example` (practice)
Write out the reduction sequence demonstrating that one plus one is two. Write out the reduction sequence demonstrating that one plus one is two.
@ -1002,7 +1002,7 @@ data Context : Set where
``` ```
#### Exercise `Context-≃` #### Exercise `Context-≃` (practice)
Show that `Context` is isomorphic to `List (Id × Type)`. Show that `Context` is isomorphic to `List (Id × Type)`.
For instance, the isomorphism relates the context For instance, the isomorphism relates the context
@ -1381,7 +1381,7 @@ showing that it is well typed.
``` ```
#### Exercise `mulᶜ-type` #### Exercise `mulᶜ-type` (practice)
Using the term `mulᶜ` you defined earlier, write out the derivation Using the term `mulᶜ` you defined earlier, write out the derivation
showing that it is well typed. showing that it is well typed.

View file

@ -1199,7 +1199,7 @@ _ =
``` ```
#### Exercise `More` #### Exercise `More` (practice)
Formalise the remaining constructs defined in this chapter. Formalise the remaining constructs defined in this chapter.
Make your changes in this file. Make your changes in this file.

View file

@ -332,7 +332,7 @@ this requires that we match against the lambda expression `L` to
determine its bound variable and body, `ƛ x ⇒ N`, so we can show that determine its bound variable and body, `ƛ x ⇒ N`, so we can show that
`L · M` reduces to `N [ x := M ]`. `L · M` reduces to `N [ x := M ]`.
#### Exercise `Progress-≃` #### Exercise `Progress-≃` (practice)
Show that `Progress M` is isomorphic to `Value M ⊎ ∃[ N ](M —→ N)`. Show that `Progress M` is isomorphic to `Value M ⊎ ∃[ N ](M —→ N)`.
@ -340,7 +340,7 @@ Show that `Progress M` is isomorphic to `Value M ⊎ ∃[ N ](M —→ N)`.
-- Your code goes here -- Your code goes here
``` ```
#### Exercise `progress` #### Exercise `progress` (practice)
Write out the proof of `progress` in full, and compare it to the Write out the proof of `progress` in full, and compare it to the
proof of `progress` above. proof of `progress` above.
@ -349,7 +349,7 @@ proof of `progress` above.
-- Your code goes here -- Your code goes here
``` ```
#### Exercise `value?` #### Exercise `value?` (practice)
Combine `progress` and `—→¬V` to write a program that decides Combine `progress` and `—→¬V` to write a program that decides
whether a well-typed term is a value: whether a well-typed term is a value:
@ -1276,7 +1276,7 @@ Using the evaluator, confirm that two times two is four.
``` ```
#### Exercise: `progress-preservation` #### Exercise: `progress-preservation` (practice)
Without peeking at their statements above, write down the progress Without peeking at their statements above, write down the progress
and preservation theorems for the simply typed lambda-calculus. and preservation theorems for the simply typed lambda-calculus.
@ -1286,7 +1286,7 @@ and preservation theorems for the simply typed lambda-calculus.
``` ```
#### Exercise `subject_expansion` #### Exercise `subject_expansion` (practice)
We say that `M` _reduces_ to `N` if `M —→ N`, We say that `M` _reduces_ to `N` if `M —→ N`,
but we can also describe the same situation by saying but we can also describe the same situation by saying
@ -1353,7 +1353,7 @@ Milner, who used denotational rather than operational semantics. He
introduced `wrong` as the denotation of a term with a type error, and introduced `wrong` as the denotation of a term with a type error, and
showed _well-typed terms don't go wrong_.) showed _well-typed terms don't go wrong_.)
#### Exercise `stuck` #### Exercise `stuck` (practice)
Give an example of an ill-typed term that does get stuck. Give an example of an ill-typed term that does get stuck.

View file

@ -99,7 +99,7 @@ data Type : Set where
★ : Type ★ : Type
``` ```
#### Exercise (`Type≃`) #### Exercise (`Type≃`) (practice)
Show that `Type` is isomorphic to ``, the unit type. Show that `Type` is isomorphic to ``, the unit type.
@ -118,7 +118,7 @@ data Context : Set where
``` ```
We let `Γ` and `Δ` range over contexts. We let `Γ` and `Δ` range over contexts.
#### Exercise (`Context≃`) #### Exercise (`Context≃`) (practice)
Show that `Context` is isomorphic to ``. Show that `Context` is isomorphic to ``.
@ -402,7 +402,7 @@ data _—→_ : ∀ {Γ A} → (Γ ⊢ A) → (Γ ⊢ A) → Set where
→ ƛ N —→ ƛ N → ƛ N —→ ƛ N
``` ```
#### Exercise (`variant-1`) #### Exercise (`variant-1`) (practice)
How would the rules change if we want call-by-value where terms How would the rules change if we want call-by-value where terms
normalise completely? Assume that `β` should not permit reduction normalise completely? Assume that `β` should not permit reduction
@ -412,7 +412,7 @@ unless both terms are in normal form.
-- Your code goes here -- Your code goes here
``` ```
#### Exercise (`variant-2`) #### Exercise (`variant-2`) (practice)
How would the rules change if we want call-by-value where terms How would the rules change if we want call-by-value where terms
do not reduce underneath lambda? Assume that `β` do not reduce underneath lambda? Assume that `β`
@ -738,7 +738,7 @@ Because `` `suc `` is now a defined term rather than primitive,
it is no longer the case that `plus · two · two` reduces to `four`, it is no longer the case that `plus · two · two` reduces to `four`,
but they do both reduce to the same normal term. but they do both reduce to the same normal term.
#### Exercise `plus-eval` #### Exercise `plus-eval` (practice)
Use the evaluator to confirm that `plus · two · two` and `four` Use the evaluator to confirm that `plus · two · two` and `four`
normalise to the same term. normalise to the same term.

View file

@ -500,7 +500,7 @@ arguments.
↦-elim2 d₁ d₂ lt = ↦-elim d₁ (sub d₂ lt) ↦-elim2 d₁ d₂ lt = ↦-elim d₁ (sub d₂ lt)
``` ```
#### Exercise `denot-plusᶜ` #### Exercise `denot-plusᶜ` (practice)
What is a denotation for `plusᶜ`? That is, find a value `v` (other than `⊥`) What is a denotation for `plusᶜ`? That is, find a value `v` (other than `⊥`)
such that `∅ ⊢ plusᶜ ↓ v`. Also, give the proof of `∅ ⊢ plusᶜ ↓ v` such that `∅ ⊢ plusᶜ ↓ v`. Also, give the proof of `∅ ⊢ plusᶜ ↓ v`