1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CauSeq.neg_limZero
File: Mathlib/Algebra/Order/CauSeq/Basic.lean

tactic: rw [← neg_one_mul f]
state_before: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : Ring β
abv : β → α
inst✝ : IsAbsoluteValue abv
f : CauSeq β abv
hf : f.LimZero
⊢ (-f).LimZero
state_after: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : Ring β
abv : β → α
inst✝ : IsAbsoluteValue abv
f : CauSeq β abv
hf : f.LimZero
⊢ (-1 * f).LimZero

tactic: exact mul_limZero_right _ hf
state_before: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : Ring β
abv : β → α
inst✝ : IsAbsoluteValue abv
f : CauSeq β abv
hf : f.LimZero
⊢ (-1 * f).LimZero
state_after: no goals
Theorem: eventually_abs_sub_lt
File: Mathlib/Topology/Order/LeftRightNhds.lean

tactic: simp only [abs_sub_comm, mem_principal_self]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrderedAddCommGroup α
inst✝ : OrderTopology α
l : Filter β
f g : β → α
a ε : α
hε : 0 < ε
⊢ {x | (fun x => |x - a| < ε) x} ∈ 𝓟 {b | |a - b| < ε}
state_after: no goals
Theorem: MeasureTheory.measure_setOf_frequently_eq_zero
File: Mathlib/MeasureTheory/Measure/Restrict.lean

tactic: simpa only [limsup_eq_iInf_iSup_of_nat, frequently_atTop, ← bex_def, setOf_forall,
  setOf_exists] using measure_limsup_eq_zero hp
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 α
p : ℕ → α → Prop
hp : ∑' (i : ℕ), μ {x | p i x} ≠ ⊤
⊢ μ {x | ∃ᶠ (n : ℕ) in atTop, p n x} = 0
state_after: no goals
Theorem: Real.arcsin_eq_of_sin_eq
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Inverse.lean

tactic: subst y
state_before: x✝ y✝ x y : ℝ
h₁ : sin x = y
h₂ : x ∈ Icc (-(π / 2)) (π / 2)
⊢ arcsin y = x
state_after: x✝ y x : ℝ
h₂ : x ∈ Icc (-(π / 2)) (π / 2)
⊢ arcsin (sin x) = x

