tasksource/leandojo huggingface dataset:
Theorem: Subgroup.map_symm_eq_iff_map_eq
File: Mathlib/GroupTheory/Subgroup/Basic.lean

tactic: constructor <;> rintro rfl
state_before: G : Type u_2
G' : Type ?u.263490
inst✝⁴ : Group G
inst✝³ : Group G'
A : Type ?u.263499
inst✝² : AddGroup A
H✝ K : Subgroup G
k : Set G
N : Type u_1
inst✝¹ : Group N
P : Type ?u.263526
inst✝ : Group P
H : Subgroup N
e : G ≃* N
⊢ map (↑(MulEquiv.symm e)) H = K ↔ map (↑e) K = H

tactic: rw [map_map, ← MulEquiv.coe_monoidHom_trans, MulEquiv.symm_trans_self,
  MulEquiv.coe_monoidHom_refl, map_id]
state_before: case mp
G : Type u_2
G' : Type ?u.263490
inst✝⁴ : Group G
inst✝³ : Group G'
A : Type ?u.263499
inst✝² : AddGroup A
H✝ : Subgroup G
k : Set G
N : Type u_1
inst✝¹ : Group N
P : Type ?u.263526
inst✝ : Group P
H : Subgroup N
e : G ≃* N
⊢ map (↑e) (map (↑(MulEquiv.symm e)) H) = H

tactic: rw [map_map, ← MulEquiv.coe_monoidHom_trans, MulEquiv.self_trans_symm,
  MulEquiv.coe_monoidHom_refl, map_id]
state_before: case mpr
G : Type u_2
G' : Type ?u.263490
inst✝⁴ : Group G
inst✝³ : Group G'
A : Type ?u.263499
inst✝² : AddGroup A
H K : Subgroup G
k : Set G
N : Type u_1
inst✝¹ : Group N
P : Type ?u.263526
inst✝ : Group P
e : G ≃* N
⊢ map (↑(MulEquiv.symm e)) (map (↑e) K) = K
Theorem: List.suffix_of_suffix_length_le
File: Std/Data/List/Lemmas.lean

tactic: simp [ll]
state_before: α✝ : Type u_1
l₁ l₃ l₂ : List α✝
h₁ : l₁ <:+ l₃
h₂ : l₂ <:+ l₃
ll : length l₁ ≤ length l₂
⊢ length (reverse l₁) ≤ length (reverse l₂)
Theorem: Decidable.mul_lt_mul''
File: Mathlib/Algebra/Order/Ring/Defs.lean

tactic: rw [← b0, mul_zero]
state_before: α : Type u
β : Type ?u.59742
inst✝¹ : StrictOrderedSemiring α
a b c d : α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
h1 : a < c
h2 : b < d
h3 : 0 ≤ a
h4 : 0 ≤ b
b0 : 0 = b
⊢ a * b < c * d

tactic: exact mul_pos (h3.trans_lt h1) (h4.trans_lt h2)
state_before: α : Type u
β : Type ?u.59742
inst✝¹ : StrictOrderedSemiring α
a b c d : α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
h1 : a < c
h2 : b < d
h3 : 0 ≤ a
h4 : 0 ≤ b
b0 : 0 = b
⊢ 0 < c * d
Theorem: ENNReal.hasBasis_nhds_of_ne_top
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: simpa only [pos_iff_ne_zero] using hasBasis_nhds_of_ne_top' xt
state_before: α : Type ?u.66801
β : Type ?u.66804
γ : Type ?u.66807
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
xt : x ≠ ⊤
⊢ HasBasis (𝓝 x) (fun x => 0 < x) fun ε => Icc (x - ε) (x + ε)
Theorem: FirstOrder.Language.BoundedFormula.realize_foldr_inf
File: Mathlib/ModelTheory/Semantics.lean

tactic: induction' l with φ l ih
state_before: L : Language
L' : Language
M : Type w
N : Type ?u.45572
P : Type ?u.45575
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
n l✝ : ℕ
φ ψ : BoundedFormula L α l✝
θ : BoundedFormula L α (Nat.succ l✝)
v✝ : α → M
xs✝ : Fin l✝ → M
l : List (BoundedFormula L α n)
v : α → M
xs : Fin n → M
⊢ Realize (List.foldr (fun x x_1 => x ⊓ x_1) ⊤ l) v xs ↔ ∀ (φ : BoundedFormula L α n), φ ∈ l → Realize φ v xs

