1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: LinearIndependent.eq_zero_of_pair
File: Mathlib/LinearAlgebra/LinearIndependent.lean

tactic: have := linearIndependent_iff'.1 h Finset.univ ![s, t]
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x✝ y✝ x y : M
h : LinearIndependent R ![x, y]
s t : R
h' : s • x + t • y = 0
⊢ s = 0 ∧ t = 0
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x✝ y✝ x y : M
h : LinearIndependent R ![x, y]
s t : R
h' : s • x + t • y = 0
this : ∑ i : Fin (Nat.succ 0).succ, ![s, t] i • ![x, y] i = 0 → ∀ i ∈ Finset.univ, ![s, t] i = 0
⊢ s = 0 ∧ t = 0

tactic: simp only [Fin.sum_univ_two, Matrix.cons_val_zero, Matrix.cons_val_one, Matrix.head_cons, h',
  Finset.mem_univ, forall_true_left] at this
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x✝ y✝ x y : M
h : LinearIndependent R ![x, y]
s t : R
h' : s • x + t • y = 0
this : ∑ i : Fin (Nat.succ 0).succ, ![s, t] i • ![x, y] i = 0 → ∀ i ∈ Finset.univ, ![s, t] i = 0
⊢ s = 0 ∧ t = 0
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x✝ y✝ x y : M
h : LinearIndependent R ![x, y]
s t : R
h' : s • x + t • y = 0
this : ∀ (i : Fin (Nat.succ 0).succ), ![s, t] i = 0
⊢ s = 0 ∧ t = 0

tactic: exact ⟨this 0, this 1⟩
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x✝ y✝ x y : M
h : LinearIndependent R ![x, y]
s t : R
h' : s • x + t • y = 0
this : ∀ (i : Fin (Nat.succ 0).succ), ![s, t] i = 0
⊢ s = 0 ∧ t = 0
state_after: no goals
Theorem: Semiquot.liftOn_ofMem
File: Mathlib/Data/Semiquot.lean

tactic: revert h
state_before: α : Type u_1
β : Type u_2
q : Semiquot α
f : α → β
h : ∀ a ∈ q, ∀ b ∈ q, f a = f b
a : α
aq : a ∈ q
⊢ q.liftOn f h = f a
state_after: α : Type u_1
β : Type u_2
q : Semiquot α
f : α → β
a : α
aq : a ∈ q
⊢ ∀ (h : ∀ a ∈ q, ∀ b ∈ q, f a = f b), q.liftOn f h = f a

tactic: rw [eq_mk_of_mem aq]
state_before: α : Type u_1
β : Type u_2
q : Semiquot α
f : α → β
a : α
aq : a ∈ q
⊢ ∀ (h : ∀ a ∈ q, ∀ b ∈ q, f a = f b), q.liftOn f h = f a
state_after: α : Type u_1
β : Type u_2
q : Semiquot α
f : α → β
a : α
aq : a ∈ q
⊢ ∀ (h : ∀ a_1 ∈ mk aq, ∀ b ∈ mk aq, f a_1 = f b), (mk aq).liftOn f h = f a

tactic: intro
state_before: α : Type u_1
β : Type u_2
q : Semiquot α
f : α → β
a : α
aq : a ∈ q
⊢ ∀ (h : ∀ a_1 ∈ mk aq, ∀ b ∈ mk aq, f a_1 = f b), (mk aq).liftOn f h = f a
state_after: α : Type u_1
β : Type u_2
q : Semiquot α
f : α → β
a : α
aq : a ∈ q
h✝ : ∀ a_1 ∈ mk aq, ∀ b ∈ mk aq, f a_1 = f b
⊢ (mk aq).liftOn f h✝ = f a

tactic: rfl
state_before: α : Type u_1
β : Type u_2
q : Semiquot α
f : α → β
a : α
aq : a ∈ q
h✝ : ∀ a_1 ∈ mk aq, ∀ b ∈ mk aq, f a_1 = f b
⊢ (mk aq).liftOn f h✝ = f a
state_after: no goals
Theorem: Set.image_eq_image
File: Mathlib/Data/Set/Image.lean

