1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: MonoidAlgebra.liftNC_one
File: Mathlib/Algebra/MonoidAlgebra/Basic.lean

tactic: simp [one_def]
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁴ : NonAssocSemiring R
inst✝³ : Semiring k
inst✝² : One G
g_hom : Type u_3
inst✝¹ : FunLike g_hom G R
inst✝ : OneHomClass g_hom G R
f : k →+* R
g : g_hom
⊢ (liftNC ↑f ⇑g) 1 = 1
state_after: no goals
Theorem: Set.le_einfsep_pi_of_le
File: Mathlib/Topology/MetricSpace/Infsep.lean

tactic: refine le_einfsep fun x hx y hy hxy => ?_
state_before: α : Type u_1
β : Type u_2
inst✝² : PseudoEMetricSpace α
x y z : α
s✝ t : Set α
π : β → Type u_3
inst✝¹ : Fintype β
inst✝ : (b : β) → PseudoEMetricSpace (π b)
s : (b : β) → Set (π b)
c : ℝ≥0∞
h : ∀ (b : β), c ≤ (s b).einfsep
⊢ c ≤ (univ.pi s).einfsep
state_after: α : Type u_1
β : Type u_2
inst✝² : PseudoEMetricSpace α
x✝ y✝ z : α
s✝ t : Set α
π : β → Type u_3
inst✝¹ : Fintype β
inst✝ : (b : β) → PseudoEMetricSpace (π b)
s : (b : β) → Set (π b)
c : ℝ≥0∞
h : ∀ (b : β), c ≤ (s b).einfsep
x : (i : β) → π i
hx : x ∈ univ.pi s
y : (i : β) → π i
hy : y ∈ univ.pi s
hxy : x ≠ y
⊢ c ≤ edist x y

tactic: rw [mem_univ_pi] at hx hy
state_before: α : Type u_1
β : Type u_2
inst✝² : PseudoEMetricSpace α
x✝ y✝ z : α
s✝ t : Set α
π : β → Type u_3
inst✝¹ : Fintype β
inst✝ : (b : β) → PseudoEMetricSpace (π b)
s : (b : β) → Set (π b)
c : ℝ≥0∞
h : ∀ (b : β), c ≤ (s b).einfsep
x : (i : β) → π i
hx : x ∈ univ.pi s
y : (i : β) → π i
hy : y ∈ univ.pi s
hxy : x ≠ y
⊢ c ≤ edist x y
state_after: α : Type u_1
β : Type u_2
inst✝² : PseudoEMetricSpace α
x✝ y✝ z : α
s✝ t : Set α
π : β → Type u_3
inst✝¹ : Fintype β
inst✝ : (b : β) → PseudoEMetricSpace (π b)
s : (b : β) → Set (π b)
c : ℝ≥0∞
h : ∀ (b : β), c ≤ (s b).einfsep
x : (i : β) → π i
hx : ∀ (i : β), x i ∈ s i
y : (i : β) → π i
hy : ∀ (i : β), y i ∈ s i
hxy : x ≠ y
⊢ c ≤ edist x y

tactic: rcases Function.ne_iff.mp hxy with ⟨i, hi⟩
state_before: α : Type u_1
β : Type u_2
inst✝² : PseudoEMetricSpace α
x✝ y✝ z : α
s✝ t : Set α
π : β → Type u_3
inst✝¹ : Fintype β
inst✝ : (b : β) → PseudoEMetricSpace (π b)
s : (b : β) → Set (π b)
c : ℝ≥0∞
h : ∀ (b : β), c ≤ (s b).einfsep
x : (i : β) → π i
hx : ∀ (i : β), x i ∈ s i
y : (i : β) → π i
hy : ∀ (i : β), y i ∈ s i
hxy : x ≠ y
⊢ c ≤ edist x y
state_after: case intro
α : Type u_1
β : Type u_2
inst✝² : PseudoEMetricSpace α
x✝ y✝ z : α
s✝ t : Set α
π : β → Type u_3
inst✝¹ : Fintype β
inst✝ : (b : β) → PseudoEMetricSpace (π b)
s : (b : β) → Set (π b)
c : ℝ≥0∞
h : ∀ (b : β), c ≤ (s b).einfsep
x : (i : β) → π i
hx : ∀ (i : β), x i ∈ s i
y : (i : β) → π i
hy : ∀ (i : β), y i ∈ s i
hxy : x ≠ y
i : β
hi : x i ≠ y i
⊢ c ≤ edist x y