tactic: simp
state_before: case nil
L : Language
L' : Language
M : Type w
N : Type ?u.45572
P : Type ?u.45575
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v✝ : α → M
xs✝ : Fin l → M
v : α → M
xs : Fin n → M
⊢ Realize (List.foldr (fun x x_1 => x ⊓ x_1) ⊤ []) v xs ↔ ∀ (φ : BoundedFormula L α n), φ ∈ [] → Realize φ v xs

tactic: simp [ih]
state_before: case cons
L : Language
L' : Language
M : Type w
N : Type ?u.45572
P : Type ?u.45575
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
n l✝ : ℕ
φ✝ ψ : BoundedFormula L α l✝
θ : BoundedFormula L α (Nat.succ l✝)
v✝ : α → M
xs✝ : Fin l✝ → M
v : α → M
xs : Fin n → M
φ : BoundedFormula L α n
l : List (BoundedFormula L α n)
ih : Realize (List.foldr (fun x x_1 => x ⊓ x_1) ⊤ l) v xs ↔ ∀ (φ : BoundedFormula L α n), φ ∈ l → Realize φ v xs
⊢ Realize (List.foldr (fun x x_1 => x ⊓ x_1) ⊤ (φ :: l)) v xs ↔
    ∀ (φ_1 : BoundedFormula L α n), φ_1 ∈ φ :: l → Realize φ_1 v xs
Theorem: nhds_basis_abs_sub_lt
File: Mathlib/Topology/Order/Basic.lean

tactic: simp only [nhds_eq_iInf_abs_sub, abs_sub_comm (a := a)]
state_before: α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrderedAddCommGroup α
inst✝¹ : OrderTopology α
l : Filter β
f g : β → α
inst✝ : NoMaxOrder α
a : α
⊢ HasBasis (𝓝 a) (fun ε => 0 < ε) fun ε => {b | abs (b - a) < ε}

tactic: refine hasBasis_biInf_principal' (fun x hx y hy => ?_) (exists_gt _)
state_before: α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrderedAddCommGroup α
inst✝¹ : OrderTopology α
l : Filter β
f g : β → α
inst✝ : NoMaxOrder α
a : α
⊢ HasBasis (⨅ (r : α) (_ : r > 0), 𝓟 {b | abs (b - a) < r}) (fun ε => 0 < ε) fun ε => {b | abs (b - a) < ε}

tactic: exact ⟨min x y, lt_min hx hy, fun _ hz => hz.trans_le (min_le_left _ _),
  fun _ hz => hz.trans_le (min_le_right _ _)⟩
state_before: α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrderedAddCommGroup α
inst✝¹ : OrderTopology α
l : Filter β
f g : β → α
inst✝ : NoMaxOrder α
a x : α
hx : x > 0
y : α
hy : y > 0
⊢ ∃ k, k > 0 ∧ {b | abs (b - a) < k} ⊆ {b | abs (b - a) < x} ∧ {b | abs (b - a) < k} ⊆ {b | abs (b - a) < y}
Theorem: Finset.image₂_inter_union_subset
File: Mathlib/Data/Finset/NAry.lean

tactic: push_cast
state_before: α : Type u_1
α' : Type ?u.103900
β : Type u_2
β' : Type ?u.103906
γ : Type ?u.103909
γ' : Type ?u.103912
δ : Type ?u.103915
δ' : Type ?u.103918
ε : Type ?u.103921
ε' : Type ?u.103924
ζ : Type ?u.103927
ζ' : Type ?u.103930
ν : Type ?u.103933
inst✝⁹ : DecidableEq α'
inst✝⁸ : DecidableEq β'
inst✝⁷ : DecidableEq γ
inst✝⁶ : DecidableEq γ'
inst✝⁵ : DecidableEq δ
inst✝⁴ : DecidableEq δ'
inst✝³ : DecidableEq ε
inst✝² : DecidableEq ε'
f✝ f' : α → β → γ
g g' : α → β → γ → δ
s✝ s' : Finset α
t✝ t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
f : α → α → β
s t : Finset α
hf : ∀ (a b : α), f a b = f b a
⊢ ↑(image₂ f (s ∩ t) (s ∪ t)) ⊆ ↑(image₂ f s t)

