1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.Limits.pullbackDiagonalMapIdIso_hom_snd
File: Mathlib/CategoryTheory/Limits/Shapes/Diagonal.lean

tactic: delta pullbackDiagonalMapIdIso
state_before: C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
X Y Z : C
inst✝⁴ : HasPullbacks C
S T : C
f : X ⟶ T
g : Y ⟶ T
i : T ⟶ S
inst✝³ : HasPullback i i
inst✝² : HasPullback f g
inst✝¹ : HasPullback (f ≫ i) (g ≫ i)
inst✝ : HasPullback (diagonal i) (map (f ≫ i) (g ≫ i) i i f g (𝟙 S) ⋯ ⋯)
⊢ (pullbackDiagonalMapIdIso f g i).hom ≫ snd = snd ≫ snd
state_after: C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
X Y Z : C
inst✝⁴ : HasPullbacks C
S T : C
f : X ⟶ T
g : Y ⟶ T
i : T ⟶ S
inst✝³ : HasPullback i i
inst✝² : HasPullback f g
inst✝¹ : HasPullback (f ≫ i) (g ≫ i)
inst✝ : HasPullback (diagonal i) (map (f ≫ i) (g ≫ i) i i f g (𝟙 S) ⋯ ⋯)
⊢ (asIso
            (map (diagonal i) (map (f ≫ i) (g ≫ i) i i f g (𝟙 S) ⋯ ⋯) (diagonal i)
              (map ((f ≫ inv fst) ≫ snd) ((g ≫ inv fst) ≫ snd) i i ((f ≫ inv fst) ≫ fst) ((g ≫ inv fst) ≫ fst) (𝟙 S) ⋯
                ⋯)
              (𝟙 T) (congrHom ⋯ ⋯).hom (𝟙 (diagonalObj i)) ⋯ ⋯) ≪≫
          pullbackDiagonalMapIso i (𝟙 S) (f ≫ inv fst) (g ≫ inv fst) ≪≫
            asIso (map (f ≫ inv fst) (g ≫ inv fst) f g (𝟙 X) (𝟙 Y) fst ⋯ ⋯)).hom ≫
      snd =
    snd ≫ snd

tactic: simp
state_before: C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
X Y Z : C
inst✝⁴ : HasPullbacks C
S T : C
f : X ⟶ T
g : Y ⟶ T
i : T ⟶ S
inst✝³ : HasPullback i i
inst✝² : HasPullback f g
inst✝¹ : HasPullback (f ≫ i) (g ≫ i)
inst✝ : HasPullback (diagonal i) (map (f ≫ i) (g ≫ i) i i f g (𝟙 S) ⋯ ⋯)
⊢ (asIso
            (map (diagonal i) (map (f ≫ i) (g ≫ i) i i f g (𝟙 S) ⋯ ⋯) (diagonal i)
              (map ((f ≫ inv fst) ≫ snd) ((g ≫ inv fst) ≫ snd) i i ((f ≫ inv fst) ≫ fst) ((g ≫ inv fst) ≫ fst) (𝟙 S) ⋯
                ⋯)
              (𝟙 T) (congrHom ⋯ ⋯).hom (𝟙 (diagonalObj i)) ⋯ ⋯) ≪≫
          pullbackDiagonalMapIso i (𝟙 S) (f ≫ inv fst) (g ≫ inv fst) ≪≫
            asIso (map (f ≫ inv fst) (g ≫ inv fst) f g (𝟙 X) (𝟙 Y) fst ⋯ ⋯)).hom ≫
      snd =
    snd ≫ snd
state_after: no goals
Theorem: TypeVec.repeat_eq_append1
File: Mathlib/Data/TypeVec.lean

tactic: induction n <;> rfl
state_before: n✝ : ℕ
β : Type u_1
n : ℕ
α : TypeVec.{u_1} n
⊢ (α ::: β).repeatEq = splitFun α.repeatEq (uncurry Eq)
state_after: no goals
Theorem: Filter.map₂_sup_left
File: Mathlib/Order/Filter/NAry.lean

