1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: MvPolynomial.degreeOf_mul_le
File: Mathlib/Algebra/MvPolynomial/Degrees.lean

tactic: classical
repeat' rw [degreeOf]
convert Multiset.count_le_of_le i (degrees_mul f g)
rw [Multiset.count_add]
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
i : σ
f g : MvPolynomial σ R
⊢ degreeOf i (f * g) ≤ degreeOf i f + degreeOf i g
state_after: no goals

tactic: repeat' rw [degreeOf]
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
i : σ
f g : MvPolynomial σ R
⊢ degreeOf i (f * g) ≤ degreeOf i f + degreeOf i g
state_after: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
i : σ
f g : MvPolynomial σ R
⊢ Multiset.count i (f * g).degrees ≤ Multiset.count i f.degrees + Multiset.count i g.degrees

tactic: convert Multiset.count_le_of_le i (degrees_mul f g)
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
i : σ
f g : MvPolynomial σ R
⊢ Multiset.count i (f * g).degrees ≤ Multiset.count i f.degrees + Multiset.count i g.degrees
state_after: case h.e'_4
R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
i : σ
f g : MvPolynomial σ R
⊢ Multiset.count i f.degrees + Multiset.count i g.degrees = Multiset.count i (f.degrees + g.degrees)

tactic: rw [Multiset.count_add]
state_before: case h.e'_4
R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
i : σ
f g : MvPolynomial σ R
⊢ Multiset.count i f.degrees + Multiset.count i g.degrees = Multiset.count i (f.degrees + g.degrees)
state_after: no goals

tactic: rw [degreeOf]
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
i : σ
f g : MvPolynomial σ R
⊢ Multiset.count i (f * g).degrees ≤ Multiset.count i f.degrees + degreeOf i g
state_after: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
i : σ
f g : MvPolynomial σ R
⊢ Multiset.count i (f * g).degrees ≤ Multiset.count i f.degrees + Multiset.count i g.degrees
Theorem: Nat.fib_add_two_sub_fib_add_one
File: Mathlib/Data/Nat/Fib/Basic.lean

tactic: rw [fib_add_two, add_tsub_cancel_right]
state_before: n : ℕ
⊢ fib (n + 2) - fib (n + 1) = fib n
state_after: no goals
Theorem: WeierstrassCurve.Affine.map_equation
File: Mathlib/AlgebraicGeometry/EllipticCurve/Affine.lean

tactic: simp only [Equation, map_polynomial, map_mapRingHom_evalEval, map_eq_zero_iff f hf]
state_before: R : Type u
inst✝¹ : CommRing R
W : Affine R
S : Type v
inst✝ : CommRing S
f : R →+* S
hf : Function.Injective ⇑f
x y : R
⊢ (map W f).toAffine.Equation (f x) (f y) ↔ W.Equation x y
state_after: no goals
Theorem: AlgebraicGeometry.isReduced_of_isReduced_stalk
File: Mathlib/AlgebraicGeometry/Properties.lean

tactic: refine ⟨fun U => ⟨fun s hs => ?_⟩⟩
state_before: X : Scheme
inst✝ : ∀ (x : ↑↑X.toPresheafedSpace), _root_.IsReduced ↑(X.presheaf.stalk x)
⊢ IsReduced X
state_after: X : Scheme
inst✝ : ∀ (x : ↑↑X.toPresheafedSpace), _root_.IsReduced ↑(X.presheaf.stalk x)
U : Opens ↑↑X.toPresheafedSpace
s : ↑Γ(X, U)
hs : IsNilpotent s
⊢ s = 0

