ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Set.Ioi_inter_Ioo
File: Mathlib/Order/Interval/Set/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : LinearOrder α
inst✝ : LinearOrder β
f : α → β
a a₁ a₂ b b₁ b₂ c d : α
⊢ Ioi a ∩ Ioo b c = Ioo (max a b) c
state_after: no goals
tactic: rw [inter_comm, Ioo_inter_Ioi, max_comm]
Theorem: LinearMap.disjoint_inl_inr
File: Mathlib/LinearAlgebra/Prod.lean

Proof steps:
state_before: R : Type u
K : Type u'
M : Type v
V : Type v'
M₂ : Type w
V₂ : Type w'
M₃ : Type y
V₃ : Type y'
M₄ : Type z
ι : Type x
M₅ : Type u_1
M₆ : Type u_2
inst✝⁸ : Semiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : AddCommMonoid M₂
inst✝⁵ : AddCommMonoid M₃
inst✝⁴ : AddCommMonoid M₄
inst✝³ : Module R M
inst✝² : Module R M₂
inst✝¹ : Module R M₃
inst✝ : Module R M₄
⊢ Disjoint (range (inl R M M₂)) (range (inr R M M₂))
state_after: no goals
tactic: simp (config := { contextual := true }) [disjoint_def, @eq_comm M 0, @eq_comm M₂ 0]
Theorem: Set.image_sUnion
File: Mathlib/Data/Set/Lattice.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
f : α → β
s : Set (Set α)
⊢ f '' ⋃₀ s = ⋃₀ (image f '' s)
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
f : α → β
s : Set (Set α)
b : β
⊢ b ∈ f '' ⋃₀ s ↔ b ∈ ⋃₀ (image f '' s)
tactic: ext b
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
f : α → β
s : Set (Set α)
b : β
⊢ b ∈ f '' ⋃₀ s ↔ b ∈ ⋃₀ (image f '' s)
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
f : α → β
s : Set (Set α)
b : β
⊢ (∃ x, (∃ t ∈ s, x ∈ t) ∧ f x = b) ↔ ∃ i ∈ s, ∃ x ∈ i, f x = b
tactic: simp only [mem_image, mem_sUnion, exists_prop, sUnion_image, mem_iUnion]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
f : α → β
s : Set (Set α)
b : β
⊢ (∃ x, (∃ t ∈ s, x ∈ t) ∧ f x = b) ↔ ∃ i ∈ s, ∃ x ∈ i, f x = b
state_after: case h.mp
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
f : α → β
s : Set (Set α)
b : β
⊢ (∃ x, (∃ t ∈ s, x ∈ t) ∧ f x = b) → ∃ i ∈ s, ∃ x ∈ i, f x = b

case h.mpr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
f : α → β
s : Set (Set α)
b : β
⊢ (∃ i ∈ s, ∃ x ∈ i, f x = b) → ∃ x, (∃ t ∈ s, x ∈ t) ∧ f x = b
tactic: constructor
Theorem: SimplexCategory.const_eq_id
File: Mathlib/AlgebraicTopology/SimplexCategory.lean

Proof steps:
state_before: ⊢ [0].const [0] 0 = 𝟙 [0]
state_after: no goals
tactic: aesop
Theorem: IsCompact.union
File: Mathlib/Topology/Compactness/Compact.lean

Proof steps:
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
hs : IsCompact s
ht : IsCompact t
⊢ IsCompact (s ∪ t)
state_after: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
hs : IsCompact s
ht : IsCompact t
⊢ IsCompact (⋃ b, bif b then s else t)
tactic: rw [union_eq_iUnion]
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
hs : IsCompact s
ht : IsCompact t
⊢ IsCompact (⋃ b, bif b then s else t)
state_after: no goals
tactic: exact isCompact_iUnion fun b => by cases b <;> assumption
Theorem: AList.lookupFinsupp_eq_iff_of_ne_zero
File: Mathlib/Data/Finsupp/AList.lean