tactic: simp_rw [← map_prod_eq_map₂, sup_prod, map_sup]
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
m : α → β → γ
f f₁ f₂ : Filter α
g g₁ g₂ : Filter β
h h₁ h₂ : Filter γ
s s₁ s₂ : Set α
t t₁ t₂ : Set β
u : Set γ
v : Set δ
a : α
b : β
c : γ
⊢ map₂ m (f₁ ⊔ f₂) g = map₂ m f₁ g ⊔ map₂ m f₂ g
state_after: no goals
Theorem: Finset.eq_affineCombination_subset_iff_eq_affineCombination_subtype
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

tactic: simp_rw [affineCombination_apply, eq_vadd_iff_vsub_eq]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_4
s✝ : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
p0 : P
s : Set ι
p : ι → P
⊢ (∃ fs, ↑fs ⊆ s ∧ ∃ w, ∑ i ∈ fs, w i = 1 ∧ p0 = (affineCombination k fs p) w) ↔
    ∃ fs w, ∑ i ∈ fs, w i = 1 ∧ p0 = (affineCombination k fs fun i => p ↑i) w
state_after: k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_4
s✝ : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
p0 : P
s : Set ι
p : ι → P
⊢ (∃ fs,
      ↑fs ⊆ s ∧ ∃ w, ∑ i ∈ fs, w i = 1 ∧ p0 -ᵥ Classical.choice ⋯ = (fs.weightedVSubOfPoint p (Classical.choice ⋯)) w) ↔
    ∃ fs w,
      ∑ i ∈ fs, w i = 1 ∧ p0 -ᵥ Classical.choice ⋯ = (fs.weightedVSubOfPoint (fun i => p ↑i) (Classical.choice ⋯)) w

tactic: exact eq_weightedVSubOfPoint_subset_iff_eq_weightedVSubOfPoint_subtype
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_4
s✝ : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
p0 : P
s : Set ι
p : ι → P
⊢ (∃ fs,
      ↑fs ⊆ s ∧ ∃ w, ∑ i ∈ fs, w i = 1 ∧ p0 -ᵥ Classical.choice ⋯ = (fs.weightedVSubOfPoint p (Classical.choice ⋯)) w) ↔
    ∃ fs w,
      ∑ i ∈ fs, w i = 1 ∧ p0 -ᵥ Classical.choice ⋯ = (fs.weightedVSubOfPoint (fun i => p ↑i) (Classical.choice ⋯)) w
state_after: no goals
Theorem: CPolynomialAt.sub
File: Mathlib/Analysis/Analytic/CPolynomial.lean

tactic: simpa only [sub_eq_add_neg] using hf.add hg.neg
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
n m : ℕ
hf : CPolynomialAt 𝕜 f x
hg : CPolynomialAt 𝕜 g x
⊢ CPolynomialAt 𝕜 (f - g) x
state_after: no goals
Theorem: CategoryTheory.Adjunction.homEquiv_symm_id
File: Mathlib/CategoryTheory/Adjunction/Basic.lean

tactic: simp
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
G : D ⥤ C
adj : F ⊣ G
X' X✝ : C
Y Y' X : D
⊢ (adj.homEquiv (G.obj X) X).symm (𝟙 (G.obj X)) = adj.counit.app X
state_after: no goals
Theorem: Profinite.NobelingProof.projRestricts_comp_projRestrict
File: Mathlib/Topology/Category/Profinite/Nobeling.lean

tactic: ext x i
state_before: I : Type u
inst✝⁴ : LinearOrder I
inst✝³ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
J K L : I → Prop
inst✝² : (i : I) → Decidable (J i)
inst✝¹ : (i : I) → Decidable (K i)
inst✝ : (i : I) → Decidable (L i)
h : ∀ (i : I), J i → K i
⊢ ProjRestricts C h ∘ ProjRestrict C K = ProjRestrict C J
state_after: case h.a.h
I : Type u
inst✝⁴ : LinearOrder I
inst✝³ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
J K L : I → Prop
inst✝² : (i : I) → Decidable (J i)
inst✝¹ : (i : I) → Decidable (K i)
inst✝ : (i : I) → Decidable (L i)
h : ∀ (i : I), J i → K i
x : ↑C
i : I
⊢ ↑((ProjRestricts C h ∘ ProjRestrict C K) x) i = ↑(ProjRestrict C J x) i

