1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: ContinuousMap.dist_lt_iff_of_nonempty
File: Mathlib/Topology/ContinuousFunction/Compact.lean

tactic: simp only [← dist_mkOfCompact, dist_lt_iff_of_nonempty_compact, mkOfCompact_apply]
state_before: α : Type u_1
β : Type u_2
E : Type u_3
inst✝⁴ : TopologicalSpace α
inst✝³ : CompactSpace α
inst✝² : MetricSpace β
inst✝¹ : NormedAddCommGroup E
f g : C(α, β)
C : ℝ
inst✝ : Nonempty α
⊢ dist f g < C ↔ ∀ (x : α), dist (f x) (g x) < C
state_after: no goals
Theorem: List.reverse_prefix
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: rw [← reverse_suffix]
state_before: α✝ : Type u_1
l₁ l₂ : List α✝
⊢ l₁.reverse <+: l₂.reverse ↔ l₁ <:+ l₂
state_after: α✝ : Type u_1
l₁ l₂ : List α✝
⊢ l₁.reverse.reverse <:+ l₂.reverse.reverse ↔ l₁ <:+ l₂

tactic: simp only [reverse_reverse]
state_before: α✝ : Type u_1
l₁ l₂ : List α✝
⊢ l₁.reverse.reverse <:+ l₂.reverse.reverse ↔ l₁ <:+ l₂
state_after: no goals
Theorem: Polynomial.monic_expand_iff
File: Mathlib/Algebra/Polynomial/Expand.lean

tactic: simp only [Monic, leadingCoeff_expand hp]
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
p✝ q p : ℕ
f : R[X]
hp : 0 < p
⊢ ((expand R p) f).Monic ↔ f.Monic
state_after: no goals
Theorem: MvPolynomial.isWeightedHomogeneous_zero_iff_weightedTotalDegree_eq_zero
File: Mathlib/RingTheory/MvPolynomial/WeightedHomogeneous.lean

tactic: rw [weightedTotalDegree, ← bot_eq_zero, Finset.sup_eq_bot_iff, bot_eq_zero, IsWeightedHomogeneous]
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : CanonicallyLinearOrderedAddCommMonoid M
w : σ → M
φ p : MvPolynomial σ R
⊢ IsWeightedHomogeneous w p 0 ↔ weightedTotalDegree w p = 0
state_after: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : CanonicallyLinearOrderedAddCommMonoid M
w : σ → M
φ p : MvPolynomial σ R
⊢ (∀ ⦃d : σ →₀ ℕ⦄, coeff d p ≠ 0 → (weightedDegree w) d = 0) ↔ ∀ s ∈ p.support, (weightedDegree w) s = 0

tactic: apply forall_congr'
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : CanonicallyLinearOrderedAddCommMonoid M
w : σ → M
φ p : MvPolynomial σ R
⊢ (∀ ⦃d : σ →₀ ℕ⦄, coeff d p ≠ 0 → (weightedDegree w) d = 0) ↔ ∀ s ∈ p.support, (weightedDegree w) s = 0
state_after: case h
R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : CanonicallyLinearOrderedAddCommMonoid M
w : σ → M
φ p : MvPolynomial σ R
⊢ ∀ (a : σ →₀ ℕ), coeff a p ≠ 0 → (weightedDegree w) a = 0 ↔ a ∈ p.support → (weightedDegree w) a = 0

tactic: intro m
state_before: case h
R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : CanonicallyLinearOrderedAddCommMonoid M
w : σ → M
φ p : MvPolynomial σ R
⊢ ∀ (a : σ →₀ ℕ), coeff a p ≠ 0 → (weightedDegree w) a = 0 ↔ a ∈ p.support → (weightedDegree w) a = 0
state_after: case h
R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : CanonicallyLinearOrderedAddCommMonoid M
w : σ → M
φ p : MvPolynomial σ R
m : σ →₀ ℕ
⊢ coeff m p ≠ 0 → (weightedDegree w) m = 0 ↔ m ∈ p.support → (weightedDegree w) m = 0

