| example (x : α × β) : x = (x.1, x.2) := | |
| rfl -- Should work with eta for structures | |
| example (x : Unit) : x = ⟨⟩ := | |
| rfl -- Should work with eta for structures | |
| structure Equiv (α : Sort u) (β : Sort v) where | |
| toFun : α → β | |
| invFun : β → α | |
| left_inv : ∀ x, invFun (toFun x) = x | |
| right_inv : ∀ x, toFun (invFun x) = x | |
| infix:50 "≃" => Equiv | |
| def Equiv.symm (e : α ≃ β) : β ≃ α := | |
| { toFun := e.invFun | |
| invFun := e.toFun | |
| left_inv := e.right_inv | |
| right_inv := e.left_inv } | |
| theorem Equiv.symm.symm (e : α ≃ β) : e.symm.symm = e := | |
| rfl -- Should work with eta for structures | |
| structure Bla where | |
| x : Nat | |
| def Bla.toNat (b : Bla) : Nat := b.x | |
| def Nat.toBla (x : Nat) : Bla := { x } | |
| example (b : Bla) : b.toNat.toBla = b := | |
| rfl -- Should work with eta for structures | |
| example (b : Bla) : b.toNat.toBla = b := by | |
| cases b | |
| rfl | |
| example (x : Unit × α) : x = ((), x.2) := rfl | |
| example (x : (_ : True ∨ False) ×' α) : x = ⟨Or.inl ⟨⟩, x.2⟩ := rfl | |
| example (p : α × α → Prop) (h : ∀ x y, p (x, y)) : p z := h z.1 _ | |
| class TopologicalSpace (α : Type) | |
| structure Homeomorph (α β : Type) [TopologicalSpace α] [TopologicalSpace β] extends Equiv α β where | |
| continuousToFun : True | |
| continuousInv : True | |
| def Homeomorph.symm [TopologicalSpace α] [TopologicalSpace β] (f : Homeomorph α β) : Homeomorph β α where | |
| toFun := f.invFun | |
| invFun := f.toFun | |
| left_inv := sorry | |
| right_inv := sorry | |
| continuousToFun := f.continuousInv | |
| continuousInv := sorry | |
| example [TopologicalSpace α] [TopologicalSpace β] (f : Homeomorph α β) : | |
| f.symm.symm = f := rfl -- fails | |
| def frob : Nat × Nat → Nat × Nat | |
| | (x, y) => (x + y, 42) | |
| example (x : Nat × Nat) : (frob x).2 = 42 := rfl | |
| example (x y : Unit) : x = y := rfl | |
| opaque f : Nat → Unit | |
| opaque g : Nat → Unit | |
| example (x y : Nat) : f x = f y := rfl | |
| example (x y : Nat) : f x = g y := rfl |