Proof steps:
state_before: α : Type u_1
M : Type u_2
inst✝¹ : Zero M
inst✝ : DecidableEq α
l : AList fun _x => M
a : α
x : M
hx : x ≠ 0
⊢ l.lookupFinsupp a = x ↔ x ∈ lookup a l
state_after: α : Type u_1
M : Type u_2
inst✝¹ : Zero M
inst✝ : DecidableEq α
l : AList fun _x => M
a : α
x : M
hx : x ≠ 0
⊢ (lookup a l).getD 0 = x ↔ x ∈ lookup a l
tactic: rw [lookupFinsupp_apply]
state_before: α : Type u_1
M : Type u_2
inst✝¹ : Zero M
inst✝ : DecidableEq α
l : AList fun _x => M
a : α
x : M
hx : x ≠ 0
⊢ (lookup a l).getD 0 = x ↔ x ∈ lookup a l
state_after: no goals
tactic: cases' lookup a l with m <;> simp [hx.symm]
Theorem: edist_neg
File: Mathlib/Topology/MetricSpace/IsometricSMul.lean

Proof steps:
state_before: M : Type u
G : Type v
X : Type w
inst✝⁶ : PseudoEMetricSpace X
inst✝⁵ : Group G
inst✝⁴ : MulAction G X
inst✝³ : IsometricSMul G X
inst✝² : PseudoEMetricSpace G
inst✝¹ : IsometricSMul G G
inst✝ : IsometricSMul Gᵐᵒᵖ G
x y : G
⊢ edist x⁻¹ y = edist x y⁻¹
state_after: no goals
tactic: rw [← edist_inv_inv, inv_inv]
Theorem: Finite.of_injective
File: Mathlib/Data/Fintype/Card.lean

Proof steps:
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
α : Sort u_4
β : Sort u_5
inst✝ : Finite β
f : α → β
H : Injective f
⊢ Finite α
state_after: case intro.intro
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
α : Sort u_4
β : Sort u_5
inst✝ : Finite β
f : α → β
H : Injective f
n : ℕ
e : β ≃ Fin n
⊢ Finite α
tactic: rcases Finite.exists_equiv_fin β with ⟨n, ⟨e⟩⟩
state_before: case intro.intro
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
α : Sort u_4
β : Sort u_5
inst✝ : Finite β
f : α → β
H : Injective f
n : ℕ
e : β ≃ Fin n
⊢ Finite α
state_after: no goals
tactic: classical exact .of_equiv (Set.range (e ∘ f)) (Equiv.ofInjective _ (e.injective.comp H)).symm
Theorem: irrational_sqrt_rat_iff
File: Mathlib/Data/Real/Irrational.lean

Proof steps:
state_before: q : ℚ
⊢ Irrational √↑q ↔ Rat.sqrt q * Rat.sqrt q ≠ q ∧ 0 ≤ q
state_after: q : ℚ
⊢ ¬IsSquare q ∧ 0 ≤ q ↔ (¬∃ q_1, q_1 * q_1 = q) ∧ 0 ≤ q
tactic: rw [irrational_sqrt_ratCast_iff, ne_eq, ← Rat.exists_mul_self]
state_before: q : ℚ
⊢ ¬IsSquare q ∧ 0 ≤ q ↔ (¬∃ q_1, q_1 * q_1 = q) ∧ 0 ≤ q
state_after: no goals
tactic: simp only [eq_comm, IsSquare]
Theorem: nsmul_eq_zero_iff
File: Mathlib/Algebra/Order/Monoid/Unbundled/Pow.lean

Proof steps:
state_before: β : Type u_1
G : Type u_2
M : Type u_3
inst✝² : Monoid M
inst✝¹ : LinearOrder M
inst✝ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
x : M
n : ℕ
hn : n ≠ 0
⊢ x ^ n = 1 ↔ x = 1
state_after: β : Type u_1
G : Type u_2
M : Type u_3
inst✝² : Monoid M
inst✝¹ : LinearOrder M
inst✝ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
x : M
n : ℕ
hn : n ≠ 0
⊢ x ^ n ≤ 1 ∧ 1 ≤ x ^ n ↔ x ≤ 1 ∧ 1 ≤ x
tactic: simp only [le_antisymm_iff]
state_before: β : Type u_1
G : Type u_2
M : Type u_3
inst✝² : Monoid M
inst✝¹ : LinearOrder M
inst✝ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
x : M
n : ℕ
hn : n ≠ 0
⊢ x ^ n ≤ 1 ∧ 1 ≤ x ^ n ↔ x ≤ 1 ∧ 1 ≤ x
state_after: no goals
tactic: rw [pow_le_one_iff hn, one_le_pow_iff hn]
Theorem: Order.not_isPredLimit_of_noMin
File: Mathlib/Order/SuccPred/Limit.lean

