tasksource/leandojo huggingface dataset:
Theorem: InnerProductSpace.Core.inner_self_im
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: rw [← @ofReal_inj 𝕜, im_eq_conj_sub]
state_before: 𝕜 : Type u_1
E : Type ?u.327167
F : Type u_2
inst✝² : IsROrC 𝕜
inst✝¹ : AddCommGroup F
inst✝ : Module 𝕜 F
c : Core 𝕜 F
x : F
⊢ ↑im (inner x x) = 0

tactic: simp [inner_conj_symm]
state_before: 𝕜 : Type u_1
E : Type ?u.327167
F : Type u_2
inst✝² : IsROrC 𝕜
inst✝¹ : AddCommGroup F
inst✝ : Module 𝕜 F
c : Core 𝕜 F
x : F
⊢ I * (↑(starRingEnd 𝕜) (inner x x) - inner x x) / 2 = ↑0
Theorem: Equiv.Perm.subtypeCongrHom_injective
File: Mathlib/GroupTheory/Perm/Basic.lean

tactic: rintro ⟨⟩ ⟨⟩ h
state_before: α : Type u
β : Type v
p : α → Prop
inst✝ : DecidablePred p
⊢ Function.Injective ↑(subtypeCongrHom p)

tactic: rw [Prod.mk.inj_iff]
state_before: case mk.mk
α : Type u
β : Type v
p : α → Prop
inst✝ : DecidablePred p
fst✝¹ : Perm { a // p a }
snd✝¹ : Perm { a // ¬p a }
fst✝ : Perm { a // p a }
snd✝ : Perm { a // ¬p a }
h : ↑(subtypeCongrHom p) (fst✝¹, snd✝¹) = ↑(subtypeCongrHom p) (fst✝, snd✝)
⊢ (fst✝¹, snd✝¹) = (fst✝, snd✝)

tactic: constructor <;> ext i <;> simpa using Equiv.congr_fun h i
state_before: case mk.mk
α : Type u
β : Type v
p : α → Prop
inst✝ : DecidablePred p
fst✝¹ : Perm { a // p a }
snd✝¹ : Perm { a // ¬p a }
fst✝ : Perm { a // p a }
snd✝ : Perm { a // ¬p a }
h : ↑(subtypeCongrHom p) (fst✝¹, snd✝¹) = ↑(subtypeCongrHom p) (fst✝, snd✝)
⊢ fst✝¹ = fst✝ ∧ snd✝¹ = snd✝
Theorem: Submodule.dense_iff_topologicalClosure_eq_top
File: Mathlib/Topology/Algebra/Module/Basic.lean

tactic: rw [← SetLike.coe_set_eq, dense_iff_closure_eq]
state_before: R R' : Type u
M M' : Type v
inst✝¹⁰ : Semiring R
inst✝⁹ : Ring R'
inst✝⁸ : TopologicalSpace M
inst✝⁷ : AddCommMonoid M
inst✝⁶ : TopologicalSpace M'
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M
inst✝³ : ContinuousConstSMul R M
inst✝² : Module R' M'
inst✝¹ : ContinuousConstSMul R' M'
inst✝ : ContinuousAdd M
s : Submodule R M
⊢ Dense ↑s ↔ topologicalClosure s = ⊤

tactic: simp
state_before: R R' : Type u
M M' : Type v
inst✝¹⁰ : Semiring R
inst✝⁹ : Ring R'
inst✝⁸ : TopologicalSpace M
inst✝⁷ : AddCommMonoid M
inst✝⁶ : TopologicalSpace M'
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M
inst✝³ : ContinuousConstSMul R M
inst✝² : Module R' M'
inst✝¹ : ContinuousConstSMul R' M'
inst✝ : ContinuousAdd M
s : Submodule R M
⊢ closure ↑s = Set.univ ↔ ↑(topologicalClosure s) = ↑⊤
Theorem: FirstOrder.Language.ElementaryEmbedding.injective
File: Mathlib/ModelTheory/ElementaryMaps.lean

tactic: intro x y
state_before: L : Language
M : Type u_3
N : Type u_4
P : Type ?u.306353
Q : Type ?u.306356
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
inst✝ : Structure L Q
φ : M ↪ₑ[L] N
⊢ Function.Injective ↑φ

tactic: have h :=
  φ.map_formula ((var 0).equal (var 1) : L.Formula (Fin 2)) fun i => if i = 0 then x else y
state_before: L : Language
M : Type u_3
N : Type u_4
P : Type ?u.306353
Q : Type ?u.306356
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
inst✝ : Structure L Q
φ : M ↪ₑ[L] N
x y : M
⊢ ↑φ x = ↑φ y → x = y

tactic: rw [Formula.realize_equal, Formula.realize_equal] at h
state_before: L : Language
M : Type u_3
N : Type u_4
P : Type ?u.306353
Q : Type ?u.306356
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
inst✝ : Structure L Q
φ : M ↪ₑ[L] N
x y : M
h :
  Formula.Realize (Term.equal (var 0) (var 1)) (↑φ ∘ fun i => if i = 0 then x else y) ↔
    Formula.Realize (Term.equal (var 0) (var 1)) fun i => if i = 0 then x else y
⊢ ↑φ x = ↑φ y → x = y

tactic: simp only [Nat.one_ne_zero, Term.realize, Fin.one_eq_zero_iff, if_true, eq_self_iff_true,
  Function.comp_apply, if_false] at h
state_before: L : Language
M : Type u_3
N : Type u_4
P : Type ?u.306353
Q : Type ?u.306356
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
inst✝ : Structure L Q
φ : M ↪ₑ[L] N
x y : M
h :
  Term.realize (↑φ ∘ fun i => if i = 0 then x else y) (var 0) =
      Term.realize (↑φ ∘ fun i => if i = 0 then x else y) (var 1) ↔
    Term.realize (fun i => if i = 0 then x else y) (var 0) = Term.realize (fun i => if i = 0 then x else y) (var 1)
⊢ ↑φ x = ↑φ y → x = y

tactic: exact h.1
state_before: L : Language
M : Type u_3
N : Type u_4
P : Type ?u.306353
Q : Type ?u.306356
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
inst✝ : Structure L Q
φ : M ↪ₑ[L] N
x y : M
h : ↑φ x = ↑φ y ↔ x = y
⊢ ↑φ x = ↑φ y → x = y
Theorem: Convex.image_sub_le_mul_sub_of_deriv_le
File: Mathlib/Analysis/Calculus/MeanValue.lean

tactic: rw [deriv.neg, neg_le_neg_iff]
state_before: E : Type ?u.408885
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.408981
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
D : Set ℝ
hD : Convex ℝ D
f : ℝ → ℝ
hf : ContinuousOn f D
hf' : DifferentiableOn ℝ f (interior D)
C : (fun x => ℝ) 1
le_hf' : ∀ (x : ℝ), x ∈ interior D → deriv f x ≤ C
x✝ : ℝ
hx✝ : x✝ ∈ D
y : ℝ
hy : y ∈ D
hxy : x✝ ≤ y
x : ℝ
hx : x ∈ interior D
⊢ -C ≤ deriv (fun y => -f y) x

tactic: exact le_hf' x hx
state_before: E : Type ?u.408885
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.408981
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
D : Set ℝ
hD : Convex ℝ D
f : ℝ → ℝ
hf : ContinuousOn f D
hf' : DifferentiableOn ℝ f (interior D)
C : (fun x => ℝ) 1
le_hf' : ∀ (x : ℝ), x ∈ interior D → deriv f x ≤ C
x✝ : ℝ
hx✝ : x✝ ∈ D
y : ℝ
hy : y ∈ D
hxy : x✝ ≤ y
x : ℝ
hx : x ∈ interior D
⊢ deriv (fun y => f y) x ≤ C

tactic: linarith [hD.mul_sub_le_image_sub_of_le_deriv hf.neg hf'.neg hf'_ge x hx y hy hxy]
state_before: E : Type ?u.408885
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.408981
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
D : Set ℝ
hD : Convex ℝ D
f : ℝ → ℝ
hf : ContinuousOn f D
hf' : DifferentiableOn ℝ f (interior D)
C : (fun x => ℝ) 1
le_hf' : ∀ (x : ℝ), x ∈ interior D → deriv f x ≤ C
x : ℝ
hx : x ∈ D
y : ℝ
hy : y ∈ D
hxy : x ≤ y
hf'_ge : ∀ (x : ℝ), x ∈ interior D → -C ≤ deriv (fun y => -f y) x
⊢ f y - f x ≤ C * (y - x)
Theorem: Nat.Prime.pow_dvd_iff_dvd_ord_proj
File: Mathlib/Data/Nat/Factorization/Basic.lean

tactic: rw [pow_dvd_pow_iff_le_right pp.one_lt, pp.pow_dvd_iff_le_factorization hn]
state_before: p k n : ℕ
pp : Prime p
hn : n ≠ 0
⊢ p ^ k ∣ n ↔ p ^ k ∣ p ^ ↑(Nat.factorization n) p
Theorem: irrational_nat_div_iff
File: Mathlib/Data/Real/Irrational.lean

tactic: simp [div_eq_mul_inv]
state_before: q : ℚ
m : ℤ
n : ℕ
x : ℝ
⊢ Irrational (↑n / x) ↔ n ≠ 0 ∧ Irrational x
Theorem: Liouville.liouvilleWith
File: Mathlib/NumberTheory/Liouville/LiouvilleWith.lean

tactic: suffices : LiouvilleWith ⌈p⌉₊ x
state_before: x : ℝ
hx : Liouville x
p : ℝ
⊢ LiouvilleWith p x

tactic: exact this.mono (Nat.le_ceil p)
state_before: x : ℝ
hx : Liouville x
p : ℝ
this : LiouvilleWith (↑⌈p⌉₊) x
⊢ LiouvilleWith p x

case this
x : ℝ
hx : Liouville x
p : ℝ
⊢ LiouvilleWith (↑⌈p⌉₊) x

tactic: refine ⟨1, ((eventually_gt_atTop 1).and_frequently (hx.frequently_exists_num ⌈p⌉₊)).mono ?_⟩
state_before: case this
x : ℝ
hx : Liouville x
p : ℝ
⊢ LiouvilleWith (↑⌈p⌉₊) x

tactic: rintro b ⟨_hb, a, hne, hlt⟩
state_before: case this
x : ℝ
hx : Liouville x
p : ℝ
⊢ ∀ (x_1 : ℕ),
    (1 < x_1 ∧ ∃ a, x ≠ ↑a / ↑x_1 ∧ abs (x - ↑a / ↑x_1) < 1 / ↑x_1 ^ ⌈p⌉₊) →
      ∃ m, x ≠ ↑m / ↑x_1 ∧ abs (x - ↑m / ↑x_1) < 1 / ↑x_1 ^ ↑⌈p⌉₊

tactic: refine ⟨a, hne, ?_⟩
state_before: case this.intro.intro.intro
x : ℝ
hx : Liouville x
p : ℝ
b : ℕ
_hb : 1 < b
a : ℤ
hne : x ≠ ↑a / ↑b
hlt : abs (x - ↑a / ↑b) < 1 / ↑b ^ ⌈p⌉₊
⊢ ∃ m, x ≠ ↑m / ↑b ∧ abs (x - ↑m / ↑b) < 1 / ↑b ^ ↑⌈p⌉₊

tactic: rwa [rpow_nat_cast]
state_before: case this.intro.intro.intro
x : ℝ
hx : Liouville x
p : ℝ
b : ℕ
_hb : 1 < b
a : ℤ
hne : x ≠ ↑a / ↑b
hlt : abs (x - ↑a / ↑b) < 1 / ↑b ^ ⌈p⌉₊
⊢ abs (x - ↑a / ↑b) < 1 / ↑b ^ ↑⌈p⌉₊
Theorem: wittStructureRat_existsUnique
File: Mathlib/RingTheory/WittVector/StructurePolynomial.lean

tactic: refine' ⟨wittStructureRat p Φ, _, _⟩
state_before: p : ℕ
R : Type ?u.216558
idx : Type u_1
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℚ
⊢ ∃! φ, ∀ (n : ℕ), ↑(bind₁ φ) (W_ ℚ n) = ↑(bind₁ fun i => ↑(rename (Prod.mk i)) (W_ ℚ n)) Φ

tactic: intro n
state_before: case refine'_1
p : ℕ
R : Type ?u.216558
idx : Type u_1
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℚ
⊢ (fun φ => ∀ (n : ℕ), ↑(bind₁ φ) (W_ ℚ n) = ↑(bind₁ fun i => ↑(rename (Prod.mk i)) (W_ ℚ n)) Φ) (wittStructureRat p Φ)

tactic: apply wittStructureRat_prop
state_before: case refine'_1
p : ℕ
R : Type ?u.216558
idx : Type u_1
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℚ
n : ℕ
⊢ ↑(bind₁ (wittStructureRat p Φ)) (W_ ℚ n) = ↑(bind₁ fun i => ↑(rename (Prod.mk i)) (W_ ℚ n)) Φ

tactic: intro φ H
state_before: case refine'_2
p : ℕ
R : Type ?u.216558
idx : Type u_1
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℚ
⊢ ∀ (y : ℕ → MvPolynomial (idx × ℕ) ℚ),
    (fun φ => ∀ (n : ℕ), ↑(bind₁ φ) (W_ ℚ n) = ↑(bind₁ fun i => ↑(rename (Prod.mk i)) (W_ ℚ n)) Φ) y →
      y = wittStructureRat p Φ

tactic: funext n
state_before: case refine'_2
p : ℕ
R : Type ?u.216558
idx : Type u_1
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℚ
φ : ℕ → MvPolynomial (idx × ℕ) ℚ
H : ∀ (n : ℕ), ↑(bind₁ φ) (W_ ℚ n) = ↑(bind₁ fun i => ↑(rename (Prod.mk i)) (W_ ℚ n)) Φ
⊢ φ = wittStructureRat p Φ

tactic: rw [show φ n = bind₁ φ (bind₁ (W_ ℚ) (xInTermsOfW p ℚ n)) by
    rw [bind₁_wittPolynomial_xInTermsOfW p, bind₁_X_right]]
state_before: case refine'_2.h
p : ℕ
R : Type ?u.216558
idx : Type u_1
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℚ
φ : ℕ → MvPolynomial (idx × ℕ) ℚ
H : ∀ (n : ℕ), ↑(bind₁ φ) (W_ ℚ n) = ↑(bind₁ fun i => ↑(rename (Prod.mk i)) (W_ ℚ n)) Φ
n : ℕ
⊢ φ n = wittStructureRat p Φ n

tactic: rw [bind₁_bind₁]
state_before: case refine'_2.h
p : ℕ
R : Type ?u.216558
idx : Type u_1
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℚ
φ : ℕ → MvPolynomial (idx × ℕ) ℚ
H : ∀ (n : ℕ), ↑(bind₁ φ) (W_ ℚ n) = ↑(bind₁ fun i => ↑(rename (Prod.mk i)) (W_ ℚ n)) Φ
n : ℕ
⊢ ↑(bind₁ φ) (↑(bind₁ (W_ ℚ)) (xInTermsOfW p ℚ n)) = wittStructureRat p Φ n

tactic: exact eval₂Hom_congr (RingHom.ext_rat _ _) (funext H) rfl
state_before: case refine'_2.h
p : ℕ
R : Type ?u.216558
idx : Type u_1
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℚ
φ : ℕ → MvPolynomial (idx × ℕ) ℚ
H : ∀ (n : ℕ), ↑(bind₁ φ) (W_ ℚ n) = ↑(bind₁ fun i => ↑(rename (Prod.mk i)) (W_ ℚ n)) Φ
n : ℕ
⊢ ↑(bind₁ fun i => ↑(bind₁ φ) (W_ ℚ i)) (xInTermsOfW p ℚ n) = wittStructureRat p Φ n

tactic: rw [bind₁_wittPolynomial_xInTermsOfW p, bind₁_X_right]
state_before: p : ℕ
R : Type ?u.216558
idx : Type u_1
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℚ
φ : ℕ → MvPolynomial (idx × ℕ) ℚ
H : ∀ (n : ℕ), ↑(bind₁ φ) (W_ ℚ n) = ↑(bind₁ fun i => ↑(rename (Prod.mk i)) (W_ ℚ n)) Φ
n : ℕ
⊢ φ n = ↑(bind₁ φ) (↑(bind₁ (W_ ℚ)) (xInTermsOfW p ℚ n))
Theorem: gauge_lt_one_of_mem_of_open
File: Mathlib/Analysis/Convex/Gauge.lean

tactic: rwa [← gauge_lt_one_eq_self_of_open hs₁ hs₀ hs₂] at hx
state_before: 𝕜 : Type ?u.199119
E : Type u_1
F : Type ?u.199125
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
s t : Set E
a : ℝ
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
hs₁ : Convex ℝ s
hs₀ : 0 ∈ s
hs₂ : IsOpen s
x : E
hx : x ∈ s
⊢ gauge s x < 1
Theorem: Bool.le_and
File: Mathlib/Data/Bool/Basic.lean

tactic: decide
state_before: ⊢ ∀ {x y z : Bool}, x ≤ y → x ≤ z → x ≤ (y && z)
Theorem: ContinuousLinearMap.exists_ne_zero
File: Mathlib/Topology/Algebra/Module/Basic.lean

tactic: by_contra' h
state_before: R₁ : Type u_1
R₂ : Type u_2
R₃ : Type ?u.448146
inst✝¹⁶ : Semiring R₁
inst✝¹⁵ : Semiring R₂
inst✝¹⁴ : Semiring R₃
σ₁₂ : R₁ →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R₁ →+* R₃
M₁ : Type u_3
inst✝¹³ : TopologicalSpace M₁
inst✝¹² : AddCommMonoid M₁
M'₁ : Type ?u.448233
inst✝¹¹ : TopologicalSpace M'₁
inst✝¹⁰ : AddCommMonoid M'₁
M₂ : Type u_4
inst✝⁹ : TopologicalSpace M₂
inst✝⁸ : AddCommMonoid M₂
M₃ : Type ?u.448251
inst✝⁷ : TopologicalSpace M₃
inst✝⁶ : AddCommMonoid M₃
M₄ : Type ?u.448260
inst✝⁵ : TopologicalSpace M₄
inst✝⁴ : AddCommMonoid M₄
inst✝³ : Module R₁ M₁
inst✝² : Module R₁ M'₁
inst✝¹ : Module R₂ M₂
inst✝ : Module R₃ M₃
f : M₁ →SL[σ₁₂] M₂
hf : f ≠ 0
⊢ ∃ x, ↑f x ≠ 0

tactic: exact hf (ContinuousLinearMap.ext h)
state_before: R₁ : Type u_1
R₂ : Type u_2
R₃ : Type ?u.448146
inst✝¹⁶ : Semiring R₁
inst✝¹⁵ : Semiring R₂
inst✝¹⁴ : Semiring R₃
σ₁₂ : R₁ →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R₁ →+* R₃
M₁ : Type u_3
inst✝¹³ : TopologicalSpace M₁
inst✝¹² : AddCommMonoid M₁
M'₁ : Type ?u.448233
inst✝¹¹ : TopologicalSpace M'₁
inst✝¹⁰ : AddCommMonoid M'₁
M₂ : Type u_4
inst✝⁹ : TopologicalSpace M₂
inst✝⁸ : AddCommMonoid M₂
M₃ : Type ?u.448251
inst✝⁷ : TopologicalSpace M₃
inst✝⁶ : AddCommMonoid M₃
M₄ : Type ?u.448260
inst✝⁵ : TopologicalSpace M₄
inst✝⁴ : AddCommMonoid M₄
inst✝³ : Module R₁ M₁
inst✝² : Module R₁ M'₁
inst✝¹ : Module R₂ M₂
inst✝ : Module R₃ M₃
f : M₁ →SL[σ₁₂] M₂
hf : f ≠ 0
h : ∀ (x : M₁), ↑f x = 0
⊢ False
Theorem: intervalIntegral.integral_of_le
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: simp [intervalIntegral, h]
state_before: ι : Type ?u.9584325
𝕜 : Type ?u.9584328
E : Type u_1
F : Type ?u.9584334
A : Type ?u.9584337
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
h : a ≤ b
⊢ (∫ (x : ℝ) in a..b, f x ∂μ) = ∫ (x : ℝ) in Ioc a b, f x ∂μ
Theorem: Doset.mk_out'_eq_mul
File: Mathlib/GroupTheory/DoubleCoset.lean

tactic: have := eq H K (mk H K g : Quotient ↑H ↑K).out' g
state_before: G : Type u_1
inst✝¹ : Group G
α : Type ?u.30227
inst✝ : Mul α
J : Subgroup G
g✝ : G
H K : Subgroup G
g : G
⊢ ∃ h k, h ∈ H ∧ k ∈ K ∧ Quotient.out' (mk H K g) = h * g * k

tactic: rw [out_eq'] at this
state_before: G : Type u_1
inst✝¹ : Group G
α : Type ?u.30227
inst✝ : Mul α
J : Subgroup G
g✝ : G
H K : Subgroup G
g : G
this : mk H K (Quotient.out' (mk H K g)) = mk H K g ↔ ∃ h, h ∈ H ∧ ∃ k, k ∈ K ∧ g = h * Quotient.out' (mk H K g) * k
⊢ ∃ h k, h ∈ H ∧ k ∈ K ∧ Quotient.out' (mk H K g) = h * g * k

tactic: obtain ⟨h, h_h, k, hk, T⟩ := this.1 rfl
state_before: G : Type u_1
inst✝¹ : Group G
α : Type ?u.30227
inst✝ : Mul α
J : Subgroup G
g✝ : G
H K : Subgroup G
g : G
this : mk H K g = mk H K g ↔ ∃ h, h ∈ H ∧ ∃ k, k ∈ K ∧ g = h * Quotient.out' (mk H K g) * k
⊢ ∃ h k, h ∈ H ∧ k ∈ K ∧ Quotient.out' (mk H K g) = h * g * k

tactic: refine' ⟨h⁻¹, k⁻¹, H.inv_mem h_h, K.inv_mem hk, eq_mul_inv_of_mul_eq (eq_inv_mul_of_mul_eq _)⟩
state_before: case intro.intro.intro.intro
G : Type u_1
inst✝¹ : Group G
α : Type ?u.30227
inst✝ : Mul α
J : Subgroup G
g✝ : G
H K : Subgroup G
g : G
this : mk H K g = mk H K g ↔ ∃ h, h ∈ H ∧ ∃ k, k ∈ K ∧ g = h * Quotient.out' (mk H K g) * k
h : G
h_h : h ∈ H
k : G
hk : k ∈ K
T : g = h * Quotient.out' (mk H K g) * k
⊢ ∃ h k, h ∈ H ∧ k ∈ K ∧ Quotient.out' (mk H K g) = h * g * k

tactic: rw [← mul_assoc, ← T]
state_before: case intro.intro.intro.intro
G : Type u_1
inst✝¹ : Group G
α : Type ?u.30227
inst✝ : Mul α
J : Subgroup G
g✝ : G
H K : Subgroup G
g : G
this : mk H K g = mk H K g ↔ ∃ h, h ∈ H ∧ ∃ k, k ∈ K ∧ g = h * Quotient.out' (mk H K g) * k
h : G
h_h : h ∈ H
k : G
hk : k ∈ K
T : g = h * Quotient.out' (mk H K g) * k
⊢ h * (Quotient.out' (mk H K g) * k) = g
Theorem: Quaternion.norm_coe
File: Mathlib/Analysis/Quaternion.lean

tactic: rw [norm_eq_sqrt_real_inner, inner_self, normSq_coe, Real.sqrt_sq_eq_abs, Real.norm_eq_abs]
state_before: a : ℝ
⊢ ‖↑a‖ = ‖a‖
Theorem: ProbabilityTheory.IndepFun.ae_eq
File: Mathlib/Probability/Independence/Basic.lean

tactic: rintro _ _ ⟨A, hA, rfl⟩ ⟨B, hB, rfl⟩
state_before: Ω : Type u_2
ι : Type ?u.3257019
β : Type u_1
β' : Type ?u.3257025
γ : Type ?u.3257028
γ' : Type ?u.3257031
mΩ : MeasurableSpace Ω
μ : MeasureTheory.Measure Ω
f✝ : Ω → β
g✝ : Ω → β'
mβ : MeasurableSpace β
f g f' g' : Ω → β
hfg : IndepFun f g
hf : f =ᵐ[μ] f'
hg : g =ᵐ[μ] g'
⊢ IndepFun f' g'

tactic: have h1 : f ⁻¹' A =ᵐ[μ] f' ⁻¹' A := hf.fun_comp A
state_before: case intro.intro.intro.intro
Ω : Type u_2
ι : Type ?u.3257019
β : Type u_1
β' : Type ?u.3257025
γ : Type ?u.3257028
γ' : Type ?u.3257031
mΩ : MeasurableSpace Ω
μ : MeasureTheory.Measure Ω
f✝ : Ω → β
g✝ : Ω → β'
mβ : MeasurableSpace β
f g f' g' : Ω → β
hfg : IndepFun f g
hf : f =ᵐ[μ] f'
hg : g =ᵐ[μ] g'
A : Set β
hA : MeasurableSet A
B : Set β
hB : MeasurableSet B
⊢ ↑↑μ (f' ⁻¹' A ∩ g' ⁻¹' B) = ↑↑μ (f' ⁻¹' A) * ↑↑μ (g' ⁻¹' B)

tactic: have h2 : g ⁻¹' B =ᵐ[μ] g' ⁻¹' B := hg.fun_comp B
state_before: case intro.intro.intro.intro
Ω : Type u_2
ι : Type ?u.3257019
β : Type u_1
β' : Type ?u.3257025
γ : Type ?u.3257028
γ' : Type ?u.3257031
mΩ : MeasurableSpace Ω
μ : MeasureTheory.Measure Ω
f✝ : Ω → β
g✝ : Ω → β'
mβ : MeasurableSpace β
f g f' g' : Ω → β
hfg : IndepFun f g
hf : f =ᵐ[μ] f'
hg : g =ᵐ[μ] g'
A : Set β
hA : MeasurableSet A
B : Set β
hB : MeasurableSet B
h1 : f ⁻¹' A =ᵐ[μ] f' ⁻¹' A
⊢ ↑↑μ (f' ⁻¹' A ∩ g' ⁻¹' B) = ↑↑μ (f' ⁻¹' A) * ↑↑μ (g' ⁻¹' B)

tactic: rw [← measure_congr h1, ← measure_congr h2, ← measure_congr (h1.inter h2)]
state_before: case intro.intro.intro.intro
Ω : Type u_2
ι : Type ?u.3257019
β : Type u_1
β' : Type ?u.3257025
γ : Type ?u.3257028
γ' : Type ?u.3257031
mΩ : MeasurableSpace Ω
μ : MeasureTheory.Measure Ω
f✝ : Ω → β
g✝ : Ω → β'
mβ : MeasurableSpace β
f g f' g' : Ω → β
hfg : IndepFun f g
hf : f =ᵐ[μ] f'
hg : g =ᵐ[μ] g'
A : Set β
hA : MeasurableSet A
B : Set β
hB : MeasurableSet B
h1 : f ⁻¹' A =ᵐ[μ] f' ⁻¹' A
h2 : g ⁻¹' B =ᵐ[μ] g' ⁻¹' B
⊢ ↑↑μ (f' ⁻¹' A ∩ g' ⁻¹' B) = ↑↑μ (f' ⁻¹' A) * ↑↑μ (g' ⁻¹' B)

tactic: exact hfg _ _ ⟨_, hA, rfl⟩ ⟨_, hB, rfl⟩
state_before: case intro.intro.intro.intro
Ω : Type u_2
ι : Type ?u.3257019
β : Type u_1
β' : Type ?u.3257025
γ : Type ?u.3257028
γ' : Type ?u.3257031
mΩ : MeasurableSpace Ω
μ : MeasureTheory.Measure Ω
f✝ : Ω → β
g✝ : Ω → β'
mβ : MeasurableSpace β
f g f' g' : Ω → β
hfg : IndepFun f g
hf : f =ᵐ[μ] f'
hg : g =ᵐ[μ] g'
A : Set β
hA : MeasurableSet A
B : Set β
hB : MeasurableSet B
h1 : f ⁻¹' A =ᵐ[μ] f' ⁻¹' A
h2 : g ⁻¹' B =ᵐ[μ] g' ⁻¹' B
⊢ ↑↑μ (f ⁻¹' A ∩ g ⁻¹' B) = ↑↑μ (f ⁻¹' A) * ↑↑μ (g ⁻¹' B)
Theorem: MeasureTheory.SimpleFunc.lintegral_mono
File: Mathlib/MeasureTheory/Function/SimpleFunc.lean

tactic: rw [sup_of_le_right hfg]
state_before: α : Type u_1
β : Type ?u.899767
γ : Type ?u.899770
δ : Type ?u.899773
m : MeasurableSpace α
μ ν : Measure α
f g : α →ₛ ℝ≥0∞
hfg : f ≤ g
hμν : μ ≤ ν
⊢ lintegral (f ⊔ g) μ = lintegral g μ
Theorem: Ordinal.enumOrd_univ
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: rw [← range_id]
state_before: S : Set Ordinal
⊢ enumOrd Set.univ = id

tactic: exact enumOrd_range strictMono_id
state_before: S : Set Ordinal
⊢ enumOrd (range id) = id
Theorem: List.append_ne_nil_of_left_ne_nil
File: Std/Data/List/Lemmas.lean

tactic: simp [*]
state_before: α : Type u_1
a b : List α
h0 : a ≠ []
⊢ a ++ b ≠ []
Theorem: Submodule.map_subtype_range_ofLe
File: Mathlib/LinearAlgebra/Basic.lean

tactic: simp [range_ofLe, map_comap_eq, h]
state_before: R : Type u_1
R₁ : Type ?u.1550580
R₂ : Type ?u.1550583
R₃ : Type ?u.1550586
R₄ : Type ?u.1550589
S : Type ?u.1550592
K : Type ?u.1550595
K₂ : Type ?u.1550598
M : Type u_2
M' : Type ?u.1550604
M₁ : Type ?u.1550607
M₂ : Type ?u.1550610
M₃ : Type ?u.1550613
M₄ : Type ?u.1550616
N : Type ?u.1550619
N₂ : Type ?u.1550622
ι : Type ?u.1550625
V : Type ?u.1550628
V₂ : Type ?u.1550631
inst✝⁵ : Semiring R
inst✝⁴ : Semiring R₂
inst✝³ : AddCommMonoid M
inst✝² : AddCommMonoid M₂
inst✝¹ : Module R M
inst✝ : Module R₂ M₂
p✝ p'✝ : Submodule R M
q : Submodule R₂ M₂
τ₁₂ : R →+* R₂
F : Type ?u.1550805
sc : SemilinearMapClass F τ₁₂ M M₂
p p' : Submodule R M
h : p ≤ p'
⊢ map (Submodule.subtype p') (range (ofLe h)) = p
Theorem: NormedAddGroupHom.lift_unique
File: Mathlib/Analysis/Normed/Group/Quotient.lean

tactic: ext x
state_before: M : Type u_2
N✝ : Type ?u.463092
inst✝² : SeminormedAddCommGroup M
inst✝¹ : SeminormedAddCommGroup N✝
N : Type u_1
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
f : NormedAddGroupHom M N
hf : ∀ (s : M), s ∈ S → ↑f s = 0
g : NormedAddGroupHom (M ⧸ S) N
h : NormedAddGroupHom.comp g (AddSubgroup.normedMk S) = f
⊢ g = lift S f hf

tactic: rcases AddSubgroup.surjective_normedMk _ x with ⟨x, rfl⟩
state_before: case H
M : Type u_2
N✝ : Type ?u.463092
inst✝² : SeminormedAddCommGroup M
inst✝¹ : SeminormedAddCommGroup N✝
N : Type u_1
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
f : NormedAddGroupHom M N
hf : ∀ (s : M), s ∈ S → ↑f s = 0
g : NormedAddGroupHom (M ⧸ S) N
h : NormedAddGroupHom.comp g (AddSubgroup.normedMk S) = f
x : M ⧸ S
⊢ ↑g x = ↑(lift S f hf) x

tactic: change g.comp S.normedMk x = _
state_before: case H.intro
M : Type u_2
N✝ : Type ?u.463092
inst✝² : SeminormedAddCommGroup M
inst✝¹ : SeminormedAddCommGroup N✝
N : Type u_1
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
f : NormedAddGroupHom M N
hf : ∀ (s : M), s ∈ S → ↑f s = 0
g : NormedAddGroupHom (M ⧸ S) N
h : NormedAddGroupHom.comp g (AddSubgroup.normedMk S) = f
x : M
⊢ ↑g (↑(AddSubgroup.normedMk S) x) = ↑(lift S f hf) (↑(AddSubgroup.normedMk S) x)

tactic: simp only [h]
state_before: case H.intro
M : Type u_2
N✝ : Type ?u.463092
inst✝² : SeminormedAddCommGroup M
inst✝¹ : SeminormedAddCommGroup N✝
N : Type u_1
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
f : NormedAddGroupHom M N
hf : ∀ (s : M), s ∈ S → ↑f s = 0
g : NormedAddGroupHom (M ⧸ S) N
h : NormedAddGroupHom.comp g (AddSubgroup.normedMk S) = f
x : M
⊢ ↑(NormedAddGroupHom.comp g (AddSubgroup.normedMk S)) x = ↑(lift S f hf) (↑(AddSubgroup.normedMk S) x)

tactic: rfl
state_before: case H.intro
M : Type u_2
N✝ : Type ?u.463092
inst✝² : SeminormedAddCommGroup M
inst✝¹ : SeminormedAddCommGroup N✝
N : Type u_1
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
f : NormedAddGroupHom M N
hf : ∀ (s : M), s ∈ S → ↑f s = 0
g : NormedAddGroupHom (M ⧸ S) N
h : NormedAddGroupHom.comp g (AddSubgroup.normedMk S) = f
x : M
⊢ ↑f x = ↑(lift S f hf) (↑(AddSubgroup.normedMk S) x)
Theorem: IsUpperSet.image
File: Mathlib/Order/UpperLower/Basic.lean

tactic: change IsUpperSet ((f : α ≃ β) '' s)
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.18624
ι : Sort ?u.18627
κ : ι → Sort ?u.18632
inst✝¹ : Preorder α
inst✝ : Preorder β
s : Set α
p : α → Prop
a : α
hs : IsUpperSet s
f : α ≃o β
⊢ IsUpperSet (↑f '' s)

tactic: rw [Set.image_equiv_eq_preimage_symm]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.18624
ι : Sort ?u.18627
κ : ι → Sort ?u.18632
inst✝¹ : Preorder α
inst✝ : Preorder β
s : Set α
p : α → Prop
a : α
hs : IsUpperSet s
f : α ≃o β
⊢ IsUpperSet (↑↑f '' s)

tactic: exact hs.preimage f.symm.monotone
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.18624
ι : Sort ?u.18627
κ : ι → Sort ?u.18632
inst✝¹ : Preorder α
inst✝ : Preorder β
s : Set α
p : α → Prop
a : α
hs : IsUpperSet s
f : α ≃o β
⊢ IsUpperSet (↑(↑f).symm ⁻¹' s)
Theorem: Int.natAbs_mul_self'
File: Std/Data/Int/Lemmas.lean

tactic: rw [← Int.ofNat_mul, natAbs_mul_self]
state_before: a : Int
⊢ ↑(natAbs a) * ↑(natAbs a) = a * a
Theorem: Turing.frespects_eq
File: Mathlib/Computability/TuringMachine.lean

tactic: unfold FRespects
state_before: σ₁ : Type u_1
σ₂ : Type u_2
f₂ : σ₂ → Option σ₂
tr : σ₁ → σ₂
a₂ b₂ : σ₂
h : f₂ a₂ = f₂ b₂
⊢ FRespects f₂ tr a₂ none ↔ FRespects f₂ tr b₂ none

tactic: rw [h]
state_before: σ₁ : Type u_1
σ₂ : Type u_2
f₂ : σ₂ → Option σ₂
tr : σ₁ → σ₂
a₂ b₂ : σ₂
h : f₂ a₂ = f₂ b₂
⊢ (match none with
    | some b₁ => Reaches₁ f₂ a₂ (tr b₁)
    | none => f₂ a₂ = none) ↔
    match none with
    | some b₁ => Reaches₁ f₂ b₂ (tr b₁)
    | none => f₂ b₂ = none
Theorem: Real.neg_pi_div_two_lt_arcsin
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Inverse.lean

tactic: rw [sin_neg, sin_pi_div_two]
state_before: x : ℝ
⊢ sin (-(π / 2)) < x ↔ -1 < x
Theorem: Subalgebra.star_mem_star_iff
File: Mathlib/Algebra/Star/Subalgebra.lean

tactic: simp only [mem_star_iff, star_star]
state_before: F : Type ?u.406937
R : Type u_1
A : Type u_2
B : Type ?u.406946
inst✝⁹ : CommSemiring R
inst✝⁸ : StarRing R
inst✝⁷ : Semiring A
inst✝⁶ : Algebra R A
inst✝⁵ : StarRing A
inst✝⁴ : StarModule R A
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : StarModule R B
S : Subalgebra R A
x : A
⊢ star x ∈ star S ↔ x ∈ S