tactic: rw [mem_support_iff]
state_before: case h
R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : CanonicallyLinearOrderedAddCommMonoid M
w : σ → M
φ p : MvPolynomial σ R
m : σ →₀ ℕ
⊢ coeff m p ≠ 0 → (weightedDegree w) m = 0 ↔ m ∈ p.support → (weightedDegree w) m = 0
state_after: no goals
Theorem: CategoryTheory.Limits.Cocones.cocone_iso_of_hom_iso
File: Mathlib/CategoryTheory/Limits/Cones.lean

tactic: aesop_cat
state_before: J : Type u₁
inst✝³ : Category.{v₁, u₁} J
K✝ : Type u₂
inst✝² : Category.{v₂, u₂} K✝
C : Type u₃
inst✝¹ : Category.{v₃, u₃} C
D : Type u₄
inst✝ : Category.{v₄, u₄} D
F K : J ⥤ C
c d : Cocone K
f : c ⟶ d
i : IsIso f.hom
⊢ f ≫ { hom := inv f.hom, w := ⋯ } = 𝟙 c ∧ { hom := inv f.hom, w := ⋯ } ≫ f = 𝟙 d
state_after: no goals
Theorem: Cardinal.mk_finsupp_of_infinite
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: simp
state_before: α β : Type u
inst✝² : Infinite α
inst✝¹ : Zero β
inst✝ : Nontrivial β
⊢ #(α →₀ β) = max #α #β
state_after: no goals
Theorem: inner_self_re_eq_norm
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: conv_rhs => rw [← inner_self_ofReal_re]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x : E
⊢ re ⟪x, x⟫_𝕜 = ‖⟪x, x⟫_𝕜‖
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x : E
⊢ re ⟪x, x⟫_𝕜 = ‖↑(re ⟪x, x⟫_𝕜)‖

tactic: symm
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x : E
⊢ re ⟪x, x⟫_𝕜 = ‖↑(re ⟪x, x⟫_𝕜)‖
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x : E
⊢ ‖↑(re ⟪x, x⟫_𝕜)‖ = re ⟪x, x⟫_𝕜

tactic: exact norm_of_nonneg inner_self_nonneg
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x : E
⊢ ‖↑(re ⟪x, x⟫_𝕜)‖ = re ⟪x, x⟫_𝕜
state_after: no goals
Theorem: Nat.prod_primeFactors_dvd
File: Mathlib/Data/Nat/Factorization/Basic.lean

tactic: by_cases hn : n = 0
state_before: a b m n✝ p n : ℕ
⊢ ∏ p ∈ n.primeFactors, p ∣ n
state_after: case pos
a b m n✝ p n : ℕ
hn : n = 0
⊢ ∏ p ∈ n.primeFactors, p ∣ n

case neg
a b m n✝ p n : ℕ
hn : ¬n = 0
⊢ ∏ p ∈ n.primeFactors, p ∣ n

tactic: simpa [prod_factors hn] using Multiset.toFinset_prod_dvd_prod (n.factors : Multiset ℕ)
state_before: case neg
a b m n✝ p n : ℕ
hn : ¬n = 0
⊢ ∏ p ∈ n.primeFactors, p ∣ n
state_after: no goals

tactic: subst hn
state_before: case pos
a b m n✝ p n : ℕ
hn : n = 0
⊢ ∏ p ∈ n.primeFactors, p ∣ n
state_after: case pos
a b m n p : ℕ
⊢ ∏ p ∈ primeFactors 0, p ∣ 0

tactic: simp
state_before: case pos
a b m n p : ℕ
⊢ ∏ p ∈ primeFactors 0, p ∣ 0
state_after: no goals
Theorem: Mathlib.Meta.Positivity.max_ne
File: Mathlib/Tactic/Positivity/Basic.lean

tactic: rw [max_def]
state_before: R : Type u_1
inst✝ : LinearOrder R
a b c : R
ha : a ≠ c
hb : b ≠ c
⊢ max a b ≠ c
state_after: R : Type u_1
inst✝ : LinearOrder R
a b c : R
ha : a ≠ c
hb : b ≠ c
⊢ (if a ≤ b then b else a) ≠ c

