1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Basis.addHaar_self
File: Mathlib/MeasureTheory/Measure/Haar/OfBasis.lean

tactic: rw [Basis.addHaar]
state_before: ι : Type u_1
ι' : Type u_2
E : Type u_3
F : Type u_4
inst✝⁷ : Fintype ι
inst✝⁶ : Fintype ι'
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ E
inst✝² : NormedSpace ℝ F
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
b : Basis ι ℝ E
⊢ b.addHaar (_root_.parallelepiped ⇑b) = 1
state_after: ι : Type u_1
ι' : Type u_2
E : Type u_3
F : Type u_4
inst✝⁷ : Fintype ι
inst✝⁶ : Fintype ι'
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ E
inst✝² : NormedSpace ℝ F
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
b : Basis ι ℝ E
⊢ (addHaarMeasure b.parallelepiped) (_root_.parallelepiped ⇑b) = 1

tactic: exact addHaarMeasure_self
state_before: ι : Type u_1
ι' : Type u_2
E : Type u_3
F : Type u_4
inst✝⁷ : Fintype ι
inst✝⁶ : Fintype ι'
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ E
inst✝² : NormedSpace ℝ F
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
b : Basis ι ℝ E
⊢ (addHaarMeasure b.parallelepiped) (_root_.parallelepiped ⇑b) = 1
state_after: no goals
Theorem: Commute.geom_sum₂
File: Mathlib/Algebra/GeomSum.lean

tactic: have : x - y ≠ 0 := by simp_all [sub_eq_iff_eq_add]
state_before: α : Type u
inst✝ : DivisionRing α
x y : α
h' : Commute x y
h : x ≠ y
n : ℕ
⊢ ∑ i ∈ range n, x ^ i * y ^ (n - 1 - i) = (x ^ n - y ^ n) / (x - y)
state_after: α : Type u
inst✝ : DivisionRing α
x y : α
h' : Commute x y
h : x ≠ y
n : ℕ
this : x - y ≠ 0
⊢ ∑ i ∈ range n, x ^ i * y ^ (n - 1 - i) = (x ^ n - y ^ n) / (x - y)