tactic: rw [← preimage_image_eq s hf, ← preimage_image_eq t hf, eq]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : α → β
s t : Set α
f : α → β
hf : Injective f
eq : f '' s = f '' t
⊢ s = t
state_after: no goals
Theorem: LinearMap.toMvPolynomial_add
File: Mathlib/Algebra/Module/LinearMap/Polynomial.lean

tactic: unfold toMvPolynomial
state_before: R : Type u_1
M₁ : Type u_2
M₂ : Type u_3
ι₁ : Type u_4
ι₂ : Type u_5
inst✝⁷ : CommRing R
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : AddCommGroup M₂
inst✝⁴ : Module R M₁
inst✝³ : Module R M₂
inst✝² : Fintype ι₁
inst✝¹ : Finite ι₂
inst✝ : DecidableEq ι₁
b₁ : Basis ι₁ R M₁
b₂ : Basis ι₂ R M₂
f g : M₁ →ₗ[R] M₂
⊢ toMvPolynomial b₁ b₂ (f + g) = toMvPolynomial b₁ b₂ f + toMvPolynomial b₁ b₂ g
state_after: R : Type u_1
M₁ : Type u_2
M₂ : Type u_3
ι₁ : Type u_4
ι₂ : Type u_5
inst✝⁷ : CommRing R
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : AddCommGroup M₂
inst✝⁴ : Module R M₁
inst✝³ : Module R M₂
inst✝² : Fintype ι₁
inst✝¹ : Finite ι₂
inst✝ : DecidableEq ι₁
b₁ : Basis ι₁ R M₁
b₂ : Basis ι₂ R M₂
f g : M₁ →ₗ[R] M₂
⊢ (fun i => ((toMatrix b₁ b₂) (f + g)).toMvPolynomial i) =
    (fun i => ((toMatrix b₁ b₂) f).toMvPolynomial i) + fun i => ((toMatrix b₁ b₂) g).toMvPolynomial i

tactic: simp only [map_add, Matrix.toMvPolynomial_add]
state_before: R : Type u_1
M₁ : Type u_2
M₂ : Type u_3
ι₁ : Type u_4
ι₂ : Type u_5
inst✝⁷ : CommRing R
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : AddCommGroup M₂
inst✝⁴ : Module R M₁
inst✝³ : Module R M₂
inst✝² : Fintype ι₁
inst✝¹ : Finite ι₂
inst✝ : DecidableEq ι₁
b₁ : Basis ι₁ R M₁
b₂ : Basis ι₂ R M₂
f g : M₁ →ₗ[R] M₂
⊢ (fun i => ((toMatrix b₁ b₂) (f + g)).toMvPolynomial i) =
    (fun i => ((toMatrix b₁ b₂) f).toMvPolynomial i) + fun i => ((toMatrix b₁ b₂) g).toMvPolynomial i
state_after: no goals
Theorem: Pi.uniformSpace_eq
File: Mathlib/Topology/UniformSpace/Pi.lean

tactic: ext : 1
state_before: ι : Type u_1
ι' : Type u_2
β : Type u_3
α : ι → Type u
U : (i : ι) → UniformSpace (α i)
inst✝ : UniformSpace β
⊢ uniformSpace α = ⨅ i, UniformSpace.comap (eval i) (U i)
state_after: case h
ι : Type u_1
ι' : Type u_2
β : Type u_3
α : ι → Type u
U : (i : ι) → UniformSpace (α i)
inst✝ : UniformSpace β
⊢ 𝓤 ((i : ι) → α i) = 𝓤 ((i : ι) → α i)

tactic: rfl
state_before: case h
ι : Type u_1
ι' : Type u_2
β : Type u_3
α : ι → Type u
U : (i : ι) → UniformSpace (α i)
inst✝ : UniformSpace β
⊢ 𝓤 ((i : ι) → α i) = 𝓤 ((i : ι) → α i)
state_after: no goals
Theorem: MvPolynomial.eval₂Hom_bind₁
File: Mathlib/Algebra/MvPolynomial/Monad.lean

tactic: rw [hom_bind₁, eval₂Hom_comp_C]
state_before: σ : Type u_1
τ : Type u_2
R : Type u_3
S : Type u_4
T : Type u_5
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
inst✝ : CommSemiring T
f✝ : σ → MvPolynomial τ R
f : R →+* S
g : τ → S
h : σ → MvPolynomial τ R
φ : MvPolynomial σ R
⊢ (eval₂Hom f g) ((bind₁ h) φ) = (eval₂Hom f fun i => (eval₂Hom f g) (h i)) φ
state_after: no goals
Theorem: Equiv.eq_or_eq_of_swap_apply_ne_self
File: Mathlib/Logic/Equiv/Basic.lean