Proof steps:
state_before: α : Type u_1
inst✝⁴ : Preorder α
a : α
inst✝³ : PredOrder α
inst✝² : IsPredArchimedean α
inst✝¹ : NoMinOrder α
inst✝ : NoMaxOrder α
⊢ ¬IsPredLimit a
state_after: no goals
tactic: simp
Theorem: AList.lookupFinsupp_apply
File: Mathlib/Data/Finsupp/AList.lean

Proof steps:
state_before: α : Type u_1
M : Type u_2
inst✝¹ : Zero M
inst✝ : DecidableEq α
l : AList fun _x => M
a : α
⊢ l.lookupFinsupp a = (lookup a l).getD 0
state_after: case h.e'_3
α : Type u_1
M : Type u_2
inst✝¹ : Zero M
inst✝ : DecidableEq α
l : AList fun _x => M
a : α
⊢ (lookup a l).getD 0 = l.lookupFinsupp a
tactic: convert rfl
state_before: case h.e'_3
α : Type u_1
M : Type u_2
inst✝¹ : Zero M
inst✝ : DecidableEq α
l : AList fun _x => M
a : α
⊢ (lookup a l).getD 0 = l.lookupFinsupp a
state_after: no goals
tactic: congr
Theorem: SimpleGraph.toGraph_adjMatrix_eq
File: Mathlib/Combinatorics/SimpleGraph/AdjMatrix.lean

Proof steps:
state_before: V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝² : DecidableRel G.Adj
inst✝¹ : MulZeroOneClass α
inst✝ : Nontrivial α
⊢ ⋯.toGraph = G
state_after: case Adj.h.h.a
V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝² : DecidableRel G.Adj
inst✝¹ : MulZeroOneClass α
inst✝ : Nontrivial α
x✝¹ x✝ : V
⊢ ⋯.toGraph.Adj x✝¹ x✝ ↔ G.Adj x✝¹ x✝
tactic: ext
state_before: case Adj.h.h.a
V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝² : DecidableRel G.Adj
inst✝¹ : MulZeroOneClass α
inst✝ : Nontrivial α
x✝¹ x✝ : V
⊢ ⋯.toGraph.Adj x✝¹ x✝ ↔ G.Adj x✝¹ x✝
state_after: case Adj.h.h.a
V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝² : DecidableRel G.Adj
inst✝¹ : MulZeroOneClass α
inst✝ : Nontrivial α
x✝¹ x✝ : V
⊢ ¬G.Adj x✝¹ x✝ → False ↔ G.Adj x✝¹ x✝
tactic: simp only [IsAdjMatrix.toGraph_adj, adjMatrix_apply, ite_eq_left_iff, zero_ne_one]
state_before: case Adj.h.h.a
V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝² : DecidableRel G.Adj
inst✝¹ : MulZeroOneClass α
inst✝ : Nontrivial α
x✝¹ x✝ : V
⊢ ¬G.Adj x✝¹ x✝ → False ↔ G.Adj x✝¹ x✝
state_after: no goals
tactic: apply Classical.not_not
Theorem: Real.two_le_pi
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