tactic: exact image2_inter_union_subset hf
state_before: α : Type u_1
α' : Type ?u.103900
β : Type u_2
β' : Type ?u.103906
γ : Type ?u.103909
γ' : Type ?u.103912
δ : Type ?u.103915
δ' : Type ?u.103918
ε : Type ?u.103921
ε' : Type ?u.103924
ζ : Type ?u.103927
ζ' : Type ?u.103930
ν : Type ?u.103933
inst✝⁹ : DecidableEq α'
inst✝⁸ : DecidableEq β'
inst✝⁷ : DecidableEq γ
inst✝⁶ : DecidableEq γ'
inst✝⁵ : DecidableEq δ
inst✝⁴ : DecidableEq δ'
inst✝³ : DecidableEq ε
inst✝² : DecidableEq ε'
f✝ f' : α → β → γ
g g' : α → β → γ → δ
s✝ s' : Finset α
t✝ t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
f : α → α → β
s t : Finset α
hf : ∀ (a b : α), f a b = f b a
⊢ image2 f (↑s ∩ ↑t) (↑s ∪ ↑t) ⊆ image2 f ↑s ↑t
Theorem: MvPolynomial.C_eq_coe_nat
File: Mathlib/Data/MvPolynomial/Basic.lean

tactic: induction n <;> simp [Nat.succ_eq_add_one, *]
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n✝ m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S₁
p q : MvPolynomial σ R
n : ℕ
⊢ ↑C ↑n = ↑n
Theorem: dite_ne_left_iff
File: Mathlib/Logic/Basic.lean

tactic: rw [Ne.def, dite_eq_left_iff, not_forall]
state_before: α : Sort u_1
β : Sort ?u.35535
σ : α → Sort ?u.35531
f : α → β
P Q : Prop
inst✝¹ : Decidable P
inst✝ : Decidable Q
a b c : α
A : P → α
B : ¬P → α
⊢ dite P (fun x => a) B ≠ a ↔ ∃ h, a ≠ B h

tactic: exact exists_congr fun h ↦ by rw [ne_comm]
state_before: α : Sort u_1
β : Sort ?u.35535
σ : α → Sort ?u.35531
f : α → β
P Q : Prop
inst✝¹ : Decidable P
inst✝ : Decidable Q
a b c : α
A : P → α
B : ¬P → α
⊢ (∃ x, ¬B x = a) ↔ ∃ h, a ≠ B h

tactic: rw [ne_comm]
state_before: α : Sort u_1
β : Sort ?u.35535
σ : α → Sort ?u.35531
f : α → β
P Q : Prop
inst✝¹ : Decidable P
inst✝ : Decidable Q
a b c : α
A : P → α
B : ¬P → α
h : ¬P
⊢ ¬B h = a ↔ a ≠ B h
Theorem: Ordinal.lift_down
File: Mathlib/SetTheory/Ordinal/Basic.lean

tactic: rw [lift_card]
state_before: α : Type ?u.113662
β : Type ?u.113665
γ : Type ?u.113668
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a : Ordinal
b : Ordinal
h : b ≤ lift a
⊢ card b ≤ Cardinal.lift (card a)

tactic: exact card_le_card h
state_before: α : Type ?u.113662
β : Type ?u.113665
γ : Type ?u.113668
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a : Ordinal
b : Ordinal
h : b ≤ lift a
⊢ card b ≤ card (lift a)
Theorem: AlgebraicTopology.DoldKan.QInfty_comp_PInfty
File: Mathlib/AlgebraicTopology/DoldKan/PInfty.lean

tactic: ext n
state_before: C : Type u_2
inst✝¹ : Category C
inst✝ : Preadditive C
X : SimplicialObject C
⊢ QInfty ≫ PInfty = 0

tactic: apply QInfty_f_comp_PInfty_f
state_before: case h
C : Type u_2
inst✝¹ : Category C
inst✝ : Preadditive C
X : SimplicialObject C
n : ℕ
⊢ HomologicalComplex.Hom.f (QInfty ≫ PInfty) n = HomologicalComplex.Hom.f 0 n
Theorem: Dense.exists_le'
File: Mathlib/Topology/Order/Basic.lean

tactic: by_cases hx : IsBot x
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderClosedTopology α
f g : β → α
s : Set α
hs : Dense s
hbot : ∀ (x : α), IsBot x → x ∈ s
x : α
⊢ ∃ y, y ∈ s ∧ y ≤ x

tactic: exact ⟨x, hbot x hx, le_rfl⟩
state_before: case pos
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderClosedTopology α
f g : β → α
s : Set α
hs : Dense s
hbot : ∀ (x : α), IsBot x → x ∈ s
x : α
hx : IsBot x
⊢ ∃ y, y ∈ s ∧ y ≤ x