tactic: contrapose! h
state_before: α : Sort u_1
inst✝ : DecidableEq α
a b x : α
h : (swap a b) x ≠ x
⊢ x = a ∨ x = b
state_after: α : Sort u_1
inst✝ : DecidableEq α
a b x : α
h : x ≠ a ∧ x ≠ b
⊢ (swap a b) x = x

tactic: exact swap_apply_of_ne_of_ne h.1 h.2
state_before: α : Sort u_1
inst✝ : DecidableEq α
a b x : α
h : x ≠ a ∧ x ≠ b
⊢ (swap a b) x = x
state_after: no goals
Theorem: Function.Involutive.iterate_odd
File: Mathlib/Algebra/Ring/Parity.lean

tactic: obtain ⟨m, rfl⟩ := hn
state_before: F : Type u_1
α✝ : Type u_2
β : Type u_3
R : Type u_4
α : Type u_5
f : α → α
n : ℕ
hf : Involutive f
hn : Odd n
⊢ f^[n] = f
state_after: case intro
F : Type u_1
α✝ : Type u_2
β : Type u_3
R : Type u_4
α : Type u_5
f : α → α
hf : Involutive f
m : ℕ
⊢ f^[2 * m + 1] = f

tactic: rw [iterate_add, hf.iterate_two_mul, id_comp, iterate_one]
state_before: case intro
F : Type u_1
α✝ : Type u_2
β : Type u_3
R : Type u_4
α : Type u_5
f : α → α
hf : Involutive f
m : ℕ
⊢ f^[2 * m + 1] = f
state_after: no goals
Theorem: Complex.cos_add_cos
File: Mathlib/Data/Complex/Exponential.lean

tactic: calc
  cos x + cos y = cos ((x + y) / 2 + (x - y) / 2) + cos ((x + y) / 2 - (x - y) / 2) := ?_
  _ =
      cos ((x + y) / 2) * cos ((x - y) / 2) - sin ((x + y) / 2) * sin ((x - y) / 2) +
        (cos ((x + y) / 2) * cos ((x - y) / 2) + sin ((x + y) / 2) * sin ((x - y) / 2)) :=
    ?_
  _ = 2 * cos ((x + y) / 2) * cos ((x - y) / 2) := ?_
state_before: x y : ℂ
⊢ cos x + cos y = 2 * cos ((x + y) / 2) * cos ((x - y) / 2)
state_after: case calc_1
x y : ℂ
⊢ cos x + cos y = cos ((x + y) / 2 + (x - y) / 2) + cos ((x + y) / 2 - (x - y) / 2)

case calc_2
x y : ℂ
⊢ cos ((x + y) / 2 + (x - y) / 2) + cos ((x + y) / 2 - (x - y) / 2) =
    cos ((x + y) / 2) * cos ((x - y) / 2) - sin ((x + y) / 2) * sin ((x - y) / 2) +
      (cos ((x + y) / 2) * cos ((x - y) / 2) + sin ((x + y) / 2) * sin ((x - y) / 2))

case calc_3
x y : ℂ
⊢ cos ((x + y) / 2) * cos ((x - y) / 2) - sin ((x + y) / 2) * sin ((x - y) / 2) +
      (cos ((x + y) / 2) * cos ((x - y) / 2) + sin ((x + y) / 2) * sin ((x - y) / 2)) =
    2 * cos ((x + y) / 2) * cos ((x - y) / 2)

tactic: ring
state_before: case calc_3
x y : ℂ
⊢ cos ((x + y) / 2) * cos ((x - y) / 2) - sin ((x + y) / 2) * sin ((x - y) / 2) +
      (cos ((x + y) / 2) * cos ((x - y) / 2) + sin ((x + y) / 2) * sin ((x - y) / 2)) =
    2 * cos ((x + y) / 2) * cos ((x - y) / 2)
state_after: no goals

tactic: congr <;> field_simp
state_before: case calc_1
x y : ℂ
⊢ cos x + cos y = cos ((x + y) / 2 + (x - y) / 2) + cos ((x + y) / 2 - (x - y) / 2)
state_after: no goals