tactic: apply Presheaf.section_ext X.sheaf U s 0
state_before: X : Scheme
inst✝ : ∀ (x : ↑↑X.toPresheafedSpace), _root_.IsReduced ↑(X.presheaf.stalk x)
U : Opens ↑↑X.toPresheafedSpace
s : ↑Γ(X, U)
hs : IsNilpotent s
⊢ s = 0
state_after: X : Scheme
inst✝ : ∀ (x : ↑↑X.toPresheafedSpace), _root_.IsReduced ↑(X.presheaf.stalk x)
U : Opens ↑↑X.toPresheafedSpace
s : ↑Γ(X, U)
hs : IsNilpotent s
⊢ ∀ (x : ↥U), (X.sheaf.presheaf.germ x) s = (X.sheaf.presheaf.germ x) 0

tactic: intro x
state_before: X : Scheme
inst✝ : ∀ (x : ↑↑X.toPresheafedSpace), _root_.IsReduced ↑(X.presheaf.stalk x)
U : Opens ↑↑X.toPresheafedSpace
s : ↑Γ(X, U)
hs : IsNilpotent s
⊢ ∀ (x : ↥U), (X.sheaf.presheaf.germ x) s = (X.sheaf.presheaf.germ x) 0
state_after: X : Scheme
inst✝ : ∀ (x : ↑↑X.toPresheafedSpace), _root_.IsReduced ↑(X.presheaf.stalk x)
U : Opens ↑↑X.toPresheafedSpace
s : ↑Γ(X, U)
hs : IsNilpotent s
x : ↥U
⊢ (X.sheaf.presheaf.germ x) s = (X.sheaf.presheaf.germ x) 0

tactic: rw [RingHom.map_zero]
state_before: X : Scheme
inst✝ : ∀ (x : ↑↑X.toPresheafedSpace), _root_.IsReduced ↑(X.presheaf.stalk x)
U : Opens ↑↑X.toPresheafedSpace
s : ↑Γ(X, U)
hs : IsNilpotent s
x : ↥U
⊢ (X.sheaf.presheaf.germ x) s = (X.sheaf.presheaf.germ x) 0
state_after: X : Scheme
inst✝ : ∀ (x : ↑↑X.toPresheafedSpace), _root_.IsReduced ↑(X.presheaf.stalk x)
U : Opens ↑↑X.toPresheafedSpace
s : ↑Γ(X, U)
hs : IsNilpotent s
x : ↥U
⊢ (X.sheaf.presheaf.germ x) s = 0

tactic: change X.presheaf.germ x s = 0
state_before: X : Scheme
inst✝ : ∀ (x : ↑↑X.toPresheafedSpace), _root_.IsReduced ↑(X.presheaf.stalk x)
U : Opens ↑↑X.toPresheafedSpace
s : ↑Γ(X, U)
hs : IsNilpotent s
x : ↥U
⊢ (X.sheaf.presheaf.germ x) s = 0
state_after: X : Scheme
inst✝ : ∀ (x : ↑↑X.toPresheafedSpace), _root_.IsReduced ↑(X.presheaf.stalk x)
U : Opens ↑↑X.toPresheafedSpace
s : ↑Γ(X, U)
hs : IsNilpotent s
x : ↥U
⊢ (X.presheaf.germ x) s = 0

tactic: exact (hs.map _).eq_zero
state_before: X : Scheme
inst✝ : ∀ (x : ↑↑X.toPresheafedSpace), _root_.IsReduced ↑(X.presheaf.stalk x)
U : Opens ↑↑X.toPresheafedSpace
s : ↑Γ(X, U)
hs : IsNilpotent s
x : ↥U
⊢ (X.presheaf.germ x) s = 0
state_after: no goals
Theorem: ValuationSubring.ofPrime_valuation_eq_one_iff_mem_primeCompl
File: Mathlib/RingTheory/Valuation/ValuationSubring.lean

