{-# OPTIONS --cubical-compatible #-}
module Padova2025-zh-TW.ProvingBasics.Equality.Lists where
關於串列的結果#
open import Padova2025-zh-TW.ProgrammingBasics.Naturals.Base
open import Padova2025-zh-TW.ProgrammingBasics.Naturals.Arithmetic
open import Padova2025-zh-TW.ProgrammingBasics.Lists
open import Padova2025-zh-TW.ProvingBasics.Equality.Base
open import Padova2025-zh-TW.ProvingBasics.Equality.General
習題:兩次反轉#
做下面的習題時,請注意 reverse (x ∷ xs) 被定義為 reverse xs ∷ʳ x。
習題 1
reverse-∷ʳreverse-∷ʳ : {A : Set} (ys : List A) (x : A) → reverse (ys ∷ʳ x) ≡ (x ∷ reverse ys)
reverse-∷ʳ = {!!}
你的解答
習題 2
reverse-reversereverse-reverse : {A : Set} (xs : List A) → reverse (reverse xs) ≡ xs
reverse-reverse = {!!}
你的解答
習題:串接的結合律#
習題 3
++-assoc++-assoc : {A : Set} (xs ys zs : List A) → (xs ++ ys) ++ zs ≡ xs ++ (ys ++ zs)
++-assoc = {!!}
你的解答
習題:長度是一個同態#
習題 4
length-homolength-homo : {A : Set} (xs ys : List A) → length (xs ++ ys) ≡ length xs + length ys
length-homo = {!!}
你的解答
習題:複製是一個自然變換#
習題 5
replicate-naturalreplicate-natural
: {A B : Set} (f : A → B) (n : ℕ) (x : A)
→ map f (replicate n x) ≡ replicate n (f x)
replicate-natural = {!!}
你的解答
習題:複製與 snoc#
下面這個引理,在驗證 Markov 原理在某些數學宇宙中不成立時會派上用場。
習題 6
replicate-snocreplicate-snoc : {A : Set} (n : ℕ) (x : A) → x ∷ replicate n x ≡ replicate n x ∷ʳ x
replicate-snoc = {!!}
你的解答
習題:snoc 與串接#
習題 7
snoc-++snoc-++ : {A : Set} (a : A) (xs ys : List A) → (xs ∷ʳ a) ++ ys ≡ xs ++ (a ∷ ys)
snoc-++ = {!!}
你的解答
習題 8
++-snoc++-snoc : {A : Set} (a : A) (xs ys : List A) → xs ++ (ys ∷ʳ a) ≡ (xs ++ ys) ∷ʳ a
++-snoc = {!!}
你的解答
習題:snoc 之後的長度#
習題 9
length-snoclength-snoc : {A : Set} (xs : List A) (y : A) → length (xs ∷ʳ y) ≡ succ (length xs)
length-snoc = {!!}
你的解答
習題:空串列是串接的單位元#
習題 10
++-[]++-[] : {A : Set} (xs : List A) → xs ++ [] ≡ xs
++-[] = {!!}
你的解答