tactic: rw [cos_add, cos_sub]
state_before: case calc_2
x y : ℂ
⊢ cos ((x + y) / 2 + (x - y) / 2) + cos ((x + y) / 2 - (x - y) / 2) =
    cos ((x + y) / 2) * cos ((x - y) / 2) - sin ((x + y) / 2) * sin ((x - y) / 2) +
      (cos ((x + y) / 2) * cos ((x - y) / 2) + sin ((x + y) / 2) * sin ((x - y) / 2))
state_after: no goals
Theorem: ProbabilityTheory.toRatCDF_unit_prod
File: Mathlib/Probability/Kernel/Disintegration/MeasurableStieltjes.lean

tactic: unfold toRatCDF
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
f : α → ℚ → ℝ
a : α
⊢ toRatCDF (fun p => f p.2) ((), a) = toRatCDF f a
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
f : α → ℚ → ℝ
a : α
⊢ (if IsRatStieltjesPoint (fun p => f p.2) ((), a) then (fun p => f p.2) ((), a) else defaultRatCDF) =
    if IsRatStieltjesPoint f a then f a else defaultRatCDF

tactic: rw [isRatStieltjesPoint_unit_prod_iff]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
f : α → ℚ → ℝ
a : α
⊢ (if IsRatStieltjesPoint (fun p => f p.2) ((), a) then (fun p => f p.2) ((), a) else defaultRatCDF) =
    if IsRatStieltjesPoint f a then f a else defaultRatCDF
state_after: no goals
Theorem: abs_mul_sign
File: Mathlib/Data/Sign.lean

tactic: rcases lt_trichotomy x 0 with hx | rfl | hx <;> simp [*, abs_of_pos, abs_of_neg]
state_before: α : Type u_1
inst✝ : LinearOrderedRing α
a b x : α
⊢ |x| * ↑(sign x) = x
state_after: no goals
Theorem: ProbabilityTheory.gaussianPDFReal_add
File: Mathlib/Probability/Distributions/Gaussian.lean

tactic: rw [sub_eq_add_neg, ← gaussianPDFReal_sub, sub_eq_add_neg, neg_neg]
state_before: μ : ℝ
v : ℝ≥0
x y : ℝ
⊢ gaussianPDFReal μ v (x + y) = gaussianPDFReal (μ - y) v x
state_after: no goals
Theorem: Set.preimage_eq_core
File: Mathlib/Data/Rel.lean

tactic: simp [Set.preimage, Rel.core]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β
s : Set β
⊢ f ⁻¹' s = (Function.graph f).core s
state_after: no goals
Theorem: PrimeSpectrum.preimage_comap_zeroLocus_aux
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

tactic: ext x
state_before: R : Type u
S : Type v
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
S' : Type u_1
inst✝ : CommSemiring S'
f : R →+* S
s : Set R
⊢ (fun y => { asIdeal := Ideal.comap f y.asIdeal, isPrime := ⋯ }) ⁻¹' zeroLocus s = zeroLocus (⇑f '' s)
state_after: case h
R : Type u
S : Type v
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
S' : Type u_1
inst✝ : CommSemiring S'
f : R →+* S
s : Set R
x : PrimeSpectrum S
⊢ x ∈ (fun y => { asIdeal := Ideal.comap f y.asIdeal, isPrime := ⋯ }) ⁻¹' zeroLocus s ↔ x ∈ zeroLocus (⇑f '' s)

tactic: simp only [mem_zeroLocus, Set.image_subset_iff, Set.mem_preimage, mem_zeroLocus, Ideal.coe_comap]
state_before: case h
R : Type u
S : Type v
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
S' : Type u_1
inst✝ : CommSemiring S'
f : R →+* S
s : Set R
x : PrimeSpectrum S
⊢ x ∈ (fun y => { asIdeal := Ideal.comap f y.asIdeal, isPrime := ⋯ }) ⁻¹' zeroLocus s ↔ x ∈ zeroLocus (⇑f '' s)
state_after: no goals
Theorem: RatFunc.toFractionRing_smul
File: Mathlib/FieldTheory/RatFunc/Basic.lean