tactic: rw [← h'.geom_sum₂_mul, mul_div_cancel_right₀ _ this]
state_before: α : Type u
inst✝ : DivisionRing α
x y : α
h' : Commute x y
h : x ≠ y
n : ℕ
this : x - y ≠ 0
⊢ ∑ i ∈ range n, x ^ i * y ^ (n - 1 - i) = (x ^ n - y ^ n) / (x - y)
state_after: no goals

tactic: simp_all [sub_eq_iff_eq_add]
state_before: α : Type u
inst✝ : DivisionRing α
x y : α
h' : Commute x y
h : x ≠ y
n : ℕ
⊢ x - y ≠ 0
state_after: no goals
Theorem: thickening_cthickening
File: Mathlib/Analysis/NormedSpace/Pointwise.lean

tactic: obtain rfl | hδ := hδ.eq_or_lt
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : NormedSpace ℝ E
x y z : E
δ ε : ℝ
hε : 0 < ε
hδ : 0 ≤ δ
s : Set E
⊢ thickening ε (cthickening δ s) = thickening (ε + δ) s
state_after: case inl
𝕜 : Type u_1
E : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : NormedSpace ℝ E
x y z : E
ε : ℝ
hε : 0 < ε
s : Set E
hδ : 0 ≤ 0
⊢ thickening ε (cthickening 0 s) = thickening (ε + 0) s

case inr
𝕜 : Type u_1
E : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : NormedSpace ℝ E
x y z : E
δ ε : ℝ
hε : 0 < ε
hδ✝ : 0 ≤ δ
s : Set E
hδ : 0 < δ
⊢ thickening ε (cthickening δ s) = thickening (ε + δ) s

tactic: rw [cthickening_zero, thickening_closure, add_zero]
state_before: case inl
𝕜 : Type u_1
E : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : NormedSpace ℝ E
x y z : E
ε : ℝ
hε : 0 < ε
s : Set E
hδ : 0 ≤ 0
⊢ thickening ε (cthickening 0 s) = thickening (ε + 0) s
state_after: no goals

tactic: rw [← closure_thickening hδ, thickening_closure, thickening_thickening hε hδ]
state_before: case inr
𝕜 : Type u_1
E : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : NormedSpace ℝ E
x y z : E
δ ε : ℝ
hε : 0 < ε
hδ✝ : 0 ≤ δ
s : Set E
hδ : 0 < δ
⊢ thickening ε (cthickening δ s) = thickening (ε + δ) s
state_after: no goals
Theorem: AkraBazziRecurrence.GrowsPolynomially.zpow
File: Mathlib/Computability/AkraBazzi/GrowsPolynomially.lean

tactic: simp_rw [← rpow_intCast]
state_before: f : ℝ → ℝ
p : ℤ
hf : GrowsPolynomially f
hf_nonneg : ∀ᶠ (x : ℝ) in atTop, 0 ≤ f x
⊢ GrowsPolynomially fun x => f x ^ p
state_after: f : ℝ → ℝ
p : ℤ
hf : GrowsPolynomially f
hf_nonneg : ∀ᶠ (x : ℝ) in atTop, 0 ≤ f x
⊢ GrowsPolynomially fun x => f x ^ ↑p

tactic: exact hf.rpow p hf_nonneg
state_before: f : ℝ → ℝ
p : ℤ
hf : GrowsPolynomially f
hf_nonneg : ∀ᶠ (x : ℝ) in atTop, 0 ≤ f x
⊢ GrowsPolynomially fun x => f x ^ ↑p
state_after: no goals
Theorem: MeasureTheory.Measure.ext_iff_of_sUnion_eq_univ
File: Mathlib/MeasureTheory/Measure/Restrict.lean

tactic: rwa [← sUnion_eq_biUnion]
state_before: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
S : Set (Set α)
hc : S.Countable
hs : ⋃₀ S = univ
⊢ ⋃ i ∈ S, i = univ
state_after: no goals
Theorem: Nat.maxPowDiv.base_pow_mul
File: Mathlib/Data/Nat/MaxPowDiv.lean

tactic: simp
state_before: p n exp : ℕ
hp : 1 < p
hn : 0 < n
⊢ p.maxPowDiv (p ^ 0 * n) = p.maxPowDiv n + 0
state_after: no goals

tactic: rw [Nat.pow_succ, mul_assoc, mul_comm, mul_assoc, base_mul_eq_succ hp, mul_comm,
  base_pow_mul hp hn]
state_before: p n exp : ℕ
hp : 1 < p
hn : 0 < n
e : ℕ
⊢ p.maxPowDiv (p ^ (e + 1) * n) = p.maxPowDiv n + (e + 1)
state_after: p n exp : ℕ
hp : 1 < p
hn : 0 < n
e : ℕ
⊢ p.maxPowDiv n + e + 1 = p.maxPowDiv n + (e + 1)

p n exp : ℕ
hp : 1 < p
hn : 0 < n
e : ℕ
⊢ 0 < n * p ^ e

tactic: ac_rfl
state_before: p n exp : ℕ
hp : 1 < p
hn : 0 < n
e : ℕ
⊢ p.maxPowDiv n + e + 1 = p.maxPowDiv n + (e + 1)
state_after: no goals

tactic: apply Nat.mul_pos hn <| pow_pos (pos_of_gt hp) e
state_before: p n exp : ℕ
hp : 1 < p
hn : 0 < n
e : ℕ
⊢ 0 < n * p ^ e
state_after: no goals
Theorem: MeasureTheory.integral_average
File: Mathlib/MeasureTheory/Integral/Average.lean

tactic: simp
state_before: α : Type u_1
E : Type u_2
F : Type u_3
m0 : MeasurableSpace α
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
μ✝ ν : Measure α
s t : Set α
f✝ g : α → E
μ : Measure α
inst✝ : IsFiniteMeasure μ
f : α → E
⊢ ∫ (x : α), ⨍ (a : α), f a ∂μ ∂μ = ∫ (x : α), f x ∂μ
state_after: no goals
Theorem: comp_dualTensorHom
File: Mathlib/LinearAlgebra/Contraction.lean

tactic: ext m
state_before: ι : Type w
R : Type u
M : Type v₁
N : Type v₂
P : Type v₃
Q : Type v₄
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : AddCommMonoid N
inst✝⁷ : AddCommMonoid P
inst✝⁶ : AddCommMonoid Q
inst✝⁵ : Module R M
inst✝⁴ : Module R N
inst✝³ : Module R P
inst✝² : Module R Q
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
b : Basis ι R M
f : Dual R M
n : N
g : Dual R N
p : P
⊢ (dualTensorHom R N P) (g ⊗ₜ[R] p) ∘ₗ (dualTensorHom R M N) (f ⊗ₜ[R] n) = g n • (dualTensorHom R M P) (f ⊗ₜ[R] p)
state_after: case h
ι : Type w
R : Type u
M : Type v₁
N : Type v₂
P : Type v₃
Q : Type v₄
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : AddCommMonoid N
inst✝⁷ : AddCommMonoid P
inst✝⁶ : AddCommMonoid Q
inst✝⁵ : Module R M
inst✝⁴ : Module R N
inst✝³ : Module R P
inst✝² : Module R Q
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
b : Basis ι R M
f : Dual R M
n : N
g : Dual R N
p : P
m : M
⊢ ((dualTensorHom R N P) (g ⊗ₜ[R] p) ∘ₗ (dualTensorHom R M N) (f ⊗ₜ[R] n)) m =
    (g n • (dualTensorHom R M P) (f ⊗ₜ[R] p)) m

tactic: simp only [coe_comp, Function.comp_apply, dualTensorHom_apply, LinearMap.map_smul,
  RingHom.id_apply, LinearMap.smul_apply]
state_before: case h
ι : Type w
R : Type u
M : Type v₁
N : Type v₂
P : Type v₃
Q : Type v₄
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : AddCommMonoid N
inst✝⁷ : AddCommMonoid P
inst✝⁶ : AddCommMonoid Q
inst✝⁵ : Module R M
inst✝⁴ : Module R N
inst✝³ : Module R P
inst✝² : Module R Q
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
b : Basis ι R M
f : Dual R M
n : N
g : Dual R N
p : P
m : M
⊢ ((dualTensorHom R N P) (g ⊗ₜ[R] p) ∘ₗ (dualTensorHom R M N) (f ⊗ₜ[R] n)) m =
    (g n • (dualTensorHom R M P) (f ⊗ₜ[R] p)) m
state_after: case h
ι : Type w
R : Type u
M : Type v₁
N : Type v₂
P : Type v₃
Q : Type v₄
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : AddCommMonoid N
inst✝⁷ : AddCommMonoid P
inst✝⁶ : AddCommMonoid Q
inst✝⁵ : Module R M
inst✝⁴ : Module R N
inst✝³ : Module R P
inst✝² : Module R Q
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
b : Basis ι R M
f : Dual R M
n : N
g : Dual R N
p : P
m : M
⊢ f m • g n • p = g n • f m • p

tactic: rw [smul_comm]
state_before: case h
ι : Type w
R : Type u
M : Type v₁
N : Type v₂
P : Type v₃
Q : Type v₄
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : AddCommMonoid N
inst✝⁷ : AddCommMonoid P
inst✝⁶ : AddCommMonoid Q
inst✝⁵ : Module R M
inst✝⁴ : Module R N
inst✝³ : Module R P
inst✝² : Module R Q
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
b : Basis ι R M
f : Dual R M
n : N
g : Dual R N
p : P
m : M
⊢ f m • g n • p = g n • f m • p
state_after: no goals
Theorem: AlgebraicGeometry.PresheafedSpace.IsOpenImmersion.app_invApp
File: Mathlib/Geometry/RingedSpace/OpenImmersion.lean

tactic: erw [← Category.assoc]
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : PresheafedSpace C
f : X ⟶ Y
H : IsOpenImmersion f
U : Opens ↑↑Y
⊢ f.c.app { unop := U } ≫ invApp f ((Opens.map f.base).obj U) = Y.presheaf.map (homOfLE ⋯).op
state_after: C : Type u
inst✝ : Category.{v, u} C
X Y : PresheafedSpace C
f : X ⟶ Y
H : IsOpenImmersion f
U : Opens ↑↑Y
⊢ (f.c.app { unop := U } ≫ X.presheaf.map (eqToHom ⋯)) ≫
      inv (f.c.app { unop := (opensFunctor f).obj ((Opens.map f.base).obj U) }) =
    Y.presheaf.map (homOfLE ⋯).op

tactic: rw [IsIso.comp_inv_eq, f.c.naturality]
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : PresheafedSpace C
f : X ⟶ Y
H : IsOpenImmersion f
U : Opens ↑↑Y
⊢ (f.c.app { unop := U } ≫ X.presheaf.map (eqToHom ⋯)) ≫
      inv (f.c.app { unop := (opensFunctor f).obj ((Opens.map f.base).obj U) }) =
    Y.presheaf.map (homOfLE ⋯).op
state_after: C : Type u
inst✝ : Category.{v, u} C
X Y : PresheafedSpace C
f : X ⟶ Y
H : IsOpenImmersion f
U : Opens ↑↑Y
⊢ f.c.app { unop := U } ≫ X.presheaf.map (eqToHom ⋯) = f.c.app { unop := U } ≫ (f.base _* X.presheaf).map (homOfLE ⋯).op

tactic: congr
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : PresheafedSpace C
f : X ⟶ Y
H : IsOpenImmersion f
U : Opens ↑↑Y
⊢ f.c.app { unop := U } ≫ X.presheaf.map (eqToHom ⋯) = f.c.app { unop := U } ≫ (f.base _* X.presheaf).map (homOfLE ⋯).op
state_after: no goals
Theorem: Finset.biUnion_inter
File: Mathlib/Data/Finset/Union.lean

tactic: ext x
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s✝ s₁ s₂ : Finset α
t✝ t₁ t₂ : α → Finset β
inst✝ : DecidableEq β
s : Finset α
f : α → Finset β
t : Finset β
⊢ s.biUnion f ∩ t = s.biUnion fun x => f x ∩ t
state_after: case a
α : Type u_1
β : Type u_2
γ : Type u_3
s✝ s₁ s₂ : Finset α
t✝ t₁ t₂ : α → Finset β
inst✝ : DecidableEq β
s : Finset α
f : α → Finset β
t : Finset β
x : β
⊢ x ∈ s.biUnion f ∩ t ↔ x ∈ s.biUnion fun x => f x ∩ t

tactic: simp only [mem_biUnion, mem_inter]
state_before: case a
α : Type u_1
β : Type u_2
γ : Type u_3
s✝ s₁ s₂ : Finset α
t✝ t₁ t₂ : α → Finset β
inst✝ : DecidableEq β
s : Finset α
f : α → Finset β
t : Finset β
x : β
⊢ x ∈ s.biUnion f ∩ t ↔ x ∈ s.biUnion fun x => f x ∩ t
state_after: case a
α : Type u_1
β : Type u_2
γ : Type u_3
s✝ s₁ s₂ : Finset α
t✝ t₁ t₂ : α → Finset β
inst✝ : DecidableEq β
s : Finset α
f : α → Finset β
t : Finset β
x : β
⊢ (∃ a ∈ s, x ∈ f a) ∧ x ∈ t ↔ ∃ a ∈ s, x ∈ f a ∧ x ∈ t

tactic: tauto
state_before: case a
α : Type u_1
β : Type u_2
γ : Type u_3
s✝ s₁ s₂ : Finset α
t✝ t₁ t₂ : α → Finset β
inst✝ : DecidableEq β
s : Finset α
f : α → Finset β
t : Finset β
x : β
⊢ (∃ a ∈ s, x ∈ f a) ∧ x ∈ t ↔ ∃ a ∈ s, x ∈ f a ∧ x ∈ t
state_after: no goals
Theorem: Associates.factors_le
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: refine ⟨fun h ↦ ?_, factors_mono⟩
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : UniqueFactorizationMonoid α
a b : Associates α
⊢ a.factors ≤ b.factors ↔ a ≤ b
state_after: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : UniqueFactorizationMonoid α
a b : Associates α
h : a.factors ≤ b.factors
⊢ a ≤ b

tactic: have : a.factors.prod ≤ b.factors.prod := prod_mono h
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : UniqueFactorizationMonoid α
a b : Associates α
h : a.factors ≤ b.factors
⊢ a ≤ b
state_after: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : UniqueFactorizationMonoid α
a b : Associates α
h : a.factors ≤ b.factors
this : a.factors.prod ≤ b.factors.prod
⊢ a ≤ b

tactic: rwa [factors_prod, factors_prod] at this
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : UniqueFactorizationMonoid α
a b : Associates α
h : a.factors ≤ b.factors
this : a.factors.prod ≤ b.factors.prod
⊢ a ≤ b
state_after: no goals
Theorem: contDiff_pi
File: Mathlib/Analysis/Calculus/ContDiff/Basic.lean

tactic: simp only [← contDiffOn_univ, contDiffOn_pi]
state_before: 𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_3
ι' : Type u_4
inst✝³ : Fintype ι
inst✝² : Fintype ι'
F' : ι → Type u_5
inst✝¹ : (i : ι) → NormedAddCommGroup (F' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (F' i)
φ : (i : ι) → E → F' i
p' : (i : ι) → E → FormalMultilinearSeries 𝕜 E (F' i)
Φ : E → (i : ι) → F' i
P' : E → FormalMultilinearSeries 𝕜 E ((i : ι) → F' i)
⊢ ContDiff 𝕜 n Φ ↔ ∀ (i : ι), ContDiff 𝕜 n fun x => Φ x i
state_after: no goals
Theorem: monovaryOn_inv_right
File: Mathlib/Algebra/Order/Monovary.lean

