1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: AddValuation.map_add'
File: Mathlib/RingTheory/Valuation/Basic.lean

tactic: intro x y
state_before: K : Type u_1
F : Type u_2
R : Type u_3
inst✝³ : DivisionRing K
Γ₀ : Type u_4
Γ'₀ : Type u_5
inst✝² : Ring R
inst✝¹ : LinearOrderedAddCommMonoidWithTop Γ₀
inst✝ : LinearOrderedAddCommMonoidWithTop Γ'₀
v : AddValuation R Γ₀
x y z : R
⊢ ∀ (x y : R), v x ≤ v (x + y) ∨ v y ≤ v (x + y)
state_after: K : Type u_1
F : Type u_2
R : Type u_3
inst✝³ : DivisionRing K
Γ₀ : Type u_4
Γ'₀ : Type u_5
inst✝² : Ring R
inst✝¹ : LinearOrderedAddCommMonoidWithTop Γ₀
inst✝ : LinearOrderedAddCommMonoidWithTop Γ'₀
v : AddValuation R Γ₀
x✝ y✝ z x y : R
⊢ v x ≤ v (x + y) ∨ v y ≤ v (x + y)

tactic: rw [← @min_le_iff _ _ (v x) (v y) (v (x+y)), ← ge_iff_le]
state_before: K : Type u_1
F : Type u_2
R : Type u_3
inst✝³ : DivisionRing K
Γ₀ : Type u_4
Γ'₀ : Type u_5
inst✝² : Ring R
inst✝¹ : LinearOrderedAddCommMonoidWithTop Γ₀
inst✝ : LinearOrderedAddCommMonoidWithTop Γ'₀
v : AddValuation R Γ₀
x✝ y✝ z x y : R
⊢ v x ≤ v (x + y) ∨ v y ≤ v (x + y)
state_after: K : Type u_1
F : Type u_2
R : Type u_3
inst✝³ : DivisionRing K
Γ₀ : Type u_4
Γ'₀ : Type u_5
inst✝² : Ring R
inst✝¹ : LinearOrderedAddCommMonoidWithTop Γ₀
inst✝ : LinearOrderedAddCommMonoidWithTop Γ'₀
v : AddValuation R Γ₀
x✝ y✝ z x y : R
⊢ v (x + y) ≥ min (v x) (v y)

tactic: apply map_add
state_before: K : Type u_1
F : Type u_2
R : Type u_3
inst✝³ : DivisionRing K
Γ₀ : Type u_4
Γ'₀ : Type u_5
inst✝² : Ring R
inst✝¹ : LinearOrderedAddCommMonoidWithTop Γ₀
inst✝ : LinearOrderedAddCommMonoidWithTop Γ'₀
v : AddValuation R Γ₀
x✝ y✝ z x y : R
⊢ v (x + y) ≥ min (v x) (v y)
state_after: no goals
Theorem: Polynomial.hasseDeriv_C
File: Mathlib/Algebra/Polynomial/HasseDeriv.lean

tactic: rw [← monomial_zero_left, hasseDeriv_monomial, Nat.choose_eq_zero_of_lt hk, Nat.cast_zero,
  zero_mul, monomial_zero_right]
state_before: R : Type u_1
inst✝ : Semiring R
k : ℕ
f : R[X]
r : R
hk : 0 < k
⊢ (hasseDeriv k) (C r) = 0
state_after: no goals
Theorem: add_idem
File: Mathlib/Algebra/Order/Kleene.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
π : ι → Type u_4
inst✝ : IdemSemiring α
a✝ b c a : α
⊢ a + a = a
state_after: no goals
Theorem: MulAction.orbitRel.Quotient.mapsTo_smul_orbit
File: Mathlib/GroupTheory/GroupAction/Basic.lean