tactic: cases p
state_before: K : Type u
inst✝¹ : CommRing K
R : Type u_1
inst✝ : SMul R (FractionRing K[X])
c : R
p : RatFunc K
⊢ (c • p).toFractionRing = c • p.toFractionRing
state_after: case ofFractionRing
K : Type u
inst✝¹ : CommRing K
R : Type u_1
inst✝ : SMul R (FractionRing K[X])
c : R
toFractionRing✝ : FractionRing K[X]
⊢ (c • { toFractionRing := toFractionRing✝ }).toFractionRing = c • { toFractionRing := toFractionRing✝ }.toFractionRing

tactic: rw [← ofFractionRing_smul]
state_before: case ofFractionRing
K : Type u
inst✝¹ : CommRing K
R : Type u_1
inst✝ : SMul R (FractionRing K[X])
c : R
toFractionRing✝ : FractionRing K[X]
⊢ (c • { toFractionRing := toFractionRing✝ }).toFractionRing = c • { toFractionRing := toFractionRing✝ }.toFractionRing
state_after: no goals
Theorem: Convex.gauge_le
File: Mathlib/Analysis/Convex/Gauge.lean

tactic: by_cases ha : 0 ≤ a
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
x : E
a✝ : ℝ
hs : Convex ℝ s
h₀ : 0 ∈ s
absorbs : Absorbent ℝ s
a : ℝ
⊢ Convex ℝ {x | gauge s x ≤ a}
state_after: case pos
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
x : E
a✝ : ℝ
hs : Convex ℝ s
h₀ : 0 ∈ s
absorbs : Absorbent ℝ s
a : ℝ
ha : 0 ≤ a
⊢ Convex ℝ {x | gauge s x ≤ a}

case neg
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
x : E
a✝ : ℝ
hs : Convex ℝ s
h₀ : 0 ∈ s
absorbs : Absorbent ℝ s
a : ℝ
ha : ¬0 ≤ a
⊢ Convex ℝ {x | gauge s x ≤ a}

tactic: rw [gauge_le_eq hs h₀ absorbs ha]
state_before: case pos
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
x : E
a✝ : ℝ
hs : Convex ℝ s
h₀ : 0 ∈ s
absorbs : Absorbent ℝ s
a : ℝ
ha : 0 ≤ a
⊢ Convex ℝ {x | gauge s x ≤ a}
state_after: case pos
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
x : E
a✝ : ℝ
hs : Convex ℝ s
h₀ : 0 ∈ s
absorbs : Absorbent ℝ s
a : ℝ
ha : 0 ≤ a
⊢ Convex ℝ (⋂ r, ⋂ (_ : a < r), r • s)

tactic: exact convex_iInter fun i => convex_iInter fun _ => hs.smul _
state_before: case pos
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
x : E
a✝ : ℝ
hs : Convex ℝ s
h₀ : 0 ∈ s
absorbs : Absorbent ℝ s
a : ℝ
ha : 0 ≤ a
⊢ Convex ℝ (⋂ r, ⋂ (_ : a < r), r • s)
state_after: no goals

tactic: convert convex_empty (𝕜 := ℝ) (E := E)
state_before: case neg
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
x : E
a✝ : ℝ
hs : Convex ℝ s
h₀ : 0 ∈ s
absorbs : Absorbent ℝ s
a : ℝ
ha : ¬0 ≤ a
⊢ Convex ℝ {x | gauge s x ≤ a}
state_after: case h.e'_6
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
x : E
a✝ : ℝ
hs : Convex ℝ s
h₀ : 0 ∈ s
absorbs : Absorbent ℝ s
a : ℝ
ha : ¬0 ≤ a
⊢ {x | gauge s x ≤ a} = ∅

tactic: exact eq_empty_iff_forall_not_mem.2 fun x hx => ha <| (gauge_nonneg _).trans hx
state_before: case h.e'_6
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
x : E
a✝ : ℝ
hs : Convex ℝ s
h₀ : 0 ∈ s
absorbs : Absorbent ℝ s
a : ℝ
ha : ¬0 ≤ a
⊢ {x | gauge s x ≤ a} = ∅
state_after: no goals
Theorem: HasStrictDerivAt.const_smul
File: Mathlib/Analysis/Calculus/Deriv/Mul.lean