tactic: simpa [MonovaryOn, AntivaryOn] using forall₂_swap
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : OrderedCommGroup α
inst✝ : OrderedCommGroup β
s : Set ι
f f₁ f₂ : ι → α
g g₁ g₂ : ι → β
⊢ MonovaryOn f g⁻¹ s ↔ AntivaryOn f g s
state_after: no goals
Theorem: TypeVec.toSubtype_of_subtype_assoc
File: Mathlib/Data/TypeVec.lean

tactic: rw [← comp_assoc, toSubtype_of_subtype]
state_before: n : ℕ
α : TypeVec.{u_1} n
β : TypeVec.{u_2} n
p : α ⟹ repeat n Prop
f : β ⟹ Subtype_ p
⊢ toSubtype p ⊚ ofSubtype p ⊚ f = f
state_after: n : ℕ
α : TypeVec.{u_1} n
β : TypeVec.{u_2} n
p : α ⟹ repeat n Prop
f : β ⟹ Subtype_ p
⊢ id ⊚ f = f

tactic: simp
state_before: n : ℕ
α : TypeVec.{u_1} n
β : TypeVec.{u_2} n
p : α ⟹ repeat n Prop
f : β ⟹ Subtype_ p
⊢ id ⊚ f = f
state_after: no goals
Theorem: FreeMonoid.countP_of'
File: Mathlib/Algebra/FreeMonoid/Count.lean