tactic: split_ifs <;> assumption
state_before: R : Type u_1
inst✝ : LinearOrder R
a b c : R
ha : a ≠ c
hb : b ≠ c
⊢ (if a ≤ b then b else a) ≠ c
state_after: no goals
Theorem: Finset.centroid_singleton
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

tactic: simp [centroid_def, affineCombination_apply]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
p : ι → P
i : ι
⊢ centroid k {i} p = p i
state_after: no goals
Theorem: skewAdjointPart_comp_subtype_skewAdjoint
File: Mathlib/Algebra/Star/Module.lean

tactic: simp only [LinearMap.comp_apply, Submodule.subtype_apply, skewAdjointPart_apply_coe, hx,
  sub_neg_eq_add, smul_add, invOf_two_smul_add_invOf_two_smul]
state_before: R : Type u_1
A : Type u_2
inst✝⁷ : Semiring R
inst✝⁶ : StarMul R
inst✝⁵ : TrivialStar R
inst✝⁴ : AddCommGroup A
inst✝³ : Module R A
inst✝² : StarAddMonoid A
inst✝¹ : StarModule R A
inst✝ : Invertible 2
x✝ : ↥(skewAdjoint.submodule R A)
x : A
hx : star x = -x
⊢ ↑((skewAdjointPart R ∘ₗ (skewAdjoint.submodule R A).subtype) ⟨x, hx⟩) = ↑(LinearMap.id ⟨x, hx⟩)
state_after: R : Type u_1
A : Type u_2
inst✝⁷ : Semiring R
inst✝⁶ : StarMul R
inst✝⁵ : TrivialStar R
inst✝⁴ : AddCommGroup A
inst✝³ : Module R A
inst✝² : StarAddMonoid A
inst✝¹ : StarModule R A
inst✝ : Invertible 2
x✝ : ↥(skewAdjoint.submodule R A)
x : A
hx : star x = -x
⊢ x = ↑(LinearMap.id ⟨x, hx⟩)

tactic: rfl
state_before: R : Type u_1
A : Type u_2
inst✝⁷ : Semiring R
inst✝⁶ : StarMul R
inst✝⁵ : TrivialStar R
inst✝⁴ : AddCommGroup A
inst✝³ : Module R A
inst✝² : StarAddMonoid A
inst✝¹ : StarModule R A
inst✝ : Invertible 2
x✝ : ↥(skewAdjoint.submodule R A)
x : A
hx : star x = -x
⊢ x = ↑(LinearMap.id ⟨x, hx⟩)
state_after: no goals
Theorem: Polynomial.separable_map
File: Mathlib/FieldTheory/Separable.lean

tactic: refine ⟨fun H ↦ ?_, fun H ↦ H.map⟩
state_before: F : Type u
inst✝³ : Field F
K : Type v
inst✝² : Field K
S : Type u_1
inst✝¹ : CommRing S
inst✝ : Nontrivial S
f : F →+* S
p : F[X]
⊢ (map f p).Separable ↔ p.Separable
state_after: F : Type u
inst✝³ : Field F
K : Type v
inst✝² : Field K
S : Type u_1
inst✝¹ : CommRing S
inst✝ : Nontrivial S
f : F →+* S
p : F[X]
H : (map f p).Separable
⊢ p.Separable

tactic: obtain ⟨m, hm⟩ := Ideal.exists_maximal S
state_before: F : Type u
inst✝³ : Field F
K : Type v
inst✝² : Field K
S : Type u_1
inst✝¹ : CommRing S
inst✝ : Nontrivial S
f : F →+* S
p : F[X]
H : (map f p).Separable
⊢ p.Separable
state_after: case intro
F : Type u
inst✝³ : Field F
K : Type v
inst✝² : Field K
S : Type u_1
inst✝¹ : CommRing S
inst✝ : Nontrivial S
f : F →+* S
p : F[X]
H : (map f p).Separable
m : Ideal S
hm : m.IsMaximal
⊢ p.Separable