Proof steps:
state_before: ⊢ 0 < 2
state_after: no goals
tactic: norm_num
state_before: ⊢ 2 / 2 ≤ π / 2
state_after: ⊢ 1 ≤ π / 2
tactic: rw [div_self (two_ne_zero' ℝ)]
state_before: ⊢ 1 ≤ π / 2
state_after: no goals
tactic: exact one_le_pi_div_two
Theorem: PMF.toPMF_eq_iff_toMeasure_eq
File: Mathlib/Probability/ProbabilityMassFunction/Basic.lean

Proof steps:
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 μ
⊢ μ.toPMF = p ↔ μ = p.toMeasure
state_after: no goals
tactic: rw [← toMeasure_inj, Measure.toPMF_toMeasure]
Theorem: List.getElem?_pmap
File: Mathlib/Data/List/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
p : α → Prop
f : (a : α) → p a → β
l : List α
h : ∀ (a : α), a ∈ l → p a
n : ℕ
⊢ (pmap f l h)[n]? = Option.pmap f l[n]? ⋯
state_after: case nil
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
p : α → Prop
f : (a : α) → p a → β
h : ∀ (a : α), a ∈ [] → p a
n : ℕ
⊢ (pmap f [] h)[n]? = Option.pmap f [][n]? ⋯

case cons
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
p : α → Prop
f : (a : α) → p a → β
hd : α
tl : List α
hl : ∀ (h : ∀ (a : α), a ∈ tl → p a) (n : ℕ), (pmap f tl h)[n]? = Option.pmap f tl[n]? ⋯
h : ∀ (a : α), a ∈ hd :: tl → p a
n : ℕ
⊢ (pmap f (hd :: tl) h)[n]? = Option.pmap f (hd :: tl)[n]? ⋯
tactic: induction' l with hd tl hl generalizing n
Theorem: PMF.toMeasure_map_apply
File: Mathlib/Probability/ProbabilityMassFunction/Constructions.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β
p : PMF α
b : β
s : Set β
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
hf : Measurable f
hs : MeasurableSet s
⊢ (map f p).toMeasure s = p.toMeasure (f ⁻¹' s)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β
p : PMF α
b : β
s : Set β
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
hf : Measurable f
hs : MeasurableSet s
⊢ (map f p).toOuterMeasure s = p.toOuterMeasure (f ⁻¹' s)
tactic: rw [toMeasure_apply_eq_toOuterMeasure_apply _ s hs,
    toMeasure_apply_eq_toOuterMeasure_apply _ (f ⁻¹' s) (measurableSet_preimage hf hs)]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β
p : PMF α
b : β
s : Set β
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
hf : Measurable f
hs : MeasurableSet s
⊢ (map f p).toOuterMeasure s = p.toOuterMeasure (f ⁻¹' s)
state_after: no goals
tactic: exact toOuterMeasure_map_apply f p s
Theorem: nonzero_of_invertible
File: Mathlib/Algebra/GroupWithZero/Invertible.lean

Proof steps:
state_before: α : Type u
inst✝² : MulZeroOneClass α
a : α
inst✝¹ : Nontrivial α
inst✝ : Invertible a
ha : a = 0
⊢ 0 = ⅟a * a
state_after: no goals
tactic: simp [ha]
Theorem: Set.empty_pi
File: Mathlib/Data/Set/Prod.lean

Proof steps:
state_before: ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i : ι
s : (i : ι) → Set (α i)
⊢ ∅.pi s = univ
state_after: case h
ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i : ι
s : (i : ι) → Set (α i)
x✝ : (i : ι) → α i
⊢ x✝ ∈ ∅.pi s ↔ x✝ ∈ univ
tactic: ext
state_before: case h
ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i : ι
s : (i : ι) → Set (α i)
x✝ : (i : ι) → α i
⊢ x✝ ∈ ∅.pi s ↔ x✝ ∈ univ
state_after: no goals
tactic: simp [pi]
Theorem: Finset.sup_congr
File: Mathlib/Data/Finset/Lattice.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝¹ : SemilatticeSup α
inst✝ : OrderBot α
s s₁ s₂ : Finset β
f✝ g✝ : β → α
a : α
f g : β → α
hs : s₁ = s₂
hfg : ∀ a ∈ s₂, f a = g a
⊢ s₁.sup f = s₂.sup g
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝¹ : SemilatticeSup α
inst✝ : OrderBot α
s s₁ : Finset β
f✝ g✝ : β → α
a : α
f g : β → α
hfg : ∀ a ∈ s₁, f a = g a
⊢ s₁.sup f = s₁.sup g
tactic: subst hs
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝¹ : SemilatticeSup α
inst✝ : OrderBot α
s s₁ : Finset β
f✝ g✝ : β → α
a : α
f g : β → α
hfg : ∀ a ∈ s₁, f a = g a
⊢ s₁.sup f = s₁.sup g
state_after: no goals
tactic: exact Finset.fold_congr hfg
Theorem: PowerSeries.coeff_one_X
File: Mathlib/RingTheory/PowerSeries/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝ : Semiring R
⊢ (coeff R 1) X = 1
state_after: no goals
tactic: rw [coeff_X, if_pos rfl]
Theorem: IsSubgroup.trivial_normal
File: Mathlib/Deprecated/Subgroup.lean

Proof steps:
state_before: G : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G
inst✝ : Group G
⊢ IsNormalSubgroup (trivial G)
state_after: no goals
tactic: refine ⟨⟨⟨?_, ?_⟩, ?_⟩, ?_⟩ <;> simp
Theorem: Polynomial.degree_pos_of_ne_zero_of_nonunit
File: Mathlib/Algebra/Polynomial/FieldDivision.lean

Proof steps:
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : DivisionRing R
p q : R[X]
hp0 : p ≠ 0
hp : ¬IsUnit p
h : 0 ≥ p.degree
⊢ False
state_after: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : DivisionRing R
p q : R[X]
hp0 : C (p.coeff 0) ≠ 0
hp : ¬IsUnit (C (p.coeff 0))
h : 0 ≥ p.degree
⊢ False
tactic: rw [eq_C_of_degree_le_zero h] at hp0 hp
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : DivisionRing R
p q : R[X]
hp0 : C (p.coeff 0) ≠ 0
hp : ¬IsUnit (C (p.coeff 0))
h : 0 ≥ p.degree
⊢ False
state_after: no goals
tactic: exact hp (IsUnit.map C (IsUnit.mk0 (coeff p 0) (mt C_inj.2 (by simpa using hp0))))
Theorem: Complex.range_abs
File: Mathlib/Data/Complex/Abs.lean

Proof steps:
state_before: ⊢ range ⇑abs ⊆ Ici 0
state_after: no goals
tactic: simp only [range_subset_iff, Ici, mem_setOf_eq, apply_nonneg, forall_const]
Theorem: Ordinal.le_sup_shrink_equiv
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s✝ : β → β → Prop
t : γ → γ → Prop
s : Set Ordinal.{u}
hs : Small.{u, u + 1} ↑s
a : Ordinal.{u}
ha : a ∈ s
⊢ a ≤ sup fun x => ↑((equivShrink ↑s).symm x)
state_after: case h.e'_3
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s✝ : β → β → Prop
t : γ → γ → Prop
s : Set Ordinal.{u}
hs : Small.{u, u + 1} ↑s
a : Ordinal.{u}
ha : a ∈ s
⊢ a = ↑((equivShrink ↑s).symm ((equivShrink ↑s) ⟨a, ha⟩))
tactic: convert le_sup.{u, u} (fun x => ((@equivShrink s hs).symm x).val) ((@equivShrink s hs) ⟨a, ha⟩)
state_before: case h.e'_3
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s✝ : β → β → Prop
t : γ → γ → Prop
s : Set Ordinal.{u}
hs : Small.{u, u + 1} ↑s
a : Ordinal.{u}
ha : a ∈ s
⊢ a = ↑((equivShrink ↑s).symm ((equivShrink ↑s) ⟨a, ha⟩))
state_after: no goals
tactic: rw [symm_apply_apply]
Theorem: ExteriorAlgebra.map_apply_ιMulti
File: Mathlib/LinearAlgebra/ExteriorAlgebra/Basic.lean

Proof steps:
state_before: R : Type u1
inst✝⁸ : CommRing R
M : Type u2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
A : Type u_1
inst✝⁵ : Semiring A
inst✝⁴ : Algebra R A
N : Type u4
N' : Type u5
inst✝³ : AddCommGroup N
inst✝² : Module R N
inst✝¹ : AddCommGroup N'
inst✝ : Module R N'
n : ℕ
f : M →ₗ[R] N
m : Fin n → M
⊢ (map f) ((ιMulti R n) m) = (ιMulti R n) (⇑f ∘ m)
state_after: R : Type u1
inst✝⁸ : CommRing R
M : Type u2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
A : Type u_1
inst✝⁵ : Semiring A
inst✝⁴ : Algebra R A
N : Type u4
N' : Type u5
inst✝³ : AddCommGroup N
inst✝² : Module R N
inst✝¹ : AddCommGroup N'
inst✝ : Module R N'
n : ℕ
f : M →ₗ[R] N
m : Fin n → M
⊢ (List.map (⇑(map f)) (List.ofFn fun i => (ι R) (m i))).prod = (List.ofFn fun i => (ι R) ((⇑f ∘ m) i)).prod
tactic: rw [ιMulti_apply, ιMulti_apply, map_list_prod]
state_before: R : Type u1
inst✝⁸ : CommRing R
M : Type u2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
A : Type u_1
inst✝⁵ : Semiring A
inst✝⁴ : Algebra R A
N : Type u4
N' : Type u5
inst✝³ : AddCommGroup N
inst✝² : Module R N
inst✝¹ : AddCommGroup N'
inst✝ : Module R N'
n : ℕ
f : M →ₗ[R] N
m : Fin n → M
⊢ (List.map (⇑(map f)) (List.ofFn fun i => (ι R) (m i))).prod = (List.ofFn fun i => (ι R) ((⇑f ∘ m) i)).prod
state_after: no goals
tactic: simp only [List.map_ofFn, Function.comp, map_apply_ι]
Theorem: CommApplicative.commutative_map
File: Mathlib/Control/Basic.lean

Proof steps:
state_before: α✝ β✝ γ✝ : Type u
m✝ : ?m.14964
m : Type u → Type v
h : Applicative m
inst✝ : CommApplicative m
α β γ : Type u
a : m α
b : m β
f : α → β → γ
⊢ (Seq.seq (f <$> a) fun x => b) = (fun p => f p.fst p.snd) <$> Seq.seq (Prod.mk <$> a) fun x => b
state_after: no goals
tactic: simp only [map_seq, map_map, Function.comp_def]
state_before: α✝ β✝ γ✝ : Type u
m✝ : ?m.14964
m : Type u → Type v
h : Applicative m
inst✝ : CommApplicative m
α β γ : Type u
a : m α
b : m β
f : α → β → γ
⊢ ((fun p => f p.fst p.snd) <$> Seq.seq (Prod.mk <$> a) fun x => b) = Seq.seq ((fun b a => f a b) <$> b) fun x => a
state_after: α✝ β✝ γ✝ : Type u
m✝ : ?m.14964
m : Type u → Type v
h : Applicative m
inst✝ : CommApplicative m
α β γ : Type u
a : m α
b : m β
f : α → β → γ
⊢ ((fun p => f p.fst p.snd) <$> Seq.seq ((fun b a => (a, b)) <$> b) fun x => a) =
    Seq.seq ((fun b a => f a b) <$> b) fun x => a
tactic: rw [@CommApplicative.commutative_prod m h]
Theorem: Finsupp.mem_toMultiset
File: Mathlib/Data/Finsupp/Multiset.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
f : α →₀ ℕ
i : α
⊢ i ∈ toMultiset f ↔ i ∈ f.support
state_after: no goals
tactic: classical
  rw [← Multiset.count_ne_zero, Finsupp.count_toMultiset, Finsupp.mem_support_iff]
Theorem: MeasurableSet.himp
File: Mathlib/MeasureTheory/MeasurableSpace/Defs.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort u_6
s t u : Set α
m : MeasurableSpace α
s₁ s₂ : Set α
h₁ : MeasurableSet s₁
h₂ : MeasurableSet s₂
⊢ MeasurableSet (s₁ ⇨ s₂)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort u_6
s t u : Set α
m : MeasurableSpace α
s₁ s₂ : Set α
h₁ : MeasurableSet s₁
h₂ : MeasurableSet s₂
⊢ MeasurableSet (s₂ ⊔ s₁ᶜ)
tactic: rw [himp_eq]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort u_6
s t u : Set α
m : MeasurableSpace α
s₁ s₂ : Set α
h₁ : MeasurableSet s₁
h₂ : MeasurableSet s₂
⊢ MeasurableSet (s₂ ⊔ s₁ᶜ)
state_after: no goals
tactic: exact h₂.union h₁.compl
Theorem: AddLocalization.r_iff_exists
File: Mathlib/GroupTheory/MonoidLocalization/Basic.lean

Proof steps:
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
x y : M × ↥S
⊢ (r S) x y ↔ ∃ c, ↑c * (↑y.2 * x.1) = ↑c * (↑x.2 * y.1)
state_after: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
x y : M × ↥S
⊢ (r' S) x y ↔ ∃ c, ↑c * (↑y.2 * x.1) = ↑c * (↑x.2 * y.1)
tactic: rw [r_eq_r' S]
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
x y : M × ↥S
⊢ (r' S) x y ↔ ∃ c, ↑c * (↑y.2 * x.1) = ↑c * (↑x.2 * y.1)
state_after: no goals
tactic: rfl
Theorem: IsPrimitiveRoot.map_of_injective
File: Mathlib/RingTheory/RootsOfUnity/Basic.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k l : ℕ
ζ : M
f : F
h✝ : IsPrimitiveRoot ζ k
inst✝¹ : FunLike F M N
inst✝ : MonoidHomClass F M N
h : IsPrimitiveRoot ζ k
hf : Injective ⇑f
⊢ f ζ ^ k = 1
state_after: no goals
tactic: rw [← map_pow, h.pow_eq_one, _root_.map_one]
state_before: M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k l : ℕ
ζ : M
f : F
h✝ : IsPrimitiveRoot ζ k
inst✝¹ : FunLike F M N
inst✝ : MonoidHomClass F M N
h : IsPrimitiveRoot ζ k
hf : Injective ⇑f
⊢ ∀ (l : ℕ), f ζ ^ l = 1 → k ∣ l
state_after: M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k l : ℕ
ζ : M
f : F
h✝ : IsPrimitiveRoot ζ k
inst✝¹ : FunLike F M N
inst✝ : MonoidHomClass F M N
h : IsPrimitiveRoot ζ k
hf : Injective ⇑f
⊢ ∀ (l : ℕ), f ζ ^ l = 1 → orderOf ζ ∣ l
tactic: rw [h.eq_orderOf]
state_before: M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k l : ℕ
ζ : M
f : F
h✝ : IsPrimitiveRoot ζ k
inst✝¹ : FunLike F M N
inst✝ : MonoidHomClass F M N
h : IsPrimitiveRoot ζ k
hf : Injective ⇑f
⊢ ∀ (l : ℕ), f ζ ^ l = 1 → orderOf ζ ∣ l
state_after: M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k l✝ : ℕ
ζ : M
f : F
h✝ : IsPrimitiveRoot ζ k
inst✝¹ : FunLike F M N
inst✝ : MonoidHomClass F M N
h : IsPrimitiveRoot ζ k
hf : Injective ⇑f
l : ℕ
hl : f ζ ^ l = 1
⊢ orderOf ζ ∣ l
tactic: intro l hl
state_before: M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k l✝ : ℕ
ζ : M
f : F
h✝ : IsPrimitiveRoot ζ k
inst✝¹ : FunLike F M N
inst✝ : MonoidHomClass F M N
h : IsPrimitiveRoot ζ k
hf : Injective ⇑f
l : ℕ
hl : f ζ ^ l = 1
⊢ orderOf ζ ∣ l
state_after: M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k l✝ : ℕ
ζ : M
f : F
h✝ : IsPrimitiveRoot ζ k
inst✝¹ : FunLike F M N
inst✝ : MonoidHomClass F M N
h : IsPrimitiveRoot ζ k
hf : Injective ⇑f
l : ℕ
hl : f (ζ ^ l) = f 1
⊢ orderOf ζ ∣ l
tactic: rw [← map_pow, ← map_one f] at hl
state_before: M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k l✝ : ℕ
ζ : M
f : F
h✝ : IsPrimitiveRoot ζ k
inst✝¹ : FunLike F M N
inst✝ : MonoidHomClass F M N
h : IsPrimitiveRoot ζ k
hf : Injective ⇑f
l : ℕ
hl : f (ζ ^ l) = f 1
⊢ orderOf ζ ∣ l
state_after: no goals
tactic: exact orderOf_dvd_of_pow_eq_one (hf hl)