tactic: exact injOn_sin (arcsin_mem_Icc _) h₂ (sin_arcsin' (sin_mem_Icc x))
state_before: x✝ y x : ℝ
h₂ : x ∈ Icc (-(π / 2)) (π / 2)
⊢ arcsin (sin x) = x
state_after: no goals
Theorem: FirstOrder.Language.Formula.realize_rel₁
File: Mathlib/ModelTheory/Semantics.lean

tactic: rw [Relations.formula₁, realize_rel, iff_eq_eq]
state_before: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n : ℕ
φ ψ : L.Formula α
v : α → M
R : L.Relations 1
t : L.Term α
⊢ (R.formula₁ t).Realize v ↔ RelMap R ![Term.realize v t]
state_after: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n : ℕ
φ ψ : L.Formula α
v : α → M
R : L.Relations 1
t : L.Term α
⊢ (RelMap R fun i => Term.realize v (![t] i)) = RelMap R ![Term.realize v t]

tactic: refine congr rfl (funext fun _ => ?_)
state_before: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n : ℕ
φ ψ : L.Formula α
v : α → M
R : L.Relations 1
t : L.Term α
⊢ (RelMap R fun i => Term.realize v (![t] i)) = RelMap R ![Term.realize v t]
state_after: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n : ℕ
φ ψ : L.Formula α
v : α → M
R : L.Relations 1
t : L.Term α
x✝ : Fin 1
⊢ Term.realize v (![t] x✝) = ![Term.realize v t] x✝

tactic: simp only [Matrix.cons_val_fin_one]
state_before: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n : ℕ
φ ψ : L.Formula α
v : α → M
R : L.Relations 1
t : L.Term α
x✝ : Fin 1
⊢ Term.realize v (![t] x✝) = ![Term.realize v t] x✝
state_after: no goals
Theorem: MeasureTheory.OuterMeasure.restrict_empty
File: Mathlib/MeasureTheory/OuterMeasure/Operations.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : Set α
⊢ ((restrict ∅) m) s = 0 s
state_after: no goals
Theorem: Finset.inter_assoc
File: Mathlib/Data/Finset/Basic.lean

tactic: simp only [mem_inter, and_assoc]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s s₁✝ s₂✝ t t₁ t₂ u v : Finset α
a b : α
s₁ s₂ s₃ : Finset α
x✝ : α
⊢ x✝ ∈ s₁ ∩ s₂ ∩ s₃ ↔ x✝ ∈ s₁ ∩ (s₂ ∩ s₃)
state_after: no goals
Theorem: AddLECancellable.tsub_lt_tsub_iff_right
File: Mathlib/Algebra/Order/Sub/Canonical.lean

tactic: rw [hc.lt_tsub_iff_left, add_tsub_cancel_of_le h]
state_before: α : Type u_1
inst✝² : CanonicallyLinearOrderedAddCommMonoid α
inst✝¹ : Sub α
inst✝ : OrderedSub α
a b c d : α
hc : AddLECancellable c
h : c ≤ a
⊢ a - c < b - c ↔ a < b
state_after: no goals
Theorem: MeasureTheory.SimpleFunc.lintegral_mono
File: Mathlib/MeasureTheory/Function/SimpleFunc.lean

tactic: rw [sup_of_le_right hfg]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α →ₛ ℝ≥0∞
hfg : f ≤ g
hμν : μ ≤ ν
⊢ (f ⊔ g).lintegral μ = g.lintegral μ
state_after: no goals
Theorem: differentiableAt_dslope_of_ne
File: Mathlib/Analysis/Calculus/Dslope.lean

tactic: simp only [← differentiableWithinAt_univ, differentiableWithinAt_dslope_of_ne h]
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → E
a b : 𝕜
s : Set 𝕜
h : b ≠ a
⊢ DifferentiableAt 𝕜 (dslope f a) b ↔ DifferentiableAt 𝕜 f b
state_after: no goals
Theorem: Orientation.two_zsmul_oangle_smul_right_of_ne_zero
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Basic.lean

tactic: rcases hr.lt_or_lt with (h | h) <;> simp [h]
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
r : ℝ
hr : r ≠ 0
⊢ 2 • o.oangle x (r • y) = 2 • o.oangle x y
state_after: no goals
Theorem: LipschitzWith.const
File: Mathlib/Topology/EMetricSpace/Lipschitz.lean

tactic: simp only [edist_self, zero_le]
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
K : ℝ≥0
f : α → β
x✝ y✝ : α
r : ℝ≥0∞
b : β
x y : α
⊢ edist ((fun x => b) x) ((fun x => b) y) ≤ ↑0 * edist x y
state_after: no goals
Theorem: ExteriorAlgebra.ιMulti_succ_curryLeft
File: Mathlib/LinearAlgebra/ExteriorAlgebra/Basic.lean

tactic: simp_rw [Matrix.tail_cons]
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 : ℕ
m : M
v : Fin n → M
⊢ (ι R) (Matrix.vecCons m v 0) * (ιMulti R n) (Matrix.vecTail (Matrix.vecCons m v)) =
    ((LinearMap.mulLeft R ((ι R) m)).compAlternatingMap (ιMulti R n)) v
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 : ℕ
m : M
v : Fin n → M
⊢ (ι R) (Matrix.vecCons m v 0) * (ιMulti R n) v = ((LinearMap.mulLeft R ((ι R) m)).compAlternatingMap (ιMulti R n)) v

tactic: rfl
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 : ℕ
m : M
v : Fin n → M
⊢ (ι R) (Matrix.vecCons m v 0) * (ιMulti R n) v = ((LinearMap.mulLeft R ((ι R) m)).compAlternatingMap (ιMulti R n)) v
state_after: no goals
Theorem: Mathlib.Tactic.Ring.pow_add
File: Mathlib/Tactic/Ring/Basic.lean

tactic: subst_vars
state_before: u : Lean.Level
R : Type u_1
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝ : CommSemiring R
a : R
b₁ : ℕ
c₁ : R
b₂ : ℕ
c₂ d : R
x✝² : a ^ b₁ = c₁
x✝¹ : a ^ b₂ = c₂
x✝ : c₁ * c₂ = d
⊢ a ^ (b₁ + b₂) = d
state_after: u : Lean.Level
R : Type u_1
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝ : CommSemiring R
a : R
b₁ b₂ : ℕ
⊢ a ^ (b₁ + b₂) = a ^ b₁ * a ^ b₂

tactic: simp [_root_.pow_add]
state_before: u : Lean.Level
R : Type u_1
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝ : CommSemiring R
a : R
b₁ b₂ : ℕ
⊢ a ^ (b₁ + b₂) = a ^ b₁ * a ^ b₂
state_after: no goals
Theorem: Finset.Nonempty.of_disjSups_left
File: Mathlib/Data/Finset/Sups.lean

tactic: simp_rw [Finset.Nonempty, mem_disjSups]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝⁴ : DecidableEq α
inst✝³ : DecidableEq β
inst✝² : SemilatticeSup α
inst✝¹ : OrderBot α
inst✝ : DecidableRel Disjoint
s s₁ s₂ t t₁ t₂ u : Finset α
a b c : α
⊢ (s ○ t).Nonempty → s.Nonempty
state_after: F : Type u_1
α : Type u_2
β : Type u_3
inst✝⁴ : DecidableEq α
inst✝³ : DecidableEq β
inst✝² : SemilatticeSup α
inst✝¹ : OrderBot α
inst✝ : DecidableRel Disjoint
s s₁ s₂ t t₁ t₂ u : Finset α
a b c : α
⊢ (∃ x, ∃ a ∈ s, ∃ b ∈ t, Disjoint a b ∧ a ⊔ b = x) → ∃ x, x ∈ s

tactic: exact fun ⟨_, a, ha, _⟩ => ⟨a, ha⟩
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝⁴ : DecidableEq α
inst✝³ : DecidableEq β
inst✝² : SemilatticeSup α
inst✝¹ : OrderBot α
inst✝ : DecidableRel Disjoint
s s₁ s₂ t t₁ t₂ u : Finset α
a b c : α
⊢ (∃ x, ∃ a ∈ s, ∃ b ∈ t, Disjoint a b ∧ a ⊔ b = x) → ∃ x, x ∈ s
state_after: no goals
Theorem: ENNReal.inv_mul_le_iff
File: Mathlib/Data/ENNReal/Inv.lean

tactic: rw [← mul_le_mul_left h1 h2, ← mul_assoc, ENNReal.mul_inv_cancel h1 h2, one_mul]
state_before: a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z : ℝ≥0∞
h1 : x ≠ 0
h2 : x ≠ ⊤
⊢ x⁻¹ * y ≤ z ↔ y ≤ x * z
state_after: no goals
Theorem: Basis.equiv_trans
File: Mathlib/LinearAlgebra/Basis.lean

tactic: simp
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid M'
inst✝² : Module R M'
b b₁ : Basis ι R M
i✝ : ι
c : R
x : M
b' : Basis ι' R M'
e✝ : ι ≃ ι'
inst✝¹ : AddCommMonoid M''
inst✝ : Module R M''
ι'' : Type u_10
b'' : Basis ι'' R M''
e : ι ≃ ι'
e' : ι' ≃ ι''
i : ι
⊢ (b.equiv b' e ≪≫ₗ b'.equiv b'' e') (b i) = (b.equiv b'' (e.trans e')) (b i)
state_after: no goals
Theorem: MeasureTheory.exists_nonempty_inter_of_measure_univ_lt_tsum_measure
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: contrapose! H
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m✝ : MeasurableSpace α
μ✝ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
m : MeasurableSpace α
μ : Measure α
s : ι → Set α
hs : ∀ (i : ι), MeasurableSet (s i)
H : μ univ < ∑' (i : ι), μ (s i)
⊢ ∃ i j, i ≠ j ∧ (s i ∩ s j).Nonempty
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m✝ : MeasurableSpace α
μ✝ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
m : MeasurableSpace α
μ : Measure α
s : ι → Set α
hs : ∀ (i : ι), MeasurableSet (s i)
H : ∀ (i j : ι), i ≠ j → s i ∩ s j = ∅
⊢ ∑' (i : ι), μ (s i) ≤ μ univ