tactic: have := Separable.map H (f := Ideal.Quotient.mk m)
state_before: case intro
F : Type u
inst✝³ : Field F
K : Type v
inst✝² : Field K
S : Type u_1
inst✝¹ : CommRing S
inst✝ : Nontrivial S
f : F →+* S
p : F[X]
H : (map f p).Separable
m : Ideal S
hm : m.IsMaximal
⊢ p.Separable
state_after: case intro
F : Type u
inst✝³ : Field F
K : Type v
inst✝² : Field K
S : Type u_1
inst✝¹ : CommRing S
inst✝ : Nontrivial S
f : F →+* S
p : F[X]
H : (map f p).Separable
m : Ideal S
hm : m.IsMaximal
this : (map (Ideal.Quotient.mk m) (map f p)).Separable
⊢ p.Separable

tactic: rwa [map_map, separable_def, derivative_map, isCoprime_map] at this
state_before: case intro
F : Type u
inst✝³ : Field F
K : Type v
inst✝² : Field K
S : Type u_1
inst✝¹ : CommRing S
inst✝ : Nontrivial S
f : F →+* S
p : F[X]
H : (map f p).Separable
m : Ideal S
hm : m.IsMaximal
this : (map (Ideal.Quotient.mk m) (map f p)).Separable
⊢ p.Separable
state_after: no goals
Theorem: exists_one_lt'
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: obtain ⟨y, hy⟩ := Decidable.exists_ne (1 : α)
state_before: α : Type u
inst✝¹ : LinearOrderedCommGroup α
a b c : α
inst✝ : Nontrivial α
⊢ ∃ a, 1 < a
state_after: case intro
α : Type u
inst✝¹ : LinearOrderedCommGroup α
a b c : α
inst✝ : Nontrivial α
y : α
hy : y ≠ 1
⊢ ∃ a, 1 < a

tactic: obtain h|h := hy.lt_or_lt
state_before: case intro
α : Type u
inst✝¹ : LinearOrderedCommGroup α
a b c : α
inst✝ : Nontrivial α
y : α
hy : y ≠ 1
⊢ ∃ a, 1 < a
state_after: case intro.inl
α : Type u
inst✝¹ : LinearOrderedCommGroup α
a b c : α
inst✝ : Nontrivial α
y : α
hy : y ≠ 1
h : y < 1
⊢ ∃ a, 1 < a

case intro.inr
α : Type u
inst✝¹ : LinearOrderedCommGroup α
a b c : α
inst✝ : Nontrivial α
y : α
hy : y ≠ 1
h : 1 < y
⊢ ∃ a, 1 < a

tactic: exact ⟨y⁻¹, one_lt_inv'.mpr h⟩
state_before: case intro.inl
α : Type u
inst✝¹ : LinearOrderedCommGroup α
a b c : α
inst✝ : Nontrivial α
y : α
hy : y ≠ 1
h : y < 1
⊢ ∃ a, 1 < a
state_after: no goals

tactic: exact ⟨y, h⟩
state_before: case intro.inr
α : Type u
inst✝¹ : LinearOrderedCommGroup α
a b c : α
inst✝ : Nontrivial α
y : α
hy : y ≠ 1
h : 1 < y
⊢ ∃ a, 1 < a
state_after: no goals
Theorem: FiniteField.isSquare_neg_one_iff
File: Mathlib/NumberTheory/LegendreSymbol/QuadraticChar/Basic.lean

tactic: by_cases hF : ringChar F = 2
state_before: F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
⊢ IsSquare (-1) ↔ Fintype.card F % 4 ≠ 3
state_after: case pos
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ringChar F = 2
⊢ IsSquare (-1) ↔ Fintype.card F % 4 ≠ 3

case neg
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ¬ringChar F = 2
⊢ IsSquare (-1) ↔ Fintype.card F % 4 ≠ 3

tactic: simp only [FiniteField.isSquare_of_char_two hF, Ne, true_iff_iff]
state_before: case pos
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ringChar F = 2
⊢ IsSquare (-1) ↔ Fintype.card F % 4 ≠ 3
state_after: case pos
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ringChar F = 2
⊢ ¬Fintype.card F % 4 = 3

tactic: exact fun hf ↦
  one_ne_zero <|
    (Nat.odd_of_mod_four_eq_three hf).symm.trans <| FiniteField.even_card_of_char_two hF
state_before: case pos
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ringChar F = 2
⊢ ¬Fintype.card F % 4 = 3
state_after: no goals

