tasksource/leandojo huggingface dataset:
Theorem: Real.exp_pos
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [← neg_neg x, Real.exp_neg]
state_before: x✝ y x : ℝ
h : x ≤ 0
⊢ 0 < exp x

tactic: exact inv_pos.2 (lt_of_lt_of_le zero_lt_one (one_le_exp (neg_nonneg.2 h)))
state_before: x✝ y x : ℝ
h : x ≤ 0
⊢ 0 < (exp (-x))⁻¹
Theorem: uniformEquicontinuous_iff_uniformContinuous
File: Mathlib/Topology/UniformSpace/Equicontinuity.lean

tactic: rw [UniformContinuous, (UniformFun.hasBasis_uniformity ι α).tendsto_right_iff]
state_before: ι : Type u_1
κ : Type ?u.100604
X : Type ?u.100607
Y : Type ?u.100610
Z : Type ?u.100613
α : Type u_2
β : Type u_3
γ : Type ?u.100622
𝓕 : Type ?u.100625
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
F : ι → β → α
⊢ UniformEquicontinuous F ↔ UniformContinuous (↑UniformFun.ofFun ∘ Function.swap F)

tactic: rfl
state_before: ι : Type u_1
κ : Type ?u.100604
X : Type ?u.100607
Y : Type ?u.100610
Z : Type ?u.100613
α : Type u_2
β : Type u_3
γ : Type ?u.100622
𝓕 : Type ?u.100625
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
F : ι → β → α
⊢ UniformEquicontinuous F ↔
    ∀ (i : Set (α × α)),
      i ∈ 𝓤 α →
        ∀ᶠ (x : β × β) in 𝓤 β,
          ((↑UniformFun.ofFun ∘ Function.swap F) x.fst, (↑UniformFun.ofFun ∘ Function.swap F) x.snd) ∈
            UniformFun.gen ι α i
Theorem: FractionalIdeal.mul_one_div_le_one
File: Mathlib/RingTheory/FractionalIdeal.lean

tactic: by_cases hI : I = 0
state_before: R : Type ?u.1197189
inst✝⁶ : CommRing R
S : Submonoid R
P : Type ?u.1197396
inst✝⁵ : CommRing P
inst✝⁴ : Algebra R P
loc : IsLocalization S P
R₁ : Type u_1
inst✝³ : CommRing R₁
K : Type u_2
inst✝² : Field K
inst✝¹ : Algebra R₁ K
frac : IsFractionRing R₁ K
inst✝ : IsDomain R₁
I✝ J I : FractionalIdeal R₁⁰ K
⊢ I * (1 / I) ≤ 1

tactic: rw [hI, div_zero, MulZeroClass.mul_zero]
state_before: case pos
R : Type ?u.1197189
inst✝⁶ : CommRing R
S : Submonoid R
P : Type ?u.1197396
inst✝⁵ : CommRing P
inst✝⁴ : Algebra R P
loc : IsLocalization S P
R₁ : Type u_1
inst✝³ : CommRing R₁
K : Type u_2
inst✝² : Field K
inst✝¹ : Algebra R₁ K
frac : IsFractionRing R₁ K
inst✝ : IsDomain R₁
I✝ J I : FractionalIdeal R₁⁰ K
hI : I = 0
⊢ I * (1 / I) ≤ 1

tactic: exact zero_le 1
state_before: case pos
R : Type ?u.1197189
inst✝⁶ : CommRing R
S : Submonoid R
P : Type ?u.1197396
inst✝⁵ : CommRing P
inst✝⁴ : Algebra R P
loc : IsLocalization S P
R₁ : Type u_1
inst✝³ : CommRing R₁
K : Type u_2
inst✝² : Field K
inst✝¹ : Algebra R₁ K
frac : IsFractionRing R₁ K
inst✝ : IsDomain R₁
I✝ J I : FractionalIdeal R₁⁰ K
hI : I = 0
⊢ 0 ≤ 1

tactic: rw [← coe_le_coe, coe_mul, coe_div hI, coe_one]
state_before: case neg
R : Type ?u.1197189
inst✝⁶ : CommRing R
S : Submonoid R
P : Type ?u.1197396
inst✝⁵ : CommRing P
inst✝⁴ : Algebra R P
loc : IsLocalization S P
R₁ : Type u_1
inst✝³ : CommRing R₁
K : Type u_2
inst✝² : Field K
inst✝¹ : Algebra R₁ K
frac : IsFractionRing R₁ K
inst✝ : IsDomain R₁
I✝ J I : FractionalIdeal R₁⁰ K
hI : ¬I = 0
⊢ I * (1 / I) ≤ 1

