1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: ONote.repr_scale
File: Mathlib/SetTheory/Ordinal/Notation.lean

tactic: simp only [scale_eq_mul, repr_mul, repr, PNat.one_coe, Nat.cast_one, mul_one, add_zero]
state_before: x : ONote
inst✝¹ : x.NF
o : ONote
inst✝ : o.NF
⊢ (x.scale o).repr = ω ^ x.repr * o.repr
state_after: no goals
Theorem: Set.inv_singleton
File: Mathlib/Data/Set/Pointwise/Basic.lean

tactic: rw [← image_inv, image_singleton]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : InvolutiveInv α
s t : Set α
a✝ a : α
⊢ {a}⁻¹ = {a⁻¹}
state_after: no goals
Theorem: IsCoprime.of_mul_left_right
File: Mathlib/RingTheory/Coprime/Basic.lean

tactic: rw [mul_comm] at H
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
H : IsCoprime (x * y) z
⊢ IsCoprime y z
state_after: R : Type u
inst✝ : CommSemiring R
x y z : R
H : IsCoprime (y * x) z
⊢ IsCoprime y z

tactic: exact H.of_mul_left_left
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
H : IsCoprime (y * x) z
⊢ IsCoprime y z
state_after: no goals
Theorem: Mathlib.Meta.Positivity.log_nonneg_of_isNat
File: Mathlib/Analysis/SpecialFunctions/Log/Basic.lean

tactic: rw [NormNum.IsNat.to_eq h rfl]
state_before: e : ℝ
d n : ℕ
h : NormNum.IsNat e n
⊢ 0 ≤ Real.log e
state_after: e : ℝ
d n : ℕ
h : NormNum.IsNat e n
⊢ 0 ≤ Real.log ↑n

tactic: exact Real.log_natCast_nonneg _
state_before: e : ℝ
d n : ℕ
h : NormNum.IsNat e n
⊢ 0 ≤ Real.log ↑n
state_after: no goals
Theorem: Finset.prod_apply_ite_of_true
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: simp_rw [apply_ite k]
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α
a : α
f✝ g✝ : α → β
inst✝ : CommMonoid β
p : α → Prop
hp : DecidablePred p
f g : α → γ
k : γ → β
h : ∀ x ∈ s, p x
⊢ ∏ x ∈ s, k (if p x then f x else g x) = ∏ x ∈ s, k (f x)
state_after: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α
a : α
f✝ g✝ : α → β
inst✝ : CommMonoid β
p : α → Prop
hp : DecidablePred p
f g : α → γ
k : γ → β
h : ∀ x ∈ s, p x
⊢ (∏ x ∈ s, if p x then k (f x) else k (g x)) = ∏ x ∈ s, k (f x)

tactic: exact prod_ite_of_true h _ _
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α
a : α
f✝ g✝ : α → β
inst✝ : CommMonoid β
p : α → Prop
hp : DecidablePred p
f g : α → γ
k : γ → β
h : ∀ x ∈ s, p x
⊢ (∏ x ∈ s, if p x then k (f x) else k (g x)) = ∏ x ∈ s, k (f x)
state_after: no goals
Theorem: Subgroup.normalCore_le
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

tactic: rw [← mul_one a, ← inv_one, ← one_mul a]
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝³ : Group G
inst✝² : Group G'
inst✝¹ : Group G''
A : Type u_4
inst✝ : AddGroup A
s : Set G
H : Subgroup G
a : G
h : a ∈ H.normalCore
⊢ a ∈ H
state_after: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝³ : Group G
inst✝² : Group G'
inst✝¹ : Group G''
A : Type u_4
inst✝ : AddGroup A
s : Set G
H : Subgroup G
a : G
h : a ∈ H.normalCore
⊢ 1 * a * 1⁻¹ ∈ H

tactic: exact h 1
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝³ : Group G
inst✝² : Group G'
inst✝¹ : Group G''
A : Type u_4
inst✝ : AddGroup A
s : Set G
H : Subgroup G
a : G
h : a ∈ H.normalCore
⊢ 1 * a * 1⁻¹ ∈ H
state_after: no goals
Theorem: Monoid.PushoutI.of_comp_eq_base
File: Mathlib/GroupTheory/PushoutI.lean