tactic: have h₁ := FiniteField.odd_card_of_char_ne_two hF
state_before: case neg
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ¬ringChar F = 2
⊢ IsSquare (-1) ↔ Fintype.card F % 4 ≠ 3
state_after: case neg
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ¬ringChar F = 2
h₁ : Fintype.card F % 2 = 1
⊢ IsSquare (-1) ↔ Fintype.card F % 4 ≠ 3

tactic: rw [← quadraticChar_one_iff_isSquare (neg_ne_zero.mpr (one_ne_zero' F)),
  quadraticChar_neg_one hF, χ₄_nat_eq_if_mod_four, h₁]
state_before: case neg
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ¬ringChar F = 2
h₁ : Fintype.card F % 2 = 1
⊢ IsSquare (-1) ↔ Fintype.card F % 4 ≠ 3
state_after: case neg
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ¬ringChar F = 2
h₁ : Fintype.card F % 2 = 1
⊢ (if 1 = 0 then 0 else if Fintype.card F % 4 = 1 then 1 else -1) = 1 ↔ Fintype.card F % 4 ≠ 3

tactic: simp only [Nat.one_ne_zero, if_false, ite_eq_left_iff, (by omega : (-1 : ℤ) ≠ 1), imp_false,
  not_not, Ne]
state_before: case neg
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ¬ringChar F = 2
h₁ : Fintype.card F % 2 = 1
⊢ (if 1 = 0 then 0 else if Fintype.card F % 4 = 1 then 1 else -1) = 1 ↔ Fintype.card F % 4 ≠ 3
state_after: case neg
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ¬ringChar F = 2
h₁ : Fintype.card F % 2 = 1
⊢ Fintype.card F % 4 = 1 ↔ ¬Fintype.card F % 4 = 3

tactic: exact ⟨fun h ↦ ne_of_eq_of_ne h (by omega), (Nat.odd_mod_four_iff.mp h₁).resolve_right⟩
state_before: case neg
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ¬ringChar F = 2
h₁ : Fintype.card F % 2 = 1
⊢ Fintype.card F % 4 = 1 ↔ ¬Fintype.card F % 4 = 3
state_after: no goals

tactic: omega
state_before: F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ¬ringChar F = 2
h₁ : Fintype.card F % 2 = 1
⊢ -1 ≠ 1
state_after: no goals

tactic: omega
state_before: F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ¬ringChar F = 2
h₁ : Fintype.card F % 2 = 1
h : Fintype.card F % 4 = 1
⊢ 1 ≠ 3
state_after: no goals
Theorem: continuousWithinAt_prod_of_discrete_left
File: Mathlib/Topology/ContinuousOn.lean

tactic: rw [← x.eta]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝⁴ : (i : ι) → TopologicalSpace (π i)
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
inst✝¹ : TopologicalSpace δ
inst✝ : DiscreteTopology α
f : α × β → γ
s : Set (α × β)
x : α × β
⊢ ContinuousWithinAt f s x ↔ ContinuousWithinAt (fun x_1 => f (x.1, x_1)) {b | (x.1, b) ∈ s} x.2
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝⁴ : (i : ι) → TopologicalSpace (π i)
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
inst✝¹ : TopologicalSpace δ
inst✝ : DiscreteTopology α
f : α × β → γ
s : Set (α × β)
x : α × β
⊢ ContinuousWithinAt f s (x.1, x.2) ↔
    ContinuousWithinAt (fun x_1 => f ((x.1, x.2).1, x_1)) {b | ((x.1, x.2).1, b) ∈ s} (x.1, x.2).2

tactic: simp_rw [ContinuousWithinAt, nhdsWithin, nhds_prod_eq, nhds_discrete, pure_prod,
← map_inf_principal_preimage]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝⁴ : (i : ι) → TopologicalSpace (π i)
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
inst✝¹ : TopologicalSpace δ
inst✝ : DiscreteTopology α
f : α × β → γ
s : Set (α × β)
x : α × β
⊢ ContinuousWithinAt f s (x.1, x.2) ↔
    ContinuousWithinAt (fun x_1 => f ((x.1, x.2).1, x_1)) {b | ((x.1, x.2).1, b) ∈ s} (x.1, x.2).2
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝⁴ : (i : ι) → TopologicalSpace (π i)
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
inst✝¹ : TopologicalSpace δ
inst✝ : DiscreteTopology α
f : α × β → γ
s : Set (α × β)
x : α × β
⊢ Tendsto f (map (Prod.mk x.1) (𝓝 x.2 ⊓ 𝓟 (Prod.mk x.1 ⁻¹' s))) (𝓝 (f (x.1, x.2))) ↔
    Tendsto (fun x_1 => f (x.1, x_1)) (𝓝 x.2 ⊓ 𝓟 {b | (x.1, b) ∈ s}) (𝓝 (f (x.1, x.2)))

tactic: rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝⁴ : (i : ι) → TopologicalSpace (π i)
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
inst✝¹ : TopologicalSpace δ
inst✝ : DiscreteTopology α
f : α × β → γ
s : Set (α × β)
x : α × β
⊢ Tendsto f (map (Prod.mk x.1) (𝓝 x.2 ⊓ 𝓟 (Prod.mk x.1 ⁻¹' s))) (𝓝 (f (x.1, x.2))) ↔
    Tendsto (fun x_1 => f (x.1, x_1)) (𝓝 x.2 ⊓ 𝓟 {b | (x.1, b) ∈ s}) (𝓝 (f (x.1, x.2)))
state_after: no goals
Theorem: mul_nonpos_iff_neg_imp_nonneg
File: Mathlib/Algebra/Order/Ring/Defs.lean

tactic: rw [← neg_nonneg, ← neg_mul, mul_nonneg_iff_pos_imp_nonneg (α := α)]
state_before: α : Type u
β : Type u_1
inst✝ : LinearOrderedRing α
a b c : α
⊢ a * b ≤ 0 ↔ (a < 0 → 0 ≤ b) ∧ (0 < b → a ≤ 0)
state_after: α : Type u
β : Type u_1
inst✝ : LinearOrderedRing α
a b c : α
⊢ (0 < -a → 0 ≤ b) ∧ (0 < b → 0 ≤ -a) ↔ (a < 0 → 0 ≤ b) ∧ (0 < b → a ≤ 0)

tactic: simp only [neg_pos, neg_nonneg]
state_before: α : Type u
β : Type u_1
inst✝ : LinearOrderedRing α
a b c : α
⊢ (0 < -a → 0 ≤ b) ∧ (0 < b → 0 ≤ -a) ↔ (a < 0 → 0 ≤ b) ∧ (0 < b → a ≤ 0)
state_after: no goals
Theorem: Nat.card_pi
File: Mathlib/SetTheory/Cardinal/Finite.lean

tactic: simp_rw [Nat.card, mk_pi, prod_eq_of_fintype, toNat_lift, map_prod]
state_before: α : Type u_1
β✝ : Type u_2
β : α → Type u_3
inst✝ : Fintype α
⊢ Nat.card ((a : α) → β a) = ∏ a : α, Nat.card (β a)
state_after: no goals
Theorem: Matrix.det_of_mem_unitary
File: Mathlib/LinearAlgebra/UnitaryGroup.lean

tactic: constructor
state_before: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
α : Type v
inst✝¹ : CommRing α
inst✝ : StarRing α
A✝ A : Matrix n n α
hA : A ∈ unitaryGroup n α
⊢ A.det ∈ unitary α
state_after: case left
n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
α : Type v
inst✝¹ : CommRing α
inst✝ : StarRing α
A✝ A : Matrix n n α
hA : A ∈ unitaryGroup n α
⊢ star A.det * A.det = 1

case right
n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
α : Type v
inst✝¹ : CommRing α
inst✝ : StarRing α
A✝ A : Matrix n n α
hA : A ∈ unitaryGroup n α
⊢ A.det * star A.det = 1

tactic: simpa [star, det_transpose] using congr_arg det hA.1
state_before: case left
n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
α : Type v
inst✝¹ : CommRing α
inst✝ : StarRing α
A✝ A : Matrix n n α
hA : A ∈ unitaryGroup n α
⊢ star A.det * A.det = 1
state_after: no goals

tactic: simpa [star, det_transpose] using congr_arg det hA.2
state_before: case right
n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
α : Type v
inst✝¹ : CommRing α
inst✝ : StarRing α
A✝ A : Matrix n n α
hA : A ∈ unitaryGroup n α
⊢ A.det * star A.det = 1
state_after: no goals
Theorem: Homeomorph.inducing
File: Mathlib/Topology/Homeomorph.lean

tactic: simp only [symm_comp_self, inducing_id]
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
inst✝⁴ : TopologicalSpace X
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Z
X' : Type u_4
Y' : Type u_5
inst✝¹ : TopologicalSpace X'
inst✝ : TopologicalSpace Y'
h : X ≃ₜ Y
⊢ Inducing (⇑h.symm ∘ ⇑h)
state_after: no goals
Theorem: FreeGroup.toWord_inv
File: Mathlib/GroupTheory/FreeGroup/Basic.lean

tactic: rcases x with ⟨L⟩
state_before: α : Type u
L L₁ L₂ L₃ L₄ : List (α × Bool)
inst✝ : DecidableEq α
x : FreeGroup α
⊢ x⁻¹.toWord = invRev x.toWord
state_after: case mk
α : Type u
L✝ L₁ L₂ L₃ L₄ : List (α × Bool)
inst✝ : DecidableEq α
x : FreeGroup α
L : List (α × Bool)
⊢ (Quot.mk Red.Step L)⁻¹.toWord = invRev (toWord (Quot.mk Red.Step L))

tactic: rw [quot_mk_eq_mk, inv_mk, toWord_mk, toWord_mk, reduce_invRev]
state_before: case mk
α : Type u
L✝ L₁ L₂ L₃ L₄ : List (α × Bool)
inst✝ : DecidableEq α
x : FreeGroup α
L : List (α × Bool)
⊢ (Quot.mk Red.Step L)⁻¹.toWord = invRev (toWord (Quot.mk Red.Step L))
state_after: no goals
Theorem: AlgebraicGeometry.Scheme.OpenCover.gluedCoverT'_snd_fst
File: Mathlib/AlgebraicGeometry/Gluing.lean

tactic: delta gluedCoverT'
state_before: X : Scheme
𝒰 : X.OpenCover
x y z : 𝒰.J
⊢ 𝒰.gluedCoverT' x y z ≫ pullback.snd ≫ pullback.fst = pullback.fst ≫ pullback.snd
state_after: X : Scheme
𝒰 : X.OpenCover
x y z : 𝒰.J
⊢ ((pullbackRightPullbackFstIso (𝒰.map x) (𝒰.map z) pullback.fst).hom ≫
        (pullback.map (pullback.fst ≫ 𝒰.map x) (𝒰.map z) (pullback.fst ≫ 𝒰.map y) (𝒰.map z)
              (pullbackSymmetry (𝒰.map x) (𝒰.map y)).hom (𝟙 (𝒰.obj z)) (𝟙 X) ⋯ ⋯ ≫
            (pullbackRightPullbackFstIso (𝒰.map y) (𝒰.map z) pullback.fst).inv) ≫
          (pullbackSymmetry pullback.fst pullback.fst).hom) ≫
      pullback.snd ≫ pullback.fst =
    pullback.fst ≫ pullback.snd

tactic: simp
state_before: X : Scheme
𝒰 : X.OpenCover
x y z : 𝒰.J
⊢ ((pullbackRightPullbackFstIso (𝒰.map x) (𝒰.map z) pullback.fst).hom ≫
        (pullback.map (pullback.fst ≫ 𝒰.map x) (𝒰.map z) (pullback.fst ≫ 𝒰.map y) (𝒰.map z)
              (pullbackSymmetry (𝒰.map x) (𝒰.map y)).hom (𝟙 (𝒰.obj z)) (𝟙 X) ⋯ ⋯ ≫
            (pullbackRightPullbackFstIso (𝒰.map y) (𝒰.map z) pullback.fst).inv) ≫
          (pullbackSymmetry pullback.fst pullback.fst).hom) ≫
      pullback.snd ≫ pullback.fst =
    pullback.fst ≫ pullback.snd
state_after: no goals