tactic: simp only [π, Proj, Function.comp_apply, ProjRestricts_coe, ProjRestrict_coe]
state_before: case h.a.h
I : Type u
inst✝⁴ : LinearOrder I
inst✝³ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
J K L : I → Prop
inst✝² : (i : I) → Decidable (J i)
inst✝¹ : (i : I) → Decidable (K i)
inst✝ : (i : I) → Decidable (L i)
h : ∀ (i : I), J i → K i
x : ↑C
i : I
⊢ ↑((ProjRestricts C h ∘ ProjRestrict C K) x) i = ↑(ProjRestrict C J x) i
state_after: case h.a.h
I : Type u
inst✝⁴ : LinearOrder I
inst✝³ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
J K L : I → Prop
inst✝² : (i : I) → Decidable (J i)
inst✝¹ : (i : I) → Decidable (K i)
inst✝ : (i : I) → Decidable (L i)
h : ∀ (i : I), J i → K i
x : ↑C
i : I
⊢ (if J i then if K i then ↑x i else false else false) = if J i then ↑x i else false

tactic: aesop
state_before: case h.a.h
I : Type u
inst✝⁴ : LinearOrder I
inst✝³ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
J K L : I → Prop
inst✝² : (i : I) → Decidable (J i)
inst✝¹ : (i : I) → Decidable (K i)
inst✝ : (i : I) → Decidable (L i)
h : ∀ (i : I), J i → K i
x : ↑C
i : I
⊢ (if J i then if K i then ↑x i else false else false) = if J i then ↑x i else false
state_after: no goals
Theorem: eq_of_le_of_inf_le_of_le_sup
File: Mathlib/Order/ModularLattice.lean

tactic: refine hxy.antisymm ?_
state_before: α : Type u_1
inst✝¹ : Lattice α
inst✝ : IsModularLattice α
x y z : α
hxy : x ≤ y
hinf : y ⊓ z ≤ x
hsup : y ≤ x ⊔ z
⊢ x = y
state_after: α : Type u_1
inst✝¹ : Lattice α
inst✝ : IsModularLattice α
x y z : α
hxy : x ≤ y
hinf : y ⊓ z ≤ x
hsup : y ≤ x ⊔ z
⊢ y ≤ x

tactic: rw [← inf_eq_right, sup_inf_assoc_of_le _ hxy] at hsup
state_before: α : Type u_1
inst✝¹ : Lattice α
inst✝ : IsModularLattice α
x y z : α
hxy : x ≤ y
hinf : y ⊓ z ≤ x
hsup : y ≤ x ⊔ z
⊢ y ≤ x
state_after: α : Type u_1
inst✝¹ : Lattice α
inst✝ : IsModularLattice α
x y z : α
hxy : x ≤ y
hinf : y ⊓ z ≤ x
hsup : x ⊔ z ⊓ y = y
⊢ y ≤ x

tactic: rwa [← hsup, sup_le_iff, and_iff_right rfl.le, inf_comm]
state_before: α : Type u_1
inst✝¹ : Lattice α
inst✝ : IsModularLattice α
x y z : α
hxy : x ≤ y
hinf : y ⊓ z ≤ x
hsup : x ⊔ z ⊓ y = y
⊢ y ≤ x
state_after: no goals
Theorem: TopCat.prodIsoProd_hom_fst
File: Mathlib/Topology/Category/TopCat/Limits/Products.lean

tactic: simp [← Iso.eq_inv_comp, prodIsoProd]
state_before: J : Type v
inst✝ : SmallCategory J
X Y : TopCat
⊢ (X.prodIsoProd Y).hom ≫ prodFst = prod.fst
state_after: J : Type v
inst✝ : SmallCategory J
X Y : TopCat
⊢ prodFst = (X.prodBinaryFan Y).fst

tactic: rfl
state_before: J : Type v
inst✝ : SmallCategory J
X Y : TopCat
⊢ prodFst = (X.prodBinaryFan Y).fst
state_after: no goals
Theorem: upperCentralSeries.map
File: Mathlib/GroupTheory/Nilpotent.lean