tactic: apply tsum_measure_le_measure_univ hs
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m✝ : MeasurableSpace α
μ✝ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
m : MeasurableSpace α
μ : Measure α
s : ι → Set α
hs : ∀ (i : ι), MeasurableSet (s i)
H : ∀ (i j : ι), i ≠ j → s i ∩ s j = ∅
⊢ ∑' (i : ι), μ (s i) ≤ μ univ
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m✝ : MeasurableSpace α
μ✝ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
m : MeasurableSpace α
μ : Measure α
s : ι → Set α
hs : ∀ (i : ι), MeasurableSet (s i)
H : ∀ (i j : ι), i ≠ j → s i ∩ s j = ∅
⊢ Pairwise (Disjoint on s)

tactic: intro i j hij
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m✝ : MeasurableSpace α
μ✝ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
m : MeasurableSpace α
μ : Measure α
s : ι → Set α
hs : ∀ (i : ι), MeasurableSet (s i)
H : ∀ (i j : ι), i ≠ j → s i ∩ s j = ∅
⊢ Pairwise (Disjoint on s)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m✝ : MeasurableSpace α
μ✝ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
m : MeasurableSpace α
μ : Measure α
s : ι → Set α
hs : ∀ (i : ι), MeasurableSet (s i)
H : ∀ (i j : ι), i ≠ j → s i ∩ s j = ∅
i j : ι
hij : i ≠ j
⊢ (Disjoint on s) i j