tactic: ext x
state_before: ι : Type u_1
G : ι → Type u_2
H : Type u_3
K : Type u_4
inst✝² : Monoid K
inst✝¹ : (i : ι) → Monoid (G i)
inst✝ : Monoid H
φ : (i : ι) → H →* G i
i : ι
⊢ (of i).comp (φ i) = base φ
state_after: case h
ι : Type u_1
G : ι → Type u_2
H : Type u_3
K : Type u_4
inst✝² : Monoid K
inst✝¹ : (i : ι) → Monoid (G i)
inst✝ : Monoid H
φ : (i : ι) → H →* G i
i : ι
x : H
⊢ ((of i).comp (φ i)) x = (base φ) x

tactic: apply (Con.eq _).2
state_before: case h
ι : Type u_1
G : ι → Type u_2
H : Type u_3
K : Type u_4
inst✝² : Monoid K
inst✝¹ : (i : ι) → Monoid (G i)
inst✝ : Monoid H
φ : (i : ι) → H →* G i
i : ι
x : H
⊢ ((of i).comp (φ i)) x = (base φ) x
state_after: case h
ι : Type u_1
G : ι → Type u_2
H : Type u_3
K : Type u_4
inst✝² : Monoid K
inst✝¹ : (i : ι) → Monoid (G i)
inst✝ : Monoid H
φ : (i : ι) → H →* G i
i : ι
x : H
⊢ (con φ) ((inl.comp CoprodI.of) ((φ i) x)) (inr x)

tactic: refine ConGen.Rel.of _ _ ?_
state_before: case h
ι : Type u_1
G : ι → Type u_2
H : Type u_3
K : Type u_4
inst✝² : Monoid K
inst✝¹ : (i : ι) → Monoid (G i)
inst✝ : Monoid H
φ : (i : ι) → H →* G i
i : ι
x : H
⊢ (con φ) ((inl.comp CoprodI.of) ((φ i) x)) (inr x)
state_after: case h
ι : Type u_1
G : ι → Type u_2
H : Type u_3
K : Type u_4
inst✝² : Monoid K
inst✝¹ : (i : ι) → Monoid (G i)
inst✝ : Monoid H
φ : (i : ι) → H →* G i
i : ι
x : H
⊢ ∃ i_1 x', (inl.comp CoprodI.of) ((φ i) x) = inl (CoprodI.of ((φ i_1) x')) ∧ inr x = inr x'

tactic: simp only [MonoidHom.comp_apply, Set.mem_iUnion, Set.mem_range]
state_before: case h
ι : Type u_1
G : ι → Type u_2
H : Type u_3
K : Type u_4
inst✝² : Monoid K
inst✝¹ : (i : ι) → Monoid (G i)
inst✝ : Monoid H
φ : (i : ι) → H →* G i
i : ι
x : H
⊢ ∃ i_1 x', (inl.comp CoprodI.of) ((φ i) x) = inl (CoprodI.of ((φ i_1) x')) ∧ inr x = inr x'
state_after: case h
ι : Type u_1
G : ι → Type u_2
H : Type u_3
K : Type u_4
inst✝² : Monoid K
inst✝¹ : (i : ι) → Monoid (G i)
inst✝ : Monoid H
φ : (i : ι) → H →* G i
i : ι
x : H
⊢ ∃ i_1 x', inl (CoprodI.of ((φ i) x)) = inl (CoprodI.of ((φ i_1) x')) ∧ inr x = inr x'

tactic: exact ⟨_, _, rfl, rfl⟩
state_before: case h
ι : Type u_1
G : ι → Type u_2
H : Type u_3
K : Type u_4
inst✝² : Monoid K
inst✝¹ : (i : ι) → Monoid (G i)
inst✝ : Monoid H
φ : (i : ι) → H →* G i
i : ι
x : H
⊢ ∃ i_1 x', inl (CoprodI.of ((φ i) x)) = inl (CoprodI.of ((φ i_1) x')) ∧ inr x = inr x'
state_after: no goals
Theorem: Odd.ne_two_of_dvd_nat
File: Mathlib/Algebra/Order/Ring/Abs.lean

tactic: rintro rfl
state_before: α : Type u_1
m✝ n✝ a m n : ℕ
hn : Odd n
hm : m ∣ n
⊢ m ≠ 2
state_after: α : Type u_1
m n✝ a n : ℕ
hn : Odd n
hm : 2 ∣ n
⊢ False

tactic: exact absurd (hn.of_dvd_nat hm) (by decide)
state_before: α : Type u_1
m n✝ a n : ℕ
hn : Odd n
hm : 2 ∣ n
⊢ False
state_after: no goals

tactic: decide
state_before: α : Type u_1
m n✝ a n : ℕ
hn : Odd n
hm : 2 ∣ n
⊢ ¬Odd 2
state_after: no goals
Theorem: IsAdjoinRoot.lift_algebraMap
File: Mathlib/RingTheory/IsAdjoinRoot.lean