tactic: induction' n with d hd
state_before: G : Type u_1
inst✝² : Group G
H✝ : Subgroup G
inst✝¹ : H✝.Normal
H : Type u_2
inst✝ : Group H
f : G →* H
h : Function.Surjective ⇑f
n : ℕ
⊢ Subgroup.map f (upperCentralSeries G n) ≤ upperCentralSeries H n
state_after: case zero
G : Type u_1
inst✝² : Group G
H✝ : Subgroup G
inst✝¹ : H✝.Normal
H : Type u_2
inst✝ : Group H
f : G →* H
h : Function.Surjective ⇑f
⊢ Subgroup.map f (upperCentralSeries G 0) ≤ upperCentralSeries H 0

case succ
G : Type u_1
inst✝² : Group G
H✝ : Subgroup G
inst✝¹ : H✝.Normal
H : Type u_2
inst✝ : Group H
f : G →* H
h : Function.Surjective ⇑f
d : ℕ
hd : Subgroup.map f (upperCentralSeries G d) ≤ upperCentralSeries H d
⊢ Subgroup.map f (upperCentralSeries G (d + 1)) ≤ upperCentralSeries H (d + 1)

tactic: simp
state_before: case zero
G : Type u_1
inst✝² : Group G
H✝ : Subgroup G
inst✝¹ : H✝.Normal
H : Type u_2
inst✝ : Group H
f : G →* H
h : Function.Surjective ⇑f
⊢ Subgroup.map f (upperCentralSeries G 0) ≤ upperCentralSeries H 0
state_after: no goals

tactic: rintro _ ⟨x, hx : x ∈ upperCentralSeries G d.succ, rfl⟩ y'
state_before: case succ
G : Type u_1
inst✝² : Group G
H✝ : Subgroup G
inst✝¹ : H✝.Normal
H : Type u_2
inst✝ : Group H
f : G →* H
h : Function.Surjective ⇑f
d : ℕ
hd : Subgroup.map f (upperCentralSeries G d) ≤ upperCentralSeries H d
⊢ Subgroup.map f (upperCentralSeries G (d + 1)) ≤ upperCentralSeries H (d + 1)
state_after: case succ.intro.intro
G : Type u_1
inst✝² : Group G
H✝ : Subgroup G
inst✝¹ : H✝.Normal
H : Type u_2
inst✝ : Group H
f : G →* H
h : Function.Surjective ⇑f
d : ℕ
hd : Subgroup.map f (upperCentralSeries G d) ≤ upperCentralSeries H d
x : G
hx : x ∈ upperCentralSeries G d.succ
y' : H
⊢ f x * y' * (f x)⁻¹ * y'⁻¹ ∈ (upperCentralSeriesAux H d).fst

tactic: rcases h y' with ⟨y, rfl⟩
state_before: case succ.intro.intro
G : Type u_1
inst✝² : Group G
H✝ : Subgroup G
inst✝¹ : H✝.Normal
H : Type u_2
inst✝ : Group H
f : G →* H
h : Function.Surjective ⇑f
d : ℕ
hd : Subgroup.map f (upperCentralSeries G d) ≤ upperCentralSeries H d
x : G
hx : x ∈ upperCentralSeries G d.succ
y' : H
⊢ f x * y' * (f x)⁻¹ * y'⁻¹ ∈ (upperCentralSeriesAux H d).fst
state_after: case succ.intro.intro.intro
G : Type u_1
inst✝² : Group G
H✝ : Subgroup G
inst✝¹ : H✝.Normal
H : Type u_2
inst✝ : Group H
f : G →* H
h : Function.Surjective ⇑f
d : ℕ
hd : Subgroup.map f (upperCentralSeries G d) ≤ upperCentralSeries H d
x : G
hx : x ∈ upperCentralSeries G d.succ
y : G
⊢ f x * f y * (f x)⁻¹ * (f y)⁻¹ ∈ (upperCentralSeriesAux H d).fst

tactic: simpa using hd (mem_map_of_mem f (hx y))
state_before: case succ.intro.intro.intro
G : Type u_1
inst✝² : Group G
H✝ : Subgroup G
inst✝¹ : H✝.Normal
H : Type u_2
inst✝ : Group H
f : G →* H
h : Function.Surjective ⇑f
d : ℕ
hd : Subgroup.map f (upperCentralSeries G d) ≤ upperCentralSeries H d
x : G
hx : x ∈ upperCentralSeries G d.succ
y : G
⊢ f x * f y * (f x)⁻¹ * (f y)⁻¹ ∈ (upperCentralSeriesAux H d).fst
state_after: no goals
Theorem: SignType.neg_one_lt_iff
File: Mathlib/Data/Sign.lean

