1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.Pretriangulated.isIso₃_of_isIso₁₂
File: Mathlib/CategoryTheory/Triangulated/Pretriangulated.lean

tactic: dsimp
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (shiftFunctor C n).Additive
hC : Pretriangulated C
T T' : Triangle C
φ : T ⟶ T'
hT : T ∈ distinguishedTriangles
hT' : T' ∈ distinguishedTriangles
h₁ : IsIso φ.hom₁
h₂ : IsIso φ.hom₂
⊢ IsIso ((rotate C).map φ).hom₃
state_after: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (shiftFunctor C n).Additive
hC : Pretriangulated C
T T' : Triangle C
φ : T ⟶ T'
hT : T ∈ distinguishedTriangles
hT' : T' ∈ distinguishedTriangles
h₁ : IsIso φ.hom₁
h₂ : IsIso φ.hom₂
⊢ IsIso ((shiftFunctor C 1).map φ.hom₁)

tactic: infer_instance
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (shiftFunctor C n).Additive
hC : Pretriangulated C
T T' : Triangle C
φ : T ⟶ T'
hT : T ∈ distinguishedTriangles
hT' : T' ∈ distinguishedTriangles
h₁ : IsIso φ.hom₁
h₂ : IsIso φ.hom₂
⊢ IsIso ((shiftFunctor C 1).map φ.hom₁)
state_after: no goals
Theorem: AlgebraicIndependent.image_of_comp
File: Mathlib/RingTheory/AlgebraicIndependent.lean

tactic: nontriviality R
state_before: ι✝ : Type u_1
ι'✝ : Type u_2
R : Type u_3
K : Type u_4
A : Type u_5
A' : Type u_6
A'' : Type u_7
V : Type u
V' : Type u_8
x : ι✝ → A
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : CommRing A'
inst✝³ : CommRing A''
inst✝² : Algebra R A
inst✝¹ : Algebra R A'
inst✝ : Algebra R A''
a b : R
ι : Type u_9
ι' : Type u_10
s : Set ι
f : ι → ι'
g : ι' → A
hs : AlgebraicIndependent R fun x => g (f ↑x)
⊢ AlgebraicIndependent R fun x => g ↑x
state_after: ι✝ : Type u_1
ι'✝ : Type u_2
R : Type u_3
K : Type u_4
A : Type u_5
A' : Type u_6
A'' : Type u_7
V : Type u
V' : Type u_8
x : ι✝ → A
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : CommRing A'
inst✝³ : CommRing A''
inst✝² : Algebra R A
inst✝¹ : Algebra R A'
inst✝ : Algebra R A''
a b : R
ι : Type u_9
ι' : Type u_10
s : Set ι
f : ι → ι'
g : ι' → A
hs : AlgebraicIndependent R fun x => g (f ↑x)
a✝ : Nontrivial R
⊢ AlgebraicIndependent R fun x => g ↑x

tactic: have : InjOn f s := injOn_iff_injective.2 hs.injective.of_comp
state_before: ι✝ : Type u_1
ι'✝ : Type u_2
R : Type u_3
K : Type u_4
A : Type u_5
A' : Type u_6
A'' : Type u_7
V : Type u
V' : Type u_8
x : ι✝ → A
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : CommRing A'
inst✝³ : CommRing A''
inst✝² : Algebra R A
inst✝¹ : Algebra R A'
inst✝ : Algebra R A''
a b : R
ι : Type u_9
ι' : Type u_10
s : Set ι
f : ι → ι'
g : ι' → A
hs : AlgebraicIndependent R fun x => g (f ↑x)
a✝ : Nontrivial R
⊢ AlgebraicIndependent R fun x => g ↑x
state_after: ι✝ : Type u_1
ι'✝ : Type u_2
R : Type u_3
K : Type u_4
A : Type u_5
A' : Type u_6
A'' : Type u_7
V : Type u
V' : Type u_8
x : ι✝ → A
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : CommRing A'
inst✝³ : CommRing A''
inst✝² : Algebra R A
inst✝¹ : Algebra R A'
inst✝ : Algebra R A''
a b : R
ι : Type u_9
ι' : Type u_10
s : Set ι
f : ι → ι'
g : ι' → A
hs : AlgebraicIndependent R fun x => g (f ↑x)
a✝ : Nontrivial R
this : InjOn f s
⊢ AlgebraicIndependent R fun x => g ↑x