tactic: rw [h.algebraMap_apply, lift_map, eval₂_C]
state_before: R : Type u
S : Type v
inst✝³ : CommRing R
inst✝² : Ring S
f : R[X]
inst✝¹ : Algebra R S
T : Type u_1
inst✝ : CommRing T
i : R →+* T
x : T
hx : eval₂ i x f = 0
h : IsAdjoinRoot S f
a : R
⊢ (lift i x hx h) ((algebraMap R S) a) = i a
state_after: no goals
Theorem: MeasureTheory.snorm_indicator_const'
File: Mathlib/MeasureTheory/Function/LpSpace.lean

tactic: by_cases hp_top : p = ∞
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
c✝ : E
f : α → E
hf : AEStronglyMeasurable f μ
s : Set α
c : G
hs : MeasurableSet s
hμs : μ s ≠ 0
hp : p ≠ 0
⊢ snorm (s.indicator fun x => c) p μ = ↑‖c‖₊ * μ s ^ (1 / p.toReal)
state_after: case pos
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
c✝ : E
f : α → E
hf : AEStronglyMeasurable f μ
s : Set α
c : G
hs : MeasurableSet s
hμs : μ s ≠ 0
hp : p ≠ 0
hp_top : p = ⊤
⊢ snorm (s.indicator fun x => c) p μ = ↑‖c‖₊ * μ s ^ (1 / p.toReal)

case neg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
c✝ : E
f : α → E
hf : AEStronglyMeasurable f μ
s : Set α
c : G
hs : MeasurableSet s
hμs : μ s ≠ 0
hp : p ≠ 0
hp_top : ¬p = ⊤
⊢ snorm (s.indicator fun x => c) p μ = ↑‖c‖₊ * μ s ^ (1 / p.toReal)

tactic: simp [hp_top, snormEssSup_indicator_const_eq s c hμs]
state_before: case pos
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
c✝ : E
f : α → E
hf : AEStronglyMeasurable f μ
s : Set α
c : G
hs : MeasurableSet s
hμs : μ s ≠ 0
hp : p ≠ 0
hp_top : p = ⊤
⊢ snorm (s.indicator fun x => c) p μ = ↑‖c‖₊ * μ s ^ (1 / p.toReal)
state_after: no goals

tactic: exact snorm_indicator_const hs hp hp_top
state_before: case neg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
c✝ : E
f : α → E
hf : AEStronglyMeasurable f μ
s : Set α
c : G
hs : MeasurableSet s
hμs : μ s ≠ 0
hp : p ≠ 0
hp_top : ¬p = ⊤
⊢ snorm (s.indicator fun x => c) p μ = ↑‖c‖₊ * μ s ^ (1 / p.toReal)
state_after: no goals
Theorem: EMetric.hausdorffEdist_self_closure
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: rw [hausdorffEdist_zero_iff_closure_eq_closure, closure_closure]
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t u : Set α
Φ : α → β
⊢ hausdorffEdist s (closure s) = 0
state_after: no goals
Theorem: List.filter_beq'
File: .lake/packages/batteries/Batteries/Data/List/Count.lean

tactic: simpa only [eq_comm (b := a)] using filter_eq l a
state_before: α : Type u_1
inst✝ : DecidableEq α
l : List α
a : α
⊢ filter (fun x => a == x) l = replicate (count a l) a
state_after: no goals
Theorem: Set.EqOn.piecewise_ite'
File: Mathlib/Data/Set/Function.lean