tactic: exact le_trans (le_einfsep_iff.1 (h i) _ (hx _) _ (hy _) hi) (edist_le_pi_edist _ _ i)
state_before: case intro
α : Type u_1
β : Type u_2
inst✝² : PseudoEMetricSpace α
x✝ y✝ z : α
s✝ t : Set α
π : β → Type u_3
inst✝¹ : Fintype β
inst✝ : (b : β) → PseudoEMetricSpace (π b)
s : (b : β) → Set (π b)
c : ℝ≥0∞
h : ∀ (b : β), c ≤ (s b).einfsep
x : (i : β) → π i
hx : ∀ (i : β), x i ∈ s i
y : (i : β) → π i
hy : ∀ (i : β), y i ∈ s i
hxy : x ≠ y
i : β
hi : x i ≠ y i
⊢ c ≤ edist x y
state_after: no goals
Theorem: Composition.length_le
File: Mathlib/Combinatorics/Enumerative/Composition.lean

tactic: conv_rhs => rw [← c.blocks_sum]
state_before: n : ℕ
c : Composition n
⊢ c.length ≤ n
state_after: n : ℕ
c : Composition n
⊢ c.length ≤ c.blocks.sum

tactic: exact length_le_sum_of_one_le _ fun i hi => c.one_le_blocks hi
state_before: n : ℕ
c : Composition n
⊢ c.length ≤ c.blocks.sum
state_after: no goals
Theorem: QuadraticForm.polar_self
File: Mathlib/LinearAlgebra/QuadraticForm/Basic.lean

tactic: rw [polar, map_add_self, sub_sub, sub_eq_iff_eq_add, ← two_mul, ← two_mul, ← mul_assoc]
state_before: S : Type u_1
T : Type u_2
R : Type u_3
M : Type u_4
N : Type u_5
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
x : M
⊢ polar (⇑Q) x x = 2 * Q x
state_after: S : Type u_1
T : Type u_2
R : Type u_3
M : Type u_4
N : Type u_5
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
x : M
⊢ 4 * Q x = 2 * 2 * Q x

tactic: norm_num
state_before: S : Type u_1
T : Type u_2
R : Type u_3
M : Type u_4
N : Type u_5
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
x : M
⊢ 4 * Q x = 2 * 2 * Q x
state_after: no goals
Theorem: GeneralizedContinuedFraction.exists_s_b_of_part_denom
File: Mathlib/Algebra/ContinuedFractions/Translations.lean