tactic: exact (algebraicIndependent_equiv' (Equiv.Set.imageOfInjOn f s this) rfl).1 hs
state_before: ι✝ : Type u_1
ι'✝ : Type u_2
R : Type u_3
K : Type u_4
A : Type u_5
A' : Type u_6
A'' : Type u_7
V : Type u
V' : Type u_8
x : ι✝ → A
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : CommRing A'
inst✝³ : CommRing A''
inst✝² : Algebra R A
inst✝¹ : Algebra R A'
inst✝ : Algebra R A''
a b : R
ι : Type u_9
ι' : Type u_10
s : Set ι
f : ι → ι'
g : ι' → A
hs : AlgebraicIndependent R fun x => g (f ↑x)
a✝ : Nontrivial R
this : InjOn f s
⊢ AlgebraicIndependent R fun x => g ↑x
state_after: no goals
Theorem: GeneralizedContinuedFraction.of_h_eq_intFractPair_seq1_fst_b
File: Mathlib/Algebra/ContinuedFractions/Computation/Translations.lean

tactic: cases aux_seq_eq : IntFractPair.seq1 v
state_before: K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
⊢ (of v).h = ↑(IntFractPair.seq1 v).1.b
state_after: case mk
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
fst✝ : IntFractPair K
snd✝ : Stream'.Seq (IntFractPair K)
aux_seq_eq : IntFractPair.seq1 v = (fst✝, snd✝)
⊢ (of v).h = ↑(fst✝, snd✝).1.b

tactic: simp [of, aux_seq_eq]
state_before: case mk
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
fst✝ : IntFractPair K
snd✝ : Stream'.Seq (IntFractPair K)
aux_seq_eq : IntFractPair.seq1 v = (fst✝, snd✝)
⊢ (of v).h = ↑(fst✝, snd✝).1.b
state_after: no goals
Theorem: StarConvex.linear_preimage
File: Mathlib/Analysis/Convex/Star.lean

tactic: intro y hy a b ha hb hab
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y z : E
s✝ : Set E
s : Set F
f : E →ₗ[𝕜] F
hs : StarConvex 𝕜 (f x) s
⊢ StarConvex 𝕜 x (⇑f ⁻¹' s)
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y✝ z : E
s✝ : Set E
s : Set F
f : E →ₗ[𝕜] F
hs : StarConvex 𝕜 (f x) s
y : E
hy : y ∈ ⇑f ⁻¹' s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ a • x + b • y ∈ ⇑f ⁻¹' s

tactic: rw [mem_preimage, f.map_add, f.map_smul, f.map_smul]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y✝ z : E
s✝ : Set E
s : Set F
f : E →ₗ[𝕜] F
hs : StarConvex 𝕜 (f x) s
y : E
hy : y ∈ ⇑f ⁻¹' s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ a • x + b • y ∈ ⇑f ⁻¹' s
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y✝ z : E
s✝ : Set E
s : Set F
f : E →ₗ[𝕜] F
hs : StarConvex 𝕜 (f x) s
y : E
hy : y ∈ ⇑f ⁻¹' s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ a • f x + b • f y ∈ s

tactic: exact hs hy ha hb hab
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y✝ z : E
s✝ : Set E
s : Set F
f : E →ₗ[𝕜] F
hs : StarConvex 𝕜 (f x) s
y : E
hy : y ∈ ⇑f ⁻¹' s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ a • f x + b • f y ∈ s
state_after: no goals
Theorem: Nat.gcd_mul_left_add_right
File: Mathlib/Data/Nat/GCD/Basic.lean

tactic: simp [add_comm _ n]
state_before: m n k : ℕ
⊢ m.gcd (m * k + n) = m.gcd n
state_after: no goals
Theorem: CategoryTheory.ShortComplex.leftHomologyMap_nullHomotopic
File: Mathlib/Algebra/Homology/ShortComplex/Preadditive.lean

tactic: apply leftHomologyMap'_nullHomotopic
state_before: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : Preadditive C
S₁ S₂ S₃ : ShortComplex C
φ₁ φ₂ φ₃ φ₄ : S₁ ⟶ S₂
inst✝¹ : S₁.HasLeftHomology
inst✝ : S₂.HasLeftHomology
h₀ : S₁.X₁ ⟶ S₂.X₁
h₀_f : h₀ ≫ S₂.f = 0
h₁ : S₁.X₂ ⟶ S₂.X₁
h₂ : S₁.X₃ ⟶ S₂.X₂
h₃ : S₁.X₃ ⟶ S₂.X₃
g_h₃ : S₁.g ≫ h₃ = 0
⊢ leftHomologyMap (S₁.nullHomotopic S₂ h₀ h₀_f h₁ h₂ h₃ g_h₃) = 0
state_after: no goals
Theorem: normalizeScaleRoots_degree
File: Mathlib/RingTheory/IntegralClosure.lean

tactic: apply le_antisymm
state_before: R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Ring B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f✝¹ : R →+* S
f✝ : R →+* B
f : R →+* S
p : R[X]
x : S
⊢ (normalizeScaleRoots p).degree = p.degree
state_after: case a
R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Ring B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f✝¹ : R →+* S
f✝ : R →+* B
f : R →+* S
p : R[X]
x : S
⊢ (normalizeScaleRoots p).degree ≤ p.degree

case a
R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Ring B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f✝¹ : R →+* S
f✝ : R →+* B
f : R →+* S
p : R[X]
x : S
⊢ p.degree ≤ (normalizeScaleRoots p).degree

tactic: exact Finset.sup_mono (normalizeScaleRoots_support p)
state_before: case a
R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Ring B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f✝¹ : R →+* S
f✝ : R →+* B
f : R →+* S
p : R[X]
x : S
⊢ (normalizeScaleRoots p).degree ≤ p.degree
state_after: no goals

tactic: rw [← degree_scaleRoots, ← leadingCoeff_smul_normalizeScaleRoots]
state_before: case a
R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Ring B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f✝¹ : R →+* S
f✝ : R →+* B
f : R →+* S
p : R[X]
x : S
⊢ p.degree ≤ (normalizeScaleRoots p).degree
state_after: case a
R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Ring B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f✝¹ : R →+* S
f✝ : R →+* B
f : R →+* S
p : R[X]
x : S
⊢ (p.leadingCoeff • normalizeScaleRoots p).degree ≤ (normalizeScaleRoots p).degree

tactic: exact degree_smul_le _ _
state_before: case a
R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Ring B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f✝¹ : R →+* S
f✝ : R →+* B
f : R →+* S
p : R[X]
x : S
⊢ (p.leadingCoeff • normalizeScaleRoots p).degree ≤ (normalizeScaleRoots p).degree
state_after: no goals
Theorem: Combinatorics.Line.prod_apply
File: Mathlib/Combinatorics/HalesJewett.lean

tactic: funext i
state_before: α : Type u_1
ι : Type u_2
ι' : Type u_3
l : Line α ι
l' : Line α ι'
x : α
⊢ (fun x i => ((l.prod l').idxFun i).getD x) x =
    Sum.elim ((fun x i => (l.idxFun i).getD x) x) ((fun x i => (l'.idxFun i).getD x) x)
state_after: case h
α : Type u_1
ι : Type u_2
ι' : Type u_3
l : Line α ι
l' : Line α ι'
x : α
i : ι ⊕ ι'
⊢ (fun x i => ((l.prod l').idxFun i).getD x) x i =
    Sum.elim ((fun x i => (l.idxFun i).getD x) x) ((fun x i => (l'.idxFun i).getD x) x) i

tactic: cases i <;> rfl
state_before: case h
α : Type u_1
ι : Type u_2
ι' : Type u_3
l : Line α ι
l' : Line α ι'
x : α
i : ι ⊕ ι'
⊢ (fun x i => ((l.prod l').idxFun i).getD x) x i =
    Sum.elim ((fun x i => (l.idxFun i).getD x) x) ((fun x i => (l'.idxFun i).getD x) x) i
state_after: no goals
Theorem: Polynomial.natDegree_pos_of_eval₂_root
File: Mathlib/Algebra/Polynomial/Degree/Lemmas.lean

tactic: have A : p = C (p.coeff 0) := eq_C_of_natDegree_le_zero hlt
state_before: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝¹ : Semiring R
p✝ q r : R[X]
inst✝ : Semiring S
p : R[X]
hp : p ≠ 0
f : R →+* S
z : S
hz : eval₂ f z p = 0
inj : ∀ (x : R), f x = 0 → x = 0
hlt : 0 ≥ p.natDegree
⊢ False
state_after: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝¹ : Semiring R
p✝ q r : R[X]
inst✝ : Semiring S
p : R[X]
hp : p ≠ 0
f : R →+* S
z : S
hz : eval₂ f z p = 0
inj : ∀ (x : R), f x = 0 → x = 0
hlt : 0 ≥ p.natDegree
A : p = C (p.coeff 0)
⊢ False

tactic: rw [A, eval₂_C] at hz
state_before: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝¹ : Semiring R
p✝ q r : R[X]
inst✝ : Semiring S
p : R[X]
hp : p ≠ 0
f : R →+* S
z : S
hz : eval₂ f z p = 0
inj : ∀ (x : R), f x = 0 → x = 0
hlt : 0 ≥ p.natDegree
A : p = C (p.coeff 0)
⊢ False
state_after: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝¹ : Semiring R
p✝ q r : R[X]
inst✝ : Semiring S
p : R[X]
hp : p ≠ 0
f : R →+* S
z : S
hz : f (p.coeff 0) = 0
inj : ∀ (x : R), f x = 0 → x = 0
hlt : 0 ≥ p.natDegree
A : p = C (p.coeff 0)
⊢ False

tactic: simp only [inj (p.coeff 0) hz, RingHom.map_zero] at A
state_before: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝¹ : Semiring R
p✝ q r : R[X]
inst✝ : Semiring S
p : R[X]
hp : p ≠ 0
f : R →+* S
z : S
hz : f (p.coeff 0) = 0
inj : ∀ (x : R), f x = 0 → x = 0
hlt : 0 ≥ p.natDegree
A : p = C (p.coeff 0)
⊢ False
state_after: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝¹ : Semiring R
p✝ q r : R[X]
inst✝ : Semiring S
p : R[X]
hp : p ≠ 0
f : R →+* S
z : S
hz : f (p.coeff 0) = 0
inj : ∀ (x : R), f x = 0 → x = 0
hlt : 0 ≥ p.natDegree
A : p = 0
⊢ False

tactic: exact hp A
state_before: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝¹ : Semiring R
p✝ q r : R[X]
inst✝ : Semiring S
p : R[X]
hp : p ≠ 0
f : R →+* S
z : S
hz : f (p.coeff 0) = 0
inj : ∀ (x : R), f x = 0 → x = 0
hlt : 0 ≥ p.natDegree
A : p = 0
⊢ False
state_after: no goals
Theorem: IsAdjoinRootMonic.modByMonic_repr_map
File: Mathlib/RingTheory/IsAdjoinRoot.lean

tactic: rw [← h.mem_ker_map, RingHom.sub_mem_ker_iff, map_repr]
state_before: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : Ring S
f : R[X]
inst✝ : Algebra R S
h : IsAdjoinRootMonic S f
g : R[X]
⊢ f ∣ h.repr (h.map g) - g
state_after: no goals
Theorem: Orientation.kahler_rotation_left
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Rotation.lean

tactic: simp only [o.rotation_apply, map_add, map_mul, LinearMap.map_smulₛₗ, RingHom.id_apply,
  LinearMap.add_apply, LinearMap.smul_apply, real_smul, kahler_rightAngleRotation_left,
  Real.Angle.coe_expMapCircle, Complex.conj_ofReal, conj_I]
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y : V
θ : Real.Angle
⊢ (o.kahler ((o.rotation θ) x)) y = (starRingEnd ℂ) ↑θ.expMapCircle * (o.kahler x) y
state_after: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y : V
θ : Real.Angle
⊢ ↑θ.cos * (o.kahler x) y + ↑θ.sin * (-I * (o.kahler x) y) = (↑θ.cos + ↑θ.sin * -I) * (o.kahler x) y

tactic: ring
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y : V
θ : Real.Angle
⊢ ↑θ.cos * (o.kahler x) y + ↑θ.sin * (-I * (o.kahler x) y) = (↑θ.cos + ↑θ.sin * -I) * (o.kahler x) y
state_after: no goals
Theorem: Set.InjOn.image_diff_subset
File: Mathlib/Data/Set/Function.lean

tactic: rw [h.image_diff, inter_eq_self_of_subset_right hst]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
s s₁ s₂ : Set α
t✝ t₁ t₂ : Set β
p : Set γ
f✝ f₁ f₂ f₃ : α → β
g g₁ g₂ : β → γ
f' f₁' f₂' : β → α
g' : γ → β
a : α
b : β
f : α → β
t : Set α
h : InjOn f s
hst : t ⊆ s
⊢ f '' (s \ t) = f '' s \ f '' t
state_after: no goals
Theorem: Tuple.bubble_sort_induction'
File: Mathlib/Data/Fin/Tuple/BubbleSortInduction.lean

tactic: letI := @Preorder.lift _ (Lex (Fin n → α)) _ fun σ : Equiv.Perm (Fin n) => toLex (f ∘ σ)
state_before: n : ℕ
α : Type u_1
inst✝ : LinearOrder α
f : Fin n → α
P : (Fin n → α) → Prop
hf : P f
h :
  ∀ (σ : Equiv.Perm (Fin n)) (i j : Fin n),
    i < j → (f ∘ ⇑σ) j < (f ∘ ⇑σ) i → P (f ∘ ⇑σ) → P (f ∘ ⇑σ ∘ ⇑(Equiv.swap i j))
⊢ P (f ∘ ⇑(sort f))
state_after: n : ℕ
α : Type u_1
inst✝ : LinearOrder α
f : Fin n → α
P : (Fin n → α) → Prop
hf : P f
h :
  ∀ (σ : Equiv.Perm (Fin n)) (i j : Fin n),
    i < j → (f ∘ ⇑σ) j < (f ∘ ⇑σ) i → P (f ∘ ⇑σ) → P (f ∘ ⇑σ ∘ ⇑(Equiv.swap i j))
this : Preorder (Equiv.Perm (Fin n)) := Preorder.lift fun σ => toLex (f ∘ ⇑σ)
⊢ P (f ∘ ⇑(sort f))

tactic: obtain ⟨i, j, hij₁, hij₂⟩ := antitone_pair_of_not_sorted' hσ
state_before: n : ℕ
α : Type u_1
inst✝ : LinearOrder α
f : Fin n → α
P : (Fin n → α) → Prop
hf : P f
h :
  ∀ (σ : Equiv.Perm (Fin n)) (i j : Fin n),
    i < j → (f ∘ ⇑σ) j < (f ∘ ⇑σ) i → P (f ∘ ⇑σ) → P (f ∘ ⇑σ ∘ ⇑(Equiv.swap i j))
this : Preorder (Equiv.Perm (Fin n)) := Preorder.lift fun σ => toLex (f ∘ ⇑σ)
σ : Fin n ≃ Fin n
hσ : (fun σ => f ∘ ⇑σ) σ ≠ (fun σ => f ∘ ⇑σ) (sort f)
hfσ : P ((fun σ => f ∘ ⇑σ) σ)
⊢ ∃ c < σ, P ((fun σ => f ∘ ⇑σ) c)
state_after: case intro.intro.intro
n : ℕ
α : Type u_1
inst✝ : LinearOrder α
f : Fin n → α
P : (Fin n → α) → Prop
hf : P f
h :
  ∀ (σ : Equiv.Perm (Fin n)) (i j : Fin n),
    i < j → (f ∘ ⇑σ) j < (f ∘ ⇑σ) i → P (f ∘ ⇑σ) → P (f ∘ ⇑σ ∘ ⇑(Equiv.swap i j))
this : Preorder (Equiv.Perm (Fin n)) := Preorder.lift fun σ => toLex (f ∘ ⇑σ)
σ : Fin n ≃ Fin n
hσ : (fun σ => f ∘ ⇑σ) σ ≠ (fun σ => f ∘ ⇑σ) (sort f)
hfσ : P ((fun σ => f ∘ ⇑σ) σ)
i j : Fin n
hij₁ : i < j
hij₂ : (f ∘ ⇑σ) j < (f ∘ ⇑σ) i
⊢ ∃ c < σ, P ((fun σ => f ∘ ⇑σ) c)

tactic: exact ⟨σ * Equiv.swap i j, Pi.lex_desc hij₁.le hij₂, h σ i j hij₁ hij₂ hfσ⟩
state_before: case intro.intro.intro
n : ℕ
α : Type u_1
inst✝ : LinearOrder α
f : Fin n → α
P : (Fin n → α) → Prop
hf : P f
h :
  ∀ (σ : Equiv.Perm (Fin n)) (i j : Fin n),
    i < j → (f ∘ ⇑σ) j < (f ∘ ⇑σ) i → P (f ∘ ⇑σ) → P (f ∘ ⇑σ ∘ ⇑(Equiv.swap i j))
this : Preorder (Equiv.Perm (Fin n)) := Preorder.lift fun σ => toLex (f ∘ ⇑σ)
σ : Fin n ≃ Fin n
hσ : (fun σ => f ∘ ⇑σ) σ ≠ (fun σ => f ∘ ⇑σ) (sort f)
hfσ : P ((fun σ => f ∘ ⇑σ) σ)
i j : Fin n
hij₁ : i < j
hij₂ : (f ∘ ⇑σ) j < (f ∘ ⇑σ) i
⊢ ∃ c < σ, P ((fun σ => f ∘ ⇑σ) c)
state_after: no goals
Theorem: ConvexOn.pow
File: Mathlib/Analysis/Convex/Mul.lean

tactic: simpa using convexOn_const 1 hf.1
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹² : LinearOrderedCommRing 𝕜
inst✝¹¹ : LinearOrderedCommRing E
inst✝¹⁰ : LinearOrderedAddCommGroup F
inst✝⁹ : Module 𝕜 E
inst✝⁸ : Module 𝕜 F
inst✝⁷ : Module E F
inst✝⁶ : IsScalarTower 𝕜 E F
inst✝⁵ : SMulCommClass 𝕜 E F
inst✝⁴ : OrderedSMul 𝕜 E
inst✝³ : OrderedSMul 𝕜 F
inst✝² : OrderedSMul E F
s : Set 𝕜
f✝ : 𝕜 → E
g✝ : 𝕜 → F
inst✝¹ : IsScalarTower 𝕜 E E
inst✝ : SMulCommClass 𝕜 E E
f g : 𝕜 → E
hf : ConvexOn 𝕜 s f
hf₀ : ∀ ⦃x : 𝕜⦄, x ∈ s → 0 ≤ f x
⊢ ConvexOn 𝕜 s (f ^ 0)
state_after: no goals

tactic: rw [pow_succ']
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹² : LinearOrderedCommRing 𝕜
inst✝¹¹ : LinearOrderedCommRing E
inst✝¹⁰ : LinearOrderedAddCommGroup F
inst✝⁹ : Module 𝕜 E
inst✝⁸ : Module 𝕜 F
inst✝⁷ : Module E F
inst✝⁶ : IsScalarTower 𝕜 E F
inst✝⁵ : SMulCommClass 𝕜 E F
inst✝⁴ : OrderedSMul 𝕜 E
inst✝³ : OrderedSMul 𝕜 F
inst✝² : OrderedSMul E F
s : Set 𝕜
f✝ : 𝕜 → E
g✝ : 𝕜 → F
inst✝¹ : IsScalarTower 𝕜 E E
inst✝ : SMulCommClass 𝕜 E E
f g : 𝕜 → E
hf : ConvexOn 𝕜 s f
hf₀ : ∀ ⦃x : 𝕜⦄, x ∈ s → 0 ≤ f x
n : ℕ
⊢ ConvexOn 𝕜 s (f ^ (n + 1))
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹² : LinearOrderedCommRing 𝕜
inst✝¹¹ : LinearOrderedCommRing E
inst✝¹⁰ : LinearOrderedAddCommGroup F
inst✝⁹ : Module 𝕜 E
inst✝⁸ : Module 𝕜 F
inst✝⁷ : Module E F
inst✝⁶ : IsScalarTower 𝕜 E F
inst✝⁵ : SMulCommClass 𝕜 E F
inst✝⁴ : OrderedSMul 𝕜 E
inst✝³ : OrderedSMul 𝕜 F
inst✝² : OrderedSMul E F
s : Set 𝕜
f✝ : 𝕜 → E
g✝ : 𝕜 → F
inst✝¹ : IsScalarTower 𝕜 E E
inst✝ : SMulCommClass 𝕜 E E
f g : 𝕜 → E
hf : ConvexOn 𝕜 s f
hf₀ : ∀ ⦃x : 𝕜⦄, x ∈ s → 0 ≤ f x
n : ℕ
⊢ ConvexOn 𝕜 s (f * f ^ n)

tactic: exact hf.mul (hf.pow hf₀ _) hf₀ (fun x hx ↦ pow_nonneg (hf₀ hx) _) <|
  (monovaryOn_self f s).pow_right₀ hf₀ n
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹² : LinearOrderedCommRing 𝕜
inst✝¹¹ : LinearOrderedCommRing E
inst✝¹⁰ : LinearOrderedAddCommGroup F
inst✝⁹ : Module 𝕜 E
inst✝⁸ : Module 𝕜 F
inst✝⁷ : Module E F
inst✝⁶ : IsScalarTower 𝕜 E F
inst✝⁵ : SMulCommClass 𝕜 E F
inst✝⁴ : OrderedSMul 𝕜 E
inst✝³ : OrderedSMul 𝕜 F
inst✝² : OrderedSMul E F
s : Set 𝕜
f✝ : 𝕜 → E
g✝ : 𝕜 → F
inst✝¹ : IsScalarTower 𝕜 E E
inst✝ : SMulCommClass 𝕜 E E
f g : 𝕜 → E
hf : ConvexOn 𝕜 s f
hf₀ : ∀ ⦃x : 𝕜⦄, x ∈ s → 0 ≤ f x
n : ℕ
⊢ ConvexOn 𝕜 s (f * f ^ n)
state_after: no goals
Theorem: Polynomial.coeff_scaleRoots_natDegree
File: Mathlib/RingTheory/Polynomial/ScaleRoots.lean

tactic: rw [leadingCoeff, coeff_scaleRoots, tsub_self, pow_zero, mul_one]
state_before: R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
p : R[X]
s : R
⊢ (p.scaleRoots s).coeff p.natDegree = p.leadingCoeff
state_after: no goals
Theorem: PFunctor.M.head_mk
File: Mathlib/Data/PFunctor/Univariate/M.lean

tactic: rw [dest_mk]
state_before: F : PFunctor.{u}
X : Type u_1
f : X → ↑F X
x : ↑F F.M
⊢ x.fst = (M.mk x).dest.fst
state_after: no goals
Theorem: SimpleGraph.cliqueFree_of_card_lt
File: Mathlib/Combinatorics/SimpleGraph/Clique.lean

tactic: by_contra h
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
inst✝ : Fintype α
hc : Fintype.card α < n
⊢ G.CliqueFree n
state_after: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
inst✝ : Fintype α
hc : Fintype.card α < n
h : ¬G.CliqueFree n
⊢ False

tactic: refine Nat.lt_le_asymm hc ?_
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
inst✝ : Fintype α
hc : Fintype.card α < n
h : ¬G.CliqueFree n
⊢ False
state_after: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
inst✝ : Fintype α
hc : Fintype.card α < n
h : ¬G.CliqueFree n
⊢ n ≤ Fintype.card α

tactic: rw [cliqueFree_iff, not_isEmpty_iff] at h
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
inst✝ : Fintype α
hc : Fintype.card α < n
h : ¬G.CliqueFree n
⊢ n ≤ Fintype.card α
state_after: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
inst✝ : Fintype α
hc : Fintype.card α < n
h : Nonempty (⊤ ↪g G)
⊢ n ≤ Fintype.card α

tactic: simpa only [Fintype.card_fin] using Fintype.card_le_of_embedding h.some.toEmbedding
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
inst✝ : Fintype α
hc : Fintype.card α < n
h : Nonempty (⊤ ↪g G)
⊢ n ≤ Fintype.card α
state_after: no goals
Theorem: ENNReal.iInf_ne_top
File: Mathlib/Data/ENNReal/Basic.lean

tactic: rw [iInf_subtype', cinfi_ne_top]
state_before: α : Type u_1
a b c d : ℝ≥0∞
r p q : ℝ≥0
inst✝ : CompleteLattice α
f : ℝ≥0∞ → α
⊢ ⨅ x, ⨅ (_ : x ≠ ⊤), f x = ⨅ x, f ↑x
state_after: no goals
Theorem: IsScalarTower.algebraMap_apply
File: Mathlib/Algebra/Algebra/Tower.lean

tactic: rw [algebraMap_eq R S A, RingHom.comp_apply]
state_before: R : Type u
S : Type v
A : Type w
B : Type u₁
M : Type v₁
inst✝¹⁰ : CommSemiring R
inst✝⁹ : CommSemiring S
inst✝⁸ : Semiring A
inst✝⁷ : Semiring B
inst✝⁶ : Algebra R S
inst✝⁵ : Algebra S A
inst✝⁴ : Algebra S B
inst✝³ : Algebra R A
inst✝² : Algebra R B
inst✝¹ : IsScalarTower R S A
inst✝ : IsScalarTower R S B
x : R
⊢ (algebraMap R A) x = (algebraMap S A) ((algebraMap R S) x)
state_after: no goals
Theorem: mul_le_iff_le_one_left
File: Mathlib/Algebra/Order/GroupWithZero/Unbundled.lean

tactic: rw [one_mul]
state_before: α : Type u_1
a b c d : α
inst✝⁴ : MulOneClass α
inst✝³ : Zero α
inst✝² : Preorder α
inst✝¹ : MulPosMono α
inst✝ : MulPosReflectLE α
b0 : 0 < b
⊢ a * b ≤ b ↔ a * b ≤ 1 * b
state_after: no goals
Theorem: Fin.append_cast_right
File: Mathlib/Data/Fin/Tuple/Basic.lean

tactic: rw [h]
state_before: m✝ n✝ : ℕ
α✝ : Fin (n✝ + 1) → Type u
x : α✝ 0
q : (i : Fin (n✝ + 1)) → α✝ i
p : (i : Fin n✝) → α✝ i.succ
i : Fin n✝
y : α✝ i.succ
z : α✝ 0
n m : ℕ
α : Type u_1
xs : Fin n → α
ys : Fin m → α
m' : ℕ
h : m' = m
⊢ n + m' = n + m
state_after: no goals

tactic: subst h
state_before: m✝ n✝ : ℕ
α✝ : Fin (n✝ + 1) → Type u
x : α✝ 0
q : (i : Fin (n✝ + 1)) → α✝ i
p : (i : Fin n✝) → α✝ i.succ
i : Fin n✝
y : α✝ i.succ
z : α✝ 0
n m : ℕ
α : Type u_1
xs : Fin n → α
ys : Fin m → α
m' : ℕ
h : m' = m
⊢ append xs (ys ∘ cast h) = append xs ys ∘ cast ⋯
state_after: m n✝ : ℕ
α✝ : Fin (n✝ + 1) → Type u
x : α✝ 0
q : (i : Fin (n✝ + 1)) → α✝ i
p : (i : Fin n✝) → α✝ i.succ
i : Fin n✝
y : α✝ i.succ
z : α✝ 0
n : ℕ
α : Type u_1
xs : Fin n → α
m' : ℕ
ys : Fin m' → α
⊢ append xs (ys ∘ cast ⋯) = append xs ys ∘ cast ⋯

tactic: simp
state_before: m n✝ : ℕ
α✝ : Fin (n✝ + 1) → Type u
x : α✝ 0
q : (i : Fin (n✝ + 1)) → α✝ i
p : (i : Fin n✝) → α✝ i.succ
i : Fin n✝
y : α✝ i.succ
z : α✝ 0
n : ℕ
α : Type u_1
xs : Fin n → α
m' : ℕ
ys : Fin m' → α
⊢ append xs (ys ∘ cast ⋯) = append xs ys ∘ cast ⋯
state_after: no goals