tactic: simp [eqOn_piecewise, *]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
δ : α → Sort u_6
s : Set α
f✝ g✝ : (i : α) → δ i
inst✝ : (j : α) → Decidable (j ∈ s)
f f' g : α → β
t t' : Set α
h : EqOn f g (t ∩ s)
h' : EqOn f' g (t' ∩ sᶜ)
⊢ EqOn (s.piecewise f f') g (s.ite t t')
state_after: no goals
Theorem: normal_exists_closure_subset
File: Mathlib/Topology/Separation.lean

tactic: have : Disjoint s tᶜ := Set.disjoint_left.mpr fun x hxs hxt => hxt (hst hxs)
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : NormalSpace X
s t : Set X
hs : IsClosed s
ht : IsOpen t
hst : s ⊆ t
⊢ ∃ u, IsOpen u ∧ s ⊆ u ∧ closure u ⊆ t
state_after: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : NormalSpace X
s t : Set X
hs : IsClosed s
ht : IsOpen t
hst : s ⊆ t
this : Disjoint s tᶜ
⊢ ∃ u, IsOpen u ∧ s ⊆ u ∧ closure u ⊆ t

tactic: rcases normal_separation hs (isClosed_compl_iff.2 ht) this with
  ⟨s', t', hs', ht', hss', htt', hs't'⟩
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : NormalSpace X
s t : Set X
hs : IsClosed s
ht : IsOpen t
hst : s ⊆ t
this : Disjoint s tᶜ
⊢ ∃ u, IsOpen u ∧ s ⊆ u ∧ closure u ⊆ t
state_after: case intro.intro.intro.intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : NormalSpace X
s t : Set X
hs : IsClosed s
ht : IsOpen t
hst : s ⊆ t
this : Disjoint s tᶜ
s' t' : Set X
hs' : IsOpen s'
ht' : IsOpen t'
hss' : s ⊆ s'
htt' : tᶜ ⊆ t'
hs't' : Disjoint s' t'
⊢ ∃ u, IsOpen u ∧ s ⊆ u ∧ closure u ⊆ t

tactic: refine ⟨s', hs', hss', Subset.trans (closure_minimal ?_ (isClosed_compl_iff.2 ht'))
  (compl_subset_comm.1 htt')⟩
state_before: case intro.intro.intro.intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : NormalSpace X
s t : Set X
hs : IsClosed s
ht : IsOpen t
hst : s ⊆ t
this : Disjoint s tᶜ
s' t' : Set X
hs' : IsOpen s'
ht' : IsOpen t'
hss' : s ⊆ s'
htt' : tᶜ ⊆ t'
hs't' : Disjoint s' t'
⊢ ∃ u, IsOpen u ∧ s ⊆ u ∧ closure u ⊆ t
state_after: case intro.intro.intro.intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : NormalSpace X
s t : Set X
hs : IsClosed s
ht : IsOpen t
hst : s ⊆ t
this : Disjoint s tᶜ
s' t' : Set X
hs' : IsOpen s'
ht' : IsOpen t'
hss' : s ⊆ s'
htt' : tᶜ ⊆ t'
hs't' : Disjoint s' t'
⊢ s' ⊆ t'ᶜ

tactic: exact fun x hxs hxt => hs't'.le_bot ⟨hxs, hxt⟩
state_before: case intro.intro.intro.intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : NormalSpace X
s t : Set X
hs : IsClosed s
ht : IsOpen t
hst : s ⊆ t
this : Disjoint s tᶜ
s' t' : Set X
hs' : IsOpen s'
ht' : IsOpen t'
hss' : s ⊆ s'
htt' : tᶜ ⊆ t'
hs't' : Disjoint s' t'
⊢ s' ⊆ t'ᶜ
state_after: no goals
Theorem: Nat.eq_sq_add_sq_of_isSquare_mod_neg_one
File: Mathlib/NumberTheory/SumTwoSquares.lean

tactic: induction' n using induction_on_primes with p n hpp ih
state_before: n : ℕ
h : IsSquare (-1)
⊢ ∃ x y, n = x ^ 2 + y ^ 2
state_after: case h₀
h : IsSquare (-1)
⊢ ∃ x y, 0 = x ^ 2 + y ^ 2

case h₁
h : IsSquare (-1)
⊢ ∃ x y, 1 = x ^ 2 + y ^ 2

case h
p n : ℕ
hpp : Prime p
ih : IsSquare (-1) → ∃ x y, n = x ^ 2 + y ^ 2
h : IsSquare (-1)
⊢ ∃ x y, p * n = x ^ 2 + y ^ 2

tactic: exact ⟨0, 0, rfl⟩
state_before: case h₀
h : IsSquare (-1)
⊢ ∃ x y, 0 = x ^ 2 + y ^ 2
state_after: no goals

tactic: exact ⟨0, 1, rfl⟩
state_before: case h₁
h : IsSquare (-1)
⊢ ∃ x y, 1 = x ^ 2 + y ^ 2
state_after: no goals

tactic: haveI : Fact p.Prime := ⟨hpp⟩
state_before: case h
p n : ℕ
hpp : Prime p
ih : IsSquare (-1) → ∃ x y, n = x ^ 2 + y ^ 2
h : IsSquare (-1)
⊢ ∃ x y, p * n = x ^ 2 + y ^ 2
state_after: case h
p n : ℕ
hpp : Prime p
ih : IsSquare (-1) → ∃ x y, n = x ^ 2 + y ^ 2
h : IsSquare (-1)
this : Fact (Prime p)
⊢ ∃ x y, p * n = x ^ 2 + y ^ 2

tactic: have hp : IsSquare (-1 : ZMod p) := ZMod.isSquare_neg_one_of_dvd ⟨n, rfl⟩ h
state_before: case h
p n : ℕ
hpp : Prime p
ih : IsSquare (-1) → ∃ x y, n = x ^ 2 + y ^ 2
h : IsSquare (-1)
this : Fact (Prime p)
⊢ ∃ x y, p * n = x ^ 2 + y ^ 2
state_after: case h
p n : ℕ
hpp : Prime p
ih : IsSquare (-1) → ∃ x y, n = x ^ 2 + y ^ 2
h : IsSquare (-1)
this : Fact (Prime p)
hp : IsSquare (-1)
⊢ ∃ x y, p * n = x ^ 2 + y ^ 2

tactic: obtain ⟨u, v, huv⟩ := Nat.Prime.sq_add_sq (ZMod.exists_sq_eq_neg_one_iff.mp hp)
state_before: case h
p n : ℕ
hpp : Prime p
ih : IsSquare (-1) → ∃ x y, n = x ^ 2 + y ^ 2
h : IsSquare (-1)
this : Fact (Prime p)
hp : IsSquare (-1)
⊢ ∃ x y, p * n = x ^ 2 + y ^ 2
state_after: case h.intro.intro
p n : ℕ
hpp : Prime p
ih : IsSquare (-1) → ∃ x y, n = x ^ 2 + y ^ 2
h : IsSquare (-1)
this : Fact (Prime p)
hp : IsSquare (-1)
u v : ℕ
huv : u ^ 2 + v ^ 2 = p
⊢ ∃ x y, p * n = x ^ 2 + y ^ 2

tactic: obtain ⟨x, y, hxy⟩ := ih (ZMod.isSquare_neg_one_of_dvd ⟨p, mul_comm _ _⟩ h)
state_before: case h.intro.intro
p n : ℕ
hpp : Prime p
ih : IsSquare (-1) → ∃ x y, n = x ^ 2 + y ^ 2
h : IsSquare (-1)
this : Fact (Prime p)
hp : IsSquare (-1)
u v : ℕ
huv : u ^ 2 + v ^ 2 = p
⊢ ∃ x y, p * n = x ^ 2 + y ^ 2
state_after: case h.intro.intro.intro.intro
p n : ℕ
hpp : Prime p
ih : IsSquare (-1) → ∃ x y, n = x ^ 2 + y ^ 2
h : IsSquare (-1)
this : Fact (Prime p)
hp : IsSquare (-1)
u v : ℕ
huv : u ^ 2 + v ^ 2 = p
x y : ℕ
hxy : n = x ^ 2 + y ^ 2
⊢ ∃ x y, p * n = x ^ 2 + y ^ 2

tactic: exact Nat.sq_add_sq_mul huv.symm hxy
state_before: case h.intro.intro.intro.intro
p n : ℕ
hpp : Prime p
ih : IsSquare (-1) → ∃ x y, n = x ^ 2 + y ^ 2
h : IsSquare (-1)
this : Fact (Prime p)
hp : IsSquare (-1)
u v : ℕ
huv : u ^ 2 + v ^ 2 = p
x y : ℕ
hxy : n = x ^ 2 + y ^ 2
⊢ ∃ x y, p * n = x ^ 2 + y ^ 2
state_after: no goals
Theorem: CliffordAlgebra.ι_range_map_lift
File: Mathlib/LinearAlgebra/CliffordAlgebra/Basic.lean

tactic: rw [← LinearMap.range_comp, ι_comp_lift]
state_before: R : Type u_1
inst✝⁴ : CommRing R
M : Type u_2
inst✝³ : AddCommGroup M
inst✝² : Module R M
Q : QuadraticForm R M
n : ℕ
A : Type u_3
inst✝¹ : Semiring A
inst✝ : Algebra R A
f : M →ₗ[R] A
cond : ∀ (m : M), f m * f m = (algebraMap R A) (Q m)
⊢ Submodule.map ((lift Q) ⟨f, cond⟩).toLinearMap (LinearMap.range (ι Q)) = LinearMap.range f
state_after: no goals
Theorem: Algebra.map_intNormAux
File: Mathlib/RingTheory/IntegralRestrict.lean

tactic: dsimp [Algebra.intNormAux]
state_before: A : Type u_1
K : Type u_2
L : Type u_3
B : Type u_4
inst✝²⁶ : CommRing A
inst✝²⁵ : CommRing B
inst✝²⁴ : Algebra A B
inst✝²³ : Field K
inst✝²² : Field L
inst✝²¹ : Algebra A K
inst✝²⁰ : IsFractionRing A K
inst✝¹⁹ : Algebra B L
inst✝¹⁸ : Algebra K L
inst✝¹⁷ : Algebra A L
inst✝¹⁶ : IsScalarTower A B L
inst✝¹⁵ : IsScalarTower A K L
inst✝¹⁴ : IsIntegralClosure B A L
inst✝¹³ : FiniteDimensional K L
Aₘ : Type ?u.445936
Bₘ : Type ?u.445939
inst✝¹² : CommRing Aₘ
inst✝¹¹ : CommRing Bₘ
inst✝¹⁰ : Algebra Aₘ Bₘ
inst✝⁹ : Algebra A Aₘ
inst✝⁸ : Algebra B Bₘ
inst✝⁷ : Algebra A Bₘ
inst✝⁶ : IsScalarTower A Aₘ Bₘ
inst✝⁵ : IsScalarTower A B Bₘ
M : Submonoid A
inst✝⁴ : IsLocalization M Aₘ
inst✝³ : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst✝² inst✝¹ : IsIntegrallyClosed A
inst✝ : IsSeparable K L
x : B
⊢ (algebraMap A K) ((intNormAux A K L B) x) = (norm K) ((algebraMap B L) x)
state_after: A : Type u_1
K : Type u_2
L : Type u_3
B : Type u_4
inst✝²⁶ : CommRing A
inst✝²⁵ : CommRing B
inst✝²⁴ : Algebra A B
inst✝²³ : Field K
inst✝²² : Field L
inst✝²¹ : Algebra A K
inst✝²⁰ : IsFractionRing A K
inst✝¹⁹ : Algebra B L
inst✝¹⁸ : Algebra K L
inst✝¹⁷ : Algebra A L
inst✝¹⁶ : IsScalarTower A B L
inst✝¹⁵ : IsScalarTower A K L
inst✝¹⁴ : IsIntegralClosure B A L
inst✝¹³ : FiniteDimensional K L
Aₘ : Type ?u.445936
Bₘ : Type ?u.445939
inst✝¹² : CommRing Aₘ
inst✝¹¹ : CommRing Bₘ
inst✝¹⁰ : Algebra Aₘ Bₘ
inst✝⁹ : Algebra A Aₘ
inst✝⁸ : Algebra B Bₘ
inst✝⁷ : Algebra A Bₘ
inst✝⁶ : IsScalarTower A Aₘ Bₘ
inst✝⁵ : IsScalarTower A B Bₘ
M : Submonoid A
inst✝⁴ : IsLocalization M Aₘ
inst✝³ : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst✝² inst✝¹ : IsIntegrallyClosed A
inst✝ : IsSeparable K L
x : B
⊢ (algebraMap A K) (IsIntegralClosure.mk' A ((norm K) ((algebraMap B L) x)) ⋯) = (norm K) ((algebraMap B L) x)

tactic: exact IsIntegralClosure.algebraMap_mk' _ _ _
state_before: A : Type u_1
K : Type u_2
L : Type u_3
B : Type u_4
inst✝²⁶ : CommRing A
inst✝²⁵ : CommRing B
inst✝²⁴ : Algebra A B
inst✝²³ : Field K
inst✝²² : Field L
inst✝²¹ : Algebra A K
inst✝²⁰ : IsFractionRing A K
inst✝¹⁹ : Algebra B L
inst✝¹⁸ : Algebra K L
inst✝¹⁷ : Algebra A L
inst✝¹⁶ : IsScalarTower A B L
inst✝¹⁵ : IsScalarTower A K L
inst✝¹⁴ : IsIntegralClosure B A L
inst✝¹³ : FiniteDimensional K L
Aₘ : Type ?u.445936
Bₘ : Type ?u.445939
inst✝¹² : CommRing Aₘ
inst✝¹¹ : CommRing Bₘ
inst✝¹⁰ : Algebra Aₘ Bₘ
inst✝⁹ : Algebra A Aₘ
inst✝⁸ : Algebra B Bₘ
inst✝⁷ : Algebra A Bₘ
inst✝⁶ : IsScalarTower A Aₘ Bₘ
inst✝⁵ : IsScalarTower A B Bₘ
M : Submonoid A
inst✝⁴ : IsLocalization M Aₘ
inst✝³ : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst✝² inst✝¹ : IsIntegrallyClosed A
inst✝ : IsSeparable K L
x : B
⊢ (algebraMap A K) (IsIntegralClosure.mk' A ((norm K) ((algebraMap B L) x)) ⋯) = (norm K) ((algebraMap B L) x)
state_after: no goals
Theorem: Complex.interior_reProdIm
File: Mathlib/Analysis/Complex/ReImTopology.lean

tactic: rw [Set.reProdIm, Set.reProdIm, interior_inter, interior_preimage_re, interior_preimage_im]
state_before: s t : Set ℝ
⊢ interior (s ×ℂ t) = interior s ×ℂ interior t
state_after: no goals
Theorem: CategoryTheory.Subobject.mk_factors_self
File: Mathlib/CategoryTheory/Subobject/FactorThru.lean

tactic: simp
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
f : X ⟶ Y
inst✝ : Mono f
⊢ 𝟙 X ≫ (MonoOver.mk' f).arrow = f
state_after: no goals
Theorem: Finset.Nonempty.eq_univ
File: Mathlib/Data/Fintype/Basic.lean

tactic: rintro ⟨x, hx⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : Fintype α
s t : Finset α
inst✝ : Subsingleton α
⊢ s.Nonempty → s = univ
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : Fintype α
s t : Finset α
inst✝ : Subsingleton α
x : α
hx : x ∈ s
⊢ s = univ

tactic: exact eq_univ_of_forall fun y => by rwa [Subsingleton.elim y x]
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : Fintype α
s t : Finset α
inst✝ : Subsingleton α
x : α
hx : x ∈ s
⊢ s = univ
state_after: no goals

tactic: rwa [Subsingleton.elim y x]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : Fintype α
s t : Finset α
inst✝ : Subsingleton α
x : α
hx : x ∈ s
y : α
⊢ y ∈ s
state_after: no goals
Theorem: Complex.abs_cpow_eq_rpow_re_of_nonneg
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rw [abs_cpow_of_imp] <;> simp [*, arg_ofReal_of_nonneg, _root_.abs_of_nonneg]
state_before: x : ℝ
hx : 0 ≤ x
y : ℂ
hy : y.re ≠ 0
⊢ abs (↑x ^ y) = x ^ y.re
state_after: no goals
Theorem: lowerSemicontinuousAt_ciSup
File: Mathlib/Topology/Semicontinuous.lean

tactic: simp_rw [← lowerSemicontinuousWithinAt_univ_iff] at *
state_before: α : Type u_1
inst✝³ : TopologicalSpace α
β : Type u_2
inst✝² : Preorder β
f✝ g : α → β
x : α
s t : Set α
y z : β
ι : Sort u_3
δ : Type u_4
δ' : Type u_5
inst✝¹ : CompleteLinearOrder δ
inst✝ : ConditionallyCompleteLinearOrder δ'
f : ι → α → δ'
bdd : ∀ᶠ (y : α) in 𝓝 x, BddAbove (range fun i => f i y)
h : ∀ (i : ι), LowerSemicontinuousAt (f i) x
⊢ LowerSemicontinuousAt (fun x' => ⨆ i, f i x') x
state_after: α : Type u_1
inst✝³ : TopologicalSpace α
β : Type u_2
inst✝² : Preorder β
f✝ g : α → β
x : α
s t : Set α
y z : β
ι : Sort u_3
δ : Type u_4
δ' : Type u_5
inst✝¹ : CompleteLinearOrder δ
inst✝ : ConditionallyCompleteLinearOrder δ'
f : ι → α → δ'
bdd : ∀ᶠ (y : α) in 𝓝 x, BddAbove (range fun i => f i y)
h : ∀ (i : ι), LowerSemicontinuousWithinAt (f i) univ x
⊢ LowerSemicontinuousWithinAt (fun x' => ⨆ i, f i x') univ x

tactic: rw [← nhdsWithin_univ] at bdd
state_before: α : Type u_1
inst✝³ : TopologicalSpace α
β : Type u_2
inst✝² : Preorder β
f✝ g : α → β
x : α
s t : Set α
y z : β
ι : Sort u_3
δ : Type u_4
δ' : Type u_5
inst✝¹ : CompleteLinearOrder δ
inst✝ : ConditionallyCompleteLinearOrder δ'
f : ι → α → δ'
bdd : ∀ᶠ (y : α) in 𝓝 x, BddAbove (range fun i => f i y)
h : ∀ (i : ι), LowerSemicontinuousWithinAt (f i) univ x
⊢ LowerSemicontinuousWithinAt (fun x' => ⨆ i, f i x') univ x
state_after: α : Type u_1
inst✝³ : TopologicalSpace α
β : Type u_2
inst✝² : Preorder β
f✝ g : α → β
x : α
s t : Set α
y z : β
ι : Sort u_3
δ : Type u_4
δ' : Type u_5
inst✝¹ : CompleteLinearOrder δ
inst✝ : ConditionallyCompleteLinearOrder δ'
f : ι → α → δ'
bdd : ∀ᶠ (y : α) in 𝓝[univ] x, BddAbove (range fun i => f i y)
h : ∀ (i : ι), LowerSemicontinuousWithinAt (f i) univ x
⊢ LowerSemicontinuousWithinAt (fun x' => ⨆ i, f i x') univ x

tactic: exact lowerSemicontinuousWithinAt_ciSup bdd h
state_before: α : Type u_1
inst✝³ : TopologicalSpace α
β : Type u_2
inst✝² : Preorder β
f✝ g : α → β
x : α
s t : Set α
y z : β
ι : Sort u_3
δ : Type u_4
δ' : Type u_5
inst✝¹ : CompleteLinearOrder δ
inst✝ : ConditionallyCompleteLinearOrder δ'
f : ι → α → δ'
bdd : ∀ᶠ (y : α) in 𝓝[univ] x, BddAbove (range fun i => f i y)
h : ∀ (i : ι), LowerSemicontinuousWithinAt (f i) univ x
⊢ LowerSemicontinuousWithinAt (fun x' => ⨆ i, f i x') univ x
state_after: no goals
Theorem: Fin.coe_sub_one
File: Mathlib/Algebra/Group/Fin.lean

tactic: cases n
state_before: m n : ℕ
a : Fin (n + 1)
⊢ ↑(a - 1) = if a = 0 then n else ↑a - 1
state_after: case zero
m : ℕ
a : Fin (0 + 1)
⊢ ↑(a - 1) = if a = 0 then 0 else ↑a - 1

case succ
m n✝ : ℕ
a : Fin (n✝ + 1 + 1)
⊢ ↑(a - 1) = if a = 0 then n✝ + 1 else ↑a - 1

tactic: split_ifs with h
state_before: case succ
m n✝ : ℕ
a : Fin (n✝ + 1 + 1)
⊢ ↑(a - 1) = if a = 0 then n✝ + 1 else ↑a - 1
state_after: case pos
m n✝ : ℕ
a : Fin (n✝ + 1 + 1)
h : a = 0
⊢ ↑(a - 1) = n✝ + 1

case neg
m n✝ : ℕ
a : Fin (n✝ + 1 + 1)
h : ¬a = 0
⊢ ↑(a - 1) = ↑a - 1

tactic: rw [sub_eq_add_neg, val_add_eq_ite, coe_neg_one, if_pos, Nat.add_comm, Nat.add_sub_add_left]
state_before: case neg
m n✝ : ℕ
a : Fin (n✝ + 1 + 1)
h : ¬a = 0
⊢ ↑(a - 1) = ↑a - 1
state_after: case neg.hc
m n✝ : ℕ
a : Fin (n✝ + 1 + 1)
h : ¬a = 0
⊢ n✝ + 1 + 1 ≤ ↑a + (n✝ + 1)

tactic: conv_rhs => rw [Nat.add_comm]
state_before: case neg.hc
m n✝ : ℕ
a : Fin (n✝ + 1 + 1)
h : ¬a = 0
⊢ n✝ + 1 + 1 ≤ ↑a + (n✝ + 1)
state_after: case neg.hc
m n✝ : ℕ
a : Fin (n✝ + 1 + 1)
h : ¬a = 0
⊢ n✝ + 1 + 1 ≤ n✝ + 1 + ↑a

tactic: rw [Nat.add_le_add_iff_left, Nat.one_le_iff_ne_zero]
state_before: case neg.hc
m n✝ : ℕ
a : Fin (n✝ + 1 + 1)
h : ¬a = 0
⊢ n✝ + 1 + 1 ≤ n✝ + 1 + ↑a
state_after: case neg.hc
m n✝ : ℕ
a : Fin (n✝ + 1 + 1)
h : ¬a = 0
⊢ ↑a ≠ 0

tactic: rwa [Fin.ext_iff] at h
state_before: case neg.hc
m n✝ : ℕ
a : Fin (n✝ + 1 + 1)
h : ¬a = 0
⊢ ↑a ≠ 0
state_after: no goals

tactic: simp
state_before: case zero
m : ℕ
a : Fin (0 + 1)
⊢ ↑(a - 1) = if a = 0 then 0 else ↑a - 1
state_after: no goals

tactic: simp [h]
state_before: case pos
m n✝ : ℕ
a : Fin (n✝ + 1 + 1)
h : a = 0
⊢ ↑(a - 1) = n✝ + 1
state_after: no goals