tactic: rw [orbitRel.Quotient.orbit_eq_orbit_out x Quotient.out_eq']
state_before: G : Type u_1
α : Type u_2
β : Type u_3
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : MulAction G β
g : G
x : Quotient G α
⊢ Set.MapsTo (fun x => g • x) x.orbit x.orbit
state_after: G : Type u_1
α : Type u_2
β : Type u_3
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : MulAction G β
g : G
x : Quotient G α
⊢ Set.MapsTo (fun x => g • x) (MulAction.orbit G (Quotient.out' x)) (MulAction.orbit G (Quotient.out' x))

tactic: exact mapsTo_smul_orbit g x.out'
state_before: G : Type u_1
α : Type u_2
β : Type u_3
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : MulAction G β
g : G
x : Quotient G α
⊢ Set.MapsTo (fun x => g • x) (MulAction.orbit G (Quotient.out' x)) (MulAction.orbit G (Quotient.out' x))
state_after: no goals
Theorem: LowerSet.iSup_Iic
File: Mathlib/Order/UpperLower/Basic.lean

tactic: ext
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s✝ t : Set α
x : α
s : Set α
⊢ ⨆ a ∈ s, Iic a = lowerClosure s
state_after: case a.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s✝ t : Set α
x : α
s : Set α
x✝ : α
⊢ x✝ ∈ ↑(⨆ a ∈ s, Iic a) ↔ x✝ ∈ ↑(lowerClosure s)

tactic: simp
state_before: case a.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s✝ t : Set α
x : α
s : Set α
x✝ : α
⊢ x✝ ∈ ↑(⨆ a ∈ s, Iic a) ↔ x✝ ∈ ↑(lowerClosure s)
state_after: no goals
Theorem: Multiset.add_singleton_eq_iff
File: Mathlib/Data/Multiset/Basic.lean

tactic: rw [add_comm, singleton_add]
state_before: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ t✝ : Multiset α
a✝ b : α
s t : Multiset α
a : α
⊢ s + {a} = t ↔ a ∈ t ∧ s = t.erase a
state_after: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ t✝ : Multiset α
a✝ b : α
s t : Multiset α
a : α
⊢ a ::ₘ s = t ↔ a ∈ t ∧ s = t.erase a

tactic: constructor
state_before: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ t✝ : Multiset α
a✝ b : α
s t : Multiset α
a : α
⊢ a ::ₘ s = t ↔ a ∈ t ∧ s = t.erase a
state_after: case mp
α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ t✝ : Multiset α
a✝ b : α
s t : Multiset α
a : α
⊢ a ::ₘ s = t → a ∈ t ∧ s = t.erase a

case mpr
α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ t✝ : Multiset α
a✝ b : α
s t : Multiset α
a : α
⊢ a ∈ t ∧ s = t.erase a → a ::ₘ s = t

tactic: rintro rfl
state_before: case mp
α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ t✝ : Multiset α
a✝ b : α
s t : Multiset α
a : α
⊢ a ::ₘ s = t → a ∈ t ∧ s = t.erase a
state_after: case mp
α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ t : Multiset α
a✝ b : α
s : Multiset α
a : α
⊢ a ∈ a ::ₘ s ∧ s = (a ::ₘ s).erase a

tactic: exact ⟨s.mem_cons_self a, (s.erase_cons_head a).symm⟩
state_before: case mp
α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ t : Multiset α
a✝ b : α
s : Multiset α
a : α
⊢ a ∈ a ::ₘ s ∧ s = (a ::ₘ s).erase a
state_after: no goals

tactic: rintro ⟨h, rfl⟩
state_before: case mpr
α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ t✝ : Multiset α
a✝ b : α
s t : Multiset α
a : α
⊢ a ∈ t ∧ s = t.erase a → a ::ₘ s = t
state_after: case mpr.intro
α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s t✝ : Multiset α
a✝ b : α
t : Multiset α
a : α
h : a ∈ t
⊢ a ::ₘ t.erase a = t

tactic: exact cons_erase h
state_before: case mpr.intro
α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s t✝ : Multiset α
a✝ b : α
t : Multiset α
a : α
h : a ∈ t
⊢ a ::ₘ t.erase a = t
state_after: no goals
Theorem: Polynomial.X_pow_mul_monomial
File: Mathlib/Algebra/Polynomial/Basic.lean

tactic: rw [X_pow_mul, monomial_mul_X_pow]
state_before: R : Type u
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p q : R[X]
k n : ℕ
r : R
⊢ X ^ k * (monomial n) r = (monomial (n + k)) r
state_after: no goals
Theorem: PiLp.nnnorm_eq_sum
File: Mathlib/Analysis/NormedSpace/PiLp.lean

tactic: ext
state_before: p✝ : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β✝ : ι → Type u_4
inst✝³ : Fact (1 ≤ p✝)
inst✝² : Fintype ι
p : ℝ≥0∞
inst✝¹ : Fact (1 ≤ p)
β : ι → Type u_5
hp : p ≠ ⊤
inst✝ : (i : ι) → SeminormedAddCommGroup (β i)
f : PiLp p β
⊢ ‖f‖₊ = (∑ i : ι, ‖f i‖₊ ^ p.toReal) ^ (1 / p.toReal)
state_after: case a
p✝ : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β✝ : ι → Type u_4
inst✝³ : Fact (1 ≤ p✝)
inst✝² : Fintype ι
p : ℝ≥0∞
inst✝¹ : Fact (1 ≤ p)
β : ι → Type u_5
hp : p ≠ ⊤
inst✝ : (i : ι) → SeminormedAddCommGroup (β i)
f : PiLp p β
⊢ ↑‖f‖₊ = ↑((∑ i : ι, ‖f i‖₊ ^ p.toReal) ^ (1 / p.toReal))

tactic: simp [NNReal.coe_sum, norm_eq_sum (p.toReal_pos_iff_ne_top.mpr hp)]
state_before: case a
p✝ : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β✝ : ι → Type u_4
inst✝³ : Fact (1 ≤ p✝)
inst✝² : Fintype ι
p : ℝ≥0∞
inst✝¹ : Fact (1 ≤ p)
β : ι → Type u_5
hp : p ≠ ⊤
inst✝ : (i : ι) → SeminormedAddCommGroup (β i)
f : PiLp p β
⊢ ↑‖f‖₊ = ↑((∑ i : ι, ‖f i‖₊ ^ p.toReal) ^ (1 / p.toReal))
state_after: no goals
Theorem: WeierstrassCurve.Affine.baseChange_nonsingular
File: Mathlib/AlgebraicGeometry/EllipticCurve/Affine.lean

tactic: erw [← map_nonsingular _ hf, map_baseChange]
state_before: R✝ : Type u
inst✝¹¹ : CommRing R✝
W✝ : Affine R✝
R : Type r
inst✝¹⁰ : CommRing R
W : Affine R
S : Type s
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
A : Type u
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
inst✝⁵ : Algebra S A
inst✝⁴ : IsScalarTower R S A
B : Type v
inst✝³ : CommRing B
inst✝² : Algebra R B
inst✝¹ : Algebra S B
inst✝ : IsScalarTower R S B
f : A →ₐ[S] B
hf : Function.Injective ⇑f
x y : A
⊢ (baseChange W B).toAffine.Nonsingular (f x) (f y) ↔ (baseChange W A).toAffine.Nonsingular x y
state_after: R✝ : Type u
inst✝¹¹ : CommRing R✝
W✝ : Affine R✝
R : Type r
inst✝¹⁰ : CommRing R
W : Affine R
S : Type s
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
A : Type u
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
inst✝⁵ : Algebra S A
inst✝⁴ : IsScalarTower R S A
B : Type v
inst✝³ : CommRing B
inst✝² : Algebra R B
inst✝¹ : Algebra S B
inst✝ : IsScalarTower R S B
f : A →ₐ[S] B
hf : Function.Injective ⇑f
x y : A
⊢ (baseChange W B).toAffine.Nonsingular (f x) (f y) ↔
    (baseChange W B).toAffine.Nonsingular (f.toRingHom x) (f.toRingHom y)

tactic: rfl
state_before: R✝ : Type u
inst✝¹¹ : CommRing R✝
W✝ : Affine R✝
R : Type r
inst✝¹⁰ : CommRing R
W : Affine R
S : Type s
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
A : Type u
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
inst✝⁵ : Algebra S A
inst✝⁴ : IsScalarTower R S A
B : Type v
inst✝³ : CommRing B
inst✝² : Algebra R B
inst✝¹ : Algebra S B
inst✝ : IsScalarTower R S B
f : A →ₐ[S] B
hf : Function.Injective ⇑f
x y : A
⊢ (baseChange W B).toAffine.Nonsingular (f x) (f y) ↔
    (baseChange W B).toAffine.Nonsingular (f.toRingHom x) (f.toRingHom y)
state_after: no goals
Theorem: Set.unop_mem_unop
File: Mathlib/Data/Set/Opposite.lean

tactic: rfl
state_before: α : Type u_1
s : Set αᵒᵖ
a : αᵒᵖ
⊢ a.unop ∈ s.unop ↔ a ∈ s
state_after: no goals
Theorem: PMF.filter_apply
File: Mathlib/Probability/ProbabilityMassFunction/Constructions.lean

tactic: rw [filter, normalize_apply]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
p : PMF α
s : Set α
h : ∃ a ∈ s, a ∈ p.support
a : α
⊢ (p.filter s h) a = s.indicator (⇑p) a * (∑' (a' : α), s.indicator (⇑p) a')⁻¹
state_after: no goals
Theorem: Submonoid.LocalizationMap.mulEquivOfLocalizations_right_inv_apply
File: Mathlib/GroupTheory/MonoidLocalization.lean

tactic: simp
state_before: M : Type u_1
inst✝³ : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝² : CommMonoid N
P : Type u_3
inst✝¹ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
T : Submonoid P
Q : Type u_4
inst✝ : CommMonoid Q
k : S.LocalizationMap P
x : M
⊢ (f.ofMulEquivOfLocalizations (f.mulEquivOfLocalizations k)).toMap x = k.toMap x
state_after: no goals
Theorem: CategoryTheory.unitCompPartialBijectiveAux_symm_apply
File: Mathlib/CategoryTheory/Adjunction/Reflective.lean

tactic: simp [unitCompPartialBijectiveAux]
state_before: C : Type u₁
D : Type u₂
E : Type u₃
inst✝³ : Category.{v₁, u₁} C
inst✝² : Category.{v₂, u₂} D
inst✝¹ : Category.{v₃, u₃} E
i : D ⥤ C
inst✝ : Reflective i
A : C
B : D
f : i.obj ((reflector i).obj A) ⟶ i.obj B
⊢ (unitCompPartialBijectiveAux A B).symm f = (reflectorAdjunction i).unit.app A ≫ f
state_after: no goals
Theorem: RatFunc.coe_ne_zero
File: Mathlib/RingTheory/LaurentSeries.lean

tactic: simp only [ne_eq, Polynomial.coe_eq_zero_iff, hf, not_false_eq_true]
state_before: R : Type u_1
F : Type u
inst✝ : Field F
p q : F[X]
f✝ g : RatFunc F
f : F[X]
hf : f ≠ 0
⊢ ↑f ≠ 0
state_after: no goals
Theorem: Computation.results_think_iff
File: Mathlib/Data/Seq/Computation.lean

tactic: let ⟨n', r, e⟩ := of_results_think h
state_before: α : Type u
β : Type v
γ : Type w
s : Computation α
a : α
n : ℕ
h : s.think.Results a (n + 1)
⊢ s.Results a n
state_after: α : Type u
β : Type v
γ : Type w
s : Computation α
a : α
n : ℕ
h : s.think.Results a (n + 1)
n' : ℕ
r : s.Results a n'
e : n + 1 = n' + 1
⊢ s.Results a n

tactic: injection e with h'
state_before: α : Type u
β : Type v
γ : Type w
s : Computation α
a : α
n : ℕ
h : s.think.Results a (n + 1)
n' : ℕ
r : s.Results a n'
e : n + 1 = n' + 1
⊢ s.Results a n
state_after: α : Type u
β : Type v
γ : Type w
s : Computation α
a : α
n : ℕ
h : s.think.Results a (n + 1)
n' : ℕ
r : s.Results a n'
h' : n = n'
⊢ s.Results a n

tactic: rwa [h']
state_before: α : Type u
β : Type v
γ : Type w
s : Computation α
a : α
n : ℕ
h : s.think.Results a (n + 1)
n' : ℕ
r : s.Results a n'
h' : n = n'
⊢ s.Results a n
state_after: no goals
Theorem: Sum.elim_div_div
File: Mathlib/Algebra/Group/Pi/Basic.lean

tactic: ext x
state_before: I : Type u
α : Type u_1
β : Type u_2
γ : Type u_3
f : I → Type v₁
g : I → Type v₂
h : I → Type v₃
x y : (i : I) → f i
i : I
a a' : α → γ
b b' : β → γ
inst✝ : Div γ
⊢ Sum.elim (a / a') (b / b') = Sum.elim a b / Sum.elim a' b'
state_after: case h
I : Type u
α : Type u_1
β : Type u_2
γ : Type u_3
f : I → Type v₁
g : I → Type v₂
h : I → Type v₃
x✝ y : (i : I) → f i
i : I
a a' : α → γ
b b' : β → γ
inst✝ : Div γ
x : α ⊕ β
⊢ Sum.elim (a / a') (b / b') x = (Sum.elim a b / Sum.elim a' b') x

tactic: cases x <;> rfl
state_before: case h
I : Type u
α : Type u_1
β : Type u_2
γ : Type u_3
f : I → Type v₁
g : I → Type v₂
h : I → Type v₃
x✝ y : (i : I) → f i
i : I
a a' : α → γ
b b' : β → γ
inst✝ : Div γ
x : α ⊕ β
⊢ Sum.elim (a / a') (b / b') x = (Sum.elim a b / Sum.elim a' b') x
state_after: no goals
Theorem: AddChar.mulShift_mul
File: Mathlib/Algebra/Group/AddChar.lean

tactic: ext
state_before: R : Type u_1
M : Type u_2
inst✝¹ : Ring R
inst✝ : CommMonoid M
ψ : AddChar R M
r s : R
⊢ ψ.mulShift r * ψ.mulShift s = ψ.mulShift (r + s)
state_after: case h
R : Type u_1
M : Type u_2
inst✝¹ : Ring R
inst✝ : CommMonoid M
ψ : AddChar R M
r s x✝ : R
⊢ (ψ.mulShift r * ψ.mulShift s) x✝ = (ψ.mulShift (r + s)) x✝

tactic: rw [mulShift_apply, right_distrib, map_add_eq_mul]
state_before: case h
R : Type u_1
M : Type u_2
inst✝¹ : Ring R
inst✝ : CommMonoid M
ψ : AddChar R M
r s x✝ : R
⊢ (ψ.mulShift r * ψ.mulShift s) x✝ = (ψ.mulShift (r + s)) x✝
state_after: case h
R : Type u_1
M : Type u_2
inst✝¹ : Ring R
inst✝ : CommMonoid M
ψ : AddChar R M
r s x✝ : R
⊢ (ψ.mulShift r * ψ.mulShift s) x✝ = ψ (r * x✝) * ψ (s * x✝)

tactic: norm_cast
state_before: case h
R : Type u_1
M : Type u_2
inst✝¹ : Ring R
inst✝ : CommMonoid M
ψ : AddChar R M
r s x✝ : R
⊢ (ψ.mulShift r * ψ.mulShift s) x✝ = ψ (r * x✝) * ψ (s * x✝)
state_after: no goals
Theorem: OmegaCompletePartialOrder.isLUB_of_scottContinuous
File: Mathlib/Order/OmegaCompletePartialOrder.lean

tactic: simp only [map_coe, OrderHom.coe_mk]
state_before: α : Type u
β : Type v
γ : Type u_1
inst✝² : OmegaCompletePartialOrder α
inst✝¹ : OmegaCompletePartialOrder β
inst✝ : OmegaCompletePartialOrder γ
c : Chain α
f : α → β
hf : ScottContinuous f
⊢ IsLUB (Set.range ⇑(c.map { toFun := f, monotone' := ⋯ })) (f (ωSup c))
state_after: α : Type u
β : Type v
γ : Type u_1
inst✝² : OmegaCompletePartialOrder α
inst✝¹ : OmegaCompletePartialOrder β
inst✝ : OmegaCompletePartialOrder γ
c : Chain α
f : α → β
hf : ScottContinuous f
⊢ IsLUB (Set.range (f ∘ ⇑c)) (f (ωSup c))

tactic: rw [(Set.range_comp f ↑c)]
state_before: α : Type u
β : Type v
γ : Type u_1
inst✝² : OmegaCompletePartialOrder α
inst✝¹ : OmegaCompletePartialOrder β
inst✝ : OmegaCompletePartialOrder γ
c : Chain α
f : α → β
hf : ScottContinuous f
⊢ IsLUB (Set.range (f ∘ ⇑c)) (f (ωSup c))
state_after: α : Type u
β : Type v
γ : Type u_1
inst✝² : OmegaCompletePartialOrder α
inst✝¹ : OmegaCompletePartialOrder β
inst✝ : OmegaCompletePartialOrder γ
c : Chain α
f : α → β
hf : ScottContinuous f
⊢ IsLUB (f '' Set.range ⇑c) (f (ωSup c))

tactic: exact hf (Set.range_nonempty ↑c) (IsChain.directedOn (isChain_range c)) (isLUB_range_ωSup c)
state_before: α : Type u
β : Type v
γ : Type u_1
inst✝² : OmegaCompletePartialOrder α
inst✝¹ : OmegaCompletePartialOrder β
inst✝ : OmegaCompletePartialOrder γ
c : Chain α
f : α → β
hf : ScottContinuous f
⊢ IsLUB (f '' Set.range ⇑c) (f (ωSup c))
state_after: no goals
Theorem: Set.encard_union_add_encard_inter
File: Mathlib/Data/Set/Card.lean

tactic: rw [← diff_union_self, encard_union_eq disjoint_sdiff_left, add_right_comm,
  encard_diff_add_encard_inter]
state_before: α : Type u_1
β : Type u_2
s✝ t✝ s t : Set α
⊢ (s ∪ t).encard + (s ∩ t).encard = s.encard + t.encard
state_after: no goals
Theorem: Matrix.mulVec_neg
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : NonUnitalNonAssocRing α
inst✝ : Fintype n
v : n → α
A : Matrix m n α
⊢ A *ᵥ -v = -(A *ᵥ v)
state_after: case h
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : NonUnitalNonAssocRing α
inst✝ : Fintype n
v : n → α
A : Matrix m n α
x✝ : m
⊢ (A *ᵥ -v) x✝ = (-(A *ᵥ v)) x✝

tactic: apply dotProduct_neg
state_before: case h
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : NonUnitalNonAssocRing α
inst✝ : Fintype n
v : n → α
A : Matrix m n α
x✝ : m
⊢ (A *ᵥ -v) x✝ = (-(A *ᵥ v)) x✝
state_after: no goals
Theorem: AffineIsometryEquiv.dist_pointReflection_self
File: Mathlib/Analysis/NormedSpace/AffineIsometry.lean

tactic: rw [dist_pointReflection_self', ← two_smul' 𝕜 (x -ᵥ y), norm_smul, ← dist_eq_norm_vsub V]
state_before: 𝕜 : Type u_1
V : Type u_2
V₁ : Type u_3
V₁' : Type u_4
V₂ : Type u_5
V₃ : Type u_6
V₄ : Type u_7
P₁ : Type u_8
P₁' : Type u_9
P : Type u_10
P₂ : Type u_11
P₃ : Type u_12
P₄ : Type u_13
inst✝²⁵ : NormedField 𝕜
inst✝²⁴ : SeminormedAddCommGroup V
inst✝²³ : NormedSpace 𝕜 V
inst✝²² : PseudoMetricSpace P
inst✝²¹ : NormedAddTorsor V P
inst✝²⁰ : SeminormedAddCommGroup V₁
inst✝¹⁹ : NormedSpace 𝕜 V₁
inst✝¹⁸ : PseudoMetricSpace P₁
inst✝¹⁷ : NormedAddTorsor V₁ P₁
inst✝¹⁶ : SeminormedAddCommGroup V₁'
inst✝¹⁵ : NormedSpace 𝕜 V₁'
inst✝¹⁴ : MetricSpace P₁'
inst✝¹³ : NormedAddTorsor V₁' P₁'
inst✝¹² : SeminormedAddCommGroup V₂
inst✝¹¹ : NormedSpace 𝕜 V₂
inst✝¹⁰ : PseudoMetricSpace P₂
inst✝⁹ : NormedAddTorsor V₂ P₂
inst✝⁸ : SeminormedAddCommGroup V₃
inst✝⁷ : NormedSpace 𝕜 V₃
inst✝⁶ : PseudoMetricSpace P₃
inst✝⁵ : NormedAddTorsor V₃ P₃
inst✝⁴ : SeminormedAddCommGroup V₄
inst✝³ : NormedSpace 𝕜 V₄
inst✝² : PseudoMetricSpace P₄
inst✝¹ : NormedAddTorsor V₄ P₄
e : P ≃ᵃⁱ[𝕜] P₂
α : Type u_14
inst✝ : TopologicalSpace α
x y : P
⊢ dist ((pointReflection 𝕜 x) y) y = ‖2‖ * dist x y
state_after: no goals
Theorem: TopologicalSpace.Opens.inclusion_top_functor
File: Mathlib/Topology/Category/TopCat/Opens.lean

tactic: refine CategoryTheory.Functor.ext ?_ ?_
state_before: X : TopCat
⊢ ⋯.functor = map (inclusionTopIso X).inv
state_after: case refine_1
X : TopCat
⊢ ∀ (X_1 : Opens ↑((toTopCat X).obj ⊤)), ⋯.functor.obj X_1 = (map (inclusionTopIso X).inv).obj X_1

case refine_2
X : TopCat
⊢ ∀ (X_1 Y : Opens ↑((toTopCat X).obj ⊤)) (f : X_1 ⟶ Y),
    ⋯.functor.map f = eqToHom ⋯ ≫ (map (inclusionTopIso X).inv).map f ≫ eqToHom ⋯

tactic: intro U
state_before: case refine_1
X : TopCat
⊢ ∀ (X_1 : Opens ↑((toTopCat X).obj ⊤)), ⋯.functor.obj X_1 = (map (inclusionTopIso X).inv).obj X_1
state_after: case refine_1
X : TopCat
U : Opens ↑((toTopCat X).obj ⊤)
⊢ ⋯.functor.obj U = (map (inclusionTopIso X).inv).obj U

tactic: ext x
state_before: case refine_1
X : TopCat
U : Opens ↑((toTopCat X).obj ⊤)
⊢ ⋯.functor.obj U = (map (inclusionTopIso X).inv).obj U
state_after: case refine_1.h.h
X : TopCat
U : Opens ↑((toTopCat X).obj ⊤)
x : ↑X
⊢ x ∈ ↑(⋯.functor.obj U) ↔ x ∈ ↑((map (inclusionTopIso X).inv).obj U)

tactic: exact ⟨fun ⟨⟨_, _⟩, h, rfl⟩ => h, fun h => ⟨⟨x, trivial⟩, h, rfl⟩⟩
state_before: case refine_1.h.h
X : TopCat
U : Opens ↑((toTopCat X).obj ⊤)
x : ↑X
⊢ x ∈ ↑(⋯.functor.obj U) ↔ x ∈ ↑((map (inclusionTopIso X).inv).obj U)
state_after: no goals

tactic: intros U V f
state_before: case refine_2
X : TopCat
⊢ ∀ (X_1 Y : Opens ↑((toTopCat X).obj ⊤)) (f : X_1 ⟶ Y),
    ⋯.functor.map f = eqToHom ⋯ ≫ (map (inclusionTopIso X).inv).map f ≫ eqToHom ⋯
state_after: case refine_2
X : TopCat
U V : Opens ↑((toTopCat X).obj ⊤)
f : U ⟶ V
⊢ ⋯.functor.map f = eqToHom ⋯ ≫ (map (inclusionTopIso X).inv).map f ≫ eqToHom ⋯

tactic: apply Subsingleton.elim
state_before: case refine_2
X : TopCat
U V : Opens ↑((toTopCat X).obj ⊤)
f : U ⟶ V
⊢ ⋯.functor.map f = eqToHom ⋯ ≫ (map (inclusionTopIso X).inv).map f ≫ eqToHom ⋯
state_after: no goals
Theorem: Set.pi_def
File: Mathlib/Data/Set/Lattice.lean

tactic: ext
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
π : α → Type u_11
i : Set α
s : (a : α) → Set (π a)
⊢ i.pi s = ⋂ a ∈ i, eval a ⁻¹' s a
state_after: case h
α : 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
π : α → Type u_11
i : Set α
s : (a : α) → Set (π a)
x✝ : (i : α) → π i
⊢ x✝ ∈ i.pi s ↔ x✝ ∈ ⋂ a ∈ i, eval a ⁻¹' s a

tactic: simp
state_before: case h
α : 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
π : α → Type u_11
i : Set α
s : (a : α) → Set (π a)
x✝ : (i : α) → π i
⊢ x✝ ∈ i.pi s ↔ x✝ ∈ ⋂ a ∈ i, eval a ⁻¹' s a
state_after: no goals
Theorem: Option.map_map₂_right_anticomm
File: Mathlib/Data/Option/NAry.lean

tactic: cases a <;> cases b <;> simp [h_right_anticomm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
f✝ : α → β → γ
a : Option α
b : Option β
c : Option γ
α' : Type u_5
β' : Type u_6
δ' : Type u_7
ε : Type u_8
ε' : Type u_9
f : α → β' → γ
g : β → β'
f' : β → α → δ
g' : δ → γ
h_right_anticomm : ∀ (a : α) (b : β), f a (g b) = g' (f' b a)
⊢ map₂ f a (Option.map g b) = Option.map g' (map₂ f' b a)
state_after: no goals
Theorem: QuadraticForm.posDef_toMatrix'
File: Mathlib/LinearAlgebra/Matrix/PosDef.lean

tactic: rw [← toQuadraticForm_associated ℝ Q, ←
  LinearMap.toMatrix₂'.left_inv ((associatedHom (R := ℝ) ℝ) Q)] at hQ
state_before: n : Type u_1
inst✝¹ : Fintype n
inst✝ : DecidableEq n
Q : QuadraticForm ℝ (n → ℝ)
hQ : Q.PosDef
⊢ Q.toMatrix'.PosDef
state_after: n : Type u_1
inst✝¹ : Fintype n
inst✝ : DecidableEq n
Q : QuadraticForm ℝ (n → ℝ)
hQ :
  (LinearMap.BilinForm.toQuadraticForm
      (LinearMap.toMatrix₂'.invFun ((↑LinearMap.toMatrix₂').toFun ((associatedHom ℝ) Q)))).PosDef
⊢ Q.toMatrix'.PosDef

tactic: exact .of_toQuadraticForm' (isSymm_toMatrix' Q) hQ
state_before: n : Type u_1
inst✝¹ : Fintype n
inst✝ : DecidableEq n
Q : QuadraticForm ℝ (n → ℝ)
hQ :
  (LinearMap.BilinForm.toQuadraticForm
      (LinearMap.toMatrix₂'.invFun ((↑LinearMap.toMatrix₂').toFun ((associatedHom ℝ) Q)))).PosDef
⊢ Q.toMatrix'.PosDef
state_after: no goals