Changes
1 changed files (+25/-6)
-
-
@@ -2,22 +2,41 @@import Mathlib example {α} (f : α → α → α) (l r : α) (hl : ∀ x, f l x = x) (hr : ∀ x, f x r = x) : l = r := by example {α} (f : α → α → α) l r (hl : ∀ x, f l x = x) (hr : ∀ x, f x r = x) : l = r := by have h₁ : f l r = l := by grind grind example {α} (f : α → α → α) (h : ∀ x y z, f x z = y ∧ ∀ z' ≠ z, f x z' ≠ y) : ∃ g : α → α → α, ∀ x y, f x (g x y) = g x (f x y) ∧ f x (g x y) = y := by sorry example {α} [Nonempty α] (f : α → α → α) (h : ∀ x y, ∃ z, f x z = y ∧ ∀ z', f x z = f x z' → z = z') : ∃ g : α → α → α, ∀ x y, f x (g x y) = y ∧ g x (f x y) = y := by let g x y := (f x).invFun y use g intro x y constructor have h₁ x : (f x).Surjective := by rw [Function.Surjective] intro y specialize h x y grind apply Function.rightInverse_invFun (h₁ x) have h₁ x : (f x).Injective := by rw [Function.Injective] intro a b specialize h x (f x a) obtain ⟨a', ⟨h₂, h₃⟩⟩ := h have h₄ : a' = a := by apply h₃ a h₂ rw [← h₄] exact h₃ b apply Function.leftInverse_invFun (h₁ x) example {α} (f g : α → α → α) (i j : α) (hid : ∀ x, f i x = x ∧ f x i = x ∧ g j x = x ∧ g x j = x) (h : ∀ x y z w, f (g x y) (g z w) = g (f x z) (f y w)) : f = g := by have h₁ (x : α) : f x j = x := by example {α} (f g : α → α → α) i j (hid : ∀ x, f i x = x ∧ f x i = x ∧ g j x = x ∧ g x j = x) (h : ∀ x y z w, f (g x y) (g z w) = g (f x z) (f y w)) : f = g := by have h₁ x : f x j = x := by specialize h x j j i grind have h₂ : i = j := by specialize hid j grind have h₃ (x y : α) : f x y = g x y := by have h₃ x y : f x y = g x y := by specialize h x i i y grind grind
-