tactic: simpa [partialDenominators, Stream'.Seq.map_get?] using nth_part_denom_eq
state_before: α : Type u_1
g : GeneralizedContinuedFraction α
n : ℕ
b : α
nth_part_denom_eq : g.partialDenominators.get? n = some b
⊢ ∃ gp, g.s.get? n = some gp ∧ gp.b = b
state_after: no goals
Theorem: Metric.Sigma.one_le_dist_of_ne
File: Mathlib/Topology/MetricSpace/Gluing.lean

tactic: rw [Sigma.dist_ne h x y]
state_before: ι : Type u_1
E : ι → Type u_2
inst✝ : (i : ι) → MetricSpace (E i)
i j : ι
h : i ≠ j
x : E i
y : E j
⊢ 1 ≤ dist ⟨i, x⟩ ⟨j, y⟩
state_after: ι : Type u_1
E : ι → Type u_2
inst✝ : (i : ι) → MetricSpace (E i)
i j : ι
h : i ≠ j
x : E i
y : E j
⊢ 1 ≤ dist x ⋯.some + 1 + dist ⋯.some y

tactic: linarith [@dist_nonneg _ _ x (Nonempty.some ⟨x⟩), @dist_nonneg _ _ (Nonempty.some ⟨y⟩) y]
state_before: ι : Type u_1
E : ι → Type u_2
inst✝ : (i : ι) → MetricSpace (E i)
i j : ι
h : i ≠ j
x : E i
y : E j
⊢ 1 ≤ dist x ⋯.some + 1 + dist ⋯.some y
state_after: no goals
Theorem: GaussianInt.norm_nonneg
File: Mathlib/NumberTheory/Zsqrtd/GaussianInt.lean

tactic: norm_num
state_before: x : ℤ[i]
⊢ -1 ≤ 0
state_after: no goals
Theorem: Set.iUnion₂_prod_const
File: Mathlib/Data/Set/Lattice.lean

tactic: simp_rw [iUnion_prod_const]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
s : (i : ι) → κ i → Set α
t : Set β
⊢ (⋃ i, ⋃ j, s i j) ×ˢ t = ⋃ i, ⋃ j, s i j ×ˢ t
state_after: no goals
Theorem: Con.lift_funext
File: Mathlib/GroupTheory/Congruence/Basic.lean

tactic: rw [← lift_apply_mk' f, ← lift_apply_mk' g]
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
c : Con M
x y : M
f✝ : M →* P
f g : c.Quotient →* P
h : ∀ (a : M), f ↑a = g ↑a
⊢ f = g
state_after: M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
c : Con M
x y : M
f✝ : M →* P
f g : c.Quotient →* P
h : ∀ (a : M), f ↑a = g ↑a
⊢ c.lift (f.comp c.mk') ⋯ = c.lift (g.comp c.mk') ⋯

tactic: congr 1
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
c : Con M
x y : M
f✝ : M →* P
f g : c.Quotient →* P
h : ∀ (a : M), f ↑a = g ↑a
⊢ c.lift (f.comp c.mk') ⋯ = c.lift (g.comp c.mk') ⋯
state_after: case e_f
M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
c : Con M
x y : M
f✝ : M →* P
f g : c.Quotient →* P
h : ∀ (a : M), f ↑a = g ↑a
⊢ f.comp c.mk' = g.comp c.mk'

tactic: exact DFunLike.ext_iff.2 h
state_before: case e_f
M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
c : Con M
x y : M
f✝ : M →* P
f g : c.Quotient →* P
h : ∀ (a : M), f ↑a = g ↑a
⊢ f.comp c.mk' = g.comp c.mk'
state_after: no goals
Theorem: Stream'.Seq1.map_join
File: Mathlib/Data/Seq/Seq.lean

tactic: apply recOn s <;> intros <;> simp [map]
state_before: α : Type u
β : Type v
γ : Type w
f : α → β
a : α
s : Seq α
S : Seq (Seq1 α)
⊢ map f (join ((a, s), S)) = (map (map f) ((a, s), S)).join
state_after: no goals
Theorem: Polynomial.reverse_mul_X_pow
File: Mathlib/Algebra/Polynomial/Reverse.lean

tactic: induction' n with n ih
state_before: R : Type u_1
inst✝ : Semiring R
f p : R[X]
n : ℕ
⊢ (p * X ^ n).reverse = p.reverse
state_after: case zero
R : Type u_1
inst✝ : Semiring R
f p : R[X]
⊢ (p * X ^ 0).reverse = p.reverse

case succ
R : Type u_1
inst✝ : Semiring R
f p : R[X]
n : ℕ
ih : (p * X ^ n).reverse = p.reverse
⊢ (p * X ^ (n + 1)).reverse = p.reverse

tactic: rw [pow_succ, ← mul_assoc, reverse_mul_X, ih]
state_before: case succ
R : Type u_1
inst✝ : Semiring R
f p : R[X]
n : ℕ
ih : (p * X ^ n).reverse = p.reverse
⊢ (p * X ^ (n + 1)).reverse = p.reverse
state_after: no goals

tactic: simp
state_before: case zero
R : Type u_1
inst✝ : Semiring R
f p : R[X]
⊢ (p * X ^ 0).reverse = p.reverse
state_after: no goals
Theorem: Equiv.Perm.disjoint_prod_right
File: Mathlib/GroupTheory/Perm/Support.lean

tactic: induction' l with g l ih
state_before: α : Type u_1
f g h✝ : Perm α
l : List (Perm α)
h : ∀ g ∈ l, f.Disjoint g
⊢ f.Disjoint l.prod
state_after: case nil
α : Type u_1
f g h✝ : Perm α
h : ∀ g ∈ [], f.Disjoint g
⊢ f.Disjoint [].prod

case cons
α : Type u_1
f g✝ h✝ g : Perm α
l : List (Perm α)
ih : (∀ g ∈ l, f.Disjoint g) → f.Disjoint l.prod
h : ∀ g_1 ∈ g :: l, f.Disjoint g_1
⊢ f.Disjoint (g :: l).prod

tactic: exact disjoint_one_right _
state_before: case nil
α : Type u_1
f g h✝ : Perm α
h : ∀ g ∈ [], f.Disjoint g
⊢ f.Disjoint [].prod
state_after: no goals

tactic: rw [List.prod_cons]
state_before: case cons
α : Type u_1
f g✝ h✝ g : Perm α
l : List (Perm α)
ih : (∀ g ∈ l, f.Disjoint g) → f.Disjoint l.prod
h : ∀ g_1 ∈ g :: l, f.Disjoint g_1
⊢ f.Disjoint (g :: l).prod
state_after: case cons
α : Type u_1
f g✝ h✝ g : Perm α
l : List (Perm α)
ih : (∀ g ∈ l, f.Disjoint g) → f.Disjoint l.prod
h : ∀ g_1 ∈ g :: l, f.Disjoint g_1
⊢ f.Disjoint (g * l.prod)

tactic: exact (h _ (List.mem_cons_self _ _)).mul_right (ih fun g hg => h g (List.mem_cons_of_mem _ hg))
state_before: case cons
α : Type u_1
f g✝ h✝ g : Perm α
l : List (Perm α)
ih : (∀ g ∈ l, f.Disjoint g) → f.Disjoint l.prod
h : ∀ g_1 ∈ g :: l, f.Disjoint g_1
⊢ f.Disjoint (g * l.prod)
state_after: no goals
Theorem: dist_vadd_vadd_le
File: Mathlib/Analysis/Normed/Group/AddTorsor.lean

tactic: simpa using dist_triangle (v +ᵥ p) (v' +ᵥ p) (v' +ᵥ p')
state_before: α : Type u_1
V : Type u_2
P : Type u_3
W : Type u_4
Q : Type u_5
inst✝⁵ : SeminormedAddCommGroup V
inst✝⁴ : PseudoMetricSpace P
inst✝³ : NormedAddTorsor V P
inst✝² : NormedAddCommGroup W
inst✝¹ : MetricSpace Q
inst✝ : NormedAddTorsor W Q
v v' : V
p p' : P
⊢ dist (v +ᵥ p) (v' +ᵥ p') ≤ dist v v' + dist p p'
state_after: no goals
Theorem: Equiv.toEmbedding_injective
File: Mathlib/Logic/Embedding/Basic.lean

tactic: rwa [DFunLike.ext'_iff] at h ⊢
state_before: α : Sort u
β : Sort v
f x✝¹ x✝ : α ≃ β
h : x✝¹.toEmbedding = x✝.toEmbedding
⊢ x✝¹ = x✝
state_after: no goals
Theorem: Finset.singleton_subset_set_iff
File: Mathlib/Data/Finset/Basic.lean

tactic: rw [coe_singleton, Set.singleton_subset_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s✝ : Finset α
a✝ b : α
s : Set α
a : α
⊢ ↑{a} ⊆ s ↔ a ∈ s
state_after: no goals
Theorem: List.eq_of_prod_take_eq
File: Mathlib/Algebra/BigOperators/Group/List.lean

tactic: refine ext_get h fun i h₁ h₂ => ?_
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝ : LeftCancelMonoid M
L L' : List M
h : L.length = L'.length
h' : ∀ i ≤ L.length, (take i L).prod = (take i L').prod
⊢ L = L'
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝ : LeftCancelMonoid M
L L' : List M
h : L.length = L'.length
h' : ∀ i ≤ L.length, (take i L).prod = (take i L').prod
i : ℕ
h₁ : i < L.length
h₂ : i < L'.length
⊢ L.get ⟨i, h₁⟩ = L'.get ⟨i, h₂⟩

tactic: have : (L.take (i + 1)).prod = (L'.take (i + 1)).prod := h' _ (Nat.succ_le_of_lt h₁)
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝ : LeftCancelMonoid M
L L' : List M
h : L.length = L'.length
h' : ∀ i ≤ L.length, (take i L).prod = (take i L').prod
i : ℕ
h₁ : i < L.length
h₂ : i < L'.length
⊢ L.get ⟨i, h₁⟩ = L'.get ⟨i, h₂⟩
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝ : LeftCancelMonoid M
L L' : List M
h : L.length = L'.length
h' : ∀ i ≤ L.length, (take i L).prod = (take i L').prod
i : ℕ
h₁ : i < L.length
h₂ : i < L'.length
this : (take (i + 1) L).prod = (take (i + 1) L').prod
⊢ L.get ⟨i, h₁⟩ = L'.get ⟨i, h₂⟩

tactic: rw [prod_take_succ L i h₁, prod_take_succ L' i h₂, h' i (le_of_lt h₁)] at this
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝ : LeftCancelMonoid M
L L' : List M
h : L.length = L'.length
h' : ∀ i ≤ L.length, (take i L).prod = (take i L').prod
i : ℕ
h₁ : i < L.length
h₂ : i < L'.length
this : (take (i + 1) L).prod = (take (i + 1) L').prod
⊢ L.get ⟨i, h₁⟩ = L'.get ⟨i, h₂⟩
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝ : LeftCancelMonoid M
L L' : List M
h : L.length = L'.length
h' : ∀ i ≤ L.length, (take i L).prod = (take i L').prod
i : ℕ
h₁ : i < L.length
h₂ : i < L'.length
this : (take i L').prod * L[i] = (take i L').prod * L'[i]
⊢ L.get ⟨i, h₁⟩ = L'.get ⟨i, h₂⟩

tactic: convert mul_left_cancel this
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝ : LeftCancelMonoid M
L L' : List M
h : L.length = L'.length
h' : ∀ i ≤ L.length, (take i L).prod = (take i L').prod
i : ℕ
h₁ : i < L.length
h₂ : i < L'.length
this : (take i L').prod * L[i] = (take i L').prod * L'[i]
⊢ L.get ⟨i, h₁⟩ = L'.get ⟨i, h₂⟩
state_after: no goals
Theorem: IsLinearMap.isLinearMap_sub
File: Mathlib/Algebra/Module/LinearMap/Prod.lean