tactic: simp only [IsBot, not_forall, not_le] at hx
state_before: case neg
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderClosedTopology α
f g : β → α
s : Set α
hs : Dense s
hbot : ∀ (x : α), IsBot x → x ∈ s
x : α
hx : ¬IsBot x
⊢ ∃ y, y ∈ s ∧ y ≤ x

tactic: rcases hs.exists_mem_open isOpen_Iio hx with ⟨y, hys, hy : y < x⟩
state_before: case neg
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderClosedTopology α
f g : β → α
s : Set α
hs : Dense s
hbot : ∀ (x : α), IsBot x → x ∈ s
x : α
hx : ∃ x_1, x_1 < x
⊢ ∃ y, y ∈ s ∧ y ≤ x

tactic: exact ⟨y, hys, hy.le⟩
state_before: case neg.intro.intro
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderClosedTopology α
f g : β → α
s : Set α
hs : Dense s
hbot : ∀ (x : α), IsBot x → x ∈ s
x : α
hx : ∃ x_1, x_1 < x
y : α
hys : y ∈ s
hy : y < x
⊢ ∃ y, y ∈ s ∧ y ≤ x
Theorem: mul_right_eq_iff_eq_mul_invOf
File: Mathlib/Algebra/Invertible.lean

tactic: rw [← mul_right_inj_of_invertible (c := ⅟c), mul_mul_invOf_self_cancel]
state_before: α : Type u
c a b : α
inst✝¹ : Monoid α
inst✝ : Invertible c
⊢ a * c = b ↔ a = b * ⅟c
Theorem: Rat.normalize.reduced'
File: Std/Data/Rat/Lemmas.lean

tactic: rw [← Int.div_eq_ediv_of_dvd (e ▸ Int.ofNat_dvd_left.2 (Nat.gcd_dvd_left ..))]
state_before: num : Int
den g : Nat
den_nz : den ≠ 0
e : g = Nat.gcd (Int.natAbs num) den
⊢ Nat.coprime (Int.natAbs (num / ↑g)) (den / g)

tactic: exact normalize.reduced den_nz e
state_before: num : Int
den g : Nat
den_nz : den ≠ 0
e : g = Nat.gcd (Int.natAbs num) den
⊢ Nat.coprime (Int.natAbs (Int.div num ↑g)) (den / g)
Theorem: AddMonoidAlgebra.of'_mul_divOf
File: Mathlib/Algebra/MonoidAlgebra/Division.lean

tactic: refine Finsupp.ext fun _ => ?_
state_before: k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
a : G
x : AddMonoidAlgebra k G
⊢ of' k G a * x /ᵒᶠ a = x