tactic: cases a <;> decide
state_before: a : SignType
⊢ -1 < a ↔ 0 ≤ a
state_after: no goals
Theorem: Submonoid.top_prod
File: Mathlib/Algebra/Group/Submonoid/Operations.lean

tactic: simp [mem_prod, MonoidHom.coe_snd]
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : MulOneClass P
S : Submonoid M
A : Type u_4
inst✝ : SetLike A M
hA : SubmonoidClass A M
S' : A
s : Submonoid N
x : M × N
⊢ x ∈ ⊤.prod s ↔ x ∈ comap (MonoidHom.snd M N) s
state_after: no goals
Theorem: one_div_le
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: simpa using inv_le ha hb
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
ha : 0 < a
hb : 0 < b
⊢ 1 / a ≤ b ↔ 1 / b ≤ a
state_after: no goals
Theorem: List.countP_false
File: .lake/packages/batteries/Batteries/Data/List/Count.lean

tactic: rw [countP_eq_zero]
state_before: α : Type u_1
p q : α → Bool
l : List α
⊢ countP (fun x => false) l = 0
state_after: α : Type u_1
p q : α → Bool
l : List α
⊢ ∀ (a : α), a ∈ l → ¬false = true

tactic: simp
state_before: α : Type u_1
p q : α → Bool
l : List α
⊢ ∀ (a : α), a ∈ l → ¬false = true
state_after: no goals
Theorem: HurwitzZeta.completedHurwitzZetaEven_neg
File: Mathlib/NumberTheory/LSeries/HurwitzZetaEven.lean

tactic: simp only [completedHurwitzZetaEven, hurwitzEvenFEPair_neg]
state_before: a : UnitAddCircle
s : ℂ
⊢ completedHurwitzZetaEven (-a) s = completedHurwitzZetaEven a s
state_after: no goals
Theorem: EReal.measurable_of_measurable_real
File: Mathlib/MeasureTheory/Constructions/BorelSpace/Real.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
inst✝ : MeasurableSpace α
f : EReal → α
h : Measurable fun p => f ↑p
⊢ {⊥, ⊤}.Finite
state_after: no goals
Theorem: SimpleGraph.Walk.mem_verts_toSubgraph
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: induction' p with _ x y z h p' ih
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w : V
p : G.Walk u v
⊢ w ∈ p.toSubgraph.verts ↔ w ∈ p.support
state_after: case nil
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w u✝ : V
⊢ w ∈ nil.toSubgraph.verts ↔ w ∈ nil.support

case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w x y z : V
h : G.Adj x y
p' : G.Walk y z
ih : w ∈ p'.toSubgraph.verts ↔ w ∈ p'.support
⊢ w ∈ (cons h p').toSubgraph.verts ↔ w ∈ (cons h p').support

tactic: simp
state_before: case nil
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w u✝ : V
⊢ w ∈ nil.toSubgraph.verts ↔ w ∈ nil.support
state_after: no goals

tactic: have : w = y ∨ w ∈ p'.support ↔ w ∈ p'.support :=
  ⟨by rintro (rfl | h) <;> simp [*], by simp (config := { contextual := true })⟩
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w x y z : V
h : G.Adj x y
p' : G.Walk y z
ih : w ∈ p'.toSubgraph.verts ↔ w ∈ p'.support
⊢ w ∈ (cons h p').toSubgraph.verts ↔ w ∈ (cons h p').support
state_after: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w x y z : V
h : G.Adj x y
p' : G.Walk y z
ih : w ∈ p'.toSubgraph.verts ↔ w ∈ p'.support
this : w = y ∨ w ∈ p'.support ↔ w ∈ p'.support
⊢ w ∈ (cons h p').toSubgraph.verts ↔ w ∈ (cons h p').support

tactic: simp [ih, or_assoc, this]
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w x y z : V
h : G.Adj x y
p' : G.Walk y z
ih : w ∈ p'.toSubgraph.verts ↔ w ∈ p'.support
this : w = y ∨ w ∈ p'.support ↔ w ∈ p'.support
⊢ w ∈ (cons h p').toSubgraph.verts ↔ w ∈ (cons h p').support
state_after: no goals

