theorem CongrGood {x y: Nat}: x + y = y + x := by conv => congr . rw [Nat.add_comm] . rfl theorem CongrBad {x y: Nat}: x + y = y + x := by have I: True := True.intro; conv => congr . rw [Nat.add_comm] . rfl theorem CongrBad' {x y: Nat}: x + y = y + x := by let I: True := True.intro; conv => congr . rw [Nat.add_comm] . rfl theorem CongrBad'' {x y: Nat}: x + y = y + x := by let I: True := True.intro; try rfl; conv => congr . rw [Nat.add_comm] . rfl theorem CongrGood' {x y: Nat}: x + y = y + x := by cases x; have I: True := True.intro; rw [Nat.add_comm] conv => congr . rw [Nat.add_comm] . rfl