tactic: rw [← IsLocalization.AtPrime.isUnit_to_map_iff (A.ofPrime P) P x, valuation_eq_one_iff]
state_before: K : Type u
inst✝¹ : Field K
A✝ A : ValuationSubring K
P : Ideal ↥A
inst✝ : P.IsPrime
x : ↥A
⊢ (A.ofPrime P).valuation ↑x = 1 ↔ x ∈ P.primeCompl
state_after: K : Type u
inst✝¹ : Field K
A✝ A : ValuationSubring K
P : Ideal ↥A
inst✝ : P.IsPrime
x : ↥A
⊢ (A.ofPrime P).valuation ↑x = 1 ↔ (A.ofPrime P).valuation ↑((algebraMap ↥A ↥(A.ofPrime P)) x) = 1

tactic: rfl
state_before: K : Type u
inst✝¹ : Field K
A✝ A : ValuationSubring K
P : Ideal ↥A
inst✝ : P.IsPrime
x : ↥A
⊢ (A.ofPrime P).valuation ↑x = 1 ↔ (A.ofPrime P).valuation ↑((algebraMap ↥A ↥(A.ofPrime P)) x) = 1
state_after: no goals
Theorem: MeasureTheory.ae_restrict_biUnion_eq
File: Mathlib/MeasureTheory/Measure/Restrict.lean

tactic: haveI := ht.to_subtype
state_before: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t✝ : Set α
s : ι → Set α
t : Set ι
ht : t.Countable
⊢ ae (μ.restrict (⋃ i ∈ t, s i)) = ⨆ i ∈ t, ae (μ.restrict (s i))
state_after: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t✝ : Set α
s : ι → Set α
t : Set ι
ht : t.Countable
this : Countable ↑t
⊢ ae (μ.restrict (⋃ i ∈ t, s i)) = ⨆ i ∈ t, ae (μ.restrict (s i))

tactic: rw [biUnion_eq_iUnion, ae_restrict_iUnion_eq, ← iSup_subtype'']
state_before: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t✝ : Set α
s : ι → Set α
t : Set ι
ht : t.Countable
this : Countable ↑t
⊢ ae (μ.restrict (⋃ i ∈ t, s i)) = ⨆ i ∈ t, ae (μ.restrict (s i))
state_after: no goals
Theorem: SimpleGraph.incidence_other_prop
File: Mathlib/Combinatorics/SimpleGraph/Basic.lean

tactic: cases' h with he hv
state_before: ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v✝ w : V
e✝ : Sym2 V
inst✝ : DecidableEq V
v : V
e : Sym2 V
h : e ∈ G.incidenceSet v
⊢ G.otherVertexOfIncident h ∈ G.neighborSet v
state_after: case intro
ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v✝ w : V
e✝ : Sym2 V
inst✝ : DecidableEq V
v : V
e : Sym2 V
he : e ∈ G.edgeSet
hv : v ∈ e
⊢ G.otherVertexOfIncident ⋯ ∈ G.neighborSet v

