1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Equiv.sigmaEquivProd_sigmaCongrRight
File: Mathlib/Logic/Equiv/Basic.lean

tactic: ext ⟨a, b⟩ : 1
state_before: α₁ : Type u_2
β₁ : Type u_1
β₂ : Type u_3
e : α₁ → β₁ ≃ β₂
⊢ (sigmaEquivProd α₁ β₁).symm.trans (sigmaCongrRight e) = (prodCongrRight e).trans (sigmaEquivProd α₁ β₂).symm
state_after: case H.mk
α₁ : Type u_2
β₁ : Type u_1
β₂ : Type u_3
e : α₁ → β₁ ≃ β₂
a : α₁
b : β₁
⊢ ((sigmaEquivProd α₁ β₁).symm.trans (sigmaCongrRight e)) (a, b) =
    ((prodCongrRight e).trans (sigmaEquivProd α₁ β₂).symm) (a, b)

tactic: simp only [trans_apply, sigmaCongrRight_apply, prodCongrRight_apply]
state_before: case H.mk
α₁ : Type u_2
β₁ : Type u_1
β₂ : Type u_3
e : α₁ → β₁ ≃ β₂
a : α₁
b : β₁
⊢ ((sigmaEquivProd α₁ β₁).symm.trans (sigmaCongrRight e)) (a, b) =
    ((prodCongrRight e).trans (sigmaEquivProd α₁ β₂).symm) (a, b)
state_after: case H.mk
α₁ : Type u_2
β₁ : Type u_1
β₂ : Type u_3
e : α₁ → β₁ ≃ β₂
a : α₁
b : β₁
⊢ ⟨((sigmaEquivProd α₁ β₁).symm (a, b)).fst,
      (e ((sigmaEquivProd α₁ β₁).symm (a, b)).fst) ((sigmaEquivProd α₁ β₁).symm (a, b)).snd⟩ =
    (sigmaEquivProd α₁ β₂).symm (a, (e a) b)

tactic: rfl
state_before: case H.mk
α₁ : Type u_2
β₁ : Type u_1
β₂ : Type u_3
e : α₁ → β₁ ≃ β₂
a : α₁
b : β₁
⊢ ⟨((sigmaEquivProd α₁ β₁).symm (a, b)).fst,
      (e ((sigmaEquivProd α₁ β₁).symm (a, b)).fst) ((sigmaEquivProd α₁ β₁).symm (a, b)).snd⟩ =
    (sigmaEquivProd α₁ β₂).symm (a, (e a) b)
state_after: no goals
Theorem: Nat.dist_eq_intro
File: Mathlib/Data/Nat/Dist.lean

tactic: rw [dist_add_add_right]
state_before: n m k l : ℕ
h : n + m = k + l
⊢ n.dist k = (n + m).dist (k + m)
state_after: no goals

tactic: rw [h]
state_before: n m k l : ℕ
h : n + m = k + l
⊢ (n + m).dist (k + m) = (k + l).dist (k + m)
state_after: no goals

tactic: rw [dist_add_add_left]
state_before: n m k l : ℕ
h : n + m = k + l
⊢ (k + l).dist (k + m) = l.dist m
state_after: no goals
Theorem: LieAlgebra.lieCharacter_apply_lie
File: Mathlib/Algebra/Lie/Character.lean

tactic: rw [LieHom.map_lie, LieRing.of_associative_ring_bracket, mul_comm, sub_self]
state_before: R : Type u
L : Type v
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
χ : LieCharacter R L
x y : L
⊢ χ ⁅x, y⁆ = 0
state_after: no goals
Theorem: RegularExpression.map_map
File: Mathlib/Computability/RegularExpressions.lean

tactic: simp only [map, Function.comp_apply, map_map]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
dec : DecidableEq α
a b : α
g : β → γ
f : α → β
R S : RegularExpression α
⊢ map g (map f (R + S)) = map (g ∘ f) (R + S)
state_after: no goals