tactic: apply IsLinearMap.mk
state_before: R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
⊢ IsLinearMap R fun x => x.1 - x.2
state_after: case map_add
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
⊢ ∀ (x y : M × M), (x + y).1 - (x + y).2 = x.1 - x.2 + (y.1 - y.2)

case map_smul
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
⊢ ∀ (c : R) (x : M × M), (c • x).1 - (c • x).2 = c • (x.1 - x.2)

tactic: intro x y
state_before: case map_add
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
⊢ ∀ (x y : M × M), (x + y).1 - (x + y).2 = x.1 - x.2 + (y.1 - y.2)
state_after: case map_add
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y : M × M
⊢ (x + y).1 - (x + y).2 = x.1 - x.2 + (y.1 - y.2)

tactic: rw [Prod.fst_add, Prod.snd_add]
state_before: case map_add
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y : M × M
⊢ (x + y).1 - (x + y).2 = x.1 - x.2 + (y.1 - y.2)
state_after: case map_add
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y : M × M
⊢ x.1 + y.1 - (x.2 + y.2) = x.1 - x.2 + (y.1 - y.2)

tactic: abel
state_before: case map_add
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y : M × M
⊢ x.1 + y.1 - (x.2 + y.2) = x.1 - x.2 + (y.1 - y.2)
state_after: no goals