tactic: exact disjoint_iff_inter_eq_empty.mpr (H i j hij)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m✝ : MeasurableSpace α
μ✝ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
m : MeasurableSpace α
μ : Measure α
s : ι → Set α
hs : ∀ (i : ι), MeasurableSet (s i)
H : ∀ (i j : ι), i ≠ j → s i ∩ s j = ∅
i j : ι
hij : i ≠ j
⊢ (Disjoint on s) i j
state_after: no goals
Theorem: WeierstrassCurve.Projective.smul_fin3_ext
File: Mathlib/AlgebraicGeometry/EllipticCurve/Projective.lean

tactic: refine ⟨?_, ?_, ?_⟩ <;> simp only [Units.smul_def, Pi.smul_apply, smul_eq_mul]
state_before: R✝ : Type u
inst✝¹ : CommRing R✝
W : Projective R✝
R : Type u
inst✝ : CommRing R
P : Fin 3 → R
u : Rˣ
⊢ (u • P) 0 = ↑u * P 0 ∧ (u • P) 1 = ↑u * P 1 ∧ (u • P) 2 = ↑u * P 2
state_after: no goals
Theorem: Matrix.mul_self_mul_conjTranspose_eq_zero
File: Mathlib/LinearAlgebra/Matrix/DotProduct.lean

tactic: rw [← conjTranspose_eq_zero, conjTranspose_mul, conjTranspose_mul, conjTranspose_conjTranspose,
  self_mul_conjTranspose_mul_eq_zero, ← conjTranspose_mul, conjTranspose_eq_zero]
state_before: m : Type u_1
n : Type u_2
p : Type u_3
R : Type u_4
inst✝⁷ : Fintype m
inst✝⁶ : Fintype n
inst✝⁵ : Fintype p
inst✝⁴ : PartialOrder R
inst✝³ : NonUnitalRing R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : NoZeroDivisors R
A : Matrix m n R
B : Matrix p m R
⊢ B * (A * Aᴴ) = 0 ↔ B * A = 0
state_after: no goals
Theorem: Stream'.WSeq.liftRel_think_right
File: Mathlib/Data/Seq/WSeq.lean