tactic: rintro (rfl | h) <;> simp [*]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w x y z : V
h : G.Adj x y
p' : G.Walk y z
ih : w ∈ p'.toSubgraph.verts ↔ w ∈ p'.support
⊢ w = y ∨ w ∈ p'.support → w ∈ p'.support
state_after: no goals

tactic: simp (config := { contextual := true })
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w x y z : V
h : G.Adj x y
p' : G.Walk y z
ih : w ∈ p'.toSubgraph.verts ↔ w ∈ p'.support
⊢ w ∈ p'.support → w = y ∨ w ∈ p'.support
state_after: no goals
Theorem: Cardinal.blsub_lt_ord_lift_of_isRegular
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: rwa [hc.cof_eq]
state_before: α : Type u_1
r : α → α → Prop
o : Ordinal.{u}
f : (a : Ordinal.{u}) → a < o → Ordinal.{max u v}
c : Cardinal.{max u v}
hc : c.IsRegular
ho : lift.{v, u} o.card < c
⊢ lift.{v, u} o.card < c.ord.cof
state_after: no goals
Theorem: Cubic.c_of_eq
File: Mathlib/Algebra/CubicDiscriminant.lean

tactic: rw [← coeff_eq_c, h, coeff_eq_c]
state_before: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P Q : Cubic R
a b c d a' b' c' d' : R
inst✝ : Semiring R
h : P.toPoly = Q.toPoly
⊢ P.c = Q.c
state_after: no goals
Theorem: HasMFDerivWithinAt.hasMFDerivAt
File: Mathlib/Geometry/Manifold/MFDeriv/Basic.lean

tactic: rwa [← univ_inter s, hasMFDerivWithinAt_inter hs, hasMFDerivWithinAt_univ] at h
state_before: 𝕜 : Type u_1
inst✝¹⁵ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹⁴ : NormedAddCommGroup E
inst✝¹³ : NormedSpace 𝕜 E
H : Type u_3
inst✝¹² : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝¹¹ : TopologicalSpace M
inst✝¹⁰ : ChartedSpace H M
E' : Type u_5
inst✝⁹ : NormedAddCommGroup E'
inst✝⁸ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝⁷ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝⁶ : TopologicalSpace M'
inst✝⁵ : ChartedSpace H' M'
E'' : Type u_8
inst✝⁴ : NormedAddCommGroup E''
inst✝³ : NormedSpace 𝕜 E''
H'' : Type u_9
inst✝² : TopologicalSpace H''
I'' : ModelWithCorners 𝕜 E'' H''
M'' : Type u_10
inst✝¹ : TopologicalSpace M''
inst✝ : ChartedSpace H'' M''
f f₀ f₁ : M → M'
x : M
s t : Set M
g : M' → M''
u : Set M'
Is : SmoothManifoldWithCorners I M
I's : SmoothManifoldWithCorners I' M'
I''s : SmoothManifoldWithCorners I'' M''
f' f₀' f₁' : TangentSpace I x →L[𝕜] TangentSpace I' (f x)
g' : TangentSpace I' (f x) →L[𝕜] TangentSpace I'' (g (f x))
h : HasMFDerivWithinAt I I' f s x f'
hs : s ∈ 𝓝 x
⊢ HasMFDerivAt I I' f x f'
state_after: no goals
Theorem: Nat.Prime.smoothNumbers_coprime
File: Mathlib/NumberTheory/SmoothNumbers.lean

tactic: simp only [smoothNumbers_eq_factoredNumbers] at hn
state_before: p n : ℕ
hp : Prime p
hn : n ∈ p.smoothNumbers
⊢ p.Coprime n
state_after: p n : ℕ
hp : Prime p
hn : n ∈ factoredNumbers (Finset.range p)
⊢ p.Coprime n

tactic: exact hp.factoredNumbers_coprime Finset.not_mem_range_self hn
state_before: p n : ℕ
hp : Prime p
hn : n ∈ factoredNumbers (Finset.range p)
⊢ p.Coprime n
state_after: no goals
Theorem: Finset.filter_card_add_filter_neg_card_eq_card
File: Mathlib/Data/Finset/Card.lean