tactic: intro x y
state_before: case map_smul
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
⊢ ∀ (c : R) (x : M × M), (c • x).1 - (c • x).2 = c • (x.1 - x.2)
state_after: case map_smul
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x : R
y : M × M
⊢ (x • y).1 - (x • y).2 = x • (y.1 - y.2)

tactic: simp [smul_sub]
state_before: case map_smul
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x : R
y : M × M
⊢ (x • y).1 - (x • y).2 = x • (y.1 - y.2)
state_after: no goals
Theorem: Ideal.map_spanNorm
File: Mathlib/RingTheory/Ideal/Norm.lean

tactic: rw [spanNorm, map_span, Set.image_image]
state_before: R : Type u_1
inst✝³ : CommRing R
S : Type u_2
inst✝² : CommRing S
inst✝¹ : Algebra R S
I : Ideal S
T : Type u_3
inst✝ : CommRing T
f : R →+* T
⊢ map f (spanNorm R I) = span (⇑f ∘ ⇑(Algebra.norm R) '' ↑I)
state_after: R : Type u_1
inst✝³ : CommRing R
S : Type u_2
inst✝² : CommRing S
inst✝¹ : Algebra R S
I : Ideal S
T : Type u_3
inst✝ : CommRing T
f : R →+* T
⊢ span ((fun x => f ((Algebra.norm R) x)) '' ↑I) = span (⇑f ∘ ⇑(Algebra.norm R) '' ↑I)