tactic: rw [liftRel_destruct_iff, liftRel_destruct_iff]
state_before: α : Type u
β : Type v
γ : Type w
R : α → β → Prop
s : WSeq α
t : WSeq β
⊢ LiftRel R s t.think ↔ LiftRel R s t
state_after: α : Type u
β : Type v
γ : Type w
R : α → β → Prop
s : WSeq α
t : WSeq β
⊢ Computation.LiftRel (LiftRelO R (LiftRel R)) s.destruct t.think.destruct ↔
    Computation.LiftRel (LiftRelO R (LiftRel R)) s.destruct t.destruct

tactic: simp
state_before: α : Type u
β : Type v
γ : Type w
R : α → β → Prop
s : WSeq α
t : WSeq β
⊢ Computation.LiftRel (LiftRelO R (LiftRel R)) s.destruct t.think.destruct ↔
    Computation.LiftRel (LiftRelO R (LiftRel R)) s.destruct t.destruct
state_after: no goals
Theorem: Profinite.NobelingProof.Products.max_eq_o_cons_tail'
File: Mathlib/Topology/Category/Profinite/Nobeling.lean

tactic: simp_rw [← max_eq_o_cons_tail ho l hl hlh]
state_before: I : Type u
inst✝² : LinearOrder I
inst✝¹ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
o : Ordinal.{u}
hC : IsClosed C
hsC : contained C (Order.succ o)
ho : o < Ordinal.type fun x x_1 => x < x_1
inst✝ : Inhabited I
l : Products I
hl : ↑l ≠ []
hlh : (↑l).head! = term I ho
hlc : List.Chain' (fun x x_1 => x > x_1) (term I ho :: ↑l.Tail)
⊢ l = ⟨term I ho :: ↑l.Tail, hlc⟩
state_after: I : Type u
inst✝² : LinearOrder I
inst✝¹ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
o : Ordinal.{u}
hC : IsClosed C
hsC : contained C (Order.succ o)
ho : o < Ordinal.type fun x x_1 => x < x_1
inst✝ : Inhabited I
l : Products I
hl : ↑l ≠ []
hlh : (↑l).head! = term I ho
hlc : List.Chain' (fun x x_1 => x > x_1) (term I ho :: ↑l.Tail)
⊢ l = ⟨↑l, ⋯⟩

tactic: rfl
state_before: I : Type u
inst✝² : LinearOrder I
inst✝¹ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
o : Ordinal.{u}
hC : IsClosed C
hsC : contained C (Order.succ o)
ho : o < Ordinal.type fun x x_1 => x < x_1
inst✝ : Inhabited I
l : Products I
hl : ↑l ≠ []
hlh : (↑l).head! = term I ho
hlc : List.Chain' (fun x x_1 => x > x_1) (term I ho :: ↑l.Tail)
⊢ l = ⟨↑l, ⋯⟩
state_after: no goals
Theorem: RatFunc.num_one
File: Mathlib/FieldTheory/RatFunc/Basic.lean

