1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: TensorProduct.range_mapIncl_mono
File: Mathlib/LinearAlgebra/TensorProduct/Basic.lean

tactic: simp_rw [range_mapIncl]
state_before: R : Type u_1
inst✝²⁰ : CommSemiring R
R' : Type u_2
inst✝¹⁹ : Monoid R'
R'' : Type u_3
inst✝¹⁸ : Semiring R''
M : Type u_4
N : Type u_5
P : Type u_6
Q : Type u_7
S : Type u_8
T : Type u_9
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : AddCommMonoid N
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : AddCommMonoid Q
inst✝¹³ : AddCommMonoid S
inst✝¹² : AddCommMonoid T
inst✝¹¹ : Module R M
inst✝¹⁰ : Module R N
inst✝⁹ : Module R P
inst✝⁸ : Module R Q
inst✝⁷ : Module R S
inst✝⁶ : Module R T
inst✝⁵ : DistribMulAction R' M
inst✝⁴ : Module R'' M
P' : Type u_10
Q' : Type u_11
inst✝³ : AddCommMonoid P'
inst✝² : Module R P'
inst✝¹ : AddCommMonoid Q'
inst✝ : Module R Q'
p p' : Submodule R P
q q' : Submodule R Q
hp : p ≤ p'
hq : q ≤ q'
⊢ range (mapIncl p q) ≤ range (mapIncl p' q')
state_after: R : Type u_1
inst✝²⁰ : CommSemiring R
R' : Type u_2
inst✝¹⁹ : Monoid R'
R'' : Type u_3
inst✝¹⁸ : Semiring R''
M : Type u_4
N : Type u_5
P : Type u_6
Q : Type u_7
S : Type u_8
T : Type u_9
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : AddCommMonoid N
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : AddCommMonoid Q
inst✝¹³ : AddCommMonoid S
inst✝¹² : AddCommMonoid T
inst✝¹¹ : Module R M
inst✝¹⁰ : Module R N
inst✝⁹ : Module R P
inst✝⁸ : Module R Q
inst✝⁷ : Module R S
inst✝⁶ : Module R T
inst✝⁵ : DistribMulAction R' M
inst✝⁴ : Module R'' M
P' : Type u_10
Q' : Type u_11
inst✝³ : AddCommMonoid P'
inst✝² : Module R P'
inst✝¹ : AddCommMonoid Q'
inst✝ : Module R Q'
p p' : Submodule R P
q q' : Submodule R Q
hp : p ≤ p'
hq : q ≤ q'
⊢ Submodule.span R (Set.image2 (fun x x_1 => x ⊗ₜ[R] x_1) ↑p ↑q) ≤
    Submodule.span R (Set.image2 (fun x x_1 => x ⊗ₜ[R] x_1) ↑p' ↑q')

tactic: exact Submodule.span_mono (Set.image2_subset hp hq)
state_before: R : Type u_1
inst✝²⁰ : CommSemiring R
R' : Type u_2
inst✝¹⁹ : Monoid R'
R'' : Type u_3
inst✝¹⁸ : Semiring R''
M : Type u_4
N : Type u_5
P : Type u_6
Q : Type u_7
S : Type u_8
T : Type u_9
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : AddCommMonoid N
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : AddCommMonoid Q
inst✝¹³ : AddCommMonoid S
inst✝¹² : AddCommMonoid T
inst✝¹¹ : Module R M
inst✝¹⁰ : Module R N
inst✝⁹ : Module R P
inst✝⁸ : Module R Q
inst✝⁷ : Module R S
inst✝⁶ : Module R T
inst✝⁵ : DistribMulAction R' M
inst✝⁴ : Module R'' M
P' : Type u_10
Q' : Type u_11
inst✝³ : AddCommMonoid P'
inst✝² : Module R P'
inst✝¹ : AddCommMonoid Q'
inst✝ : Module R Q'
p p' : Submodule R P
q q' : Submodule R Q
hp : p ≤ p'
hq : q ≤ q'
⊢ Submodule.span R (Set.image2 (fun x x_1 => x ⊗ₜ[R] x_1) ↑p ↑q) ≤
    Submodule.span R (Set.image2 (fun x x_1 => x ⊗ₜ[R] x_1) ↑p' ↑q')