tactic: rfl
state_before: R : Type u_1
inst✝³ : CommRing R
S : Type u_2
inst✝² : CommRing S
inst✝¹ : Algebra R S
I : Ideal S
T : Type u_3
inst✝ : CommRing T
f : R →+* T
⊢ span ((fun x => f ((Algebra.norm R) x)) '' ↑I) = span (⇑f ∘ ⇑(Algebra.norm R) '' ↑I)
state_after: no goals
Theorem: equivShrink_symm_div
File: Mathlib/Logic/Small/Group.lean

tactic: rw [Equiv.div_def]
state_before: α : Type u_1
inst✝¹ : Div α
inst✝ : Small.{u_2, u_1} α
x y : Shrink.{u_2, u_1} α
⊢ (equivShrink α).symm (x / y) = (equivShrink α).symm x / (equivShrink α).symm y
state_after: α : Type u_1
inst✝¹ : Div α
inst✝ : Small.{u_2, u_1} α
x y : Shrink.{u_2, u_1} α
⊢ (equivShrink α).symm ((equivShrink α).symm.symm ((equivShrink α).symm x / (equivShrink α).symm y)) =
    (equivShrink α).symm x / (equivShrink α).symm y

tactic: simp
state_before: α : Type u_1
inst✝¹ : Div α
inst✝ : Small.{u_2, u_1} α
x y : Shrink.{u_2, u_1} α
⊢ (equivShrink α).symm ((equivShrink α).symm.symm ((equivShrink α).symm x / (equivShrink α).symm y)) =
    (equivShrink α).symm x / (equivShrink α).symm y
state_after: no goals
Theorem: HomologicalComplex.singleObjHomologySelfIso_hom_naturality
File: Mathlib/Algebra/Homology/SingleHomology.lean