tactic: convert num_div (1 : K[X]) 1 <;> simp
state_before: K : Type u
inst✝ : Field K
⊢ num 1 = 1
state_after: no goals
Theorem: Ordinal.le_div
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: induction a using limitRecOn with
| H₁ => simp only [mul_zero, Ordinal.zero_le]
| H₂ _ _ => rw [succ_le_iff, lt_div c0]
| H₃ _ h₁ h₂ =>
  revert h₁ h₂
  simp (config := { contextual := true }) only [mul_le_of_limit, limit_le, iff_self_iff,
    forall_true_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b c : Ordinal.{u_4}
c0 : c ≠ 0
⊢ a ≤ b / c ↔ c * a ≤ b
state_after: no goals

tactic: simp only [mul_zero, Ordinal.zero_le]
state_before: case H₁
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
b c : Ordinal.{u_4}
c0 : c ≠ 0
⊢ 0 ≤ b / c ↔ c * 0 ≤ b
state_after: no goals

tactic: rw [succ_le_iff, lt_div c0]
state_before: case H₂
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
b c : Ordinal.{u_4}
c0 : c ≠ 0
o✝ : Ordinal.{u_4}
a✝ : o✝ ≤ b / c ↔ c * o✝ ≤ b
⊢ succ o✝ ≤ b / c ↔ c * succ o✝ ≤ b
state_after: no goals

tactic: revert h₁ h₂
state_before: case H₃
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
b c : Ordinal.{u_4}
c0 : c ≠ 0
o✝ : Ordinal.{u_4}
h₁ : o✝.IsLimit
h₂ : ∀ o' < o✝, o' ≤ b / c ↔ c * o' ≤ b
⊢ o✝ ≤ b / c ↔ c * o✝ ≤ b
state_after: case H₃
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
b c : Ordinal.{u_4}
c0 : c ≠ 0
o✝ : Ordinal.{u_4}
⊢ o✝.IsLimit → (∀ o' < o✝, o' ≤ b / c ↔ c * o' ≤ b) → (o✝ ≤ b / c ↔ c * o✝ ≤ b)

tactic: simp (config := { contextual := true }) only [mul_le_of_limit, limit_le, iff_self_iff,
  forall_true_iff]
state_before: case H₃
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
b c : Ordinal.{u_4}
c0 : c ≠ 0
o✝ : Ordinal.{u_4}
⊢ o✝.IsLimit → (∀ o' < o✝, o' ≤ b / c ↔ c * o' ≤ b) → (o✝ ≤ b / c ↔ c * o✝ ≤ b)
state_after: no goals
Theorem: isLUB_csSup'
File: Mathlib/Order/ConditionallyCompleteLattice/Basic.lean

tactic: rcases eq_empty_or_nonempty s with (rfl | hne)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrderBot α
s✝ : Set α
f : ι → α
a : α
s : Set α
hs : BddAbove s
⊢ IsLUB s (sSup s)
state_after: case inl
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrderBot α
s : Set α
f : ι → α
a : α
hs : BddAbove ∅
⊢ IsLUB ∅ (sSup ∅)

case inr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrderBot α
s✝ : Set α
f : ι → α
a : α
s : Set α
hs : BddAbove s
hne : s.Nonempty
⊢ IsLUB s (sSup s)

tactic: simp only [csSup_empty, isLUB_empty]
state_before: case inl
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrderBot α
s : Set α
f : ι → α
a : α
hs : BddAbove ∅
⊢ IsLUB ∅ (sSup ∅)
state_after: no goals

tactic: exact isLUB_csSup hne hs
state_before: case inr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrderBot α
s✝ : Set α
f : ι → α
a : α
s : Set α
hs : BddAbove s
hne : s.Nonempty
⊢ IsLUB s (sSup s)
state_after: no goals
Theorem: groupCohomology.mem_oneCocycles_of_addMonoidHom
File: Mathlib/RepresentationTheory/GroupCohomology/LowDegree.lean

tactic: simp only [Function.comp_apply, ofMul_mul, map_add,
  oneCocycles_map_mul_of_isTrivial, apply_eq_self A.ρ g (f (Additive.ofMul h)),
  add_comm (f (Additive.ofMul g))]
state_before: k G : Type u
inst✝² : CommRing k
inst✝¹ : Group G
A : Rep k G
inst✝ : A.IsTrivial
f : Additive G →+ CoeSort.coe A
g h : G
⊢ (⇑f ∘ ⇑Additive.ofMul) (g * h) = (A.ρ g) ((⇑f ∘ ⇑Additive.ofMul) h) + (⇑f ∘ ⇑Additive.ofMul) g
state_after: no goals
Theorem: Submonoid.LocalizationMap.mk'_cancel
File: Mathlib/GroupTheory/MonoidLocalization.lean

tactic: rw [Submonoid.coe_mul, mul_comm (b:M), mul_assoc]
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
f : S.LocalizationMap N
a : M
b c : ↥S
⊢ a * ↑(b * c) = a * ↑c * ↑b
state_after: no goals
Theorem: Metric.infDist_le_infDist_add_hausdorffDist
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: refine toReal_le_add' infEdist_le_infEdist_add_hausdorffEdist (fun h ↦ ?_) (flip absurd fin)
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
fin : hausdorffEdist s t ≠ ⊤
⊢ infDist x t ≤ infDist x s + hausdorffDist s t
state_after: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
fin : hausdorffEdist s t ≠ ⊤
h : infEdist x s = ⊤
⊢ infEdist x t = ⊤

tactic: rw [infEdist_eq_top_iff, ← not_nonempty_iff_eq_empty] at h ⊢
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
fin : hausdorffEdist s t ≠ ⊤
h : infEdist x s = ⊤
⊢ infEdist x t = ⊤
state_after: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
fin : hausdorffEdist s t ≠ ⊤
h : ¬s.Nonempty
⊢ ¬t.Nonempty

tactic: rw [hausdorffEdist_comm] at fin
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
fin : hausdorffEdist s t ≠ ⊤
h : ¬s.Nonempty
⊢ ¬t.Nonempty
state_after: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
fin : hausdorffEdist t s ≠ ⊤
h : ¬s.Nonempty
⊢ ¬t.Nonempty
Theorem: div_mem
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

tactic: rw [div_eq_mul_inv]
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
M : Type u_5
S : Type u_6
inst✝¹ : DivInvMonoid M
inst✝ : SetLike S M
hSM : SubgroupClass S M
H K : S
x y : M
hx : x ∈ H
hy : y ∈ H
⊢ x / y ∈ 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
M : Type u_5
S : Type u_6
inst✝¹ : DivInvMonoid M
inst✝ : SetLike S M
hSM : SubgroupClass S M
H K : S
x y : M
hx : x ∈ H
hy : y ∈ H
⊢ x * y⁻¹ ∈ H

tactic: exact mul_mem hx (inv_mem hy)
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
M : Type u_5
S : Type u_6
inst✝¹ : DivInvMonoid M
inst✝ : SetLike S M
hSM : SubgroupClass S M
H K : S
x y : M
hx : x ∈ H
hy : y ∈ H
⊢ x * y⁻¹ ∈ H
state_after: no goals
Theorem: QuasiErgodic.ae_empty_or_univ'
File: Mathlib/Dynamics/Ergodic/Ergodic.lean

tactic: obtain ⟨t, h₀, h₁, h₂⟩ := hf.toQuasiMeasurePreserving.exists_preimage_eq_of_preimage_ae hs hs'
state_before: α : Type u_1
m : MeasurableSpace α
f : α → α
s : Set α
μ : Measure α
hf : QuasiErgodic f μ
hs : MeasurableSet s
hs' : f ⁻¹' s =ᶠ[ae μ] s
⊢ s =ᶠ[ae μ] ∅ ∨ s =ᶠ[ae μ] univ
state_after: case intro.intro.intro
α : Type u_1
m : MeasurableSpace α
f : α → α
s : Set α
μ : Measure α
hf : QuasiErgodic f μ
hs : MeasurableSet s
hs' : f ⁻¹' s =ᶠ[ae μ] s
t : Set α
h₀ : MeasurableSet t
h₁ : t =ᶠ[ae μ] s
h₂ : f ⁻¹' t = t
⊢ s =ᶠ[ae μ] ∅ ∨ s =ᶠ[ae μ] univ

tactic: rcases hf.ae_empty_or_univ h₀ h₂ with (h₃ | h₃) <;> [left; right] <;> exact ae_eq_trans h₁.symm h₃
state_before: case intro.intro.intro
α : Type u_1
m : MeasurableSpace α
f : α → α
s : Set α
μ : Measure α
hf : QuasiErgodic f μ
hs : MeasurableSet s
hs' : f ⁻¹' s =ᶠ[ae μ] s
t : Set α
h₀ : MeasurableSet t
h₁ : t =ᶠ[ae μ] s
h₂ : f ⁻¹' t = t
⊢ s =ᶠ[ae μ] ∅ ∨ s =ᶠ[ae μ] univ
state_after: no goals