1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Set.IsWF.isPWO
File: Mathlib/Order/WellFoundedSet.lean

tactic: intro f hf
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
inst✝ : LinearOrder α
s : Set α
hs : s.IsWF
⊢ s.IsPWO
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
inst✝ : LinearOrder α
s : Set α
hs : s.IsWF
f : ℕ → α
hf : ∀ (n : ℕ), f n ∈ s
⊢ ∃ m n, m < n ∧ (fun x x_1 => x ≤ x_1) (f m) (f n)

tactic: lift f to ℕ → s using hf
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
inst✝ : LinearOrder α
s : Set α
hs : s.IsWF
f : ℕ → α
hf : ∀ (n : ℕ), f n ∈ s
⊢ ∃ m n, m < n ∧ (fun x x_1 => x ≤ x_1) (f m) (f n)
state_after: case intro
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
inst✝ : LinearOrder α
s : Set α
hs : s.IsWF
f : ℕ → ↑s
⊢ ∃ m n, m < n ∧ (fun x x_1 => x ≤ x_1) ((fun i => ↑(f i)) m) ((fun i => ↑(f i)) n)

tactic: rcases hs.has_min (range f) (range_nonempty _) with ⟨_, ⟨m, rfl⟩, hm⟩
state_before: case intro
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
inst✝ : LinearOrder α
s : Set α
hs : s.IsWF
f : ℕ → ↑s
⊢ ∃ m n, m < n ∧ (fun x x_1 => x ≤ x_1) ((fun i => ↑(f i)) m) ((fun i => ↑(f i)) n)
state_after: case intro.intro.intro.intro
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
inst✝ : LinearOrder α
s : Set α
hs : s.IsWF
f : ℕ → ↑s
m : ℕ
hm : ∀ x ∈ range f, ¬(fun x x_1 => x < x_1) ↑x ↑(f m)
⊢ ∃ m n, m < n ∧ (fun x x_1 => x ≤ x_1) ((fun i => ↑(f i)) m) ((fun i => ↑(f i)) n)

tactic: simp only [forall_mem_range, not_lt] at hm
state_before: case intro.intro.intro.intro
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
inst✝ : LinearOrder α
s : Set α
hs : s.IsWF
f : ℕ → ↑s
m : ℕ
hm : ∀ x ∈ range f, ¬(fun x x_1 => x < x_1) ↑x ↑(f m)
⊢ ∃ m n, m < n ∧ (fun x x_1 => x ≤ x_1) ((fun i => ↑(f i)) m) ((fun i => ↑(f i)) n)
state_after: case intro.intro.intro.intro
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
inst✝ : LinearOrder α
s : Set α
hs : s.IsWF
f : ℕ → ↑s
m : ℕ
hm : ∀ (i : ℕ), ↑(f m) ≤ ↑(f i)
⊢ ∃ m n, m < n ∧ (fun x x_1 => x ≤ x_1) ((fun i => ↑(f i)) m) ((fun i => ↑(f i)) n)

tactic: exact ⟨m, m + 1, by omega, hm _⟩
state_before: case intro.intro.intro.intro
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
inst✝ : LinearOrder α
s : Set α
hs : s.IsWF
f : ℕ → ↑s
m : ℕ
hm : ∀ (i : ℕ), ↑(f m) ≤ ↑(f i)
⊢ ∃ m n, m < n ∧ (fun x x_1 => x ≤ x_1) ((fun i => ↑(f i)) m) ((fun i => ↑(f i)) n)
state_after: no goals

tactic: omega
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
inst✝ : LinearOrder α
s : Set α
hs : s.IsWF
f : ℕ → ↑s
m : ℕ
hm : ∀ (i : ℕ), ↑(f m) ≤ ↑(f i)
⊢ m < m + 1
state_after: no goals
Theorem: inner_lt_one_iff_real_of_norm_one
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: convert inner_lt_norm_mul_iff_real (F := F) <;> simp [hx, hy]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : F
hx : ‖x‖ = 1
hy : ‖y‖ = 1
⊢ ⟪x, y⟫_ℝ < 1 ↔ x ≠ y
state_after: no goals
Theorem: interior_union_isClosed_of_interior_empty
File: Mathlib/Topology/Basic.lean