tactic: rw [← cancel_epi (((single C c j).obj A).homologyπ j),
  homologyπ_naturality_assoc, homologyπ_singleObjHomologySelfIso_hom,
  singleObjCyclesSelfIso_hom_naturality, homologyπ_singleObjHomologySelfIso_hom_assoc]
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
inst✝¹ : HasZeroObject C
ι : Type u_1
inst✝ : DecidableEq ι
c : ComplexShape ι
j : ι
A B : C
f : A ⟶ B
⊢ homologyMap ((single C c j).map f) j ≫ (singleObjHomologySelfIso c j B).hom = (singleObjHomologySelfIso c j A).hom ≫ f
state_after: no goals
Theorem: Finset.infs_self
File: Mathlib/Data/Finset/Sups.lean

tactic: simp [← coe_inj]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝⁵ : DecidableEq α
inst✝⁴ : DecidableEq β
inst✝³ : SemilatticeInf α
inst✝² : SemilatticeInf β
inst✝¹ : FunLike F α β
inst✝ : InfHomClass F α β
s s₁ s₂ t t₁ t₂ u v : Finset α
a b c : α
⊢ s ⊼ s = s ↔ InfClosed ↑s
state_after: no goals
Theorem: MeasureTheory.Measure.haarMeasure_apply
File: Mathlib/MeasureTheory/Measure/Haar/Basic.lean

tactic: change ((haarContent K₀).measure K₀)⁻¹ * (haarContent K₀).measure s = _
state_before: G : Type u_1
inst✝⁴ : Group G
inst✝³ : TopologicalSpace G
inst✝² : TopologicalGroup G
inst✝¹ : MeasurableSpace G
inst✝ : BorelSpace G
K₀ : PositiveCompacts G
s : Set G
hs : MeasurableSet s
⊢ (haarMeasure K₀) s = (haarContent K₀).outerMeasure s / (haarContent K₀).measure ↑K₀
state_after: G : Type u_1
inst✝⁴ : Group G
inst✝³ : TopologicalSpace G
inst✝² : TopologicalGroup G
inst✝¹ : MeasurableSpace G
inst✝ : BorelSpace G
K₀ : PositiveCompacts G
s : Set G
hs : MeasurableSet s
⊢ ((haarContent K₀).measure ↑K₀)⁻¹ * (haarContent K₀).measure s =
    (haarContent K₀).outerMeasure s / (haarContent K₀).measure ↑K₀

tactic: simp only [hs, div_eq_mul_inv, mul_comm, Content.measure_apply]
state_before: G : Type u_1
inst✝⁴ : Group G
inst✝³ : TopologicalSpace G
inst✝² : TopologicalGroup G
inst✝¹ : MeasurableSpace G
inst✝ : BorelSpace G
K₀ : PositiveCompacts G
s : Set G
hs : MeasurableSet s
⊢ ((haarContent K₀).measure ↑K₀)⁻¹ * (haarContent K₀).measure s =
    (haarContent K₀).outerMeasure s / (haarContent K₀).measure ↑K₀
state_after: no goals
Theorem: Real.Angle.toReal_le_pi
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: induction θ using Real.Angle.induction_on
state_before: θ : Angle
⊢ θ.toReal ≤ π
state_after: case h
x✝ : ℝ
⊢ (↑x✝).toReal ≤ π

tactic: convert toIocMod_le_right two_pi_pos _ _
state_before: case h
x✝ : ℝ
⊢ (↑x✝).toReal ≤ π
state_after: case h.e'_4
x✝ : ℝ
⊢ π = -π + 2 * π

tactic: ring
state_before: case h.e'_4
x✝ : ℝ
⊢ π = -π + 2 * π
state_after: no goals
Theorem: AlgebraicTopology.DoldKan.HigherFacesVanish.comp_δ_eq_zero
File: Mathlib/AlgebraicTopology/DoldKan/Faces.lean

