module group-0003 where open import MLTT.Spartan hiding (_∙_) renaming (_⁻¹ to sym) open import group-0000 open Group {{...}}
這個命題在說每個元素都可以取消,這是一個非常好用的事實,而且完全不必感到陌生,我等一下再解釋這點。我們先來看它的具體描述
- 如果 g • a = h • a,則 g = h
- 如果 a • g = a • h,則 g = h
proposition-3 : {G : 𝓤 ̇} {{_ : Group G}} {g h a : G} → (g ∙ a = h ∙ a → g = h) × (a ∙ g = a ∙ h → g = h) proposition-3 {G}{_} {g}{h}{a} = I , II where I : g ∙ a = h ∙ a → g = h I fact = g =⟨ sym (neu-r g) ⟩ g ∙ e =⟨ ap (g ∙_) (sym (cancel .pr₂)) ⟩ g ∙ (a ∙ a ⁻¹) =⟨ sym (∙-assoc g a (a ⁻¹)) ⟩ g ∙ a ∙ a ⁻¹ =⟨ ap (_∙ a ⁻¹) fact ⟩ h ∙ a ∙ a ⁻¹ =⟨ ∙-assoc h a (a ⁻¹) ⟩ h ∙ (a ∙ a ⁻¹) =⟨ ap (h ∙_) (cancel .pr₂) ⟩ h ∙ e =⟨ neu-r h ⟩ h ∎ II : a ∙ g = a ∙ h → g = h II fact = g =⟨ sym (neu-l g) ⟩ e ∙ g =⟨ ap (_∙ g) (sym (cancel .pr₁)) ⟩ a ⁻¹ ∙ a ∙ g =⟨ ∙-assoc (a ⁻¹) a g ⟩ a ⁻¹ ∙ (a ∙ g) =⟨ ap (a ⁻¹ ∙_) fact ⟩ a ⁻¹ ∙ (a ∙ h) =⟨ sym (∙-assoc (a ⁻¹) a h) ⟩ a ⁻¹ ∙ a ∙ h =⟨ ap (_∙ h) (cancel .pr₁) ⟩ e ∙ h =⟨ neu-l h ⟩ h ∎
為什麼不必對這個命題感到陌生呢?因為這其實是我們日常也很容易遇到的算術事實:如果 2x = 2y 那 x = y。