tactic: apply Submodule.mul_one_div_le_one
state_before: case neg
R : Type ?u.1197189
inst✝⁶ : CommRing R
S : Submonoid R
P : Type ?u.1197396
inst✝⁵ : CommRing P
inst✝⁴ : Algebra R P
loc : IsLocalization S P
R₁ : Type u_1
inst✝³ : CommRing R₁
K : Type u_2
inst✝² : Field K
inst✝¹ : Algebra R₁ K
frac : IsFractionRing R₁ K
inst✝ : IsDomain R₁
I✝ J I : FractionalIdeal R₁⁰ K
hI : ¬I = 0
⊢ ↑I * (1 / ↑I) ≤ 1
Theorem: AddCircle.addOrderOf_period_div
File: Mathlib/Topology/Instances/AddCircle.lean

tactic: rw [addOrderOf_eq_iff h]
state_before: 𝕜 : Type u_1
B : Type ?u.178268
inst✝² : LinearOrderedField 𝕜
inst✝¹ : TopologicalSpace 𝕜
inst✝ : OrderTopology 𝕜
p q : 𝕜
hp : Fact (0 < p)
n : ℕ
h : 0 < n
⊢ addOrderOf ↑(p / ↑n) = n

tactic: replace h : 0 < (n : 𝕜) := Nat.cast_pos.2 h
state_before: 𝕜 : Type u_1
B : Type ?u.178268
inst✝² : LinearOrderedField 𝕜
inst✝¹ : TopologicalSpace 𝕜
inst✝ : OrderTopology 𝕜
p q : 𝕜
hp : Fact (0 < p)
n : ℕ
h : 0 < n
⊢ n • ↑(p / ↑n) = 0 ∧ ∀ (m : ℕ), m < n → 0 < m → m • ↑(p / ↑n) ≠ 0

tactic: refine' ⟨_, fun m hn h0 => _⟩ <;> simp only [Ne, ← coe_nsmul, nsmul_eq_mul]
state_before: 𝕜 : Type u_1
B : Type ?u.178268
inst✝² : LinearOrderedField 𝕜
inst✝¹ : TopologicalSpace 𝕜
inst✝ : OrderTopology 𝕜
p q : 𝕜
hp : Fact (0 < p)
n : ℕ
h : 0 < ↑n
⊢ n • ↑(p / ↑n) = 0 ∧ ∀ (m : ℕ), m < n → 0 < m → m • ↑(p / ↑n) ≠ 0

tactic: rw [coe_eq_zero_of_pos_iff p hp.out (mul_pos (Nat.cast_pos.2 h0) <| div_pos hp.out h)]
state_before: case refine'_2
𝕜 : Type u_1
B : Type ?u.178268
inst✝² : LinearOrderedField 𝕜
inst✝¹ : TopologicalSpace 𝕜
inst✝ : OrderTopology 𝕜
p q : 𝕜
hp : Fact (0 < p)
n : ℕ
h : 0 < ↑n
m : ℕ
hn : m < n
h0 : 0 < m
⊢ ¬↑(↑m * (p / ↑n)) = 0

tactic: rintro ⟨k, hk⟩
state_before: case refine'_2
𝕜 : Type u_1
B : Type ?u.178268
inst✝² : LinearOrderedField 𝕜
inst✝¹ : TopologicalSpace 𝕜
inst✝ : OrderTopology 𝕜
p q : 𝕜
hp : Fact (0 < p)
n : ℕ
h : 0 < ↑n
m : ℕ
hn : m < n
h0 : 0 < m
⊢ ¬∃ n_1, n_1 • p = ↑m * (p / ↑n)