tactic: rwa [(IsOpen.sdiff hu₁ h₁).subset_interior_iff]
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x✝¹ : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
h₁ : IsClosed s
h₂ : interior t = ∅
x : X
x✝ : x ∈ interior (s ∪ t)
u : Set X
hu₁ : IsOpen u
hu₂ : u ⊆ s ∪ t
hx₁ : x ∈ u
hx₂ : x ∉ s
this : u \ s ⊆ t
⊢ u \ s ⊆ interior t
state_after: no goals

tactic: rwa [h₂] at this
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x✝¹ : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
h₁ : IsClosed s
h₂ : interior t = ∅
x : X
x✝ : x ∈ interior (s ∪ t)
u : Set X
hu₁ : IsOpen u
hu₂ : u ⊆ s ∪ t
hx₁ : x ∈ u
hx₂ : x ∉ s
this✝ : u \ s ⊆ t
this : u \ s ⊆ interior t
⊢ u \ s ⊆ ∅
state_after: no goals
Theorem: CliffordAlgebra.GradedAlgebra.ι_sq_scalar
File: Mathlib/LinearAlgebra/CliffordAlgebra/Grading.lean

tactic: rw [GradedAlgebra.ι_apply Q, DirectSum.of_mul_of, DirectSum.algebraMap_apply]
state_before: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
m : M
⊢ (GradedAlgebra.ι Q) m * (GradedAlgebra.ι Q) m = (algebraMap R (⨁ (i : ZMod 2), ↥(evenOdd Q i))) (Q m)
state_after: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
m : M
⊢ (DirectSum.of (fun i => ↥(evenOdd Q i)) (1 + 1)) (GradedMonoid.GMul.mul ⟨(ι Q) m, ⋯⟩ ⟨(ι Q) m, ⋯⟩) =
    (DirectSum.of (fun i => ↥(evenOdd Q i)) 0) (DirectSum.GAlgebra.toFun (Q m))

tactic: exact DirectSum.of_eq_of_gradedMonoid_eq (Sigma.subtype_ext rfl <| ι_sq_scalar _ _)
state_before: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
m : M
⊢ (DirectSum.of (fun i => ↥(evenOdd Q i)) (1 + 1)) (GradedMonoid.GMul.mul ⟨(ι Q) m, ⋯⟩ ⟨(ι Q) m, ⋯⟩) =
    (DirectSum.of (fun i => ↥(evenOdd Q i)) 0) (DirectSum.GAlgebra.toFun (Q m))
state_after: no goals
Theorem: SimpleGraph.incMatrix_of_mem_incidenceSet
File: Mathlib/Combinatorics/SimpleGraph/IncMatrix.lean

tactic: rw [incMatrix_apply, Set.indicator_of_mem h, Pi.one_apply]
state_before: R : Type u_1
α : Type u_2
G : SimpleGraph α
inst✝ : MulZeroOneClass R
a b : α
e : Sym2 α
h : e ∈ G.incidenceSet a
⊢ incMatrix R G a e = 1
state_after: no goals
Theorem: Turing.Tape.map_mk₂
File: Mathlib/Computability/TuringMachine.lean