tactic: rw [AddMonoidAlgebra.divOf_apply, of'_apply, single_mul_apply_aux, one_mul]
state_before: k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
a : G
x : AddMonoidAlgebra k G
x✝ : G
⊢ ↑(of' k G a * x /ᵒᶠ a) x✝ = ↑x x✝

tactic: intro c
state_before: case H
k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
a : G
x : AddMonoidAlgebra k G
x✝ : G
⊢ ∀ (a_1 : G), a + a_1 = a + x✝ ↔ a_1 = x✝

tactic: exact add_right_inj _
state_before: case H
k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
a : G
x : AddMonoidAlgebra k G
x✝ c : G
⊢ a + c = a + x✝ ↔ c = x✝
Theorem: Set.smul_inter_ne_empty_iff
File: Mathlib/Data/Set/Pointwise/SMul.lean

tactic: rw [← nonempty_iff_ne_empty]
state_before: F : Type ?u.137905
α : Type u_1
β : Type ?u.137911
γ : Type ?u.137914
inst✝¹ : Group α
inst✝ : MulAction α β
s✝ t✝ A B : Set β
a : α
x✝ : β
s t : Set α
x : α
⊢ x • s ∩ t ≠ ∅ ↔ ∃ a b, (a ∈ t ∧ b ∈ s) ∧ a * b⁻¹ = x

tactic: constructor
state_before: F : Type ?u.137905
α : Type u_1
β : Type ?u.137911
γ : Type ?u.137914
inst✝¹ : Group α
inst✝ : MulAction α β
s✝ t✝ A B : Set β
a : α
x✝ : β
s t : Set α
x : α
⊢ Set.Nonempty (x • s ∩ t) ↔ ∃ a b, (a ∈ t ∧ b ∈ s) ∧ a * b⁻¹ = x

tactic: rintro ⟨a, h, ha⟩
state_before: case mp
F : Type ?u.137905
α : Type u_1
β : Type ?u.137911
γ : Type ?u.137914
inst✝¹ : Group α
inst✝ : MulAction α β
s✝ t✝ A B : Set β
a : α
x✝ : β
s t : Set α
x : α
⊢ Set.Nonempty (x • s ∩ t) → ∃ a b, (a ∈ t ∧ b ∈ s) ∧ a * b⁻¹ = x

tactic: obtain ⟨b, hb, rfl⟩ := mem_smul_set.mp h
state_before: case mp.intro.intro
F : Type ?u.137905
α : Type u_1
β : Type ?u.137911
γ : Type ?u.137914
inst✝¹ : Group α
inst✝ : MulAction α β
s✝ t✝ A B : Set β
a✝ : α
x✝ : β
s t : Set α
x a : α
h : a ∈ x • s
ha : a ∈ t
⊢ ∃ a b, (a ∈ t ∧ b ∈ s) ∧ a * b⁻¹ = x

tactic: exact ⟨x • b, b, ⟨ha, hb⟩, by simp⟩
state_before: case mp.intro.intro.intro.intro
F : Type ?u.137905
α : Type u_1
β : Type ?u.137911
γ : Type ?u.137914
inst✝¹ : Group α
inst✝ : MulAction α β
s✝ t✝ A B : Set β
a : α
x✝ : β
s t : Set α
x b : α
hb : b ∈ s
h : x • b ∈ x • s
ha : x • b ∈ t
⊢ ∃ a b, (a ∈ t ∧ b ∈ s) ∧ a * b⁻¹ = x

tactic: simp
state_before: F : Type ?u.137905
α : Type u_1
β : Type ?u.137911
γ : Type ?u.137914
inst✝¹ : Group α
inst✝ : MulAction α β
s✝ t✝ A B : Set β
a : α
x✝ : β
s t : Set α
x b : α
hb : b ∈ s
h : x • b ∈ x • s
ha : x • b ∈ t
⊢ x • b * b⁻¹ = x

tactic: rintro ⟨a, b, ⟨ha, hb⟩, rfl⟩
state_before: case mpr
F : Type ?u.137905
α : Type u_1
β : Type ?u.137911
γ : Type ?u.137914
inst✝¹ : Group α
inst✝ : MulAction α β
s✝ t✝ A B : Set β
a : α
x✝ : β
s t : Set α
x : α
⊢ (∃ a b, (a ∈ t ∧ b ∈ s) ∧ a * b⁻¹ = x) → Set.Nonempty (x • s ∩ t)

tactic: exact ⟨a, mem_inter (mem_smul_set.mpr ⟨b, hb, by simp⟩) ha⟩
state_before: case mpr.intro.intro.intro.intro
F : Type ?u.137905
α : Type u_1
β : Type ?u.137911
γ : Type ?u.137914
inst✝¹ : Group α
inst✝ : MulAction α β
s✝ t✝ A B : Set β
a✝ : α
x : β
s t : Set α
a b : α
ha : a ∈ t
hb : b ∈ s
⊢ Set.Nonempty ((a * b⁻¹) • s ∩ t)

tactic: simp
state_before: F : Type ?u.137905
α : Type u_1
β : Type ?u.137911
γ : Type ?u.137914
inst✝¹ : Group α
inst✝ : MulAction α β
s✝ t✝ A B : Set β
a✝ : α
x : β
s t : Set α
a b : α
ha : a ∈ t
hb : b ∈ s
⊢ (a * b⁻¹) • b = a
Theorem: Polynomial.rat_smul_eq_C_mul
File: Mathlib/Data/Polynomial/Basic.lean

tactic: rw [← Rat.smul_one_eq_coe, ← Polynomial.smul_C, C_1, smul_one_mul]
state_before: R : Type u
a✝ b : R
m n : ℕ
inst✝ : DivisionRing R
a : ℚ
f : R[X]
⊢ a • f = ↑C ↑a * f
Theorem: LatticeOrderedCommGroup.pos_div_neg
File: Mathlib/Algebra/Order/LatticeGroup.lean

tactic: symm
state_before: α : Type u
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ a⁺ / a⁻ = a

tactic: rw [div_eq_mul_inv]
state_before: α : Type u
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ a = a⁺ / a⁻

tactic: apply eq_mul_inv_of_mul_eq
state_before: α : Type u
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ a = a⁺ * (a⁻)⁻¹

tactic: rw [m_neg_part_def, mul_sup, mul_one, mul_right_inv, sup_comm, m_pos_part_def]
state_before: case h
α : Type u
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ a * a⁻ = a⁺
Theorem: Polynomial.mirror_smul
File: Mathlib/Data/Polynomial/Mirror.lean

tactic: rw [← C_mul', ← C_mul', mirror_mul_of_domain, mirror_C]
state_before: R : Type u_1
inst✝¹ : Ring R
p q : R[X]
inst✝ : NoZeroDivisors R
a : R
⊢ mirror (a • p) = a • mirror p
Theorem: Filter.tendsto_nhds_max_right
File: Mathlib/Topology/Order/Basic.lean

tactic: obtain ⟨h₁ : Tendsto f l (𝓝 a), h₂ : ∀ᶠ i in l, f i ∈ Ioi a⟩ := tendsto_nhdsWithin_iff.mp h
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderClosedTopology α
f g : β → α
l : Filter β
a : α
h : Tendsto f l (𝓝[Ioi a] a)
⊢ Tendsto (fun i => max a (f i)) l (𝓝[Ioi a] a)

tactic: exact tendsto_nhdsWithin_iff.mpr ⟨h₁.max_right, h₂.mono fun i hi => lt_max_of_lt_right hi⟩
state_before: case intro
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderClosedTopology α
f g : β → α
l : Filter β
a : α
h : Tendsto f l (𝓝[Ioi a] a)
h₁ : Tendsto f l (𝓝 a)
h₂ : ∀ᶠ (i : β) in l, f i ∈ Ioi a
⊢ Tendsto (fun i => max a (f i)) l (𝓝[Ioi a] a)
Theorem: Asymptotics.IsLittleO.sub
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

tactic: simpa only [sub_eq_add_neg] using h₁.add h₂.neg_left
state_before: α : Type u_1
β : Type ?u.227373
E : Type ?u.227376
F : Type u_3
G : Type ?u.227382
E' : Type u_2
F' : Type ?u.227388
G' : Type ?u.227391
E'' : Type ?u.227394
F'' : Type ?u.227397
G'' : Type ?u.227400
R : Type ?u.227403
R' : Type ?u.227406
𝕜 : Type ?u.227409
𝕜' : Type ?u.227412
inst✝¹² : Norm E
inst✝¹¹ : Norm F
inst✝¹⁰ : Norm G
inst✝⁹ : SeminormedAddCommGroup E'
inst✝⁸ : SeminormedAddCommGroup F'
inst✝⁷ : SeminormedAddCommGroup G'
inst✝⁶ : NormedAddCommGroup E''
inst✝⁵ : NormedAddCommGroup F''
inst✝⁴ : NormedAddCommGroup G''
inst✝³ : SeminormedRing R
inst✝² : SeminormedRing R'
inst✝¹ : NormedField 𝕜
inst✝ : NormedField 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
f₁ f₂ : α → E'
g₁ g₂ : α → F'
h₁ : f₁ =o[l] g
h₂ : f₂ =o[l] g
⊢ (fun x => f₁ x - f₂ x) =o[l] g
Theorem: PowerBasis.equivOfRoot_map
File: Mathlib/RingTheory/PowerBasis.lean

tactic: ext x
state_before: R : Type ?u.705600
S : Type u_2
T : Type ?u.705606
inst✝¹¹ : CommRing R
inst✝¹⁰ : Ring S
inst✝⁹ : Algebra R S
A : Type u_1
B : Type ?u.705912
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : IsDomain B
inst✝⁵ : Algebra A B
K : Type ?u.706334
inst✝⁴ : Field K
S' : Type u_3
inst✝³ : CommRing S'
inst✝² : Algebra R S'
inst✝¹ : Algebra A S
inst✝ : Algebra A S'
pb : PowerBasis A S
e : S ≃ₐ[A] S'
h₁ : ↑(aeval pb.gen) (minpoly A (map pb e).gen) = 0
h₂ : ↑(aeval (map pb e).gen) (minpoly A pb.gen) = 0
⊢ equivOfRoot pb (map pb e) h₁ h₂ = e

tactic: obtain ⟨f, rfl⟩ := pb.exists_eq_aeval' x
state_before: case h
R : Type ?u.705600
S : Type u_2
T : Type ?u.705606
inst✝¹¹ : CommRing R
inst✝¹⁰ : Ring S
inst✝⁹ : Algebra R S
A : Type u_1
B : Type ?u.705912
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : IsDomain B
inst✝⁵ : Algebra A B
K : Type ?u.706334
inst✝⁴ : Field K
S' : Type u_3
inst✝³ : CommRing S'
inst✝² : Algebra R S'
inst✝¹ : Algebra A S
inst✝ : Algebra A S'
pb : PowerBasis A S
e : S ≃ₐ[A] S'
h₁ : ↑(aeval pb.gen) (minpoly A (map pb e).gen) = 0
h₂ : ↑(aeval (map pb e).gen) (minpoly A pb.gen) = 0
x : S
⊢ ↑(equivOfRoot pb (map pb e) h₁ h₂) x = ↑e x

tactic: simp [aeval_algEquiv]
state_before: case h.intro
R : Type ?u.705600
S : Type u_2
T : Type ?u.705606
inst✝¹¹ : CommRing R
inst✝¹⁰ : Ring S
inst✝⁹ : Algebra R S
A : Type u_1
B : Type ?u.705912
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : IsDomain B
inst✝⁵ : Algebra A B
K : Type ?u.706334
inst✝⁴ : Field K
S' : Type u_3
inst✝³ : CommRing S'
inst✝² : Algebra R S'
inst✝¹ : Algebra A S
inst✝ : Algebra A S'
pb : PowerBasis A S
e : S ≃ₐ[A] S'
h₁ : ↑(aeval pb.gen) (minpoly A (map pb e).gen) = 0
h₂ : ↑(aeval (map pb e).gen) (minpoly A pb.gen) = 0
f : A[X]
⊢ ↑(equivOfRoot pb (map pb e) h₁ h₂) (↑(aeval pb.gen) f) = ↑e (↑(aeval pb.gen) f)
Theorem: deriv_circleMap_eq_zero_iff
File: Mathlib/MeasureTheory/Integral/CircleIntegral.lean

tactic: simp [I_ne_zero]
state_before: E : Type ?u.25080
inst✝ : NormedAddCommGroup E
c : ℂ
R θ : ℝ
⊢ deriv (circleMap c R) θ = 0 ↔ R = 0
Theorem: Ordnode.Valid'.balanceL
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: rw [balanceL_eq_balance' hl.3 hr.3 hl.2 hr.2 H]
state_before: α : Type u_1
inst✝ : Preorder α
l : Ordnode α
x : α
r : Ordnode α
o₁ : WithBot α
o₂ : WithTop α
hl : Valid' o₁ l ↑x
hr : Valid' (↑x) r o₂
H : (∃ l', Raised l' (size l) ∧ BalancedSz l' (size r)) ∨ ∃ r', Raised (size r) r' ∧ BalancedSz (size l) r'
⊢ Valid' o₁ (Ordnode.balanceL l x r) o₂

tactic: refine' hl.balance' hr _
state_before: α : Type u_1
inst✝ : Preorder α
l : Ordnode α
x : α
r : Ordnode α
o₁ : WithBot α
o₂ : WithTop α
hl : Valid' o₁ l ↑x
hr : Valid' (↑x) r o₂
H : (∃ l', Raised l' (size l) ∧ BalancedSz l' (size r)) ∨ ∃ r', Raised (size r) r' ∧ BalancedSz (size l) r'
⊢ Valid' o₁ (Ordnode.balance' l x r) o₂

tactic: rcases H with (⟨l', e, H⟩ | ⟨r', e, H⟩)
state_before: α : Type u_1
inst✝ : Preorder α
l : Ordnode α
x : α
r : Ordnode α
o₁ : WithBot α
o₂ : WithTop α
hl : Valid' o₁ l ↑x
hr : Valid' (↑x) r o₂
H : (∃ l', Raised l' (size l) ∧ BalancedSz l' (size r)) ∨ ∃ r', Raised (size r) r' ∧ BalancedSz (size l) r'
⊢ ∃ l' r', BalancedSz l' r' ∧ (Nat.dist (size l) l' ≤ 1 ∧ size r = r' ∨ Nat.dist (size r) r' ≤ 1 ∧ size l = l')

tactic: exact ⟨_, _, H, Or.inl ⟨e.dist_le', rfl⟩⟩
state_before: case inl.intro.intro
α : Type u_1
inst✝ : Preorder α
l : Ordnode α
x : α
r : Ordnode α
o₁ : WithBot α
o₂ : WithTop α
hl : Valid' o₁ l ↑x
hr : Valid' (↑x) r o₂
l' : ℕ
e : Raised l' (size l)
H : BalancedSz l' (size r)
⊢ ∃ l' r', BalancedSz l' r' ∧ (Nat.dist (size l) l' ≤ 1 ∧ size r = r' ∨ Nat.dist (size r) r' ≤ 1 ∧ size l = l')

tactic: exact ⟨_, _, H, Or.inr ⟨e.dist_le, rfl⟩⟩
state_before: case inr.intro.intro
α : Type u_1
inst✝ : Preorder α
l : Ordnode α
x : α
r : Ordnode α
o₁ : WithBot α
o₂ : WithTop α
hl : Valid' o₁ l ↑x
hr : Valid' (↑x) r o₂
r' : ℕ
e : Raised (size r) r'
H : BalancedSz (size l) r'
⊢ ∃ l' r', BalancedSz l' r' ∧ (Nat.dist (size l) l' ≤ 1 ∧ size r = r' ∨ Nat.dist (size r) r' ≤ 1 ∧ size l = l')
Theorem: Sym2.mem_map
File: Mathlib/Data/Sym/Sym2.lean

tactic: induction' z using Sym2.ind with x y
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.38357
f : α → β
b : β
z : Sym2 α
⊢ b ∈ map f z ↔ ∃ a, a ∈ z ∧ f a = b

tactic: simp only [map, Quotient.map_mk, Prod.map_mk, mem_iff]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type ?u.38357
f : α → β
b : β
x y : α
⊢ b ∈ map f (Quotient.mk (Rel.setoid α) (x, y)) ↔ ∃ a, a ∈ Quotient.mk (Rel.setoid α) (x, y) ∧ f a = b

tactic: constructor
state_before: case h
α : Type u_1
β : Type u_2
γ : Type ?u.38357
f : α → β
b : β
x y : α
⊢ b = f x ∨ b = f y ↔ ∃ a, (a = x ∨ a = y) ∧ f a = b

tactic: rintro (rfl | rfl)
state_before: case h.mp
α : Type u_1
β : Type u_2
γ : Type ?u.38357
f : α → β
b : β
x y : α
⊢ b = f x ∨ b = f y → ∃ a, (a = x ∨ a = y) ∧ f a = b

tactic: exact ⟨x, by simp⟩
state_before: case h.mp.inl
α : Type u_1
β : Type u_2
γ : Type ?u.38357
f : α → β
x y : α
⊢ ∃ a, (a = x ∨ a = y) ∧ f a = f x

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.38357
f : α → β
x y : α
⊢ (x = x ∨ x = y) ∧ f x = f x

tactic: exact ⟨y, by simp⟩
state_before: case h.mp.inr
α : Type u_1
β : Type u_2
γ : Type ?u.38357
f : α → β
x y : α
⊢ ∃ a, (a = x ∨ a = y) ∧ f a = f y

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.38357
f : α → β
x y : α
⊢ (y = x ∨ y = y) ∧ f y = f y

tactic: rintro ⟨w, rfl | rfl, rfl⟩ <;> simp
state_before: case h.mpr
α : Type u_1
β : Type u_2
γ : Type ?u.38357
f : α → β
b : β
x y : α
⊢ (∃ a, (a = x ∨ a = y) ∧ f a = b) → b = f x ∨ b = f y
Theorem: Finset.one_le_prod'
File: Mathlib/Algebra/BigOperators/Order.lean

tactic: rw [prod_const_one]
state_before: ι : Type u_1
α : Type ?u.16280
β : Type ?u.16283
M : Type ?u.16286
N : Type u_2
G : Type ?u.16292
k : Type ?u.16295
R : Type ?u.16298
inst✝¹ : CommMonoid M
inst✝ : OrderedCommMonoid N
f g : ι → N
s t : Finset ι
h : ∀ (i : ι), i ∈ s → 1 ≤ f i
⊢ 1 ≤ ∏ i in s, 1
Theorem: RatFunc.intDegree_one
File: Mathlib/FieldTheory/RatFunc.lean

tactic: rw [intDegree, num_one, denom_one, sub_self]
state_before: K : Type u
inst✝ : Field K
⊢ intDegree 1 = 0
Theorem: SimpleGraph.Subgraph.verts_iSup
File: Mathlib/Combinatorics/SimpleGraph/Subgraph.lean

tactic: simp [iSup]
state_before: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : Subgraph G
a b : V
f : ι → Subgraph G
⊢ (⨆ (i : ι), f i).verts = ⋃ (i : ι), (f i).verts