tactic: simpa using (hf.const_smul c).hasStrictDerivAt
state_before: 𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
E : Type w
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
G : Type u_1
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
R : Type u_2
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
c : R
hf : HasStrictDerivAt f f' x
⊢ HasStrictDerivAt (fun y => c • f y) (c • f') x
state_after: no goals
Theorem: Nat.cast_sub
File: Mathlib/Data/Int/Cast/Basic.lean

tactic: rw [← cast_add, Nat.sub_add_cancel h]
state_before: R : Type u
inst✝ : AddGroupWithOne R
m n : ℕ
h : m ≤ n
⊢ ↑(n - m) + ↑m = ↑n
state_after: no goals
Theorem: Matroid.comap_loopyOn
File: Mathlib/Data/Matroid/Map.lean

tactic: rw [eq_loopyOn_iff]
state_before: α : Type u_1
β : Type u_2
f✝ : α → β
E✝ I s : Set α
M : Matroid α
N : Matroid β
f : α → β
E : Set β
⊢ (loopyOn E).comap f = loopyOn (f ⁻¹' E)
state_after: α : Type u_1
β : Type u_2
f✝ : α → β
E✝ I s : Set α
M : Matroid α
N : Matroid β
f : α → β
E : Set β
⊢ ((loopyOn E).comap f).E = f ⁻¹' E ∧ ∀ X ⊆ ((loopyOn E).comap f).E, ((loopyOn E).comap f).Indep X → X = ∅

tactic: aesop
state_before: α : Type u_1
β : Type u_2
f✝ : α → β
E✝ I s : Set α
M : Matroid α
N : Matroid β
f : α → β
E : Set β
⊢ ((loopyOn E).comap f).E = f ⁻¹' E ∧ ∀ X ⊆ ((loopyOn E).comap f).E, ((loopyOn E).comap f).Indep X → X = ∅
state_after: no goals
Theorem: Matrix.transpose_fromColumns
File: Mathlib/Data/Matrix/ColumnRowPartitioned.lean

tactic: ext (i | i) j <;> simp
state_before: R : Type u_1
m : Type u_2
m₁ : Type u_3
m₂ : Type u_4
n : Type u_5
n₁ : Type u_6
n₂ : Type u_7
inst✝¹¹ : Fintype m
inst✝¹⁰ : Fintype m₁
inst✝⁹ : Fintype m₂
inst✝⁸ : Fintype n
inst✝⁷ : Fintype n₁
inst✝⁶ : Fintype n₂
inst✝⁵ : DecidableEq m
inst✝⁴ : DecidableEq m₁
inst✝³ : DecidableEq m₂
inst✝² : DecidableEq n
inst✝¹ : DecidableEq n₁
inst✝ : DecidableEq n₂
A₁ : Matrix m n₁ R
A₂ : Matrix m n₂ R
⊢ (A₁.fromColumns A₂)ᵀ = A₁ᵀ.fromRows A₂ᵀ
state_after: no goals
Theorem: small_of_injective_of_exists
File: Mathlib/Logic/Small/Basic.lean

tactic: by_cases hβ : Nonempty β
state_before: α : Type v
β : Type w
γ : Type v'
inst✝ : Small.{u, v} α
f : α → γ
g : β → γ
hg : Function.Injective g
h : ∀ (b : β), ∃ a, f a = g b
⊢ Small.{u, w} β
state_after: case pos
α : Type v
β : Type w
γ : Type v'
inst✝ : Small.{u, v} α
f : α → γ
g : β → γ
hg : Function.Injective g
h : ∀ (b : β), ∃ a, f a = g b
hβ : Nonempty β
⊢ Small.{u, w} β

case neg
α : Type v
β : Type w
γ : Type v'
inst✝ : Small.{u, v} α
f : α → γ
g : β → γ
hg : Function.Injective g
h : ∀ (b : β), ∃ a, f a = g b
hβ : ¬Nonempty β
⊢ Small.{u, w} β

tactic: refine small_of_surjective (f := Function.invFun g ∘ f) (fun b => ?_)
state_before: case pos
α : Type v
β : Type w
γ : Type v'
inst✝ : Small.{u, v} α
f : α → γ
g : β → γ
hg : Function.Injective g
h : ∀ (b : β), ∃ a, f a = g b
hβ : Nonempty β
⊢ Small.{u, w} β
state_after: case pos
α : Type v
β : Type w
γ : Type v'
inst✝ : Small.{u, v} α
f : α → γ
g : β → γ
hg : Function.Injective g
h : ∀ (b : β), ∃ a, f a = g b
hβ : Nonempty β
b : β
⊢ ∃ a, (Function.invFun g ∘ f) a = b

tactic: obtain ⟨a, ha⟩ := h b
state_before: case pos
α : Type v
β : Type w
γ : Type v'
inst✝ : Small.{u, v} α
f : α → γ
g : β → γ
hg : Function.Injective g
h : ∀ (b : β), ∃ a, f a = g b
hβ : Nonempty β
b : β
⊢ ∃ a, (Function.invFun g ∘ f) a = b
state_after: case pos.intro
α : Type v
β : Type w
γ : Type v'
inst✝ : Small.{u, v} α
f : α → γ
g : β → γ
hg : Function.Injective g
h : ∀ (b : β), ∃ a, f a = g b
hβ : Nonempty β
b : β
a : α
ha : f a = g b
⊢ ∃ a, (Function.invFun g ∘ f) a = b

tactic: exact ⟨a, by rw [Function.comp_apply, ha, Function.leftInverse_invFun hg]⟩
state_before: case pos.intro
α : Type v
β : Type w
γ : Type v'
inst✝ : Small.{u, v} α
f : α → γ
g : β → γ
hg : Function.Injective g
h : ∀ (b : β), ∃ a, f a = g b
hβ : Nonempty β
b : β
a : α
ha : f a = g b
⊢ ∃ a, (Function.invFun g ∘ f) a = b
state_after: no goals

tactic: rw [Function.comp_apply, ha, Function.leftInverse_invFun hg]
state_before: α : Type v
β : Type w
γ : Type v'
inst✝ : Small.{u, v} α
f : α → γ
g : β → γ
hg : Function.Injective g
h : ∀ (b : β), ∃ a, f a = g b
hβ : Nonempty β
b : β
a : α
ha : f a = g b
⊢ (Function.invFun g ∘ f) a = b
state_after: no goals

tactic: simp only [not_nonempty_iff] at hβ
state_before: case neg
α : Type v
β : Type w
γ : Type v'
inst✝ : Small.{u, v} α
f : α → γ
g : β → γ
hg : Function.Injective g
h : ∀ (b : β), ∃ a, f a = g b
hβ : ¬Nonempty β
⊢ Small.{u, w} β
state_after: case neg
α : Type v
β : Type w
γ : Type v'
inst✝ : Small.{u, v} α
f : α → γ
g : β → γ
hg : Function.Injective g
h : ∀ (b : β), ∃ a, f a = g b
hβ : IsEmpty β
⊢ Small.{u, w} β

tactic: infer_instance
state_before: case neg
α : Type v
β : Type w
γ : Type v'
inst✝ : Small.{u, v} α
f : α → γ
g : β → γ
hg : Function.Injective g
h : ∀ (b : β), ∃ a, f a = g b
hβ : IsEmpty β
⊢ Small.{u, w} β
state_after: no goals
Theorem: StrictMono.pow_const
File: Mathlib/Algebra/Order/Monoid/Unbundled/Pow.lean

tactic: simpa
state_before: β : Type u_1
G : Type u_2
M : Type u_3
inst✝⁴ : Monoid M
inst✝³ : Preorder M
inst✝² : Preorder β
inst✝¹ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass M M (swap fun x x_1 => x * x_1) fun x x_1 => x < x_1
f : β → M
n : ℕ
hf : StrictMono f
x✝ : 1 ≠ 0
⊢ StrictMono fun x => f x ^ 1
state_after: no goals

tactic: simpa only [pow_succ] using (hf.pow_const n.succ_ne_zero).mul' hf
state_before: β : Type u_1
G : Type u_2
M : Type u_3
inst✝⁴ : Monoid M
inst✝³ : Preorder M
inst✝² : Preorder β
inst✝¹ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass M M (swap fun x x_1 => x * x_1) fun x x_1 => x < x_1
f : β → M
n✝ : ℕ
hf : StrictMono f
n : ℕ
x✝ : n.succ.succ ≠ 0
⊢ StrictMono fun x => f x ^ n.succ.succ
state_after: no goals