tactic: classical
rw [← card_union_of_disjoint (disjoint_filter_filter_neg _ _ _), filter_union_filter_neg_eq]
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s t u : Finset α
f : α → β
n : ℕ
p : α → Prop
inst✝¹ : DecidablePred p
inst✝ : (x : α) → Decidable ¬p x
⊢ (filter p s).card + (filter (fun a => ¬p a) s).card = s.card
state_after: no goals

tactic: rw [← card_union_of_disjoint (disjoint_filter_filter_neg _ _ _), filter_union_filter_neg_eq]
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s t u : Finset α
f : α → β
n : ℕ
p : α → Prop
inst✝¹ : DecidablePred p
inst✝ : (x : α) → Decidable ¬p x
⊢ (filter p s).card + (filter (fun a => ¬p a) s).card = s.card
state_after: no goals
Theorem: Set.isPWO_insert
File: Mathlib/Order/WellFoundedSet.lean

tactic: simp only [← singleton_union, isPWO_union, isPWO_singleton, true_and_iff]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s t : Set α
a : α
⊢ (insert a s).IsPWO ↔ s.IsPWO
state_after: no goals
Theorem: Finset.truncatedSup_union
File: Mathlib/Combinatorics/SetFamily/AhlswedeZhang.lean

tactic: simpa only [truncatedSup_of_mem, hs, ht, lower_aux.2 (Or.inl hs), filter_union] using
  sup'_union _ _ _
state_before: α : Type u_1
β : Type u_2
inst✝⁶ : SemilatticeSup α
inst✝⁵ : OrderTop α
inst✝⁴ : DecidableRel fun x x_1 => x ≤ x_1
inst✝³ : SemilatticeSup β
inst✝² : BoundedOrder β
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a b : α
inst✝ : DecidableEq α
hs : a ∈ lowerClosure ↑s
ht : a ∈ lowerClosure ↑t
⊢ (s ∪ t).truncatedSup a = s.truncatedSup a ⊔ t.truncatedSup a
state_after: no goals
Theorem: Polynomial.erase_zero
File: Mathlib/Algebra/Polynomial/Basic.lean

tactic: simp
state_before: R : Type u
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p q : R[X]
n : ℕ
⊢ (erase n 0).toFinsupp = toFinsupp 0
state_after: no goals
Theorem: SimpleGraph.Subgraph.deleteEdges_le
File: Mathlib/Combinatorics/SimpleGraph/Subgraph.lean

tactic: constructor <;> simp (config := { contextual := true }) [subset_rfl]
state_before: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G' : G.Subgraph
s : Set (Sym2 V)
⊢ G'.deleteEdges s ≤ G'
state_after: no goals
Theorem: padicNormE.norm_int_lt_one_iff_dvd
File: Mathlib/NumberTheory/Padics/PadicNumbers.lean

tactic: constructor
state_before: p : ℕ
hp : Fact (Nat.Prime p)
k : ℤ
⊢ ‖↑k‖ < 1 ↔ ↑p ∣ k
state_after: case mp
p : ℕ
hp : Fact (Nat.Prime p)
k : ℤ
⊢ ‖↑k‖ < 1 → ↑p ∣ k

case mpr
p : ℕ
hp : Fact (Nat.Prime p)
k : ℤ
⊢ ↑p ∣ k → ‖↑k‖ < 1

tactic: intro h
state_before: case mp
p : ℕ
hp : Fact (Nat.Prime p)
k : ℤ
⊢ ‖↑k‖ < 1 → ↑p ∣ k
state_after: case mp
p : ℕ
hp : Fact (Nat.Prime p)
k : ℤ
h : ‖↑k‖ < 1
⊢ ↑p ∣ k

tactic: contrapose! h
state_before: case mp
p : ℕ
hp : Fact (Nat.Prime p)
k : ℤ
h : ‖↑k‖ < 1
⊢ ↑p ∣ k
state_after: case mp
p : ℕ
hp : Fact (Nat.Prime p)
k : ℤ
h : ¬↑p ∣ k
⊢ 1 ≤ ‖↑k‖

tactic: apply le_of_eq
state_before: case mp
p : ℕ
hp : Fact (Nat.Prime p)
k : ℤ
h : ¬↑p ∣ k
⊢ 1 ≤ ‖↑k‖
state_after: case mp.a
p : ℕ
hp : Fact (Nat.Prime p)
k : ℤ
h : ¬↑p ∣ k
⊢ 1 = ‖↑k‖