tactic: simp only [map, Function.comp_apply, map_map]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
dec : DecidableEq α
a b : α
g : β → γ
f : α → β
R S : RegularExpression α
⊢ map g (map f (R.comp S)) = map (g ∘ f) (R.comp S)
state_after: no goals

tactic: simp only [map, Function.comp_apply, map_map]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
dec : DecidableEq α
a b : α
g : β → γ
f : α → β
R : RegularExpression α
⊢ map g (map f R.star) = map (g ∘ f) R.star
state_after: no goals
Theorem: MeasureTheory.Measure.restrict_union_le
File: Mathlib/MeasureTheory/Measure/Restrict.lean

tactic: simpa [ht, inter_union_distrib_left] using measure_union_le (t ∩ s) (t ∩ s')
state_before: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s'✝ t✝ s s' t : Set α
ht : MeasurableSet t
⊢ (μ.restrict (s ∪ s')) t ≤ (μ.restrict s + μ.restrict s') t
state_after: no goals
Theorem: CochainComplex.mappingCone.inl_fst_assoc
File: Mathlib/Algebra/Homology/HomotopyCategory/MappingCone.lean

tactic: rw [← he, neg_add_cancel_left]
state_before: C : Type u_1
inst✝² : Category.{?u.38349, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
K : CochainComplex C ℤ
d e : ℤ
γ : Cochain F K d
he : 1 + d = e
⊢ -1 + e = d
state_after: no goals

tactic: rw [← Cochain.comp_assoc _ _ _ (neg_add_self 1) (by omega) (by omega), inl_fst,
  Cochain.id_comp]
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
K : CochainComplex C ℤ
d e : ℤ
γ : Cochain F K d
he : 1 + d = e
⊢ (inl φ).comp ((↑(fst φ)).comp γ he) ⋯ = γ
state_after: no goals

tactic: omega
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
K : CochainComplex C ℤ
d e : ℤ
γ : Cochain F K d
he : 1 + d = e
⊢ 1 + d = e
state_after: no goals

tactic: omega
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
K : CochainComplex C ℤ
d e : ℤ
γ : Cochain F K d
he : 1 + d = e
⊢ -1 + 1 + d = d
state_after: no goals
Theorem: Finset.coe_empty
File: Mathlib/Data/Finset/Basic.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s : Finset α
⊢ ∀ (x : α), x ∈ ↑∅ ↔ x ∈ ∅
state_after: no goals
Theorem: Nat.cauchy_induction_mul
File: Mathlib/Order/Interval/Finset/Nat.lean

tactic: intro _ hl _
state_before: a b c : ℕ
P : ℕ → Prop
h : ∀ (n : ℕ), P (n + 1) → P n
k seed : ℕ
hk : 1 < k
hs : P seed.succ
hm : ∀ (x : ℕ), seed < x → P x → P (k * x)
n : ℕ
⊢ ∀ (x : ℕ), seed.succ ≤ x → P x → x < (fun x => k * x) x
state_after: a b c : ℕ
P : ℕ → Prop
h : ∀ (n : ℕ), P (n + 1) → P n
k seed : ℕ
hk : 1 < k
hs : P seed.succ
hm : ∀ (x : ℕ), seed < x → P x → P (k * x)
n x✝ : ℕ
hl : seed.succ ≤ x✝
hP✝ : P x✝
⊢ x✝ < (fun x => k * x) x✝

tactic: convert (Nat.mul_lt_mul_right <| seed.succ_pos.trans_le hl).2 hk
state_before: a b c : ℕ
P : ℕ → Prop
h : ∀ (n : ℕ), P (n + 1) → P n
k seed : ℕ
hk : 1 < k
hs : P seed.succ
hm : ∀ (x : ℕ), seed < x → P x → P (k * x)
n x✝ : ℕ
hl : seed.succ ≤ x✝
hP✝ : P x✝
⊢ x✝ < (fun x => k * x) x✝
state_after: case h.e'_3
a b c : ℕ
P : ℕ → Prop
h : ∀ (n : ℕ), P (n + 1) → P n
k seed : ℕ
hk : 1 < k
hs : P seed.succ
hm : ∀ (x : ℕ), seed < x → P x → P (k * x)
n x✝ : ℕ
hl : seed.succ ≤ x✝
hP✝ : P x✝
⊢ x✝ = 1 * x✝

tactic: rw [one_mul]
state_before: case h.e'_3
a b c : ℕ
P : ℕ → Prop
h : ∀ (n : ℕ), P (n + 1) → P n
k seed : ℕ
hk : 1 < k
hs : P seed.succ
hm : ∀ (x : ℕ), seed < x → P x → P (k * x)
n x✝ : ℕ
hl : seed.succ ≤ x✝
hP✝ : P x✝
⊢ x✝ = 1 * x✝
state_after: no goals
Theorem: Units.mk0_one
File: Mathlib/Algebra/GroupWithZero/Units/Basic.lean

tactic: ext
state_before: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝¹ : MonoidWithZero M₀
inst✝ : GroupWithZero G₀
a b : G₀
h : optParam (1 ≠ 0) ⋯
⊢ mk0 1 h = 1
state_after: case a
α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝¹ : MonoidWithZero M₀
inst✝ : GroupWithZero G₀
a b : G₀
h : optParam (1 ≠ 0) ⋯
⊢ ↑(mk0 1 h) = ↑1

tactic: rfl
state_before: case a
α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝¹ : MonoidWithZero M₀
inst✝ : GroupWithZero G₀
a b : G₀
h : optParam (1 ≠ 0) ⋯
⊢ ↑(mk0 1 h) = ↑1
state_after: no goals
Theorem: ContinuousLinearMap.norm_fst_le
File: Mathlib/Analysis/NormedSpace/OperatorNorm/Prod.lean

tactic: simpa only [one_mul] using le_max_left ‖e‖ ‖f‖
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : SeminormedAddCommGroup E
inst✝⁴ : SeminormedAddCommGroup F
inst✝³ : SeminormedAddCommGroup G
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedSpace 𝕜 F
inst✝ : NormedSpace 𝕜 G
x✝ : E × F
e : E
f : F
⊢ ‖(fst 𝕜 E F) (e, f)‖ ≤ 1 * ‖(e, f)‖
state_after: no goals
Theorem: Set.encard_coe_eq_coe_finsetCard
File: Mathlib/Data/Set/Card.lean

tactic: rw [Finite.encard_eq_coe_toFinset_card (Finset.finite_toSet s)]
state_before: α : Type u_1
β : Type u_2
s✝ t : Set α
s : Finset α
⊢ (↑s).encard = ↑s.card
state_after: α : Type u_1
β : Type u_2
s✝ t : Set α
s : Finset α
⊢ ↑⋯.toFinset.card = ↑s.card

tactic: simp
state_before: α : Type u_1
β : Type u_2
s✝ t : Set α
s : Finset α
⊢ ↑⋯.toFinset.card = ↑s.card
state_after: no goals
Theorem: Ideal.quotientMap_comp_mk
File: Mathlib/RingTheory/Ideal/QuotientOperations.lean

tactic: simp only [Function.comp_apply, RingHom.coe_comp, Ideal.quotientMap_mk]
state_before: R : Type u
S✝ : Type v
F : Type w
inst✝⁷ : CommRing R
inst✝⁶ : Semiring S✝
R₁ : Type u_1
R₂ : Type u_2
A : Type u_3
B : Type u_4
inst✝⁵ : CommSemiring R₁
inst✝⁴ : CommSemiring R₂
inst✝³ : CommRing A
inst✝² : Algebra R₁ A
inst✝¹ : Algebra R₂ A
S : Type v
inst✝ : CommRing S
J : Ideal R
I : Ideal S
f : R →+* S
H : J ≤ comap f I
x : R
⊢ ((quotientMap I f H).comp (Quotient.mk J)) x = ((Quotient.mk I).comp f) x
state_after: no goals
Theorem: IndepMatroid.ofFinset_indep
File: Mathlib/Data/Matroid/IndepAxioms.lean

tactic: simp only [IndepMatroid.ofFinset, ofFinitary_indep, Finset.coe_subset]
state_before: α : Type u_1
I✝ B X : Set α
inst✝ : DecidableEq α
E : Set α
Indep : Finset α → Prop
indep_empty : Indep ∅
indep_subset : ∀ ⦃I J : Finset α⦄, Indep J → I ⊆ J → Indep I
indep_aug : ∀ ⦃I J : Finset α⦄, Indep I → Indep J → I.card < J.card → ∃ e ∈ J, e ∉ I ∧ Indep (insert e I)
subset_ground : ∀ ⦃I : Finset α⦄, Indep I → ↑I ⊆ E
I : Finset α
⊢ (IndepMatroid.ofFinset E Indep indep_empty indep_subset indep_aug subset_ground).Indep ↑I ↔ Indep I
state_after: α : Type u_1
I✝ B X : Set α
inst✝ : DecidableEq α
E : Set α
Indep : Finset α → Prop
indep_empty : Indep ∅
indep_subset : ∀ ⦃I J : Finset α⦄, Indep J → I ⊆ J → Indep I
indep_aug : ∀ ⦃I J : Finset α⦄, Indep I → Indep J → I.card < J.card → ∃ e ∈ J, e ∉ I ∧ Indep (insert e I)
subset_ground : ∀ ⦃I : Finset α⦄, Indep I → ↑I ⊆ E
I : Finset α
⊢ (∀ J ⊆ I, Indep J) ↔ Indep I

tactic: exact ⟨fun h ↦ h _ Subset.rfl, fun h J hJI ↦ indep_subset h hJI⟩
state_before: α : Type u_1
I✝ B X : Set α
inst✝ : DecidableEq α
E : Set α
Indep : Finset α → Prop
indep_empty : Indep ∅
indep_subset : ∀ ⦃I J : Finset α⦄, Indep J → I ⊆ J → Indep I
indep_aug : ∀ ⦃I J : Finset α⦄, Indep I → Indep J → I.card < J.card → ∃ e ∈ J, e ∉ I ∧ Indep (insert e I)
subset_ground : ∀ ⦃I : Finset α⦄, Indep I → ↑I ⊆ E
I : Finset α
⊢ (∀ J ⊆ I, Indep J) ↔ Indep I
state_after: no goals
Theorem: Filter.HasBasis.to_image_id'
File: Mathlib/Order/Filter/Bases.lean

tactic: simp [h.mem_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
l l' : Filter α
p : ι → Prop
s : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
h : l.HasBasis p s
x✝ : Set α
⊢ x✝ ∈ l ↔ ∃ i, (∃ i_1, p i_1 ∧ s i_1 = i) ∧ id i ⊆ x✝
state_after: no goals
Theorem: MvPolynomial.weightedHomogeneousComponent_eq_zero'
File: Mathlib/RingTheory/MvPolynomial/WeightedHomogeneous.lean

tactic: classical
rw [weightedHomogeneousComponent_apply, sum_eq_zero]
intro d hd; rw [mem_filter] at hd
exfalso; exact h _ hd.1 hd.2
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : AddCommMonoid M
w : σ → M
n : M
φ ψ : MvPolynomial σ R
h : ∀ d ∈ φ.support, (weightedDegree w) d ≠ n
⊢ (weightedHomogeneousComponent w n) φ = 0
state_after: no goals

tactic: rw [weightedHomogeneousComponent_apply, sum_eq_zero]
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : AddCommMonoid M
w : σ → M
n : M
φ ψ : MvPolynomial σ R
h : ∀ d ∈ φ.support, (weightedDegree w) d ≠ n
⊢ (weightedHomogeneousComponent w n) φ = 0
state_after: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : AddCommMonoid M
w : σ → M
n : M
φ ψ : MvPolynomial σ R
h : ∀ d ∈ φ.support, (weightedDegree w) d ≠ n
⊢ ∀ x ∈ Finset.filter (fun d => (weightedDegree w) d = n) φ.support, (monomial x) (coeff x φ) = 0

tactic: intro d hd
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : AddCommMonoid M
w : σ → M
n : M
φ ψ : MvPolynomial σ R
h : ∀ d ∈ φ.support, (weightedDegree w) d ≠ n
⊢ ∀ x ∈ Finset.filter (fun d => (weightedDegree w) d = n) φ.support, (monomial x) (coeff x φ) = 0
state_after: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : AddCommMonoid M
w : σ → M
n : M
φ ψ : MvPolynomial σ R
h : ∀ d ∈ φ.support, (weightedDegree w) d ≠ n
d : σ →₀ ℕ
hd : d ∈ Finset.filter (fun d => (weightedDegree w) d = n) φ.support
⊢ (monomial d) (coeff d φ) = 0

tactic: rw [mem_filter] at hd
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : AddCommMonoid M
w : σ → M
n : M
φ ψ : MvPolynomial σ R
h : ∀ d ∈ φ.support, (weightedDegree w) d ≠ n
d : σ →₀ ℕ
hd : d ∈ Finset.filter (fun d => (weightedDegree w) d = n) φ.support
⊢ (monomial d) (coeff d φ) = 0
state_after: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : AddCommMonoid M
w : σ → M
n : M
φ ψ : MvPolynomial σ R
h : ∀ d ∈ φ.support, (weightedDegree w) d ≠ n
d : σ →₀ ℕ
hd : d ∈ φ.support ∧ (weightedDegree w) d = n
⊢ (monomial d) (coeff d φ) = 0

tactic: exfalso
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : AddCommMonoid M
w : σ → M
n : M
φ ψ : MvPolynomial σ R
h : ∀ d ∈ φ.support, (weightedDegree w) d ≠ n
d : σ →₀ ℕ
hd : d ∈ φ.support ∧ (weightedDegree w) d = n
⊢ (monomial d) (coeff d φ) = 0
state_after: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : AddCommMonoid M
w : σ → M
n : M
φ ψ : MvPolynomial σ R
h : ∀ d ∈ φ.support, (weightedDegree w) d ≠ n
d : σ →₀ ℕ
hd : d ∈ φ.support ∧ (weightedDegree w) d = n
⊢ False

tactic: exact h _ hd.1 hd.2
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : AddCommMonoid M
w : σ → M
n : M
φ ψ : MvPolynomial σ R
h : ∀ d ∈ φ.support, (weightedDegree w) d ≠ n
d : σ →₀ ℕ
hd : d ∈ φ.support ∧ (weightedDegree w) d = n
⊢ False
state_after: no goals
Theorem: odd_add_self_one'
File: Mathlib/Algebra/Ring/Parity.lean

tactic: simp [← add_assoc]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
inst✝¹ : Semiring α
inst✝ : Semiring β
a b : α
m n : ℕ
⊢ Odd (a + (a + 1))
state_after: no goals
Theorem: spectrum.spectralRadius_le_nnnorm
File: Mathlib/Analysis/NormedSpace/Spectrum.lean

tactic: refine iSup₂_le fun k hk => ?_
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁴ : NormedField 𝕜
inst✝³ : NormedRing A
inst✝² : NormedAlgebra 𝕜 A
inst✝¹ : CompleteSpace A
inst✝ : NormOneClass A
a : A
⊢ spectralRadius 𝕜 a ≤ ↑‖a‖₊
state_after: 𝕜 : Type u_1
A : Type u_2
inst✝⁴ : NormedField 𝕜
inst✝³ : NormedRing A
inst✝² : NormedAlgebra 𝕜 A
inst✝¹ : CompleteSpace A
inst✝ : NormOneClass A
a : A
k : 𝕜
hk : k ∈ σ a
⊢ ↑‖k‖₊ ≤ ↑‖a‖₊

tactic: exact mod_cast norm_le_norm_of_mem hk
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁴ : NormedField 𝕜
inst✝³ : NormedRing A
inst✝² : NormedAlgebra 𝕜 A
inst✝¹ : CompleteSpace A
inst✝ : NormOneClass A
a : A
k : 𝕜
hk : k ∈ σ a
⊢ ↑‖k‖₊ ≤ ↑‖a‖₊
state_after: no goals
Theorem: antivaryOn_inv_left
File: Mathlib/Algebra/Order/Monovary.lean

tactic: simp [MonovaryOn, AntivaryOn]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : OrderedCommGroup α
inst✝ : OrderedCommGroup β
s : Set ι
f f₁ f₂ : ι → α
g g₁ g₂ : ι → β
⊢ AntivaryOn f⁻¹ g s ↔ MonovaryOn f g s
state_after: no goals
Theorem: factorization_mul
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: simp [factorization, normalizedFactors_mul ha hb]
state_before: α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : UniqueFactorizationMonoid α
inst✝¹ : NormalizationMonoid α
inst✝ : DecidableEq α
a b : α
ha : a ≠ 0
hb : b ≠ 0
⊢ factorization (a * b) = factorization a + factorization b
state_after: no goals
Theorem: CategoryTheory.IsIso.of_isIso_fac_right
File: Mathlib/CategoryTheory/Iso.lean

tactic: rw [← w] at hh
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X✝ Y✝ Z✝ : C
f✝ g✝ : X✝ ⟶ Y✝
h✝ : Y✝ ⟶ Z✝
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
h : X ⟶ Z
inst✝ : IsIso g
hh : IsIso h
w : f ≫ g = h
⊢ IsIso f
state_after: C : Type u
inst✝¹ : Category.{v, u} C
X✝ Y✝ Z✝ : C
f✝ g✝ : X✝ ⟶ Y✝
h✝ : Y✝ ⟶ Z✝
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
h : X ⟶ Z
inst✝ : IsIso g
hh : IsIso (f ≫ g)
w : f ≫ g = h
⊢ IsIso f

tactic: haveI := hh
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X✝ Y✝ Z✝ : C
f✝ g✝ : X✝ ⟶ Y✝
h✝ : Y✝ ⟶ Z✝
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
h : X ⟶ Z
inst✝ : IsIso g
hh : IsIso (f ≫ g)
w : f ≫ g = h
⊢ IsIso f
state_after: C : Type u
inst✝¹ : Category.{v, u} C
X✝ Y✝ Z✝ : C
f✝ g✝ : X✝ ⟶ Y✝
h✝ : Y✝ ⟶ Z✝
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
h : X ⟶ Z
inst✝ : IsIso g
hh : IsIso (f ≫ g)
w : f ≫ g = h
this : IsIso (f ≫ g)
⊢ IsIso f

tactic: exact of_isIso_comp_right f g
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X✝ Y✝ Z✝ : C
f✝ g✝ : X✝ ⟶ Y✝
h✝ : Y✝ ⟶ Z✝
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
h : X ⟶ Z
inst✝ : IsIso g
hh : IsIso (f ≫ g)
w : f ≫ g = h
this : IsIso (f ≫ g)
⊢ IsIso f
state_after: no goals
Theorem: RCLike.nonneg_iff_exists_ofReal
File: Mathlib/Analysis/RCLike/Basic.lean

tactic: simp_rw [nonneg_iff (K := K), ext_iff (K := K)]
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
z w : K
⊢ 0 ≤ z ↔ ∃ x ≥ 0, ↑x = z
state_after: K : Type u_1
E : Type u_2
inst✝ : RCLike K
z w : K
⊢ 0 ≤ re z ∧ im z = 0 ↔ ∃ x ≥ 0, re ↑x = re z ∧ im ↑x = im z

tactic: aesop
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
z w : K
⊢ 0 ≤ re z ∧ im z = 0 ↔ ∃ x ≥ 0, re ↑x = re z ∧ im ↑x = im z
state_after: no goals
Theorem: Bornology.nonempty_of_not_isBounded
File: Mathlib/Topology/Bornology/Basic.lean

tactic: rw [nonempty_iff_ne_empty]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
x✝ : Bornology α
s t : Set α
x : α
h : ¬IsBounded s
⊢ s.Nonempty
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
x✝ : Bornology α
s t : Set α
x : α
h : ¬IsBounded s
⊢ s ≠ ∅

tactic: rintro rfl
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
x✝ : Bornology α
s t : Set α
x : α
h : ¬IsBounded s
⊢ s ≠ ∅
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
x✝ : Bornology α
t : Set α
x : α
h : ¬IsBounded ∅
⊢ False

tactic: exact h isBounded_empty
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
x✝ : Bornology α
t : Set α
x : α
h : ¬IsBounded ∅
⊢ False
state_after: no goals
Theorem: continuousAt_iff_continuous_left'_right'
File: Mathlib/Topology/Order/LeftRight.lean

tactic: rw [continuousWithinAt_Ioi_iff_Ici, continuousWithinAt_Iio_iff_Iic,
  continuousAt_iff_continuous_left_right]
state_before: α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : TopologicalSpace β
a : α
f : α → β
⊢ ContinuousAt f a ↔ ContinuousWithinAt f (Iio a) a ∧ ContinuousWithinAt f (Ioi a) a
state_after: no goals
Theorem: TopologicalSpace.Opens.map_id_eq
File: Mathlib/Topology/Category/TopCat/Opens.lean

tactic: rfl
state_before: X Y Z : TopCat
⊢ map (𝟙 X) = 𝟭 (Opens ↑X)
state_after: no goals
Theorem: Matrix.neg_vecMul
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 m
v : m → α
A : Matrix m n α
⊢ -v ᵥ* A = -(v ᵥ* A)
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 m
v : m → α
A : Matrix m n α
x✝ : n
⊢ (-v ᵥ* A) x✝ = (-(v ᵥ* A)) x✝

tactic: apply neg_dotProduct
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 m
v : m → α
A : Matrix m n α
x✝ : n
⊢ (-v ᵥ* A) x✝ = (-(v ᵥ* A)) x✝
state_after: no goals
Theorem: Set.sized_iUnion₂
File: Mathlib/Data/Finset/Slice.lean

tactic: simp only [Set.sized_iUnion]
state_before: α : Type u_1
ι : Sort u_2
κ : ι → Sort u_3
A B : Set (Finset α)
s : Finset α
r : ℕ
f : (i : ι) → κ i → Set (Finset α)
⊢ Sized r (⋃ i, ⋃ j, f i j) ↔ ∀ (i : ι) (j : κ i), Sized r (f i j)
state_after: no goals
Theorem: List.disjoint_cons_right
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: rw [disjoint_cons_left]
state_before: α✝ : Type u_1
l₁ : List α✝
a : α✝
l₂ : List α✝
⊢ (a :: l₂).Disjoint l₁ ↔ ¬a ∈ l₁ ∧ l₁.Disjoint l₂
state_after: α✝ : Type u_1
l₁ : List α✝
a : α✝
l₂ : List α✝
⊢ ¬a ∈ l₁ ∧ l₂.Disjoint l₁ ↔ ¬a ∈ l₁ ∧ l₁.Disjoint l₂

tactic: simp [disjoint_comm]
state_before: α✝ : Type u_1
l₁ : List α✝
a : α✝
l₂ : List α✝
⊢ ¬a ∈ l₁ ∧ l₂.Disjoint l₁ ↔ ¬a ∈ l₁ ∧ l₁.Disjoint l₂
state_after: no goals
Theorem: Matroid.dual_indep_iff_exists
File: Mathlib/Data/Matroid/Dual.lean

tactic: rw [dual_indep_iff_exists', and_iff_right hI]
state_before: α : Type u_1
M : Matroid α
I B X : Set α
hI : autoParam (I ⊆ M.E) _auto✝
⊢ M✶.Indep I ↔ ∃ B, M.Base B ∧ Disjoint I B
state_after: no goals
Theorem: Nat.mul_div_le_mul_div_assoc
File: Mathlib/Data/Nat/Defs.lean

tactic: simp [hc0]
state_before: a✝ b✝ c✝ d m n k : ℕ
p q : ℕ → Prop
a b c : ℕ
hc0 : c = 0
⊢ a * (b / c) ≤ a * b / c
state_after: no goals

tactic: rw [Nat.mul_assoc]
state_before: a✝ b✝ c✝ d m n k : ℕ
p q : ℕ → Prop
a b c : ℕ
hc0 : ¬c = 0
⊢ a * (b / c) * c ≤ a * b
state_after: a✝ b✝ c✝ d m n k : ℕ
p q : ℕ → Prop
a b c : ℕ
hc0 : ¬c = 0
⊢ a * (b / c * c) ≤ a * b

tactic: exact Nat.mul_le_mul_left _ (Nat.div_mul_le_self _ _)
state_before: a✝ b✝ c✝ d m n k : ℕ
p q : ℕ → Prop
a b c : ℕ
hc0 : ¬c = 0
⊢ a * (b / c * c) ≤ a * b
state_after: no goals
Theorem: hasProd_nat_add_iff'
File: Mathlib/Topology/Algebra/InfiniteSum/NatInt.lean

tactic: simp [hasProd_nat_add_iff]
state_before: M : Type u_1
inst✝⁴ : CommMonoid M
inst✝³ : TopologicalSpace M
m m' : M
G : Type u_2
inst✝² : CommGroup G
g g' : G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
f : ℕ → G
k : ℕ
⊢ HasProd (fun n => f (n + k)) (g / ∏ i ∈ range k, f i) ↔ HasProd f g
state_after: no goals
Theorem: Sum.LiftRel.isRight_congr
File: Mathlib/Data/Sum/Basic.lean

tactic: cases h <;> rfl
state_before: α : Type u
α' : Type w
β : Type v
β' : Type x
γ : Type u_1
δ : Type u_2
r : α → γ → Prop
s : β → δ → Prop
x : α ⊕ β
y : γ ⊕ δ
a : α
b : β
c : γ
d : δ
h : LiftRel r s x y
⊢ x.isRight = true ↔ y.isRight = true
state_after: no goals
Theorem: midpoint_mem_segment
File: Mathlib/Analysis/Convex/Segment.lean

tactic: rw [segment_eq_image_lineMap]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : LinearOrderedRing 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
x✝ y✝ : E
inst✝ : Invertible 2
x y : E
⊢ midpoint 𝕜 x y ∈ [x-[𝕜]y]
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : LinearOrderedRing 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
x✝ y✝ : E
inst✝ : Invertible 2
x y : E
⊢ midpoint 𝕜 x y ∈ ⇑(AffineMap.lineMap x y) '' Icc 0 1

tactic: exact ⟨⅟ 2, ⟨invOf_nonneg.mpr zero_le_two, invOf_le_one one_le_two⟩, rfl⟩
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : LinearOrderedRing 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
x✝ y✝ : E
inst✝ : Invertible 2
x y : E
⊢ midpoint 𝕜 x y ∈ ⇑(AffineMap.lineMap x y) '' Icc 0 1
state_after: no goals