{-# OPTIONS --cubical-compatible #-}
module Padova2025-zh-TW.ProvingBasics.Connectives.Conjunction where
合取#
open import Agda.Primitive
open import Padova2025-zh-TW.ProvingBasics.Connectives.Existential
合取 A and B 的見證,應該由一個型別 A 的見證與一個型別 B 的見證組成,也就是說,合取的見證就是一對見證。
這只是前面介紹過的依值序對構造的特例。因此,對任意型別 A 與 B,我們引進笛卡兒積型別 A × B:
infixr 2 _×_
_×_ : {ℓ ℓ' : Level} → Set ℓ → Set ℓ' → Set (ℓ ⊔ ℓ')
A × B = Σ A (λ _ → B)
特別是,fst 與
snd
這兩個函數,對這些非依值的積也同樣適用。讓我們把這些函數匯出,供匯入本模組的使用者使用。
open Padova2025-zh-TW.ProvingBasics.Connectives.Existential using (fst; snd; _,_) public
習題:涉及合取的重言式#
open import Padova2025-zh-TW.ProvingBasics.Negation
習題 1
∧-comm∧-comm : {A B : Set} → A × B → B × A
∧-comm = {!!}
參考解答用到: _,_
你的解答
習題 2
∧-assoc∧-assoc : {A B C : Set} → (A × B) × C → A × (B × C)
∧-assoc = {!!}
參考解答用到: _,_
你的解答
習題 3
currycurry : {A B C : Set} → (A × B → C) → (A → (B → C))
curry = {!!}
參考解答用到: _,_
你的解答
習題 4
uncurryuncurry : {A B C : Set} → (A → (B → C)) → (A × B → C)
uncurry = {!!}
參考解答用到: _,_
你的解答
習題 5
∧-map∧-map : {A A' B B' : Set} → (A → A') → (B → B') → A × B → A' × B'
∧-map = {!!}
參考解答用到: _,_
你的解答
習題 6
∧-diag∧-diag : {A : Set} → A → A × A
∧-diag = {!!}
參考解答用到: _,_
你的解答
習題 7
∧-not∧-not : {A : Set} → A × ⊥ → ⊥
∧-not = {!!}
參考解答用到: snd
你的解答
習題 8
frobeniusfrobenius : {A B : Set} {P : A → Set} → ∃[ x ] (P x × B) → (∃[ x ] P x) × B
frobenius = {!!}
參考解答用到: _,_
你的解答
習題:De Morgan 定律#
open import Padova2025-zh-TW.ProvingBasics.Connectives.Disjunction
驗證四條 De Morgan 定律中的下列三條。
習題 9
de-morgan₁de-morgan₁ : {A B : Set} → ¬ A × ¬ B → ¬ (A ⊎ B)
de-morgan₁ = {!!}
你的解答
習題 10
de-morgan₂de-morgan₂ : {A B : Set} → ¬ (A ⊎ B) → ¬ A × ¬ B
de-morgan₂ = {!!}
你的解答
習題 11
de-morgan₃de-morgan₃ : {A B : Set} → ¬ A ⊎ ¬ B → ¬ (A × B)
de-morgan₃ = {!!}
你的解答
第四條 ¬ (A × B) → ¬ A ⊎ ¬ B 會破壞建構性數學區分否定性斷言與肯定性斷言的細緻能力。由於 Agda 預設是建構性的系統,
第四條定律在 Agda 中無法證明。
習題:零和#
open import Padova2025-zh-TW.ProgrammingBasics.Naturals.Base
open import Padova2025-zh-TW.ProgrammingBasics.Naturals.Arithmetic
open import Padova2025-zh-TW.ProvingBasics.Equality.Base
open import Padova2025-zh-TW.ProvingBasics.Equality.NaturalNumbers
證明如果兩個自然數的和為零,則兩個加數都是零。
習題 12
sum-zerosum-zero : (a b : ℕ) → a + b ≡ zero → a ≡ zero × b ≡ zero
sum-zero = {!!}
你的解答