state_after: no goals
Theorem: SimpleGraph.le_comap_of_subsingleton
File: Mathlib/Combinatorics/SimpleGraph/Maps.lean

tactic: intros v w
state_before: V : Type u_1
W : Type u_2
X : Type u_3
G : SimpleGraph V
G' : SimpleGraph W
u v : V
f : V → W
inst✝ : Subsingleton V
⊢ G ≤ SimpleGraph.comap f G'
state_after: V : Type u_1
W : Type u_2
X : Type u_3
G : SimpleGraph V
G' : SimpleGraph W
u v✝ : V
f : V → W
inst✝ : Subsingleton V
v w : V
⊢ G.Adj v w → (SimpleGraph.comap f G').Adj v w

tactic: simp [Subsingleton.elim v w]
state_before: V : Type u_1
W : Type u_2
X : Type u_3
G : SimpleGraph V
G' : SimpleGraph W
u v✝ : V
f : V → W
inst✝ : Subsingleton V
v w : V
⊢ G.Adj v w → (SimpleGraph.comap f G').Adj v w
state_after: no goals
Theorem: cfcₙ_comp_neg
File: Mathlib/Topology/ContinuousFunction/NonUnitalFunctionalCalculus.lean

tactic: rw [cfcₙ_comp' .., cfcₙ_neg_id _]
state_before: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹³ : CommRing R
inst✝¹² : Nontrivial R
inst✝¹¹ : StarRing R
inst✝¹⁰ : MetricSpace R
inst✝⁹ : TopologicalRing R
inst✝⁸ : ContinuousStar R
inst✝⁷ : TopologicalSpace A
inst✝⁶ : NonUnitalRing A
inst✝⁵ : StarRing A
inst✝⁴ : Module R A
inst✝³ : IsScalarTower R A A
inst✝² : SMulCommClass R A A
inst✝¹ : NonUnitalContinuousFunctionalCalculus R p
f g : R → R
a : A
hf✝ : autoParam (ContinuousOn f (σₙ R a)) _auto✝
hf0 : autoParam (f 0 = 0) _auto✝
hg : autoParam (ContinuousOn g (σₙ R a)) _auto✝
hg0 : autoParam (g 0 = 0) _auto✝
inst✝ : UniqueNonUnitalContinuousFunctionalCalculus R A
hf : autoParam (ContinuousOn f ((fun x => -x) '' σₙ R a)) _auto✝
h0 : autoParam (f 0 = 0) _auto✝
ha : autoParam (p a) _auto✝
⊢ cfcₙ (fun x => f (-x)) a = cfcₙ f (-a)
state_after: no goals
Theorem: Stirling.stirlingSeq'_bounded_by_pos_constant
File: Mathlib/Analysis/SpecialFunctions/Stirling.lean

tactic: cases' log_stirlingSeq_bounded_by_constant with c h
state_before: ⊢ ∃ a, 0 < a ∧ ∀ (n : ℕ), a ≤ stirlingSeq (n + 1)
state_after: case intro
c : ℝ
h : ∀ (n : ℕ), c ≤ Real.log (stirlingSeq (n + 1))
⊢ ∃ a, 0 < a ∧ ∀ (n : ℕ), a ≤ stirlingSeq (n + 1)

tactic: refine ⟨exp c, exp_pos _, fun n => ?_⟩
state_before: case intro
c : ℝ
h : ∀ (n : ℕ), c ≤ Real.log (stirlingSeq (n + 1))
⊢ ∃ a, 0 < a ∧ ∀ (n : ℕ), a ≤ stirlingSeq (n + 1)
state_after: case intro
c : ℝ
h : ∀ (n : ℕ), c ≤ Real.log (stirlingSeq (n + 1))
n : ℕ
⊢ rexp c ≤ stirlingSeq (n + 1)

tactic: rw [← le_log_iff_exp_le (stirlingSeq'_pos n)]
state_before: case intro
c : ℝ
h : ∀ (n : ℕ), c ≤ Real.log (stirlingSeq (n + 1))
n : ℕ
⊢ rexp c ≤ stirlingSeq (n + 1)
state_after: case intro
c : ℝ
h : ∀ (n : ℕ), c ≤ Real.log (stirlingSeq (n + 1))
n : ℕ
⊢ c ≤ Real.log (stirlingSeq (n + 1))

tactic: exact h n
state_before: case intro
c : ℝ
h : ∀ (n : ℕ), c ≤ Real.log (stirlingSeq (n + 1))
n : ℕ
⊢ c ≤ Real.log (stirlingSeq (n + 1))
state_after: no goals
Theorem: AffineSubspace.direction_top
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: cases' S.nonempty with p
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
p₁ p₂ : P
⊢ ⊤.direction = ⊤
state_after: case intro
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
p₁ p₂ p : P
⊢ ⊤.direction = ⊤

tactic: ext v
state_before: case intro
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
p₁ p₂ p : P
⊢ ⊤.direction = ⊤
state_after: case intro.h
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
p₁ p₂ p : P
v : V
⊢ v ∈ ⊤.direction ↔ v ∈ ⊤

tactic: refine ⟨imp_intro Submodule.mem_top, fun _hv => ?_⟩
state_before: case intro.h
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
p₁ p₂ p : P
v : V
⊢ v ∈ ⊤.direction ↔ v ∈ ⊤
state_after: case intro.h
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
p₁ p₂ p : P
v : V
_hv : v ∈ ⊤
⊢ v ∈ ⊤.direction

tactic: have hpv : (v +ᵥ p -ᵥ p : V) ∈ (⊤ : AffineSubspace k P).direction :=
  vsub_mem_direction (mem_top k V _) (mem_top k V _)
state_before: case intro.h
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
p₁ p₂ p : P
v : V
_hv : v ∈ ⊤
⊢ v ∈ ⊤.direction
state_after: case intro.h
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
p₁ p₂ p : P
v : V
_hv : v ∈ ⊤
hpv : v +ᵥ p -ᵥ p ∈ ⊤.direction
⊢ v ∈ ⊤.direction

tactic: rwa [vadd_vsub] at hpv
state_before: case intro.h
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
p₁ p₂ p : P
v : V
_hv : v ∈ ⊤
hpv : v +ᵥ p -ᵥ p ∈ ⊤.direction
⊢ v ∈ ⊤.direction
state_after: no goals
Theorem: symmDiff_right_comm
File: Mathlib/Order/SymmDiff.lean

tactic: simp_rw [symmDiff_assoc, symmDiff_comm]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : GeneralizedBooleanAlgebra α
a b c d : α
⊢ a ∆ b ∆ c = a ∆ c ∆ b
state_after: no goals
Theorem: mabs_div_eq_leOnePart_sq
File: Mathlib/Algebra/Order/Group/PosPart.lean

tactic: rw [sq, ← mul_div_div_cancel, oneLePart_mul_leOnePart, oneLePart_div_leOnePart]
state_before: α : Type u_1
β : Type u_2
inst✝³ inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ mabs a / a = a⁻ᵐ ^ 2
state_after: no goals
Theorem: MeasureTheory.lintegral_mul_right_eq_self
File: Mathlib/MeasureTheory/Group/LIntegral.lean

tactic: convert (lintegral_map_equiv f <| MeasurableEquiv.mulRight g).symm using 1
state_before: G : Type u_1
inst✝³ : MeasurableSpace G
μ : Measure G
g✝ : G
inst✝² : Group G
inst✝¹ : MeasurableMul G
inst✝ : μ.IsMulRightInvariant
f : G → ℝ≥0∞
g : G
⊢ ∫⁻ (x : G), f (x * g) ∂μ = ∫⁻ (x : G), f x ∂μ
state_after: case h.e'_3
G : Type u_1
inst✝³ : MeasurableSpace G
μ : Measure G
g✝ : G
inst✝² : Group G
inst✝¹ : MeasurableMul G
inst✝ : μ.IsMulRightInvariant
f : G → ℝ≥0∞
g : G
⊢ ∫⁻ (x : G), f x ∂μ = ∫⁻ (a : G), f a ∂map (⇑(MeasurableEquiv.mulRight g)) μ

tactic: simp [map_mul_right_eq_self μ g]
state_before: case h.e'_3
G : Type u_1
inst✝³ : MeasurableSpace G
μ : Measure G
g✝ : G
inst✝² : Group G
inst✝¹ : MeasurableMul G
inst✝ : μ.IsMulRightInvariant
f : G → ℝ≥0∞
g : G
⊢ ∫⁻ (x : G), f x ∂μ = ∫⁻ (a : G), f a ∂map (⇑(MeasurableEquiv.mulRight g)) μ
state_after: no goals
Theorem: PMF.toMeasure_eq_iff_eq_toPMF
File: Mathlib/Probability/ProbabilityMassFunction/Basic.lean

tactic: rw [← toMeasure_inj, Measure.toPMF_toMeasure]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁴ : Countable α
inst✝³ : MeasurableSpace α
inst✝² : MeasurableSingletonClass α
p : PMF α
μ✝ : Measure α
inst✝¹ : IsProbabilityMeasure μ✝
μ : Measure α
inst✝ : IsProbabilityMeasure μ
⊢ p.toMeasure = μ ↔ p = μ.toPMF
state_after: no goals
Theorem: Module.End.eq_zero_of_isNilpotent_isSemisimple
File: Mathlib/LinearAlgebra/Semisimple.lean

tactic: have ⟨n, h0⟩ := hn
state_before: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f g : End R M
hn : IsNilpotent f
hs : f.IsSemisimple
⊢ f = 0
state_after: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f g : End R M
hn : IsNilpotent f
hs : f.IsSemisimple
n : ℕ
h0 : f ^ n = 0
⊢ f = 0

tactic: rw [← aeval_X (R := R) f]
state_before: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f g : End R M
hn : IsNilpotent f
hs : f.IsSemisimple
n : ℕ
h0 : f ^ n = 0
⊢ f = 0
state_after: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f g : End R M
hn : IsNilpotent f
hs : f.IsSemisimple
n : ℕ
h0 : f ^ n = 0
⊢ (aeval f) X = 0

tactic: rw [← aeval_X_pow (R := R) f] at h0
state_before: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f g : End R M
hn : IsNilpotent f
hs : f.IsSemisimple
n : ℕ
h0 : f ^ n = 0
⊢ (aeval f) X = 0
state_after: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f g : End R M
hn : IsNilpotent f
hs : f.IsSemisimple
n : ℕ
h0 : (aeval f) (X ^ n) = 0
⊢ (aeval f) X = 0

tactic: rw [← RingHom.mem_ker, ← AEval.annihilator_eq_ker_aeval (M := M)] at h0 ⊢
state_before: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f g : End R M
hn : IsNilpotent f
hs : f.IsSemisimple
n : ℕ
h0 : (aeval f) (X ^ n) = 0
⊢ (aeval f) X = 0
state_after: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f g : End R M
hn : IsNilpotent f
hs : f.IsSemisimple
n : ℕ
h0 : X ^ n ∈ annihilator R[X] (AEval R M f)
⊢ X ∈ annihilator R[X] (AEval R M f)

tactic: exact hs.annihilator_isRadical ⟨n, h0⟩
state_before: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f g : End R M
hn : IsNilpotent f
hs : f.IsSemisimple
n : ℕ
h0 : X ^ n ∈ annihilator R[X] (AEval R M f)
⊢ X ∈ annihilator R[X] (AEval R M f)
state_after: no goals
Theorem: CategoryTheory.Limits.PullbackCone.equalizer_ext
File: Mathlib/CategoryTheory/Limits/Shapes/Pullbacks.lean

tactic: rw [← t.w inl, reassoc_of% h₀]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
W✝ X Y Z : C
f : X ⟶ Z
g : Y ⟶ Z
t : PullbackCone f g
W : C
k l : W ⟶ t.pt
h₀ : k ≫ t.fst = l ≫ t.fst
h₁ : k ≫ t.snd = l ≫ t.snd
⊢ k ≫ t.π.app none = l ≫ t.π.app none
state_after: no goals
Theorem: Directed.iSup_inf_eq
File: Mathlib/Order/CompactlyGenerated/Basic.lean

tactic: rw [iSup, h.directedOn_range.sSup_inf_eq, iSup_range]
state_before: ι : Sort u_1
α : Type u_2
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : CompleteLattice α
inst✝ : IsCompactlyGenerated α
a b : α
s : Set α
h : Directed (fun x x_1 => x ≤ x_1) f
⊢ (⨆ i, f i) ⊓ a = ⨆ i, f i ⊓ a
state_after: no goals
Theorem: RatFunc.denom_mul_dvd
File: Mathlib/FieldTheory/RatFunc/Basic.lean

tactic: rw [denom_dvd (mul_ne_zero (denom_ne_zero x) (denom_ne_zero y))]
state_before: K : Type u
inst✝ : Field K
x y : RatFunc K
⊢ (x * y).denom ∣ x.denom * y.denom
state_after: K : Type u
inst✝ : Field K
x y : RatFunc K
⊢ ∃ p, x * y = (algebraMap K[X] (RatFunc K)) p / (algebraMap K[X] (RatFunc K)) (x.denom * y.denom)

tactic: refine ⟨x.num * y.num, ?_⟩
state_before: K : Type u
inst✝ : Field K
x y : RatFunc K
⊢ ∃ p, x * y = (algebraMap K[X] (RatFunc K)) p / (algebraMap K[X] (RatFunc K)) (x.denom * y.denom)
state_after: K : Type u
inst✝ : Field K
x y : RatFunc K
⊢ x * y = (algebraMap K[X] (RatFunc K)) (x.num * y.num) / (algebraMap K[X] (RatFunc K)) (x.denom * y.denom)

tactic: rw [RingHom.map_mul, RingHom.map_mul, ← div_mul_div_comm, num_div_denom, num_div_denom]
state_before: K : Type u
inst✝ : Field K
x y : RatFunc K
⊢ x * y = (algebraMap K[X] (RatFunc K)) (x.num * y.num) / (algebraMap K[X] (RatFunc K)) (x.denom * y.denom)
state_after: no goals
Theorem: Set.coe_subset
File: Mathlib/Data/Set/Functor.lean

tactic: intro _ ⟨_, ⟨⟨⟨_, ha⟩, rfl⟩, _, ⟨_, rfl⟩, _⟩⟩
state_before: α β✝ : Type u
s : Set α
f : α → Set β✝
g : Set (α → β✝)
β : Set α
γ : Set ↑β
⊢ (do
      let a ← γ
      pure ↑a) ⊆
    β
state_after: α β✝ : Type u
s : Set α
f : α → Set β✝
g : Set (α → β✝)
β : Set α
γ : Set ↑β
a✝ val✝ : α
ha : val✝ ∈ β
h✝ : ⟨val✝, ha⟩ ∈ γ
right✝ : a✝ ∈ (fun h => (fun a => pure ↑a) ⟨val✝, ha⟩) h✝
⊢ a✝ ∈ β

tactic: convert ha
state_before: α β✝ : Type u
s : Set α
f : α → Set β✝
g : Set (α → β✝)
β : Set α
γ : Set ↑β
a✝ val✝ : α
ha : val✝ ∈ β
h✝ : ⟨val✝, ha⟩ ∈ γ
right✝ : a✝ ∈ (fun h => (fun a => pure ↑a) ⟨val✝, ha⟩) h✝
⊢ a✝ ∈ β
state_after: no goals
Theorem: FirstOrder.Language.completeTheory.mem_or_not_mem
File: Mathlib/ModelTheory/Satisfiability.lean

tactic: simp_rw [completeTheory, Set.mem_setOf_eq, Sentence.Realize, Formula.realize_not, or_not]
state_before: L : Language
T : L.Theory
α : Type w
n : ℕ
M : Type w
inst✝ : L.Structure M
φ : L.Sentence
⊢ φ ∈ L.completeTheory M ∨ Formula.not φ ∈ L.completeTheory M
state_after: no goals
Theorem: Multiset.prod_nat_mod
File: Mathlib/Algebra/BigOperators/Group/Multiset.lean

tactic: induction s using Multiset.induction <;> simp [Nat.mul_mod, *]
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s : Multiset ℕ
n : ℕ
⊢ s.prod % n = (map (fun x => x % n) s).prod % n
state_after: no goals
Theorem: frobeniusEquiv_symm_comp_frobenius
File: Mathlib/FieldTheory/Perfect.lean

tactic: ext
state_before: R : Type u_1
p m n : ℕ
inst✝² : CommSemiring R
inst✝¹ : ExpChar R p
inst✝ : PerfectRing R p
⊢ (↑(frobeniusEquiv R p).symm).comp (frobenius R p) = RingHom.id R
state_after: case a
R : Type u_1
p m n : ℕ
inst✝² : CommSemiring R
inst✝¹ : ExpChar R p
inst✝ : PerfectRing R p
x✝ : R
⊢ ((↑(frobeniusEquiv R p).symm).comp (frobenius R p)) x✝ = (RingHom.id R) x✝

tactic: simp
state_before: case a
R : Type u_1
p m n : ℕ
inst✝² : CommSemiring R
inst✝¹ : ExpChar R p
inst✝ : PerfectRing R p
x✝ : R
⊢ ((↑(frobeniusEquiv R p).symm).comp (frobenius R p)) x✝ = (RingHom.id R) x✝
state_after: no goals
Theorem: MvPolynomial.optionEquivRight_X_none
File: Mathlib/Algebra/MvPolynomial/Equiv.lean

tactic: simp [optionEquivRight_apply, aeval_X]
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
⊢ (optionEquivRight R S₁) (X none) = C Polynomial.X
state_after: no goals
Theorem: Asymptotics.IsTheta.isBoundedUnder_le_iff
File: Mathlib/Analysis/Asymptotics/Theta.lean

tactic: simp only [← isBigO_const_of_ne (one_ne_zero' ℝ), h.isBigO_congr_left]
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
G : Type u_5
E' : Type u_6
F' : Type u_7
G' : Type u_8
E'' : Type u_9
F'' : Type u_10
G'' : Type u_11
R : Type u_12
R' : Type u_13
𝕜 : Type u_14
𝕜' : Type u_15
inst✝¹² : Norm E
inst✝¹¹ : Norm F
inst✝¹⁰ : Norm G
inst✝⁹ : SeminormedAddCommGroup E'
inst✝⁸ : SeminormedAddCommGroup F'
inst✝⁷ : SeminormedAddCommGroup G'
inst✝⁶ : NormedAddCommGroup E''
inst✝⁵ : NormedAddCommGroup F''
inst✝⁴ : NormedAddCommGroup G''
inst✝³ : SeminormedRing R
inst✝² : SeminormedRing R'
inst✝¹ : NormedField 𝕜
inst✝ : NormedField 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
l l' : Filter α
h : f' =Θ[l] g'
⊢ IsBoundedUnder (fun x x_1 => x ≤ x_1) l (norm ∘ f') ↔ IsBoundedUnder (fun x x_1 => x ≤ x_1) l (norm ∘ g')
state_after: no goals
Theorem: finrank_euclideanSpace
File: Mathlib/Analysis/InnerProductSpace/PiL2.lean

tactic: simp [EuclideanSpace, PiLp, WithLp]
state_before: ι : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝⁹ : _root_.RCLike 𝕜
E : Type u_4
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
F' : Type u_7
inst✝² : NormedAddCommGroup F'
inst✝¹ : InnerProductSpace ℝ F'
inst✝ : Fintype ι
⊢ FiniteDimensional.finrank 𝕜 (EuclideanSpace 𝕜 ι) = Fintype.card ι
state_after: no goals
Theorem: fun_eq_repr
File: Mathlib/NumberTheory/NumberField/Units/DirichletTheorem.lean

tactic: suffices Additive.ofMul ↑x = ∑ i, (f i) • (basisModTorsion K i) by
  rw [← (basisModTorsion K).repr_sum_self f, ← this]
state_before: K : Type u_1
inst✝² : Field K
inst✝¹ inst✝ : NumberField K
x ζ : (𝓞 K)ˣ
f : Fin (rank K) → ℤ
hζ : ζ ∈ torsion K
h : x = ζ * ∏ i : Fin (rank K), fundSystem K i ^ f i
⊢ f = ⇑((basisModTorsion K).repr (Additive.ofMul ↑x))
state_after: K : Type u_1
inst✝² : Field K
inst✝¹ inst✝ : NumberField K
x ζ : (𝓞 K)ˣ
f : Fin (rank K) → ℤ
hζ : ζ ∈ torsion K
h : x = ζ * ∏ i : Fin (rank K), fundSystem K i ^ f i
⊢ Additive.ofMul ↑x = ∑ i : Fin (rank K), f i • (basisModTorsion K) i

tactic: calc
  Additive.ofMul ↑x
  _ = ∑ i, (f i) • Additive.ofMul ↑(fundSystem K i) := by
        rw [h, QuotientGroup.mk_mul, (QuotientGroup.eq_one_iff _).mpr hζ, one_mul,
          QuotientGroup.mk_prod, ofMul_prod]; rfl
  _ = ∑ i, (f i) • (basisModTorsion K i) := by
        simp_rw [fundSystem, QuotientGroup.out_eq', ofMul_toMul]
state_before: K : Type u_1
inst✝² : Field K
inst✝¹ inst✝ : NumberField K
x ζ : (𝓞 K)ˣ
f : Fin (rank K) → ℤ
hζ : ζ ∈ torsion K
h : x = ζ * ∏ i : Fin (rank K), fundSystem K i ^ f i
⊢ Additive.ofMul ↑x = ∑ i : Fin (rank K), f i • (basisModTorsion K) i
state_after: no goals

tactic: rw [← (basisModTorsion K).repr_sum_self f, ← this]
state_before: K : Type u_1
inst✝² : Field K
inst✝¹ inst✝ : NumberField K
x ζ : (𝓞 K)ˣ
f : Fin (rank K) → ℤ
hζ : ζ ∈ torsion K
h : x = ζ * ∏ i : Fin (rank K), fundSystem K i ^ f i
this : Additive.ofMul ↑x = ∑ i : Fin (rank K), f i • (basisModTorsion K) i
⊢ f = ⇑((basisModTorsion K).repr (Additive.ofMul ↑x))
state_after: no goals

tactic: rw [h, QuotientGroup.mk_mul, (QuotientGroup.eq_one_iff _).mpr hζ, one_mul,
  QuotientGroup.mk_prod, ofMul_prod]
state_before: K : Type u_1
inst✝² : Field K
inst✝¹ inst✝ : NumberField K
x ζ : (𝓞 K)ˣ
f : Fin (rank K) → ℤ
hζ : ζ ∈ torsion K
h : x = ζ * ∏ i : Fin (rank K), fundSystem K i ^ f i
⊢ Additive.ofMul ↑x = ∑ i : Fin (rank K), f i • Additive.ofMul ↑(fundSystem K i)
state_after: K : Type u_1
inst✝² : Field K
inst✝¹ inst✝ : NumberField K
x ζ : (𝓞 K)ˣ
f : Fin (rank K) → ℤ
hζ : ζ ∈ torsion K
h : x = ζ * ∏ i : Fin (rank K), fundSystem K i ^ f i
⊢ ∑ i : Fin (rank K), Additive.ofMul ↑(fundSystem K i ^ f i) =
    ∑ i : Fin (rank K), f i • Additive.ofMul ↑(fundSystem K i)

tactic: rfl
state_before: K : Type u_1
inst✝² : Field K
inst✝¹ inst✝ : NumberField K
x ζ : (𝓞 K)ˣ
f : Fin (rank K) → ℤ
hζ : ζ ∈ torsion K
h : x = ζ * ∏ i : Fin (rank K), fundSystem K i ^ f i
⊢ ∑ i : Fin (rank K), Additive.ofMul ↑(fundSystem K i ^ f i) =
    ∑ i : Fin (rank K), f i • Additive.ofMul ↑(fundSystem K i)
state_after: no goals

tactic: simp_rw [fundSystem, QuotientGroup.out_eq', ofMul_toMul]
state_before: K : Type u_1
inst✝² : Field K
inst✝¹ inst✝ : NumberField K
x ζ : (𝓞 K)ˣ
f : Fin (rank K) → ℤ
hζ : ζ ∈ torsion K
h : x = ζ * ∏ i : Fin (rank K), fundSystem K i ^ f i
⊢ ∑ i : Fin (rank K), f i • Additive.ofMul ↑(fundSystem K i) = ∑ i : Fin (rank K), f i • (basisModTorsion K) i
state_after: no goals
Theorem: isLocallyInjective_iff_nhds
File: Mathlib/Topology/SeparatedMap.lean

tactic: constructor <;> intro h x
state_before: X : Type u_1
Y : Type u_2
A : Type ?u.14436
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace A
f : X → Y
⊢ IsLocallyInjective f ↔ ∀ (x : X), ∃ U ∈ 𝓝 x, Set.InjOn f U
state_after: case mp
X : Type u_1
Y : Type u_2
A : Type ?u.14436
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace A
f : X → Y
h : IsLocallyInjective f
x : X
⊢ ∃ U ∈ 𝓝 x, Set.InjOn f U

case mpr
X : Type u_1
Y : Type u_2
A : Type ?u.14436
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace A
f : X → Y
h : ∀ (x : X), ∃ U ∈ 𝓝 x, Set.InjOn f U
x : X
⊢ ∃ U, IsOpen U ∧ x ∈ U ∧ Set.InjOn f U

tactic: obtain ⟨U, ho, hm, hi⟩ := h x
state_before: case mp
X : Type u_1
Y : Type u_2
A : Type ?u.14436
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace A
f : X → Y
h : IsLocallyInjective f
x : X
⊢ ∃ U ∈ 𝓝 x, Set.InjOn f U
state_after: case mp.intro.intro.intro
X : Type u_1
Y : Type u_2
A : Type ?u.14436
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace A
f : X → Y
h : IsLocallyInjective f
x : X
U : Set X
ho : IsOpen U
hm : x ∈ U
hi : Set.InjOn f U
⊢ ∃ U ∈ 𝓝 x, Set.InjOn f U

tactic: exact ⟨U, ho.mem_nhds hm, hi⟩
state_before: case mp.intro.intro.intro
X : Type u_1
Y : Type u_2
A : Type ?u.14436
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace A
f : X → Y
h : IsLocallyInjective f
x : X
U : Set X
ho : IsOpen U
hm : x ∈ U
hi : Set.InjOn f U
⊢ ∃ U ∈ 𝓝 x, Set.InjOn f U
state_after: no goals

tactic: obtain ⟨U, hn, hi⟩ := h x
state_before: case mpr
X : Type u_1
Y : Type u_2
A : Type ?u.14436
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace A
f : X → Y
h : ∀ (x : X), ∃ U ∈ 𝓝 x, Set.InjOn f U
x : X
⊢ ∃ U, IsOpen U ∧ x ∈ U ∧ Set.InjOn f U
state_after: case mpr.intro.intro
X : Type u_1
Y : Type u_2
A : Type ?u.14436
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace A
f : X → Y
h : ∀ (x : X), ∃ U ∈ 𝓝 x, Set.InjOn f U
x : X
U : Set X
hn : U ∈ 𝓝 x
hi : Set.InjOn f U
⊢ ∃ U, IsOpen U ∧ x ∈ U ∧ Set.InjOn f U

tactic: exact ⟨interior U, isOpen_interior, mem_interior_iff_mem_nhds.mpr hn, hi.mono interior_subset⟩
state_before: case mpr.intro.intro
X : Type u_1
Y : Type u_2
A : Type ?u.14436
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace A
f : X → Y
h : ∀ (x : X), ∃ U ∈ 𝓝 x, Set.InjOn f U
x : X
U : Set X
hn : U ∈ 𝓝 x
hi : Set.InjOn f U
⊢ ∃ U, IsOpen U ∧ x ∈ U ∧ Set.InjOn f U
state_after: no goals