tactic: rw [mul_div, eq_div_iff h.ne', nsmul_eq_mul, mul_right_comm, ← Nat.cast_mul,
  (mul_left_injective₀ hp.out.ne').eq_iff, Nat.cast_inj, mul_comm] at hk
state_before: case refine'_2.intro
𝕜 : Type u_1
B : Type ?u.178268
inst✝² : LinearOrderedField 𝕜
inst✝¹ : TopologicalSpace 𝕜
inst✝ : OrderTopology 𝕜
p q : 𝕜
hp : Fact (0 < p)
n : ℕ
h : 0 < ↑n
m : ℕ
hn : m < n
h0 : 0 < m
k : ℕ
hk : k • p = ↑m * (p / ↑n)
⊢ False

tactic: exact (Nat.le_of_dvd h0 ⟨_, hk.symm⟩).not_lt hn
state_before: case refine'_2.intro
𝕜 : Type u_1
B : Type ?u.178268
inst✝² : LinearOrderedField 𝕜
inst✝¹ : TopologicalSpace 𝕜
inst✝ : OrderTopology 𝕜
p q : 𝕜
hp : Fact (0 < p)
n : ℕ
h : 0 < ↑n
m : ℕ
hn : m < n
h0 : 0 < m
k : ℕ
hk : n * k = m
⊢ False

tactic: rw [mul_div_cancel' _ h.ne', coe_period]
state_before: case refine'_1
𝕜 : Type u_1
B : Type ?u.178268
inst✝² : LinearOrderedField 𝕜
inst✝¹ : TopologicalSpace 𝕜
inst✝ : OrderTopology 𝕜
p q : 𝕜
hp : Fact (0 < p)
n : ℕ
h : 0 < ↑n
⊢ ↑(↑n * (p / ↑n)) = 0
Theorem: Sigma.mk.inj_iff
File: Mathlib/Data/Sigma/Basic.lean

tactic: cases h
state_before: α : Type u_1
α₁ : Type ?u.1977
α₂ : Type ?u.1980
β : α → Type u_2
β₁ : α₁ → Type ?u.1990
β₂ : α₂ → Type ?u.1995
a₁ a₂ : α
b₁ : β a₁
b₂ : β a₂
h : { fst := a₁, snd := b₁ } = { fst := a₂, snd := b₂ }
⊢ a₁ = a₂ ∧ HEq b₁ b₂

tactic: exact ⟨rfl, heq_of_eq rfl⟩
state_before: case refl
α : Type u_1
α₁ : Type ?u.1977
α₂ : Type ?u.1980
β : α → Type u_2
β₁ : α₁ → Type ?u.1990
β₂ : α₂ → Type ?u.1995
a₁ : α
b₁ : β a₁
⊢ a₁ = a₁ ∧ HEq b₁ b₁

tactic: subst h₁
state_before: α : Type u_1
α₁ : Type ?u.1977
α₂ : Type ?u.1980
β : α → Type u_2
β₁ : α₁ → Type ?u.1990
β₂ : α₂ → Type ?u.1995
a₁ a₂ : α
b₁ : β a₁
b₂ : β a₂
x✝ : a₁ = a₂ ∧ HEq b₁ b₂
h₁ : a₁ = a₂
h₂ : HEq b₁ b₂
⊢ { fst := a₁, snd := b₁ } = { fst := a₂, snd := b₂ }

tactic: rw [eq_of_heq h₂]
state_before: α : Type u_1
α₁ : Type ?u.1977
α₂ : Type ?u.1980
β : α → Type u_2
β₁ : α₁ → Type ?u.1990
β₂ : α₂ → Type ?u.1995
a₁ : α
b₁ b₂ : β a₁
x✝ : a₁ = a₁ ∧ HEq b₁ b₂
h₂ : HEq b₁ b₂
⊢ { fst := a₁, snd := b₁ } = { fst := a₁, snd := b₂ }
Theorem: FreeLieAlgebra.hom_ext
File: Mathlib/Algebra/Lie/Free.lean

tactic: ext
state_before: R : Type u
X : Type v
inst✝² : CommRing R
L : Type w
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
F₁ F₂ : FreeLieAlgebra R X →ₗ⁅R⁆ L
h : ∀ (x : X), ↑F₁ (of R x) = ↑F₂ (of R x)
⊢ ↑(lift R).symm F₁ = ↑(lift R).symm F₂

tactic: simp [h]
state_before: case h
R : Type u
X : Type v
inst✝² : CommRing R
L : Type w
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
F₁ F₂ : FreeLieAlgebra R X →ₗ⁅R⁆ L
h : ∀ (x : X), ↑F₁ (of R x) = ↑F₂ (of R x)
x✝ : X
⊢ ↑(lift R).symm F₁ x✝ = ↑(lift R).symm F₂ x✝
Theorem: wbtw_pointReflection
File: Mathlib/Analysis/Convex/Between.lean

tactic: refine' ⟨2⁻¹, ⟨by norm_num, by norm_num⟩, _⟩
state_before: R : Type u_1
V : Type u_2
V' : Type ?u.618495
P : Type u_3
P' : Type ?u.618501
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
⊢ Wbtw R y x (↑(pointReflection R x) y)

tactic: rw [lineMap_apply, pointReflection_apply, vadd_vsub_assoc, ← two_smul R (x -ᵥ y)]
state_before: R : Type u_1
V : Type u_2
V' : Type ?u.618495
P : Type u_3
P' : Type ?u.618501
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
⊢ ↑(lineMap y (↑(pointReflection R x) y)) 2⁻¹ = x

tactic: simp
state_before: R : Type u_1
V : Type u_2
V' : Type ?u.618495
P : Type u_3
P' : Type ?u.618501
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
⊢ 2⁻¹ • 2 • (x -ᵥ y) +ᵥ y = x

tactic: norm_num
state_before: R : Type u_1
V : Type u_2
V' : Type ?u.618495
P : Type u_3
P' : Type ?u.618501
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
⊢ 0 ≤ 2⁻¹

tactic: norm_num
state_before: R : Type u_1
V : Type u_2
V' : Type ?u.618495
P : Type u_3
P' : Type ?u.618501
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
⊢ 2⁻¹ ≤ 1
Theorem: MeasureTheory.DominatedFinMeasAdditive.eq_zero_of_measure_zero
File: Mathlib/MeasureTheory/Integral/SetToL1.lean

tactic: refine' norm_eq_zero.mp _
state_before: α : Type u_2
E : Type ?u.100491
F : Type ?u.100494
F' : Type ?u.100497
G : Type ?u.100500
𝕜 : Type ?u.100503
p : ℝ≥0∞
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℝ F
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
inst✝² : NormedAddCommGroup G
m : MeasurableSpace α
μ : Measure α
β✝ : Type ?u.100803
inst✝¹ : SeminormedAddCommGroup β✝
T✝ T' : Set α → β✝
C✝ C' : ℝ
β : Type u_1
inst✝ : NormedAddCommGroup β
T : Set α → β
C : ℝ
hT : DominatedFinMeasAdditive μ T C
s : Set α
hs : MeasurableSet s
hs_zero : ↑↑μ s = 0
⊢ T s = 0

tactic: refine' ((hT.2 s hs (by simp [hs_zero])).trans (le_of_eq _)).antisymm (norm_nonneg _)
state_before: α : Type u_2
E : Type ?u.100491
F : Type ?u.100494
F' : Type ?u.100497
G : Type ?u.100500
𝕜 : Type ?u.100503
p : ℝ≥0∞
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℝ F
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
inst✝² : NormedAddCommGroup G
m : MeasurableSpace α
μ : Measure α
β✝ : Type ?u.100803
inst✝¹ : SeminormedAddCommGroup β✝
T✝ T' : Set α → β✝
C✝ C' : ℝ
β : Type u_1
inst✝ : NormedAddCommGroup β
T : Set α → β
C : ℝ
hT : DominatedFinMeasAdditive μ T C
s : Set α
hs : MeasurableSet s
hs_zero : ↑↑μ s = 0
⊢ ‖T s‖ = 0

tactic: rw [hs_zero, ENNReal.zero_toReal, MulZeroClass.mul_zero]
state_before: α : Type u_2
E : Type ?u.100491
F : Type ?u.100494
F' : Type ?u.100497
G : Type ?u.100500
𝕜 : Type ?u.100503
p : ℝ≥0∞
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℝ F
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
inst✝² : NormedAddCommGroup G
m : MeasurableSpace α
μ : Measure α
β✝ : Type ?u.100803
inst✝¹ : SeminormedAddCommGroup β✝
T✝ T' : Set α → β✝
C✝ C' : ℝ
β : Type u_1
inst✝ : NormedAddCommGroup β
T : Set α → β
C : ℝ
hT : DominatedFinMeasAdditive μ T C
s : Set α
hs : MeasurableSet s
hs_zero : ↑↑μ s = 0
⊢ C * ENNReal.toReal (↑↑μ s) = 0

tactic: simp [hs_zero]
state_before: α : Type u_2
E : Type ?u.100491
F : Type ?u.100494
F' : Type ?u.100497
G : Type ?u.100500
𝕜 : Type ?u.100503
p : ℝ≥0∞
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℝ F
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
inst✝² : NormedAddCommGroup G
m : MeasurableSpace α
μ : Measure α
β✝ : Type ?u.100803
inst✝¹ : SeminormedAddCommGroup β✝
T✝ T' : Set α → β✝
C✝ C' : ℝ
β : Type u_1
inst✝ : NormedAddCommGroup β
T : Set α → β
C : ℝ
hT : DominatedFinMeasAdditive μ T C
s : Set α
hs : MeasurableSet s
hs_zero : ↑↑μ s = 0
⊢ ↑↑μ s < ⊤
Theorem: lift_rank_mul_lift_rank
File: Mathlib/FieldTheory/Tower.lean

tactic: obtain ⟨_, b⟩ := Module.Free.exists_basis (R := F) (M := K)
state_before: F : Type u
K : Type v
A : Type w
inst✝¹⁰ : CommRing F
inst✝⁹ : Ring K
inst✝⁸ : AddCommGroup A
inst✝⁷ : Algebra F K
inst✝⁶ : Module K A
inst✝⁵ : Module F A
inst✝⁴ : IsScalarTower F K A
inst✝³ : StrongRankCondition F
inst✝² : StrongRankCondition K
inst✝¹ : Module.Free F K
inst✝ : Module.Free K A
⊢ lift (Module.rank F K) * lift (Module.rank K A) = lift (Module.rank F A)

tactic: obtain ⟨_, c⟩ := Module.Free.exists_basis (R := K) (M := A)
state_before: case intro.mk
F : Type u
K : Type v
A : Type w
inst✝¹⁰ : CommRing F
inst✝⁹ : Ring K
inst✝⁸ : AddCommGroup A
inst✝⁷ : Algebra F K
inst✝⁶ : Module K A
inst✝⁵ : Module F A
inst✝⁴ : IsScalarTower F K A
inst✝³ : StrongRankCondition F
inst✝² : StrongRankCondition K
inst✝¹ : Module.Free F K
inst✝ : Module.Free K A
fst✝ : Type v
b : Basis fst✝ F K
⊢ lift (Module.rank F K) * lift (Module.rank K A) = lift (Module.rank F A)

tactic: rw [← (Module.rank F K).lift_id, ← b.mk_eq_rank, ← (Module.rank K A).lift_id, ← c.mk_eq_rank, ←
  lift_umax.{w, v}, ← (b.smul c).mk_eq_rank, mk_prod, lift_mul, lift_lift, lift_lift, lift_lift,
  lift_lift, lift_umax.{v, w}]
state_before: case intro.mk.intro.mk
F : Type u
K : Type v
A : Type w
inst✝¹⁰ : CommRing F
inst✝⁹ : Ring K
inst✝⁸ : AddCommGroup A
inst✝⁷ : Algebra F K
inst✝⁶ : Module K A
inst✝⁵ : Module F A
inst✝⁴ : IsScalarTower F K A
inst✝³ : StrongRankCondition F
inst✝² : StrongRankCondition K
inst✝¹ : Module.Free F K
inst✝ : Module.Free K A
fst✝¹ : Type v
b : Basis fst✝¹ F K
fst✝ : Type w
c : Basis fst✝ K A
⊢ lift (Module.rank F K) * lift (Module.rank K A) = lift (Module.rank F A)
Theorem: AffineSubspace.isPreconnected_setOf_sOppSide
File: Mathlib/Analysis/Convex/Side.lean

tactic: rcases Set.eq_empty_or_nonempty (s : Set P) with (h | h)
state_before: R : Type ?u.516890
V : Type u_1
V' : Type ?u.516896
P : Type u_2
P' : Type ?u.516902
inst✝³ : SeminormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor V P
s : AffineSubspace ℝ P
x : P
⊢ IsPreconnected {y | SOppSide s x y}

tactic: rw [coe_eq_bot_iff] at h
state_before: case inl
R : Type ?u.516890
V : Type u_1
V' : Type ?u.516896
P : Type u_2
P' : Type ?u.516902
inst✝³ : SeminormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor V P
s : AffineSubspace ℝ P
x : P
h : ↑s = ∅
⊢ IsPreconnected {y | SOppSide s x y}

tactic: simp only [h, not_sOppSide_bot]
state_before: case inl
R : Type ?u.516890
V : Type u_1
V' : Type ?u.516896
P : Type u_2
P' : Type ?u.516902
inst✝³ : SeminormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor V P
s : AffineSubspace ℝ P
x : P
h : s = ⊥
⊢ IsPreconnected {y | SOppSide s x y}

tactic: exact isPreconnected_empty
state_before: case inl
R : Type ?u.516890
V : Type u_1
V' : Type ?u.516896
P : Type u_2
P' : Type ?u.516902
inst✝³ : SeminormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor V P
s : AffineSubspace ℝ P
x : P
h : s = ⊥
⊢ IsPreconnected {y | False}

tactic: by_cases hx : x ∈ s
state_before: case inr
R : Type ?u.516890
V : Type u_1
V' : Type ?u.516896
P : Type u_2
P' : Type ?u.516902
inst✝³ : SeminormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor V P
s : AffineSubspace ℝ P
x : P
h : Set.Nonempty ↑s
⊢ IsPreconnected {y | SOppSide s x y}

tactic: simp only [hx, SOppSide, not_true, false_and_iff, and_false_iff]
state_before: case pos
R : Type ?u.516890
V : Type u_1
V' : Type ?u.516896
P : Type u_2
P' : Type ?u.516902
inst✝³ : SeminormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor V P
s : AffineSubspace ℝ P
x : P
h : Set.Nonempty ↑s
hx : x ∈ s
⊢ IsPreconnected {y | SOppSide s x y}

tactic: exact isPreconnected_empty
state_before: case pos
R : Type ?u.516890
V : Type u_1
V' : Type ?u.516896
P : Type u_2
P' : Type ?u.516902
inst✝³ : SeminormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor V P
s : AffineSubspace ℝ P
x : P
h : Set.Nonempty ↑s
hx : x ∈ s
⊢ IsPreconnected {y | False}

tactic: exact (isConnected_setOf_sOppSide hx h).isPreconnected
state_before: case neg
R : Type ?u.516890
V : Type u_1
V' : Type ?u.516896
P : Type u_2
P' : Type ?u.516902
inst✝³ : SeminormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor V P
s : AffineSubspace ℝ P
x : P
h : Set.Nonempty ↑s
hx : ¬x ∈ s
⊢ IsPreconnected {y | SOppSide s x y}
Theorem: Matrix.SpecialLinearGroup.fin_two_induction
File: Mathlib/LinearAlgebra/Matrix/SpecialLinearGroup.lean

tactic: rwa [det_fin_two_of]
state_before: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
R : Type v
inst✝¹ : CommRing R
S : Type ?u.785760
inst✝ : CommRing S
P : SL(2, R) → Prop
a b c d : R
hdet : a * d - b * c = 1
⊢ det (↑of ![![a, b], ![c, d]]) = 1

tactic: obtain ⟨m, hm⟩ := g
state_before: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
R : Type v
inst✝¹ : CommRing R
S : Type ?u.785760
inst✝ : CommRing S
P : SL(2, R) → Prop
h :
  ∀ (a b c d : R) (hdet : a * d - b * c = 1),
    P { val := ↑of ![![a, b], ![c, d]], property := (_ : det (↑of ![![a, b], ![c, d]]) = 1) }
g : SL(2, R)
⊢ P g

tactic: convert h (m 0 0) (m 0 1) (m 1 0) (m 1 1) (by rwa [det_fin_two] at hm)
state_before: case mk
n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
R : Type v
inst✝¹ : CommRing R
S : Type ?u.785760
inst✝ : CommRing S
P : SL(2, R) → Prop
h :
  ∀ (a b c d : R) (hdet : a * d - b * c = 1),
    P { val := ↑of ![![a, b], ![c, d]], property := (_ : det (↑of ![![a, b], ![c, d]]) = 1) }
m : Matrix (Fin 2) (Fin 2) R
hm : det m = 1
⊢ P { val := m, property := hm }

tactic: ext (i j)
state_before: case h.e'_1.h.e'_3
n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
R : Type v
inst✝¹ : CommRing R
S : Type ?u.785760
inst✝ : CommRing S
P : SL(2, R) → Prop
h :
  ∀ (a b c d : R) (hdet : a * d - b * c = 1),
    P { val := ↑of ![![a, b], ![c, d]], property := (_ : det (↑of ![![a, b], ![c, d]]) = 1) }
m : Matrix (Fin 2) (Fin 2) R
hm : det m = 1
⊢ m = ↑of ![![m 0 0, m 0 1], ![m 1 0, m 1 1]]

tactic: fin_cases i <;> fin_cases j <;> rfl
state_before: case h.e'_1.h.e'_3.a.h
n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
R : Type v
inst✝¹ : CommRing R
S : Type ?u.785760
inst✝ : CommRing S
P : SL(2, R) → Prop
h :
  ∀ (a b c d : R) (hdet : a * d - b * c = 1),
    P { val := ↑of ![![a, b], ![c, d]], property := (_ : det (↑of ![![a, b], ![c, d]]) = 1) }
m : Matrix (Fin 2) (Fin 2) R
hm : det m = 1
i j : Fin 2
⊢ m i j = ↑of ![![m 0 0, m 0 1], ![m 1 0, m 1 1]] i j

tactic: rwa [det_fin_two] at hm
state_before: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
R : Type v
inst✝¹ : CommRing R
S : Type ?u.785760
inst✝ : CommRing S
P : SL(2, R) → Prop
h :
  ∀ (a b c d : R) (hdet : a * d - b * c = 1),
    P { val := ↑of ![![a, b], ![c, d]], property := (_ : det (↑of ![![a, b], ![c, d]]) = 1) }
m : Matrix (Fin 2) (Fin 2) R
hm : det m = 1
⊢ m 0 0 * m 1 1 - m 0 1 * m 1 0 = 1
Theorem: List.Sublist.reverse
File: Std/Data/List/Lemmas.lean

tactic: rw [reverse_cons]
state_before: α✝ : Type u_1
l₁✝ l₂ l₁ l₂✝ : List α✝
a✝ : α✝
h : l₁ <+ l₂✝
⊢ List.reverse l₁ <+ List.reverse (a✝ :: l₂✝)

tactic: exact sublist_append_of_sublist_left h.reverse
state_before: α✝ : Type u_1
l₁✝ l₂ l₁ l₂✝ : List α✝
a✝ : α✝
h : l₁ <+ l₂✝
⊢ List.reverse l₁ <+ List.reverse l₂✝ ++ [a✝]

tactic: rw [reverse_cons, reverse_cons]
state_before: α✝ : Type u_1
l₁ l₂ l₁✝ l₂✝ : List α✝
a✝ : α✝
h : l₁✝ <+ l₂✝
⊢ List.reverse (a✝ :: l₁✝) <+ List.reverse (a✝ :: l₂✝)

tactic: exact h.reverse.append_right _
state_before: α✝ : Type u_1
l₁ l₂ l₁✝ l₂✝ : List α✝
a✝ : α✝
h : l₁✝ <+ l₂✝
⊢ List.reverse l₁✝ ++ [a✝] <+ List.reverse l₂✝ ++ [a✝]
Theorem: Filter.HasBasis.prod_nhds
File: Mathlib/Topology/Constructions.lean

tactic: rw [nhds_prod_eq]
state_before: α : Type u
β : Type v
γ : Type ?u.35295
δ : Type ?u.35298
ε : Type ?u.35301
ζ : Type ?u.35304
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
inst✝² : TopologicalSpace δ
inst✝¹ : TopologicalSpace ε
inst✝ : TopologicalSpace ζ
ιa : Type u_1
ιb : Type u_2
pa : ιa → Prop
pb : ιb → Prop
sa : ιa → Set α
sb : ιb → Set β
a : α
b : β
ha : HasBasis (𝓝 a) pa sa
hb : HasBasis (𝓝 b) pb sb
⊢ HasBasis (𝓝 (a, b)) (fun i => pa i.fst ∧ pb i.snd) fun i => sa i.fst ×ˢ sb i.snd

tactic: exact ha.prod hb
state_before: α : Type u
β : Type v
γ : Type ?u.35295
δ : Type ?u.35298
ε : Type ?u.35301
ζ : Type ?u.35304
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
inst✝² : TopologicalSpace δ
inst✝¹ : TopologicalSpace ε
inst✝ : TopologicalSpace ζ
ιa : Type u_1
ιb : Type u_2
pa : ιa → Prop
pb : ιb → Prop
sa : ιa → Set α
sb : ιb → Set β
a : α
b : β
ha : HasBasis (𝓝 a) pa sa
hb : HasBasis (𝓝 b) pb sb
⊢ HasBasis (𝓝 a ×ˢ 𝓝 b) (fun i => pa i.fst ∧ pb i.snd) fun i => sa i.fst ×ˢ sb i.snd
Theorem: sup_ind
File: Mathlib/Order/Lattice.lean

tactic: rwa [sup_eq_right.2 h]
state_before: α : Type u
β : Type v
inst✝ : LinearOrder α
a✝ b✝ c d a b : α
p : α → Prop
ha : p a
hb : p b
h : a ≤ b
⊢ p (a ⊔ b)

tactic: rwa [sup_eq_left.2 h]
state_before: α : Type u
β : Type v
inst✝ : LinearOrder α
a✝ b✝ c d a b : α
p : α → Prop
ha : p a
hb : p b
h : b ≤ a
⊢ p (a ⊔ b)
Theorem: Nat.clog_pow
File: Mathlib/Data/Nat/Log.lean

tactic: rw [← le_pow_iff_clog_le hb]
state_before: b x : ℕ
hb : 1 < b
z : ℕ
⊢ clog b (b ^ x) ≤ z ↔ x ≤ z

tactic: exact (pow_right_strictMono hb).le_iff_le
state_before: b x : ℕ
hb : 1 < b
z : ℕ
⊢ b ^ x ≤ b ^ z ↔ x ≤ z
Theorem: Finset.diag_union_offDiag
File: Mathlib/Data/Finset/Prod.lean

tactic: conv_rhs => rw [← filter_union_filter_neg_eq (fun a => a.1 = a.2) (s ×ˢ s)]
state_before: α : Type u_1
β : Type ?u.116188
γ : Type ?u.116191
inst✝ : DecidableEq α
s t : Finset α
x : α × α
⊢ diag s ∪ offDiag s = s ×ˢ s
Theorem: of_irreducible_pow
File: Mathlib/Algebra/Associated.lean

tactic: obtain hn | hn := hn.lt_or_lt
state_before: α✝ : Type ?u.76176
β : Type ?u.76179
γ : Type ?u.76182
δ : Type ?u.76185
α : Type u_1
inst✝ : Monoid α
x : α
n : ℕ
hn : n ≠ 1
⊢ Irreducible (x ^ n) → IsUnit x

tactic: intro h
state_before: case inr
α✝ : Type ?u.76176
β : Type ?u.76179
γ : Type ?u.76182
δ : Type ?u.76185
α : Type u_1
inst✝ : Monoid α
x : α
n : ℕ
hn✝ : n ≠ 1
hn : 1 < n
⊢ Irreducible (x ^ n) → IsUnit x

tactic: obtain ⟨k, rfl⟩ := Nat.exists_eq_add_of_lt hn
state_before: case inr
α✝ : Type ?u.76176
β : Type ?u.76179
γ : Type ?u.76182
δ : Type ?u.76185
α : Type u_1
inst✝ : Monoid α
x : α
n : ℕ
hn✝ : n ≠ 1
hn : 1 < n
h : Irreducible (x ^ n)
⊢ IsUnit x

tactic: rw [pow_succ, add_comm] at h
state_before: case inr.intro
α✝ : Type ?u.76176
β : Type ?u.76179
γ : Type ?u.76182
δ : Type ?u.76185
α : Type u_1
inst✝ : Monoid α
x : α
k : ℕ
hn✝ : 1 + k + 1 ≠ 1
hn : 1 < 1 + k + 1
h : Irreducible (x ^ (1 + k + 1))
⊢ IsUnit x

tactic: exact (or_iff_left_of_imp isUnit_pow_succ_iff.mp).mp (of_irreducible_mul h)
state_before: case inr.intro
α✝ : Type ?u.76176
β : Type ?u.76179
γ : Type ?u.76182
δ : Type ?u.76185
α : Type u_1
inst✝ : Monoid α
x : α
k : ℕ
hn✝ : 1 + k + 1 ≠ 1
hn : 1 < 1 + k + 1
h : Irreducible (x * x ^ (k + 1))
⊢ IsUnit x

tactic: simp only [Nat.lt_one_iff.mp hn, IsEmpty.forall_iff, not_irreducible_one, pow_zero]
state_before: case inl
α✝ : Type ?u.76176
β : Type ?u.76179
γ : Type ?u.76182
δ : Type ?u.76185
α : Type u_1
inst✝ : Monoid α
x : α
n : ℕ
hn✝ : n ≠ 1
hn : n < 1
⊢ Irreducible (x ^ n) → IsUnit x