tactic: rwa [← Sym2.other_spec' hv, mem_edgeSet] at he
state_before: case intro
ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v✝ w : V
e✝ : Sym2 V
inst✝ : DecidableEq V
v : V
e : Sym2 V
he : e ∈ G.edgeSet
hv : v ∈ e
⊢ G.otherVertexOfIncident ⋯ ∈ G.neighborSet v
state_after: no goals
Theorem: Real.Angle.cos_eq_zero_iff
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: rw [← cos_pi_div_two, ← cos_coe, cos_eq_iff_eq_or_eq_neg, ← coe_neg, ← neg_div]
state_before: θ : Angle
⊢ θ.cos = 0 ↔ θ = ↑(π / 2) ∨ θ = ↑(-π / 2)
state_after: no goals
Theorem: Matrix.diagonal_add
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext i j
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : DecidableEq n
inst✝ : AddZeroClass α
d₁ d₂ : n → α
⊢ diagonal d₁ + diagonal d₂ = diagonal fun i => d₁ i + d₂ i
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : DecidableEq n
inst✝ : AddZeroClass α
d₁ d₂ : n → α
i j : n
⊢ (diagonal d₁ + diagonal d₂) i j = diagonal (fun i => d₁ i + d₂ i) i j

tactic: by_cases h : i = j <;>
simp [h]
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : DecidableEq n
inst✝ : AddZeroClass α
d₁ d₂ : n → α
i j : n
⊢ (diagonal d₁ + diagonal d₂) i j = diagonal (fun i => d₁ i + d₂ i) i j
state_after: no goals
Theorem: OrderTop.ext_top
File: Mathlib/Order/BoundedOrder.lean

tactic: cases PartialOrder.ext H
state_before: α✝ : Type u
β : Type v
γ : Type u_1
δ : Type u_2
α : Type u_3
hA : PartialOrder α
A : OrderTop α
hB : PartialOrder α
B : OrderTop α
H : ∀ (x y : α), x ≤ y ↔ x ≤ y
⊢ ⊤ = ⊤
state_after: case refl
α✝ : Type u
β : Type v
γ : Type u_1
δ : Type u_2
α : Type u_3
hA : PartialOrder α
A B : OrderTop α
H : ∀ (x y : α), x ≤ y ↔ x ≤ y
⊢ ⊤ = ⊤

tactic: apply top_unique
state_before: case refl
α✝ : Type u
β : Type v
γ : Type u_1
δ : Type u_2
α : Type u_3
hA : PartialOrder α
A B : OrderTop α
H : ∀ (x y : α), x ≤ y ↔ x ≤ y
⊢ ⊤ = ⊤
state_after: case refl.h
α✝ : Type u
β : Type v
γ : Type u_1
δ : Type u_2
α : Type u_3
hA : PartialOrder α
A B : OrderTop α
H : ∀ (x y : α), x ≤ y ↔ x ≤ y
⊢ ⊤ ≤ ⊤

tactic: exact @le_top _ _ A _
state_before: case refl.h
α✝ : Type u
β : Type v
γ : Type u_1
δ : Type u_2
α : Type u_3
hA : PartialOrder α
A B : OrderTop α
H : ∀ (x y : α), x ≤ y ↔ x ≤ y
⊢ ⊤ ≤ ⊤
state_after: no goals
Theorem: Polynomial.sum_add_index
File: Mathlib/Algebra/Polynomial/Basic.lean

tactic: rw [show p + q = ⟨p.toFinsupp + q.toFinsupp⟩ from add_def p q]
state_before: R : Type u
a b : R
m n : ℕ
inst✝¹ : Semiring R
p✝ q✝ : R[X]
S : Type u_1
inst✝ : AddCommMonoid S
p q : R[X]
f : ℕ → R → S
hf : ∀ (i : ℕ), f i 0 = 0
h_add : ∀ (a : ℕ) (b₁ b₂ : R), f a (b₁ + b₂) = f a b₁ + f a b₂
⊢ (p + q).sum f = p.sum f + q.sum f
state_after: R : Type u
a b : R
m n : ℕ
inst✝¹ : Semiring R
p✝ q✝ : R[X]
S : Type u_1
inst✝ : AddCommMonoid S
p q : R[X]
f : ℕ → R → S
hf : ∀ (i : ℕ), f i 0 = 0
h_add : ∀ (a : ℕ) (b₁ b₂ : R), f a (b₁ + b₂) = f a b₁ + f a b₂
⊢ { toFinsupp := p.toFinsupp + q.toFinsupp }.sum f = p.sum f + q.sum f

tactic: exact Finsupp.sum_add_index (fun i _ ↦ hf i) (fun a _ b₁ b₂ ↦ h_add a b₁ b₂)
state_before: R : Type u
a b : R
m n : ℕ
inst✝¹ : Semiring R
p✝ q✝ : R[X]
S : Type u_1
inst✝ : AddCommMonoid S
p q : R[X]
f : ℕ → R → S
hf : ∀ (i : ℕ), f i 0 = 0
h_add : ∀ (a : ℕ) (b₁ b₂ : R), f a (b₁ + b₂) = f a b₁ + f a b₂
⊢ { toFinsupp := p.toFinsupp + q.toFinsupp }.sum f = p.sum f + q.sum f
state_after: no goals
Theorem: Doset.union_quotToDoset
File: Mathlib/GroupTheory/DoubleCoset.lean

tactic: ext x
state_before: G : Type u_1
inst✝¹ : Group G
α : Type u_2
inst✝ : Mul α
J : Subgroup G
g : G
H K : Subgroup G
⊢ ⋃ q, quotToDoset H K q = Set.univ
state_after: case h
G : Type u_1
inst✝¹ : Group G
α : Type u_2
inst✝ : Mul α
J : Subgroup G
g : G
H K : Subgroup G
x : G
⊢ x ∈ ⋃ q, quotToDoset H K q ↔ x ∈ Set.univ

tactic: simp only [Set.mem_iUnion, quotToDoset, mem_doset, SetLike.mem_coe, exists_prop, Set.mem_univ,
  iff_true_iff]
state_before: case h
G : Type u_1
inst✝¹ : Group G
α : Type u_2
inst✝ : Mul α
J : Subgroup G
g : G
H K : Subgroup G
x : G
⊢ x ∈ ⋃ q, quotToDoset H K q ↔ x ∈ Set.univ
state_after: case h
G : Type u_1
inst✝¹ : Group G
α : Type u_2
inst✝ : Mul α
J : Subgroup G
g : G
H K : Subgroup G
x : G
⊢ ∃ i, ∃ x_1 ∈ H, ∃ y ∈ K, x = x_1 * Quotient.out' i * y

tactic: use mk H K x
state_before: case h
G : Type u_1
inst✝¹ : Group G
α : Type u_2
inst✝ : Mul α
J : Subgroup G
g : G
H K : Subgroup G
x : G
⊢ ∃ i, ∃ x_1 ∈ H, ∃ y ∈ K, x = x_1 * Quotient.out' i * y
state_after: case h
G : Type u_1
inst✝¹ : Group G
α : Type u_2
inst✝ : Mul α
J : Subgroup G
g : G
H K : Subgroup G
x : G
⊢ ∃ x_1 ∈ H, ∃ y ∈ K, x = x_1 * Quotient.out' (mk H K x) * y

tactic: obtain ⟨h, k, h3, h4, h5⟩ := mk_out'_eq_mul H K x
state_before: case h
G : Type u_1
inst✝¹ : Group G
α : Type u_2
inst✝ : Mul α
J : Subgroup G
g : G
H K : Subgroup G
x : G
⊢ ∃ x_1 ∈ H, ∃ y ∈ K, x = x_1 * Quotient.out' (mk H K x) * y
state_after: case h.intro.intro.intro.intro
G : Type u_1
inst✝¹ : Group G
α : Type u_2
inst✝ : Mul α
J : Subgroup G
g : G
H K : Subgroup G
x h k : G
h3 : h ∈ H
h4 : k ∈ K
h5 : Quotient.out' (mk H K x) = h * x * k
⊢ ∃ x_1 ∈ H, ∃ y ∈ K, x = x_1 * Quotient.out' (mk H K x) * y

tactic: refine ⟨h⁻¹, H.inv_mem h3, k⁻¹, K.inv_mem h4, ?_⟩
state_before: case h.intro.intro.intro.intro
G : Type u_1
inst✝¹ : Group G
α : Type u_2
inst✝ : Mul α
J : Subgroup G
g : G
H K : Subgroup G
x h k : G
h3 : h ∈ H
h4 : k ∈ K
h5 : Quotient.out' (mk H K x) = h * x * k
⊢ ∃ x_1 ∈ H, ∃ y ∈ K, x = x_1 * Quotient.out' (mk H K x) * y
state_after: case h.intro.intro.intro.intro
G : Type u_1
inst✝¹ : Group G
α : Type u_2
inst✝ : Mul α
J : Subgroup G
g : G
H K : Subgroup G
x h k : G
h3 : h ∈ H
h4 : k ∈ K
h5 : Quotient.out' (mk H K x) = h * x * k
⊢ x = h⁻¹ * Quotient.out' (mk H K x) * k⁻¹

tactic: simp only [h5, Subgroup.coe_mk, ← mul_assoc, one_mul, mul_left_inv, mul_inv_cancel_right]
state_before: case h.intro.intro.intro.intro
G : Type u_1
inst✝¹ : Group G
α : Type u_2
inst✝ : Mul α
J : Subgroup G
g : G
H K : Subgroup G
x h k : G
h3 : h ∈ H
h4 : k ∈ K
h5 : Quotient.out' (mk H K x) = h * x * k
⊢ x = h⁻¹ * Quotient.out' (mk H K x) * k⁻¹
state_after: no goals
Theorem: CochainComplex.HomComplex.Cochain.shift_add
File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplexShift.lean

tactic: ext p q hpq
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n : ℤ
γ γ₁ γ₂ : Cochain K L n
a : ℤ
⊢ (γ₁ + γ₂).shift a = γ₁.shift a + γ₂.shift a
state_after: case h
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n : ℤ
γ γ₁ γ₂ : Cochain K L n
a p q : ℤ
hpq : p + n = q
⊢ ((γ₁ + γ₂).shift a).v p q hpq = (γ₁.shift a + γ₂.shift a).v p q hpq

tactic: simp [shift_v']
state_before: case h
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n : ℤ
γ γ₁ γ₂ : Cochain K L n
a p q : ℤ
hpq : p + n = q
⊢ ((γ₁ + γ₂).shift a).v p q hpq = (γ₁.shift a + γ₂.shift a).v p q hpq
state_after: no goals
Theorem: Orientation.oangle_sign_sub_right_swap
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Basic.lean

tactic: rw [oangle_sign_sub_right_eq_neg, o.oangle_rev y x, Real.Angle.sign_neg]
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
⊢ (o.oangle y (y - x)).sign = (o.oangle x y).sign
state_after: no goals
Theorem: Nat.pred_one_add
File: Mathlib/Data/Nat/Defs.lean

tactic: rw [Nat.add_comm, add_one, Nat.pred_succ]
state_before: a b c d m n✝ k : ℕ
p q : ℕ → Prop
n : ℕ
⊢ (1 + n).pred = n
state_after: no goals
Theorem: Real.arccos_one
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Inverse.lean

tactic: simp [arccos]
state_before: x y : ℝ
⊢ arccos 1 = 0
state_after: no goals
Theorem: round_eq_zero_iff
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [round_eq, floor_eq_zero_iff, add_mem_Ico_iff_left]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
x : α
⊢ round x = 0 ↔ x ∈ Ico (-(1 / 2)) (1 / 2)
state_after: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
x : α
⊢ x ∈ Ico (0 - 1 / 2) (1 - 1 / 2) ↔ x ∈ Ico (-(1 / 2)) (1 / 2)

tactic: norm_num
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
x : α
⊢ x ∈ Ico (0 - 1 / 2) (1 - 1 / 2) ↔ x ∈ Ico (-(1 / 2)) (1 / 2)
state_after: no goals
Theorem: antivaryOn_iff_mul_rearrangement
File: Mathlib/Algebra/Order/Monovary.lean

tactic: simp only [smul_eq_mul, antivaryOn_iff_smul_rearrangement]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedRing α
f g : ι → α
s : Set ι
a b c d : α
⊢ AntivaryOn f g s ↔ ∀ ⦃i : ι⦄, i ∈ s → ∀ ⦃j : ι⦄, j ∈ s → f i * g i + f j * g j ≤ f i * g j + f j * g i
state_after: no goals
Theorem: isLUB_biSup
File: Mathlib/Order/CompleteLattice.lean

tactic: simpa only [range_comp, Subtype.range_coe, iSup_subtype'] using
  @isLUB_iSup α s _ (f ∘ fun x => (x : β))
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f✝ g s✝ t : ι → α
a b : α
s : Set β
f : β → α
⊢ IsLUB (f '' s) (⨆ x ∈ s, f x)
state_after: no goals
Theorem: LinearMap.BilinForm.span_singleton_sup_orthogonal_eq_top
File: Mathlib/LinearAlgebra/BilinearForm/Orthogonal.lean

tactic: rw [orthogonal_span_singleton_eq_toLin_ker]
state_before: R : Type u_1
M : Type u_2
inst✝⁸ : CommSemiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁵ : CommRing R₁
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
N L : Submodule R M
B : BilinForm K V
x : V
hx : ¬B.IsOrtho x x
⊢ Submodule.span K {x} ⊔ B.orthogonal (Submodule.span K {x}) = ⊤
state_after: R : Type u_1
M : Type u_2
inst✝⁸ : CommSemiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁵ : CommRing R₁
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
N L : Submodule R M
B : BilinForm K V
x : V
hx : ¬B.IsOrtho x x
⊢ Submodule.span K {x} ⊔ ker (B.toLinHomAux₁ x) = ⊤

tactic: exact LinearMap.span_singleton_sup_ker_eq_top _ hx
state_before: R : Type u_1
M : Type u_2
inst✝⁸ : CommSemiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁵ : CommRing R₁
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
N L : Submodule R M
B : BilinForm K V
x : V
hx : ¬B.IsOrtho x x
⊢ Submodule.span K {x} ⊔ ker (B.toLinHomAux₁ x) = ⊤
state_after: no goals
Theorem: Multiset.range_succ
File: Mathlib/Data/Multiset/Range.lean

tactic: rw [range, List.range_succ, ← coe_add, add_comm]
state_before: n : ℕ
⊢ range n.succ = n ::ₘ range n
state_after: n : ℕ
⊢ ↑[n] + ↑(List.range n) = n ::ₘ range n

tactic: rfl
state_before: n : ℕ
⊢ ↑[n] + ↑(List.range n) = n ::ₘ range n
state_after: no goals
Theorem: Finsupp.erase_idem
File: Mathlib/Data/Finsupp/Defs.lean

tactic: rw [erase_eq_update_zero, erase_eq_update_zero, update_idem]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : Zero M
f : α →₀ M
a : α
⊢ erase a (erase a f) = erase a f
state_after: no goals
Theorem: WithLp.prod_edist_comm
File: Mathlib/Analysis/NormedSpace/ProdLp.lean

tactic: rcases p.trichotomy with (rfl | rfl | h)
state_before: p : ℝ≥0∞
𝕜 : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
f g : WithLp p (α × β)
⊢ edist f g = edist g f
state_after: case inl
𝕜 : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
f g : WithLp 0 (α × β)
⊢ edist f g = edist g f

case inr.inl
𝕜 : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
f g : WithLp ⊤ (α × β)
⊢ edist f g = edist g f

case inr.inr
p : ℝ≥0∞
𝕜 : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
f g : WithLp p (α × β)
h : 0 < p.toReal
⊢ edist f g = edist g f

tactic: simp only [prod_edist_eq_card, edist_comm]
state_before: case inl
𝕜 : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
f g : WithLp 0 (α × β)
⊢ edist f g = edist g f
state_after: no goals

tactic: simp only [prod_edist_eq_sup, edist_comm]
state_before: case inr.inl
𝕜 : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
f g : WithLp ⊤ (α × β)
⊢ edist f g = edist g f
state_after: no goals

tactic: simp only [prod_edist_eq_add h, edist_comm]
state_before: case inr.inr
p : ℝ≥0∞
𝕜 : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
f g : WithLp p (α × β)
h : 0 < p.toReal
⊢ edist f g = edist g f
state_after: no goals
Theorem: isωSup_ωSup
File: Mathlib/Topology/OmegaCompletePartialOrder.lean

tactic: constructor
state_before: α : Type u_1
inst✝ : OmegaCompletePartialOrder α
c : Chain α
⊢ IsωSup c (ωSup c)
state_after: case left
α : Type u_1
inst✝ : OmegaCompletePartialOrder α
c : Chain α
⊢ ∀ (i : ℕ), c i ≤ ωSup c

case right
α : Type u_1
inst✝ : OmegaCompletePartialOrder α
c : Chain α
⊢ ∀ (y : α), (∀ (i : ℕ), c i ≤ y) → ωSup c ≤ y

tactic: apply le_ωSup
state_before: case left
α : Type u_1
inst✝ : OmegaCompletePartialOrder α
c : Chain α
⊢ ∀ (i : ℕ), c i ≤ ωSup c
state_after: no goals

tactic: apply ωSup_le
state_before: case right
α : Type u_1
inst✝ : OmegaCompletePartialOrder α
c : Chain α
⊢ ∀ (y : α), (∀ (i : ℕ), c i ≤ y) → ωSup c ≤ y
state_after: no goals
Theorem: DFinsupp.zipWith_neLocus_eq_right
File: Mathlib/Data/DFinsupp/NeLocus.lean

tactic: ext a
state_before: α : Type u_1
N : α → Type u_2
inst✝⁵ : DecidableEq α
M : α → Type u_3
P : α → Type u_4
inst✝⁴ : (a : α) → Zero (N a)
inst✝³ : (a : α) → Zero (M a)
inst✝² : (a : α) → Zero (P a)
inst✝¹ : (a : α) → DecidableEq (M a)
inst✝ : (a : α) → DecidableEq (P a)
F : (a : α) → M a → N a → P a
F0 : ∀ (a : α), F a 0 0 = 0
f₁ f₂ : Π₀ (a : α), M a
g : Π₀ (a : α), N a
hF : ∀ (a : α) (g : N a), Function.Injective fun f => F a f g
⊢ (zipWith F F0 f₁ g).neLocus (zipWith F F0 f₂ g) = f₁.neLocus f₂
state_after: case a
α : Type u_1
N : α → Type u_2
inst✝⁵ : DecidableEq α
M : α → Type u_3
P : α → Type u_4
inst✝⁴ : (a : α) → Zero (N a)
inst✝³ : (a : α) → Zero (M a)
inst✝² : (a : α) → Zero (P a)
inst✝¹ : (a : α) → DecidableEq (M a)
inst✝ : (a : α) → DecidableEq (P a)
F : (a : α) → M a → N a → P a
F0 : ∀ (a : α), F a 0 0 = 0
f₁ f₂ : Π₀ (a : α), M a
g : Π₀ (a : α), N a
hF : ∀ (a : α) (g : N a), Function.Injective fun f => F a f g
a : α
⊢ a ∈ (zipWith F F0 f₁ g).neLocus (zipWith F F0 f₂ g) ↔ a ∈ f₁.neLocus f₂

tactic: simpa only [mem_neLocus] using (hF a _).ne_iff
state_before: case a
α : Type u_1
N : α → Type u_2
inst✝⁵ : DecidableEq α
M : α → Type u_3
P : α → Type u_4
inst✝⁴ : (a : α) → Zero (N a)
inst✝³ : (a : α) → Zero (M a)
inst✝² : (a : α) → Zero (P a)
inst✝¹ : (a : α) → DecidableEq (M a)
inst✝ : (a : α) → DecidableEq (P a)
F : (a : α) → M a → N a → P a
F0 : ∀ (a : α), F a 0 0 = 0
f₁ f₂ : Π₀ (a : α), M a
g : Π₀ (a : α), N a
hF : ∀ (a : α) (g : N a), Function.Injective fun f => F a f g
a : α
⊢ a ∈ (zipWith F F0 f₁ g).neLocus (zipWith F F0 f₂ g) ↔ a ∈ f₁.neLocus f₂
state_after: no goals