tactic: erw [FreeAddMonoid.countP_of]
state_before: α : Type u_1
p : α → Prop
inst✝ : DecidablePred p
x : α
⊢ (countP p) (of x) = if p x then Multiplicative.ofAdd 1 else Multiplicative.ofAdd 0
state_after: α : Type u_1
p : α → Prop
inst✝ : DecidablePred p
x : α
⊢ (if p x = (true = true) then 1 else 0) = if p x then Multiplicative.ofAdd 1 else Multiplicative.ofAdd 0

tactic: simp only [eq_iff_iff, iff_true, ofAdd_zero]
state_before: α : Type u_1
p : α → Prop
inst✝ : DecidablePred p
x : α
⊢ (if p x = (true = true) then 1 else 0) = if p x then Multiplicative.ofAdd 1 else Multiplicative.ofAdd 0
state_after: α : Type u_1
p : α → Prop
inst✝ : DecidablePred p
x : α
⊢ (if p x then 1 else 0) = if p x then Multiplicative.ofAdd 1 else 1

tactic: rfl
state_before: α : Type u_1
p : α → Prop
inst✝ : DecidablePred p
x : α
⊢ (if p x then 1 else 0) = if p x then Multiplicative.ofAdd 1 else 1
state_after: no goals
Theorem: EuclideanGeometry.Sphere.oangle_eq_pi_sub_two_zsmul_oangle_center_left
File: Mathlib/Geometry/Euclidean/Angle/Sphere.lean

