Skip to content

Commit e450a02

Browse files
authored
fix: change show tactic to work as documented (#7395)
This PR changes the `show t` tactic to match its documentation. Previously it was a synonym for `change t`, but now it finds the first goal that unifies with the term `t` and moves it to the front of the goal list.
1 parent deda28e commit e450a02

File tree

27 files changed

+286
-54
lines changed

27 files changed

+286
-54
lines changed

src/Init/Control/Lawful/Basic.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ attribute [simp] pure_bind bind_assoc bind_pure_comp
148148
attribute [grind] pure_bind
149149

150150
@[simp] theorem bind_pure [Monad m] [LawfulMonad m] (x : m α) : x >>= pure = x := by
151-
show x >>= (fun a => pure (id a)) = x
151+
change x >>= (fun a => pure (id a)) = x
152152
rw [bind_pure_comp, id_map]
153153

154154
/--

src/Init/Control/Lawful/Instances.lean

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ protected theorem bind_pure_comp [Monad m] (f : α → β) (x : ExceptT ε m α)
5858
intros; rfl
5959

6060
protected theorem seqLeft_eq {α β ε : Type u} {m : Type u → Type v} [Monad m] [LawfulMonad m] (x : ExceptT ε m α) (y : ExceptT ε m β) : x <* y = const β <$> x <*> y := by
61-
show (x >>= fun a => y >>= fun _ => pure a) = (const (α := α) β <$> x) >>= fun f => f <$> y
61+
change (x >>= fun a => y >>= fun _ => pure a) = (const (α := α) β <$> x) >>= fun f => f <$> y
6262
rw [← ExceptT.bind_pure_comp]
6363
apply ext
6464
simp [run_bind]
@@ -70,7 +70,7 @@ protected theorem seqLeft_eq {α β ε : Type u} {m : Type u → Type v} [Monad
7070
cases b <;> simp [comp, Except.map, const]
7171

7272
protected theorem seqRight_eq [Monad m] [LawfulMonad m] (x : ExceptT ε m α) (y : ExceptT ε m β) : x *> y = const α id <$> x <*> y := by
73-
show (x >>= fun _ => y) = (const α id <$> x) >>= fun f => f <$> y
73+
change (x >>= fun _ => y) = (const α id <$> x) >>= fun f => f <$> y
7474
rw [← ExceptT.bind_pure_comp]
7575
apply ext
7676
simp [run_bind]
@@ -206,15 +206,15 @@ theorem run_bind_lift {α σ : Type u} [Monad m] [LawfulMonad m] (x : m α) (f :
206206
(monadMap @f x : StateT σ m α).run s = monadMap @f (x.run s) := rfl
207207

208208
@[simp] theorem run_seq {α β σ : Type u} [Monad m] [LawfulMonad m] (f : StateT σ m (α → β)) (x : StateT σ m α) (s : σ) : (f <*> x).run s = (f.run s >>= fun fs => (fun (p : α × σ) => (fs.1 p.1, p.2)) <$> x.run fs.2) := by
209-
show (f >>= fun g => g <$> x).run s = _
209+
change (f >>= fun g => g <$> x).run s = _
210210
simp
211211

212212
@[simp] theorem run_seqRight [Monad m] (x : StateT σ m α) (y : StateT σ m β) (s : σ) : (x *> y).run s = (x.run s >>= fun p => y.run p.2) := by
213-
show (x >>= fun _ => y).run s = _
213+
change (x >>= fun _ => y).run s = _
214214
simp
215215

216216
@[simp] theorem run_seqLeft {α β σ : Type u} [Monad m] (x : StateT σ m α) (y : StateT σ m β) (s : σ) : (x <* y).run s = (x.run s >>= fun p => y.run p.2 >>= fun p' => pure (p.1, p'.2)) := by
217-
show (x >>= fun a => y >>= fun _ => pure a).run s = _
217+
change (x >>= fun a => y >>= fun _ => pure a).run s = _
218218
simp
219219

220220
theorem seqRight_eq [Monad m] [LawfulMonad m] (x : StateT σ m α) (y : StateT σ m β) : x *> y = const α id <$> x <*> y := by

src/Init/Core.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2252,7 +2252,7 @@ theorem funext {α : Sort u} {β : α → Sort v} {f g : (x : α) → β x}
22522252
Quot.liftOn f
22532253
(fun (f : ∀ (x : α), β x) => f x)
22542254
(fun _ _ h => h x)
2255-
show extfunApp (Quot.mk eqv f) = extfunApp (Quot.mk eqv g)
2255+
change extfunApp (Quot.mk eqv f) = extfunApp (Quot.mk eqv g)
22562256
exact congrArg extfunApp (Quot.sound h)
22572257

22582258
/--

src/Init/Data/Array/Basic.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ def swap (xs : Array α) (i j : @& Nat) (hi : i < xs.size := by get_elem_tactic)
246246
xs'.set j v₁ (Nat.lt_of_lt_of_eq hj (size_set _).symm)
247247

248248
@[simp] theorem size_swap {xs : Array α} {i j : Nat} {hi hj} : (xs.swap i j hi hj).size = xs.size := by
249-
show ((xs.set i xs[j]).set j xs[i]
249+
change ((xs.set i xs[j]).set j xs[i]
250250
(Nat.lt_of_lt_of_eq hj (size_set _).symm)).size = xs.size
251251
rw [size_set, size_set]
252252

src/Init/Data/BitVec/Bitblast.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1023,7 +1023,7 @@ theorem DivModState.toNat_shiftRight_sub_one_eq
10231023
{args : DivModArgs w} {qr : DivModState w} (h : qr.Poised args) :
10241024
args.n.toNat >>> (qr.wn - 1)
10251025
= (args.n.toNat >>> qr.wn) * 2 + (args.n.getLsbD (qr.wn - 1)).toNat := by
1026-
show BitVec.toNat (args.n >>> (qr.wn - 1)) = _
1026+
change BitVec.toNat (args.n >>> (qr.wn - 1)) = _
10271027
have {..} := h -- break the structure down for `omega`
10281028
rw [shiftRight_sub_one_eq_shiftConcat args.n h.hwn_lt]
10291029
rw [toNat_shiftConcat_eq_of_lt (k := w - qr.wn)]

src/Init/Data/Int/DivMod/Bootstrap.lean

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ Copyright (c) 2016 Jeremy Avigad. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Jeremy Avigad, Mario Carneiro
55
-/
6-
76
module
87

98
prelude
@@ -99,7 +98,7 @@ theorem ofNat_emod (m n : Nat) : (↑(m % n) : Int) = m % n := natCast_emod m n
9998
theorem emod_add_ediv : ∀ a b : Int, a % b + b * (a / b) = a
10099
| ofNat _, ofNat _ => congrArg ofNat <| Nat.mod_add_div ..
101100
| ofNat m, -[n+1] => by
102-
show (m % succ n + -↑(succ n) * -↑(m / succ n) : Int) = m
101+
change (m % succ n + -↑(succ n) * -↑(m / succ n) : Int) = m
103102
rw [Int.neg_mul_neg]; exact congrArg ofNat <| Nat.mod_add_div ..
104103
| -[_+1], 0 => by rw [emod_zero]; rfl
105104
| -[m+1], succ n => aux m n.succ
@@ -149,7 +148,7 @@ theorem add_mul_ediv_right (a b : Int) {c : Int} (H : c ≠ 0) : (a + b * c) / c
149148
fun {k n} => @fun
150149
| ofNat _ => congrArg ofNat <| Nat.add_mul_div_right _ _ k.succ_pos
151150
| -[m+1] => by
152-
show ((n * k.succ : Nat) - m.succ : Int).ediv k.succ = n - (m / k.succ + 1 : Nat)
151+
change ((n * k.succ : Nat) - m.succ : Int).ediv k.succ = n - (m / k.succ + 1 : Nat)
153152
by_cases h : m < n * k.succ
154153
· rw [← Int.ofNat_sub h, ← Int.ofNat_sub ((Nat.div_lt_iff_lt_mul k.succ_pos).2 h)]
155154
apply congrArg ofNat
@@ -158,7 +157,7 @@ theorem add_mul_ediv_right (a b : Int) {c : Int} (H : c ≠ 0) : (a + b * c) / c
158157
have H {a b : Nat} (h : a ≤ b) : (a : Int) + -((b : Int) + 1) = -[b - a +1] := by
159158
rw [negSucc_eq, Int.ofNat_sub h]
160159
simp only [Int.sub_eq_add_neg, Int.neg_add, Int.neg_neg, Int.add_left_comm, Int.add_assoc]
161-
show ediv (↑(n * succ k) + -((m : Int) + 1)) (succ k) = n + -(↑(m / succ k) + 1 : Int)
160+
change ediv (↑(n * succ k) + -((m : Int) + 1)) (succ k) = n + -(↑(m / succ k) + 1 : Int)
162161
rw [H h, H ((Nat.le_div_iff_mul_le k.succ_pos).2 h)]
163162
apply congrArg negSucc
164163
rw [Nat.mul_comm, Nat.sub_mul_div_of_le]; rwa [Nat.mul_comm]

src/Init/Data/Int/DivMod/Lemmas.lean

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ Copyright (c) 2016 Jeremy Avigad. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Jeremy Avigad, Mario Carneiro, Kim Morrison, Markus Himmel
55
-/
6-
76
module
87

98
prelude
@@ -332,17 +331,17 @@ theorem fdiv_eq_ediv_of_dvd {a b : Int} (h : b ∣ a) : a.fdiv b = a / b := by
332331
theorem tmod_add_tdiv : ∀ a b : Int, tmod a b + b * (a.tdiv b) = a
333332
| ofNat _, ofNat _ => congrArg ofNat (Nat.mod_add_div ..)
334333
| ofNat m, -[n+1] => by
335-
show (m % succ n + -↑(succ n) * -↑(m / succ n) : Int) = m
334+
change (m % succ n + -↑(succ n) * -↑(m / succ n) : Int) = m
336335
rw [Int.neg_mul_neg]; exact congrArg ofNat (Nat.mod_add_div ..)
337336
| -[m+1], 0 => by
338-
show -(↑((succ m) % 0) : Int) + 0 * -↑(succ m / 0) = -↑(succ m)
337+
change -(↑((succ m) % 0) : Int) + 0 * -↑(succ m / 0) = -↑(succ m)
339338
rw [Nat.mod_zero, Int.zero_mul, Int.add_zero]
340339
| -[m+1], ofNat n => by
341-
show -(↑((succ m) % n) : Int) + ↑n * -↑(succ m / n) = -↑(succ m)
340+
change -(↑((succ m) % n) : Int) + ↑n * -↑(succ m / n) = -↑(succ m)
342341
rw [Int.mul_neg, ← Int.neg_add]
343342
exact congrArg (-ofNat ·) (Nat.mod_add_div ..)
344343
| -[m+1], -[n+1] => by
345-
show -(↑(succ m % succ n) : Int) + -↑(succ n) * ↑(succ m / succ n) = -↑(succ m)
344+
change -(↑(succ m % succ n) : Int) + -↑(succ n) * ↑(succ m / succ n) = -↑(succ m)
346345
rw [Int.neg_mul, ← Int.neg_add]
347346
exact congrArg (-ofNat ·) (Nat.mod_add_div ..)
348347

@@ -364,17 +363,17 @@ theorem fmod_add_fdiv : ∀ a b : Int, a.fmod b + b * a.fdiv b = a
364363
| 0, ofNat _ | 0, -[_+1] => congrArg ofNat <| by simp
365364
| succ _, ofNat _ => congrArg ofNat <| Nat.mod_add_div ..
366365
| succ m, -[n+1] => by
367-
show subNatNat (m % succ n) n + (↑(succ n * (m / succ n)) + n + 1) = (m + 1)
366+
change subNatNat (m % succ n) n + (↑(succ n * (m / succ n)) + n + 1) = (m + 1)
368367
rw [Int.add_comm _ n, ← Int.add_assoc, ← Int.add_assoc,
369368
Int.subNatNat_eq_coe, Int.sub_add_cancel]
370369
exact congrArg (ofNat · + 1) <| Nat.mod_add_div ..
371370
| -[_+1], 0 => by rw [fmod_zero]; rfl
372371
| -[m+1], succ n => by
373-
show subNatNat .. - (↑(succ n * (m / succ n)) + ↑(succ n)) = -↑(succ m)
372+
change subNatNat .. - (↑(succ n * (m / succ n)) + ↑(succ n)) = -↑(succ m)
374373
rw [Int.subNatNat_eq_coe, ← Int.sub_sub, ← Int.neg_sub, Int.sub_sub, Int.sub_sub_self]
375374
exact congrArg (-ofNat ·) <| Nat.succ_add .. ▸ Nat.mod_add_div .. ▸ rfl
376375
| -[m+1], -[n+1] => by
377-
show -(↑(succ m % succ n) : Int) + -↑(succ n * (succ m / succ n)) = -↑(succ m)
376+
change -(↑(succ m % succ n) : Int) + -↑(succ n * (succ m / succ n)) = -↑(succ m)
378377
rw [← Int.neg_add]; exact congrArg (-ofNat ·) <| Nat.mod_add_div ..
379378

380379
/-- Variant of `fmod_add_fdiv` with the multiplication written the other way around. -/
@@ -575,7 +574,7 @@ theorem neg_one_ediv (b : Int) : -1 / b = -b.sign :=
575574
· refine Nat.le_trans ?_ (Nat.le_add_right _ _)
576575
rw [← Nat.mul_div_mul_left _ _ m.succ_pos]
577576
apply Nat.div_mul_le_self
578-
· show m.succ * n.succ ≤ _
577+
· change m.succ * n.succ ≤ _
579578
rw [Nat.mul_left_comm]
580579
apply Nat.mul_le_mul_left
581580
apply (Nat.div_lt_iff_lt_mul k.succ_pos).1
@@ -2748,7 +2747,7 @@ theorem bmod_lt {x : Int} {m : Nat} (h : 0 < m) : bmod x m < (m + 1) / 2 := by
27482747
split
27492748
· assumption
27502749
· apply Int.lt_of_lt_of_le
2751-
· show _ < 0
2750+
· change _ < 0
27522751
have : x % m < m := emod_lt_of_pos x (natCast_pos.mpr h)
27532752
exact Int.sub_neg_of_lt this
27542753
· exact Int.le.intro_sub _ rfl

src/Init/Data/Int/Lemmas.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ protected theorem add_sub_assoc (a b c : Int) : a + b - c = a + (b - c) := by
339339
match m with
340340
| 0 => rfl
341341
| succ m =>
342-
show ofNat (n - succ m) = subNatNat n (succ m)
342+
change ofNat (n - succ m) = subNatNat n (succ m)
343343
rw [subNatNat, Nat.sub_eq_zero_of_le h]
344344

345345
@[deprecated negSucc_eq (since := "2025-03-11")]

src/Init/Data/Int/Linear.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1665,7 +1665,7 @@ theorem natCast_sub (x y : Nat)
16651665
(NatCast.natCast x : Int) + -1*NatCast.natCast y
16661666
else
16671667
(0 : Int) := by
1668-
show (↑(x - y) : Int) = if (↑y : Int) + (-1)*↑x ≤ 0 then ↑x + (-1)*↑y else 0
1668+
change (↑(x - y) : Int) = if (↑y : Int) + (-1)*↑x ≤ 0 then (↑x : Int) + (-1)*↑y else 0
16691669
rw [Int.neg_mul, ← Int.sub_eq_add_neg, Int.one_mul]
16701670
rw [Int.neg_mul, ← Int.sub_eq_add_neg, Int.one_mul]
16711671
split

src/Init/Data/List/Pairwise.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ theorem pairwise_append_comm {R : α → α → Prop} (s : ∀ {x y}, R x y →
159159

160160
@[grind =] theorem pairwise_middle {R : α → α → Prop} (s : ∀ {x y}, R x y → R y x) {a : α} {l₁ l₂ : List α} :
161161
Pairwise R (l₁ ++ a :: l₂) ↔ Pairwise R (a :: (l₁ ++ l₂)) := by
162-
show Pairwise R (l₁ ++ ([a] ++ l₂)) ↔ Pairwise R ([a] ++ l₁ ++ l₂)
162+
change Pairwise R (l₁ ++ ([a] ++ l₂)) ↔ Pairwise R ([a] ++ l₁ ++ l₂)
163163
rw [← append_assoc, pairwise_append, @pairwise_append _ _ ([a] ++ l₁), pairwise_append_comm s]
164164
simp only [mem_append, or_comm]
165165

0 commit comments

Comments
 (0)