tactic: simp only [Tape.mk₂, Tape.map_mk', ListBlank.map_mk]
state_before: Γ : Type u_1
Γ' : Type u_2
inst✝¹ : Inhabited Γ
inst✝ : Inhabited Γ'
f : PointedMap Γ Γ'
L R : List Γ
⊢ map f (mk₂ L R) = mk₂ (List.map f.f L) (List.map f.f R)
state_after: no goals
Theorem: normEDS_ofNat
File: Mathlib/NumberTheory/EllipticDivisibilitySequence.lean

tactic: simp only [normEDS, preNormEDS_ofNat, Int.even_coe_nat]
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : ℤ → R
f : R →+* S
b c d : R
n : ℕ
⊢ normEDS b c d ↑n = preNormEDS' (b ^ 4) c d n * if Even n then b else 1
state_after: no goals
Theorem: Absorbs.add
File: Mathlib/Topology/Bornology/Absorbs.lean

tactic: rw [smul_add]
state_before: M : Type u_1
E : Type u_2
inst✝² : Bornology M
s₁ s₂ t₁ t₂ : Set E
inst✝¹ : AddZeroClass E
inst✝ : DistribSMul M E
h₁ : Absorbs M s₁ t₁
h₂ : Absorbs M s₂ t₂
x : M
hx₁ : t₁ ⊆ x • s₁
hx₂ : t₂ ⊆ x • s₂
⊢ t₁ + t₂ ⊆ x • (s₁ + s₂)
state_after: M : Type u_1
E : Type u_2
inst✝² : Bornology M
s₁ s₂ t₁ t₂ : Set E
inst✝¹ : AddZeroClass E
inst✝ : DistribSMul M E
h₁ : Absorbs M s₁ t₁
h₂ : Absorbs M s₂ t₂
x : M
hx₁ : t₁ ⊆ x • s₁
hx₂ : t₂ ⊆ x • s₂
⊢ t₁ + t₂ ⊆ x • s₁ + x • s₂

tactic: exact add_subset_add hx₁ hx₂
state_before: M : Type u_1
E : Type u_2
inst✝² : Bornology M
s₁ s₂ t₁ t₂ : Set E
inst✝¹ : AddZeroClass E
inst✝ : DistribSMul M E
h₁ : Absorbs M s₁ t₁
h₂ : Absorbs M s₂ t₂
x : M
hx₁ : t₁ ⊆ x • s₁
hx₂ : t₂ ⊆ x • s₂
⊢ t₁ + t₂ ⊆ x • s₁ + x • s₂
state_after: no goals
Theorem: MvPolynomial.isNoetherianRing_fin_0
File: Mathlib/RingTheory/Polynomial/Basic.lean

tactic: apply isNoetherianRing_of_ringEquiv R
state_before: R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : IsNoetherianRing R
⊢ IsNoetherianRing (MvPolynomial (Fin 0) R)
state_after: case f
R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : IsNoetherianRing R
⊢ R ≃+* MvPolynomial (Fin 0) R

tactic: symm
state_before: case f
R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : IsNoetherianRing R
⊢ R ≃+* MvPolynomial (Fin 0) R
state_after: case f
R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : IsNoetherianRing R
⊢ MvPolynomial (Fin 0) R ≃+* R

tactic: apply MvPolynomial.isEmptyRingEquiv R (Fin 0)
state_before: case f
R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : IsNoetherianRing R
⊢ MvPolynomial (Fin 0) R ≃+* R
state_after: no goals
Theorem: IsCompact.mem_nhdsSet_inf_of_forall
File: Mathlib/Topology/Compactness/Compact.lean

tactic: simpa using hs
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s✝ t K : Set X
l : Filter X
s : Set X
hK : IsCompact K
hs : ∀ x ∈ K, s ∈ 𝓝 x ⊓ l
⊢ s ∈ ⨆ x ∈ K, 𝓝 x ⊓ l
state_after: no goals
Theorem: AddConstMapClass.map_add_nsmul
File: Mathlib/Algebra/AddConstMap/Basic.lean

tactic: simpa using (AddConstMapClass.semiconj f).iterate_right n x
state_before: F : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : FunLike F G H
a : G
b : H
inst✝² : AddMonoid G
inst✝¹ : AddMonoid H
inst✝ : AddConstMapClass F G H a b
f : F
x : G
n : ℕ
⊢ f (x + n • a) = f x + n • b
state_after: no goals
Theorem: Relation.ReflTransGen.trans_induction_on
File: Mathlib/Logic/Relation.lean

tactic: induction h with
| refl => exact ih₁ a
| tail hab hbc ih => exact ih₃ hab (single hbc) ih (ih₂ hbc)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a✝ b✝ c d : α
P : {a b : α} → ReflTransGen r a b → Prop
a b : α
h : ReflTransGen r a b
ih₁ : ∀ (a : α), P ⋯
ih₂ : ∀ {a b : α} (h : r a b), P ⋯
ih₃ : ∀ {a b c : α} (h₁ : ReflTransGen r a b) (h₂ : ReflTransGen r b c), P h₁ → P h₂ → P ⋯
⊢ P h
state_after: no goals

tactic: exact ih₁ a
state_before: case refl
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a✝ b✝ c d : α
P : {a b : α} → ReflTransGen r a b → Prop
a b : α
ih₁ : ∀ (a : α), P ⋯
ih₂ : ∀ {a b : α} (h : r a b), P ⋯
ih₃ : ∀ {a b c : α} (h₁ : ReflTransGen r a b) (h₂ : ReflTransGen r b c), P h₁ → P h₂ → P ⋯
⊢ P ⋯
state_after: no goals

tactic: exact ih₃ hab (single hbc) ih (ih₂ hbc)
state_before: case tail
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a✝ b✝¹ c d : α
P : {a b : α} → ReflTransGen r a b → Prop
a b : α
ih₁ : ∀ (a : α), P ⋯
ih₂ : ∀ {a b : α} (h : r a b), P ⋯
ih₃ : ∀ {a b c : α} (h₁ : ReflTransGen r a b) (h₂ : ReflTransGen r b c), P h₁ → P h₂ → P ⋯
b✝ c✝ : α
hab : ReflTransGen r a b✝
hbc : r b✝ c✝
ih : P hab
⊢ P ⋯
state_after: no goals
Theorem: SimpleGraph.nonuniformWitnesses_spec
File: Mathlib/Combinatorics/SimpleGraph/Regularity/Uniform.lean

tactic: rw [nonuniformWitnesses, dif_pos h]
state_before: α : Type u_1
𝕜 : Type u_2
inst✝¹ : LinearOrderedField 𝕜
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
s t : Finset α
a b : α
h : ¬G.IsUniform ε s t
⊢ ε ≤ ↑|G.edgeDensity (G.nonuniformWitnesses ε s t).1 (G.nonuniformWitnesses ε s t).2 - G.edgeDensity s t|
state_after: α : Type u_1
𝕜 : Type u_2
inst✝¹ : LinearOrderedField 𝕜
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
s t : Finset α
a b : α
h : ¬G.IsUniform ε s t
⊢ ε ≤ ↑|G.edgeDensity (⋯.choose, ⋯.choose).1 (⋯.choose, ⋯.choose).2 - G.edgeDensity s t|

tactic: exact (not_isUniform_iff.1 h).choose_spec.2.choose_spec.2.2.2
state_before: α : Type u_1
𝕜 : Type u_2
inst✝¹ : LinearOrderedField 𝕜
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
s t : Finset α
a b : α
h : ¬G.IsUniform ε s t
⊢ ε ≤ ↑|G.edgeDensity (⋯.choose, ⋯.choose).1 (⋯.choose, ⋯.choose).2 - G.edgeDensity s t|
state_after: no goals
Theorem: ConvexCone.pointed_zero
File: Mathlib/Analysis/Convex/Cone/Basic.lean

tactic: rw [Pointed, mem_zero]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝² : OrderedSemiring 𝕜
inst✝¹ : AddCommMonoid E
inst✝ : Module 𝕜 E
⊢ Pointed 0
state_after: no goals
Theorem: Polynomial.X_mul
File: Mathlib/Algebra/Polynomial/Basic.lean

tactic: rcases p with ⟨⟩
state_before: R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
p q : R[X]
⊢ X * p = p * X
state_after: case ofFinsupp
R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
q : R[X]
toFinsupp✝ : R[ℕ]
⊢ X * { toFinsupp := toFinsupp✝ } = { toFinsupp := toFinsupp✝ } * X

tactic: simp only [X, ← ofFinsupp_single, ← ofFinsupp_mul, LinearMap.coe_mk, ofFinsupp.injEq]
state_before: case ofFinsupp
R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
q : R[X]
toFinsupp✝ : R[ℕ]
⊢ X * { toFinsupp := toFinsupp✝ } = { toFinsupp := toFinsupp✝ } * X
state_after: case ofFinsupp
R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
q : R[X]
toFinsupp✝ : R[ℕ]
⊢ Finsupp.single 1 1 * toFinsupp✝ = toFinsupp✝ * Finsupp.single 1 1

tactic: refine Finsupp.ext fun _ => ?_
state_before: case ofFinsupp
R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
q : R[X]
toFinsupp✝ : R[ℕ]
⊢ Finsupp.single 1 1 * toFinsupp✝ = toFinsupp✝ * Finsupp.single 1 1
state_after: case ofFinsupp
R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
q : R[X]
toFinsupp✝ : R[ℕ]
x✝ : ℕ
⊢ (Finsupp.single 1 1 * toFinsupp✝) x✝ = (toFinsupp✝ * Finsupp.single 1 1) x✝

tactic: simp [AddMonoidAlgebra.mul_apply, AddMonoidAlgebra.sum_single_index, add_comm]
state_before: case ofFinsupp
R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
q : R[X]
toFinsupp✝ : R[ℕ]
x✝ : ℕ
⊢ (Finsupp.single 1 1 * toFinsupp✝) x✝ = (toFinsupp✝ * Finsupp.single 1 1) x✝
state_after: no goals
Theorem: LaurentSeries.ofPowerSeries_powerSeriesPart
File: Mathlib/RingTheory/LaurentSeries.lean

tactic: refine Eq.trans ?_ (congr rfl x.single_order_mul_powerSeriesPart)
state_before: R : Type u_1
inst✝ : Semiring R
x : LaurentSeries R
⊢ (ofPowerSeries ℤ R) x.powerSeriesPart = (single (-order x)) 1 * x
state_after: R : Type u_1
inst✝ : Semiring R
x : LaurentSeries R
⊢ (ofPowerSeries ℤ R) x.powerSeriesPart =
    (single (-order x)) 1 * ((single (order x)) 1 * (ofPowerSeries ℤ R) x.powerSeriesPart)

tactic: rw [← mul_assoc, single_mul_single, neg_add_self, mul_one, ← C_apply, C_one, one_mul]
state_before: R : Type u_1
inst✝ : Semiring R
x : LaurentSeries R
⊢ (ofPowerSeries ℤ R) x.powerSeriesPart =
    (single (-order x)) 1 * ((single (order x)) 1 * (ofPowerSeries ℤ R) x.powerSeriesPart)
state_after: no goals
Theorem: Finset.map_singleton
File: Mathlib/Data/Finset/Image.lean

tactic: simp only [coe_map, coe_singleton, Set.image_singleton]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f✝ : α ↪ β
s : Finset α
f : α ↪ β
a : α
⊢ ↑(map f {a}) = ↑{f a}
state_after: no goals
Theorem: HomologicalComplex.opcyclesToCycles_naturality
File: Mathlib/Algebra/Homology/HomologySequence.lean

tactic: simp only [← cancel_mono (L.iCycles j), ← cancel_epi (K.pOpcycles i),
  assoc, p_opcyclesMap_assoc, pOpcycles_opcyclesToCycles_iCycles, Hom.comm, cyclesMap_i,
  pOpcycles_opcyclesToCycles_iCycles_assoc]
state_before: C : Type u_1
ι : Type u_2
inst✝⁵ : Category.{u_3, u_1} C
inst✝⁴ : HasZeroMorphisms C
c : ComplexShape ι
K L : HomologicalComplex C c
φ : K ⟶ L
i j : ι
inst✝³ : K.HasHomology i
inst✝² : K.HasHomology j
inst✝¹ : L.HasHomology i
inst✝ : L.HasHomology j
⊢ opcyclesMap φ i ≫ L.opcyclesToCycles i j = K.opcyclesToCycles i j ≫ cyclesMap φ j
state_after: no goals
Theorem: one_div_mul_one_div_rev
File: Mathlib/Algebra/Group/Basic.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : DivisionMonoid α
a b c d : α
⊢ 1 / a * (1 / b) = 1 / (b * a)
state_after: no goals
Theorem: one_zpow
File: Mathlib/Algebra/Group/Basic.lean

tactic: rw [zpow_natCast, one_pow]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : DivisionMonoid α
a b c d : α
n : ℕ
⊢ 1 ^ ↑n = 1
state_after: no goals

tactic: rw [zpow_negSucc, one_pow, inv_one]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : DivisionMonoid α
a b c d : α
n : ℕ
⊢ 1 ^ Int.negSucc n = 1
state_after: no goals
Theorem: PartialHomeomorph.isOpen_image_iff_of_subset_source
File: Mathlib/Topology/PartialHomeomorph.lean

tactic: rw [← e.symm.isOpen_symm_image_iff_of_subset_target hs, e.symm_symm]
state_before: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
s : Set X
hs : s ⊆ e.source
⊢ IsOpen (↑e '' s) ↔ IsOpen s
state_after: no goals
Theorem: PFun.mem_prodLift
File: Mathlib/Data/PFun.lean

tactic: trans ∃ hp hq, (f x).get hp = y.1 ∧ (g x).get hq = y.2
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ι : Type u_6
f✝ f : α →. β
g : α →. γ
x : α
y : β × γ
⊢ y ∈ f.prodLift g x ↔ y.1 ∈ f x ∧ y.2 ∈ g x
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ι : Type u_6
f✝ f : α →. β
g : α →. γ
x : α
y : β × γ
⊢ y ∈ f.prodLift g x ↔ ∃ (hp : (f x).Dom) (hq : (g x).Dom), (f x).get hp = y.1 ∧ (g x).get hq = y.2

α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ι : Type u_6
f✝ f : α →. β
g : α →. γ
x : α
y : β × γ
⊢ (∃ (hp : (f x).Dom) (hq : (g x).Dom), (f x).get hp = y.1 ∧ (g x).get hq = y.2) ↔ y.1 ∈ f x ∧ y.2 ∈ g x

tactic: simp only [prodLift, Part.mem_mk_iff, And.exists, Prod.ext_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ι : Type u_6
f✝ f : α →. β
g : α →. γ
x : α
y : β × γ
⊢ y ∈ f.prodLift g x ↔ ∃ (hp : (f x).Dom) (hq : (g x).Dom), (f x).get hp = y.1 ∧ (g x).get hq = y.2
state_after: no goals
Theorem: Ordinal.nmul_le_nmul_of_nonneg_left
File: Mathlib/SetTheory/Ordinal/NaturalOps.lean

tactic: rcases lt_or_eq_of_le h₁ with (h₁ | rfl) <;> rcases lt_or_eq_of_le h₂ with (h₂ | rfl)
state_before: a b c d : Ordinal.{u}
h₁ : a ≤ b
h₂ : 0 ≤ c
⊢ c ⨳ a ≤ c ⨳ b
state_after: case inl.inl
a b c d : Ordinal.{u}
h₁✝ : a ≤ b
h₂✝ : 0 ≤ c
h₁ : a < b
h₂ : 0 < c
⊢ c ⨳ a ≤ c ⨳ b

case inl.inr
a b d : Ordinal.{u}
h₁✝ : a ≤ b
h₁ : a < b
h₂ : 0 ≤ 0
⊢ 0 ⨳ a ≤ 0 ⨳ b

case inr.inl
a c d : Ordinal.{u}
h₂✝ : 0 ≤ c
h₁ : a ≤ a
h₂ : 0 < c
⊢ c ⨳ a ≤ c ⨳ a

case inr.inr
a d : Ordinal.{u}
h₁ : a ≤ a
h₂ : 0 ≤ 0
⊢ 0 ⨳ a ≤ 0 ⨳ a

tactic: all_goals simp
state_before: case inl.inr
a b d : Ordinal.{u}
h₁✝ : a ≤ b
h₁ : a < b
h₂ : 0 ≤ 0
⊢ 0 ⨳ a ≤ 0 ⨳ b

case inr.inl
a c d : Ordinal.{u}
h₂✝ : 0 ≤ c
h₁ : a ≤ a
h₂ : 0 < c
⊢ c ⨳ a ≤ c ⨳ a

case inr.inr
a d : Ordinal.{u}
h₁ : a ≤ a
h₂ : 0 ≤ 0
⊢ 0 ⨳ a ≤ 0 ⨳ a
state_after: no goals

tactic: exact (nmul_lt_nmul_of_pos_left h₁ h₂).le
state_before: case inl.inl
a b c d : Ordinal.{u}
h₁✝ : a ≤ b
h₂✝ : 0 ≤ c
h₁ : a < b
h₂ : 0 < c
⊢ c ⨳ a ≤ c ⨳ b
state_after: no goals

tactic: simp
state_before: case inr.inr
a d : Ordinal.{u}
h₁ : a ≤ a
h₂ : 0 ≤ 0
⊢ 0 ⨳ a ≤ 0 ⨳ a
state_after: no goals
Theorem: WeierstrassCurve.Affine.baseChange_negPolynomial
File: Mathlib/AlgebraicGeometry/EllipticCurve/Affine.lean

tactic: rw [← map_negPolynomial, map_baseChange]
state_before: R✝ : Type u
inst✝¹¹ : CommRing R✝
W✝ : Affine R✝
R : Type r
inst✝¹⁰ : CommRing R
W : Affine R
S : Type s
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
A : Type u
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
inst✝⁵ : Algebra S A
inst✝⁴ : IsScalarTower R S A
B : Type v
inst✝³ : CommRing B
inst✝² : Algebra R B
inst✝¹ : Algebra S B
inst✝ : IsScalarTower R S B
f : A →ₐ[S] B
⊢ (baseChange W B).toAffine.negPolynomial = Polynomial.map (mapRingHom ↑f) (baseChange W A).toAffine.negPolynomial
state_after: no goals
Theorem: Submodule.sub_mem_orthogonal_of_inner_right
File: Mathlib/Analysis/InnerProductSpace/Orthogonal.lean

tactic: intro u hu
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
K : Submodule 𝕜 E
x y : E
h : ∀ (v : ↥K), ⟪↑v, x⟫_𝕜 = ⟪↑v, y⟫_𝕜
⊢ x - y ∈ Kᗮ
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
K : Submodule 𝕜 E
x y : E
h : ∀ (v : ↥K), ⟪↑v, x⟫_𝕜 = ⟪↑v, y⟫_𝕜
u : E
hu : u ∈ K
⊢ ⟪u, x - y⟫_𝕜 = 0

tactic: rw [inner_sub_right, sub_eq_zero]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
K : Submodule 𝕜 E
x y : E
h : ∀ (v : ↥K), ⟪↑v, x⟫_𝕜 = ⟪↑v, y⟫_𝕜
u : E
hu : u ∈ K
⊢ ⟪u, x - y⟫_𝕜 = 0
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
K : Submodule 𝕜 E
x y : E
h : ∀ (v : ↥K), ⟪↑v, x⟫_𝕜 = ⟪↑v, y⟫_𝕜
u : E
hu : u ∈ K
⊢ ⟪u, x⟫_𝕜 = ⟪u, y⟫_𝕜

tactic: exact h ⟨u, hu⟩
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
K : Submodule 𝕜 E
x y : E
h : ∀ (v : ↥K), ⟪↑v, x⟫_𝕜 = ⟪↑v, y⟫_𝕜
u : E
hu : u ∈ K
⊢ ⟪u, x⟫_𝕜 = ⟪u, y⟫_𝕜
state_after: no goals
Theorem: Matroid.Basis.basis_inter_ground
File: Mathlib/Data/Matroid/Basic.lean

tactic: convert hI
state_before: α : Type u_1
M : Matroid α
I X : Set α
hI : M.Basis I X
⊢ M.Basis I (X ∩ M.E)
state_after: case h.e'_4
α : Type u_1
M : Matroid α
I X : Set α
hI : M.Basis I X
⊢ X ∩ M.E = X

tactic: rw [inter_eq_self_of_subset_left hI.subset_ground]
state_before: case h.e'_4
α : Type u_1
M : Matroid α
I X : Set α
hI : M.Basis I X
⊢ X ∩ M.E = X
state_after: no goals
Theorem: CategoryTheory.Subobject.ofLE_mk_le_mk_of_comm
File: Mathlib/CategoryTheory/Subobject/Basic.lean

tactic: ext
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
B A₁ A₂ : C
f₁ : A₁ ⟶ B
f₂ : A₂ ⟶ B
inst✝¹ : Mono f₁
inst✝ : Mono f₂
g : A₁ ⟶ A₂
w : g ≫ f₂ = f₁
⊢ (mk f₁).ofLE (mk f₂) ⋯ = (underlyingIso f₁).hom ≫ g ≫ (underlyingIso f₂).inv
state_after: case h
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
B A₁ A₂ : C
f₁ : A₁ ⟶ B
f₂ : A₂ ⟶ B
inst✝¹ : Mono f₁
inst✝ : Mono f₂
g : A₁ ⟶ A₂
w : g ≫ f₂ = f₁
⊢ (mk f₁).ofLE (mk f₂) ⋯ ≫ (mk f₂).arrow = ((underlyingIso f₁).hom ≫ g ≫ (underlyingIso f₂).inv) ≫ (mk f₂).arrow

tactic: simp [w]
state_before: case h
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
B A₁ A₂ : C
f₁ : A₁ ⟶ B
f₂ : A₂ ⟶ B
inst✝¹ : Mono f₁
inst✝ : Mono f₂
g : A₁ ⟶ A₂
w : g ≫ f₂ = f₁
⊢ (mk f₁).ofLE (mk f₂) ⋯ ≫ (mk f₂).arrow = ((underlyingIso f₁).hom ≫ g ≫ (underlyingIso f₂).inv) ≫ (mk f₂).arrow
state_after: no goals
Theorem: Nat.unpair_left_le
File: Mathlib/Data/Nat/Pairing.lean

tactic: simp
state_before: ⊢ (unpair 0).1 ≤ 0
state_after: no goals
Theorem: WeierstrassCurve.Affine.natDegree_polynomial
File: Mathlib/AlgebraicGeometry/EllipticCurve/Affine.lean

tactic: rw [polynomial_eq]
state_before: R : Type u
inst✝¹ : CommRing R
W : Affine R
inst✝ : Nontrivial R
⊢ W.polynomial.natDegree = 2
state_after: R : Type u
inst✝¹ : CommRing R
W : Affine R
inst✝ : Nontrivial R
⊢ { a := 0, b := 1, c := { a := 0, b := 0, c := W.a₁, d := W.a₃ }.toPoly,
          d := { a := -1, b := -W.a₂, c := -W.a₄, d := -W.a₆ }.toPoly }.toPoly.natDegree =
    2

tactic: exact Cubic.natDegree_of_b_ne_zero' one_ne_zero
state_before: R : Type u
inst✝¹ : CommRing R
W : Affine R
inst✝ : Nontrivial R
⊢ { a := 0, b := 1, c := { a := 0, b := 0, c := W.a₁, d := W.a₃ }.toPoly,
          d := { a := -1, b := -W.a₂, c := -W.a₄, d := -W.a₆ }.toPoly }.toPoly.natDegree =
    2
state_after: no goals
Theorem: Finset.uIcc_of_ge
File: Mathlib/Order/Interval/Finset/Basic.lean

tactic: rw [uIcc, inf_eq_right.2 h, sup_eq_left.2 h]
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : Lattice α
inst✝ : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
h : b ≤ a
⊢ [[a, b]] = Icc b a
state_after: no goals
Theorem: padicNorm.one
File: Mathlib/NumberTheory/Padics/PadicNorm.lean

tactic: simp [padicNorm]
state_before: p : ℕ
⊢ padicNorm p 1 = 1
state_after: no goals