tactic: rw [oangle_eq_pi_sub_two_zsmul_oangle_of_dist_eq h.symm
    (dist_center_eq_dist_center_of_mem_sphere' hp₂ hp₁)]
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
s : Sphere P
p₁ p₂ : P
hp₁ : p₁ ∈ s
hp₂ : p₂ ∈ s
h : p₁ ≠ p₂
⊢ ∡ p₁ s.center p₂ = ↑π - 2 • ∡ s.center p₂ p₁
state_after: no goals
Theorem: Disjoint.map
File: Mathlib/Order/Hom/Lattice.lean

tactic: rw [disjoint_iff, ← map_inf, h.eq_bot, map_bot]
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
δ : Type u_6
inst✝⁵ : Lattice α
inst✝⁴ : BoundedOrder α
inst✝³ : Lattice β
inst✝² : BoundedOrder β
inst✝¹ : FunLike F α β
inst✝ : BoundedLatticeHomClass F α β
f : F
a b : α
h : Disjoint a b
⊢ Disjoint (f a) (f b)
state_after: no goals
Theorem: MonoidHom.mker_inl
File: Mathlib/Algebra/Group/Submonoid/Operations.lean

tactic: ext x
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝⁴ : MulOneClass M
inst✝³ : MulOneClass N
inst✝² : MulOneClass P
S : Submonoid M
A : Type u_4
inst✝¹ : SetLike A M
hA : SubmonoidClass A M
S' : A
F : Type u_5
inst✝ : FunLike F M N
mc : MonoidHomClass F M N
⊢ mker (inl M N) = ⊥
state_after: case h
M : Type u_1
N : Type u_2
P : Type u_3
inst✝⁴ : MulOneClass M
inst✝³ : MulOneClass N
inst✝² : MulOneClass P
S : Submonoid M
A : Type u_4
inst✝¹ : SetLike A M
hA : SubmonoidClass A M
S' : A
F : Type u_5
inst✝ : FunLike F M N
mc : MonoidHomClass F M N
x : M
⊢ x ∈ mker (inl M N) ↔ x ∈ ⊥

tactic: simp [mem_mker]
state_before: case h
M : Type u_1
N : Type u_2
P : Type u_3
inst✝⁴ : MulOneClass M
inst✝³ : MulOneClass N
inst✝² : MulOneClass P
S : Submonoid M
A : Type u_4
inst✝¹ : SetLike A M
hA : SubmonoidClass A M
S' : A
F : Type u_5
inst✝ : FunLike F M N
mc : MonoidHomClass F M N
x : M
⊢ x ∈ mker (inl M N) ↔ x ∈ ⊥
state_after: no goals
Theorem: CategoryTheory.Sieve.pushforward_comp
File: Mathlib/CategoryTheory/Sites/Sieves.lean

tactic: simpa
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y Z : C
f✝ : Y ⟶ X
S R✝ : Sieve X
f : Y ⟶ X
g : Z ⟶ Y
R : Sieve Z
W : C
h : W ⟶ X
x✝ : (pushforward (g ≫ f) R).arrows h
f₁ : W ⟶ Z
hq : f₁ ≫ g ≫ f = h
hf₁ : R.arrows f₁
⊢ (f₁ ≫ g) ≫ f = h
state_after: no goals

tactic: rw [← Category.assoc, hR]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y Z : C
f✝ : Y ⟶ X
S R✝ : Sieve X
f : Y ⟶ X
g : Z ⟶ Y
R : Sieve Z
W : C
h : W ⟶ X
x✝ : (pushforward f (pushforward g R)).arrows h
y : W ⟶ Y
hy : y ≫ f = h
z : W ⟶ Z
hR : z ≫ g = y
hz : R.arrows z
⊢ z ≫ g ≫ f = h ∧ R.arrows z
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y Z : C
f✝ : Y ⟶ X
S R✝ : Sieve X
f : Y ⟶ X
g : Z ⟶ Y
R : Sieve Z
W : C
h : W ⟶ X
x✝ : (pushforward f (pushforward g R)).arrows h
y : W ⟶ Y
hy : y ≫ f = h
z : W ⟶ Z
hR : z ≫ g = y
hz : R.arrows z
⊢ y ≫ f = h ∧ R.arrows z

tactic: tauto
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y Z : C
f✝ : Y ⟶ X
S R✝ : Sieve X
f : Y ⟶ X
g : Z ⟶ Y
R : Sieve Z
W : C
h : W ⟶ X
x✝ : (pushforward f (pushforward g R)).arrows h
y : W ⟶ Y
hy : y ≫ f = h
z : W ⟶ Z
hR : z ≫ g = y
hz : R.arrows z
⊢ y ≫ f = h ∧ R.arrows z
state_after: no goals
Theorem: not_fermat_42
File: Mathlib/NumberTheory/FLT/Four.lean

tactic: intro h
state_before: a b c : ℤ
ha : a ≠ 0
hb : b ≠ 0
⊢ a ^ 4 + b ^ 4 ≠ c ^ 2
state_after: a b c : ℤ
ha : a ≠ 0
hb : b ≠ 0
h : a ^ 4 + b ^ 4 = c ^ 2
⊢ False

tactic: obtain ⟨a0, b0, c0, ⟨hf, h2, hp⟩⟩ :=
  Fermat42.exists_pos_odd_minimal (And.intro ha (And.intro hb h))
state_before: a b c : ℤ
ha : a ≠ 0
hb : b ≠ 0
h : a ^ 4 + b ^ 4 = c ^ 2
⊢ False
state_after: case intro.intro.intro.intro.intro
a b c : ℤ
ha : a ≠ 0
hb : b ≠ 0
h : a ^ 4 + b ^ 4 = c ^ 2
a0 b0 c0 : ℤ
hf : Fermat42.Minimal a0 b0 c0
h2 : a0 % 2 = 1
hp : 0 < c0
⊢ False

tactic: apply Fermat42.not_minimal hf h2 hp
state_before: case intro.intro.intro.intro.intro
a b c : ℤ
ha : a ≠ 0
hb : b ≠ 0
h : a ^ 4 + b ^ 4 = c ^ 2
a0 b0 c0 : ℤ
hf : Fermat42.Minimal a0 b0 c0
h2 : a0 % 2 = 1
hp : 0 < c0
⊢ False
state_after: no goals
Theorem: Real.eq_zero_rpow_iff
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rw [← zero_rpow_eq_iff, eq_comm]
state_before: x✝ y z x a : ℝ
⊢ a = 0 ^ x ↔ x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1
state_after: no goals
Theorem: Infinite.nonempty_field
File: Mathlib/FieldTheory/Cardinality.lean

tactic: letI K := FractionRing (MvPolynomial α <| ULift.{u} ℚ)
state_before: α : Type u
inst✝ : Infinite α
⊢ Nonempty (Field α)
state_after: α : Type u
inst✝ : Infinite α
K : Type u := FractionRing (MvPolynomial α (ULift.{u, 0} ℚ))
⊢ Nonempty (Field α)

tactic: suffices #α = #K by
  obtain ⟨e⟩ := Cardinal.eq.1 this
  exact ⟨e.field⟩
state_before: α : Type u
inst✝ : Infinite α
K : Type u := FractionRing (MvPolynomial α (ULift.{u, 0} ℚ))
⊢ Nonempty (Field α)
state_after: α : Type u
inst✝ : Infinite α
K : Type u := FractionRing (MvPolynomial α (ULift.{u, 0} ℚ))
⊢ #α = #K

tactic: rw [← IsLocalization.card (MvPolynomial α <| ULift.{u} ℚ)⁰ K le_rfl]
state_before: α : Type u
inst✝ : Infinite α
K : Type u := FractionRing (MvPolynomial α (ULift.{u, 0} ℚ))
⊢ #α = #K
state_after: α : Type u
inst✝ : Infinite α
K : Type u := FractionRing (MvPolynomial α (ULift.{u, 0} ℚ))
⊢ #α = #(MvPolynomial α (ULift.{u, 0} ℚ))

tactic: apply le_antisymm
state_before: α : Type u
inst✝ : Infinite α
K : Type u := FractionRing (MvPolynomial α (ULift.{u, 0} ℚ))
⊢ #α = #(MvPolynomial α (ULift.{u, 0} ℚ))
state_after: case a
α : Type u
inst✝ : Infinite α
K : Type u := FractionRing (MvPolynomial α (ULift.{u, 0} ℚ))
⊢ #α ≤ #(MvPolynomial α (ULift.{u, 0} ℚ))

case a
α : Type u
inst✝ : Infinite α
K : Type u := FractionRing (MvPolynomial α (ULift.{u, 0} ℚ))
⊢ #(MvPolynomial α (ULift.{u, 0} ℚ)) ≤ #α

tactic: obtain ⟨e⟩ := Cardinal.eq.1 this
state_before: α : Type u
inst✝ : Infinite α
K : Type u := FractionRing (MvPolynomial α (ULift.{u, 0} ℚ))
this : #α = #K
⊢ Nonempty (Field α)
state_after: case intro
α : Type u
inst✝ : Infinite α
K : Type u := FractionRing (MvPolynomial α (ULift.{u, 0} ℚ))
this : #α = #K
e : α ≃ K
⊢ Nonempty (Field α)

tactic: exact ⟨e.field⟩
state_before: case intro
α : Type u
inst✝ : Infinite α
K : Type u := FractionRing (MvPolynomial α (ULift.{u, 0} ℚ))
this : #α = #K
e : α ≃ K
⊢ Nonempty (Field α)
state_after: no goals

tactic: refine
  ⟨⟨fun a => MvPolynomial.monomial (Finsupp.single a 1) (1 : ULift.{u} ℚ), fun x y h => ?_⟩⟩
state_before: case a
α : Type u
inst✝ : Infinite α
K : Type u := FractionRing (MvPolynomial α (ULift.{u, 0} ℚ))
⊢ #α ≤ #(MvPolynomial α (ULift.{u, 0} ℚ))
state_after: case a
α : Type u
inst✝ : Infinite α
K : Type u := FractionRing (MvPolynomial α (ULift.{u, 0} ℚ))
x y : α
h :
  (fun a => (MvPolynomial.monomial (Finsupp.single a 1)) 1) x =
    (fun a => (MvPolynomial.monomial (Finsupp.single a 1)) 1) y
⊢ x = y

tactic: simpa [MvPolynomial.monomial_eq_monomial_iff, Finsupp.single_eq_single_iff] using h
state_before: case a
α : Type u
inst✝ : Infinite α
K : Type u := FractionRing (MvPolynomial α (ULift.{u, 0} ℚ))
x y : α
h :
  (fun a => (MvPolynomial.monomial (Finsupp.single a 1)) 1) x =
    (fun a => (MvPolynomial.monomial (Finsupp.single a 1)) 1) y
⊢ x = y
state_after: no goals

tactic: simp
state_before: case a
α : Type u
inst✝ : Infinite α
K : Type u := FractionRing (MvPolynomial α (ULift.{u, 0} ℚ))
⊢ #(MvPolynomial α (ULift.{u, 0} ℚ)) ≤ #α
state_after: no goals
Theorem: LinearMap.IsSymmetric.orthogonalComplement_iSup_eigenspaces_invariant
File: Mathlib/Analysis/InnerProductSpace/Spectrum.lean

tactic: rw [← Submodule.iInf_orthogonal] at hv ⊢
state_before: 𝕜 : Type u_1
inst✝² : RCLike 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
v : E
hv : v ∈ (⨆ μ, eigenspace T μ)ᗮ
⊢ T v ∈ (⨆ μ, eigenspace T μ)ᗮ
state_after: 𝕜 : Type u_1
inst✝² : RCLike 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
v : E
hv : v ∈ ⨅ i, (eigenspace T i)ᗮ
⊢ T v ∈ ⨅ i, (eigenspace T i)ᗮ

tactic: exact T.iInf_invariant hT.invariant_orthogonalComplement_eigenspace v hv
state_before: 𝕜 : Type u_1
inst✝² : RCLike 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
v : E
hv : v ∈ ⨅ i, (eigenspace T i)ᗮ
⊢ T v ∈ ⨅ i, (eigenspace T i)ᗮ
state_after: no goals