tactic: obtain ⟨i, rfl⟩ := Fin.eq_succ_of_ne_zero hj₁
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
Y : C
n q : ℕ
φ : Y ⟶ X _[n + 1]
v : HigherFacesVanish q φ
j : Fin (n + 2)
hj₁ : j ≠ 0
hj₂ : n + 2 ≤ ↑j + q
⊢ φ ≫ X.δ j = 0
state_after: case intro
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
Y : C
n q : ℕ
φ : Y ⟶ X _[n + 1]
v : HigherFacesVanish q φ
i : Fin (n + 1)
hj₁ : i.succ ≠ 0
hj₂ : n + 2 ≤ ↑i.succ + q
⊢ φ ≫ X.δ i.succ = 0

tactic: apply v i
state_before: case intro
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
Y : C
n q : ℕ
φ : Y ⟶ X _[n + 1]
v : HigherFacesVanish q φ
i : Fin (n + 1)
hj₁ : i.succ ≠ 0
hj₂ : n + 2 ≤ ↑i.succ + q
⊢ φ ≫ X.δ i.succ = 0
state_after: case intro
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
Y : C
n q : ℕ
φ : Y ⟶ X _[n + 1]
v : HigherFacesVanish q φ
i : Fin (n + 1)
hj₁ : i.succ ≠ 0
hj₂ : n + 2 ≤ ↑i.succ + q
⊢ n + 1 ≤ ↑i + q

tactic: simp only [Fin.val_succ] at hj₂
state_before: case intro
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
Y : C
n q : ℕ
φ : Y ⟶ X _[n + 1]
v : HigherFacesVanish q φ
i : Fin (n + 1)
hj₁ : i.succ ≠ 0
hj₂ : n + 2 ≤ ↑i.succ + q
⊢ n + 1 ≤ ↑i + q
state_after: case intro
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
Y : C
n q : ℕ
φ : Y ⟶ X _[n + 1]
v : HigherFacesVanish q φ
i : Fin (n + 1)
hj₁ : i.succ ≠ 0
hj₂ : n + 2 ≤ ↑i + 1 + q
⊢ n + 1 ≤ ↑i + q

tactic: omega
state_before: case intro
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
Y : C
n q : ℕ
φ : Y ⟶ X _[n + 1]
v : HigherFacesVanish q φ
i : Fin (n + 1)
hj₁ : i.succ ≠ 0
hj₂ : n + 2 ≤ ↑i + 1 + q
⊢ n + 1 ≤ ↑i + q
state_after: no goals
Theorem: Complex.ofReal_sinh_ofReal_re
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [← sinh_conj, conj_ofReal]
state_before: x✝ y : ℂ
x : ℝ
⊢ (starRingEnd ℂ) (sinh ↑x) = sinh ↑x
state_after: no goals
Theorem: Set.ordConnected_range
File: Mathlib/Order/Interval/Set/OrdConnected.lean

tactic: simp_rw [← image_univ]
state_before: α : Type u_1
β : Type u_2
inst✝³ : Preorder α
inst✝² : Preorder β
s t : Set α
E : Type u_3
inst✝¹ : EquivLike E α β
inst✝ : OrderIsoClass E α β
e : E
⊢ (range ⇑e).OrdConnected
state_after: α : Type u_1
β : Type u_2
inst✝³ : Preorder α
inst✝² : Preorder β
s t : Set α
E : Type u_3
inst✝¹ : EquivLike E α β
inst✝ : OrderIsoClass E α β
e : E
⊢ (⇑e '' univ).OrdConnected

tactic: exact ordConnected_image (e : α ≃o β)
state_before: α : Type u_1
β : Type u_2
inst✝³ : Preorder α
inst✝² : Preorder β
s t : Set α
E : Type u_3
inst✝¹ : EquivLike E α β
inst✝ : OrderIsoClass E α β
e : E
⊢ (⇑e '' univ).OrdConnected
state_after: no goals