tactic: rw [eq_comm]
state_before: case mp.a
p : ℕ
hp : Fact (Nat.Prime p)
k : ℤ
h : ¬↑p ∣ k
⊢ 1 = ‖↑k‖
state_after: case mp.a
p : ℕ
hp : Fact (Nat.Prime p)
k : ℤ
h : ¬↑p ∣ k
⊢ ‖↑k‖ = 1

tactic: calc
  ‖(k : ℚ_[p])‖ = ‖((k : ℚ) : ℚ_[p])‖ := by norm_cast
  _ = padicNorm p k := padicNormE.eq_padicNorm _
  _ = 1 := mod_cast (int_eq_one_iff k).mpr h
state_before: case mp.a
p : ℕ
hp : Fact (Nat.Prime p)
k : ℤ
h : ¬↑p ∣ k
⊢ ‖↑k‖ = 1
state_after: no goals

tactic: norm_cast
state_before: p : ℕ
hp : Fact (Nat.Prime p)
k : ℤ
h : ¬↑p ∣ k
⊢ ‖↑k‖ = ‖↑↑k‖
state_after: no goals

tactic: rintro ⟨x, rfl⟩
state_before: case mpr
p : ℕ
hp : Fact (Nat.Prime p)
k : ℤ
⊢ ↑p ∣ k → ‖↑k‖ < 1
state_after: case mpr.intro
p : ℕ
hp : Fact (Nat.Prime p)
x : ℤ
⊢ ‖↑(↑p * x)‖ < 1

tactic: push_cast
state_before: case mpr.intro
p : ℕ
hp : Fact (Nat.Prime p)
x : ℤ
⊢ ‖↑(↑p * x)‖ < 1
state_after: case mpr.intro
p : ℕ
hp : Fact (Nat.Prime p)
x : ℤ
⊢ ‖↑p * ↑x‖ < 1

tactic: rw [padicNormE.mul]
state_before: case mpr.intro
p : ℕ
hp : Fact (Nat.Prime p)
x : ℤ
⊢ ‖↑p * ↑x‖ < 1
state_after: case mpr.intro
p : ℕ
hp : Fact (Nat.Prime p)
x : ℤ
⊢ ‖↑p‖ * ‖↑x‖ < 1

tactic: calc
  _ ≤ ‖(p : ℚ_[p])‖ * 1 :=
    mul_le_mul le_rfl (by simpa using norm_int_le_one _) (norm_nonneg _) (norm_nonneg _)
  _ < 1 := by
    rw [mul_one, padicNormE.norm_p]
    apply inv_lt_one
    exact mod_cast hp.1.one_lt
state_before: case mpr.intro
p : ℕ
hp : Fact (Nat.Prime p)
x : ℤ
⊢ ‖↑p‖ * ‖↑x‖ < 1
state_after: no goals

tactic: simpa using norm_int_le_one _
state_before: p : ℕ
hp : Fact (Nat.Prime p)
x : ℤ
⊢ ‖↑x‖ ≤ 1
state_after: no goals

tactic: rw [mul_one, padicNormE.norm_p]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
x : ℤ
⊢ ‖↑p‖ * 1 < 1
state_after: p : ℕ
hp : Fact (Nat.Prime p)
x : ℤ
⊢ (↑p)⁻¹ < 1

tactic: apply inv_lt_one
state_before: p : ℕ
hp : Fact (Nat.Prime p)
x : ℤ
⊢ (↑p)⁻¹ < 1
state_after: case ha
p : ℕ
hp : Fact (Nat.Prime p)
x : ℤ
⊢ 1 < ↑p

tactic: exact mod_cast hp.1.one_lt
state_before: case ha
p : ℕ
hp : Fact (Nat.Prime p)
x : ℤ
⊢ 1 < ↑p
state_after: no goals
Theorem: Matroid.dual_dual
File: Mathlib/Data/Matroid/Dual.lean

tactic: rw [dual_base_iff, dual_base_iff, dual_ground, diff_diff_cancel_left h]
state_before: α : Type u_1
M✝ : Matroid α
I B✝ X : Set α
M : Matroid α
B : Set α
h : B ⊆ M.E
⊢ M✶✶.Base B ↔ M.Base B
state_after: no goals