1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Rack.left_cancel_inv
File: Mathlib/Algebra/Quandle.lean

tactic: constructor
state_before: R : Type u_1
inst✝ : Rack R
x y y' : R
⊢ x ◃⁻¹ y = x ◃⁻¹ y' ↔ y = y'
state_after: case mp
R : Type u_1
inst✝ : Rack R
x y y' : R
⊢ x ◃⁻¹ y = x ◃⁻¹ y' → y = y'

case mpr
R : Type u_1
inst✝ : Rack R
x y y' : R
⊢ y = y' → x ◃⁻¹ y = x ◃⁻¹ y'

tactic: rintro rfl
state_before: case mpr
R : Type u_1
inst✝ : Rack R
x y y' : R
⊢ y = y' → x ◃⁻¹ y = x ◃⁻¹ y'
state_after: case mpr
R : Type u_1
inst✝ : Rack R
x y : R
⊢ x ◃⁻¹ y = x ◃⁻¹ y

tactic: rfl
state_before: case mpr
R : Type u_1
inst✝ : Rack R
x y : R
⊢ x ◃⁻¹ y = x ◃⁻¹ y
state_after: no goals

tactic: apply (act' x).symm.injective
state_before: case mp
R : Type u_1
inst✝ : Rack R
x y y' : R
⊢ x ◃⁻¹ y = x ◃⁻¹ y' → y = y'
state_after: no goals
Theorem: Finset.Ioo_insert_right
File: Mathlib/Order/Interval/Finset/Basic.lean

tactic: rw [← coe_inj, coe_insert, coe_Ioo, coe_Ioc, Set.insert_eq, Set.union_comm, Set.Ioo_union_right h]
state_before: ι : Type u_1
α : Type u_2
inst✝² : PartialOrder α
inst✝¹ : LocallyFiniteOrder α
a b c : α
inst✝ : DecidableEq α
h : a < b
⊢ insert b (Ioo a b) = Ioc a b
state_after: no goals
Theorem: continuous_algebraMap_iff_smul
File: Mathlib/Topology/Algebra/Algebra.lean

tactic: refine ⟨fun h => ?_, fun h => have : ContinuousSMul R A := ⟨h⟩; continuous_algebraMap _ _⟩
state_before: R : Type u_1
A : Type u
inst✝⁵ : CommSemiring R
inst✝⁴ : Semiring A
inst✝³ : Algebra R A
inst✝² : TopologicalSpace R
inst✝¹ : TopologicalSpace A
inst✝ : TopologicalSemiring A
⊢ Continuous ⇑(algebraMap R A) ↔ Continuous fun p => p.1 • p.2
state_after: R : Type u_1
A : Type u
inst✝⁵ : CommSemiring R
inst✝⁴ : Semiring A
inst✝³ : Algebra R A
inst✝² : TopologicalSpace R
inst✝¹ : TopologicalSpace A
inst✝ : TopologicalSemiring A
h : Continuous ⇑(algebraMap R A)
⊢ Continuous fun p => p.1 • p.2

tactic: simp only [Algebra.smul_def]
state_before: R : Type u_1
A : Type u
inst✝⁵ : CommSemiring R
inst✝⁴ : Semiring A
inst✝³ : Algebra R A
inst✝² : TopologicalSpace R
inst✝¹ : TopologicalSpace A
inst✝ : TopologicalSemiring A
h : Continuous ⇑(algebraMap R A)
⊢ Continuous fun p => p.1 • p.2
state_after: R : Type u_1
A : Type u
inst✝⁵ : CommSemiring R
inst✝⁴ : Semiring A
inst✝³ : Algebra R A
inst✝² : TopologicalSpace R
inst✝¹ : TopologicalSpace A
inst✝ : TopologicalSemiring A
h : Continuous ⇑(algebraMap R A)
⊢ Continuous fun p => (algebraMap R A) p.1 * p.2

tactic: exact (h.comp continuous_fst).mul continuous_snd
state_before: R : Type u_1
A : Type u
inst✝⁵ : CommSemiring R
inst✝⁴ : Semiring A
inst✝³ : Algebra R A
inst✝² : TopologicalSpace R
inst✝¹ : TopologicalSpace A
inst✝ : TopologicalSemiring A
h : Continuous ⇑(algebraMap R A)
⊢ Continuous fun p => (algebraMap R A) p.1 * p.2
state_after: no goals
Theorem: EuclideanGeometry.oangle_sign_eq_zero_iff_collinear
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Affine.lean

tactic: rw [Real.Angle.sign_eq_zero_iff, oangle_eq_zero_or_eq_pi_iff_collinear]
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
⊢ (∡ p₁ p₂ p₃).sign = 0 ↔ Collinear ℝ {p₁, p₂, p₃}
state_after: no goals
Theorem: OreLocalization.zero_oreDiv
File: Mathlib/RingTheory/OreLocalization/Basic.lean

tactic: rw [OreLocalization.zero_def, oreDiv_eq_iff]
state_before: R : Type u_1
inst✝³ : Monoid R
S : Submonoid R
inst✝² : OreSet S
X : Type u_2
inst✝¹ : AddMonoid X
inst✝ : DistribMulAction R X
s : ↥S
⊢ 0 /ₒ s = 0
state_after: R : Type u_1
inst✝³ : Monoid R
S : Submonoid R
inst✝² : OreSet S
X : Type u_2
inst✝¹ : AddMonoid X
inst✝ : DistribMulAction R X
s : ↥S
⊢ ∃ u v, u • 0 = v • 0 ∧ ↑u * ↑1 = v * ↑s

tactic: exact ⟨s, 1, by simp⟩
state_before: R : Type u_1
inst✝³ : Monoid R
S : Submonoid R
inst✝² : OreSet S
X : Type u_2
inst✝¹ : AddMonoid X
inst✝ : DistribMulAction R X
s : ↥S
⊢ ∃ u v, u • 0 = v • 0 ∧ ↑u * ↑1 = v * ↑s
state_after: no goals

tactic: simp
state_before: R : Type u_1
inst✝³ : Monoid R
S : Submonoid R
inst✝² : OreSet S
X : Type u_2
inst✝¹ : AddMonoid X
inst✝ : DistribMulAction R X
s : ↥S
⊢ s • 0 = 1 • 0 ∧ ↑s * ↑1 = 1 * ↑s
state_after: no goals
Theorem: CategoryTheory.Bicategory.rightUnitor_inv_naturality
File: Mathlib/CategoryTheory/Bicategory/Basic.lean

tactic: simp
state_before: B : Type u
inst✝ : Bicategory B
a b c d e : B
f g : a ⟶ b
η : f ⟶ g
⊢ η ≫ (ρ_ g).inv = (ρ_ f).inv ≫ η ▷ 𝟙 b
state_after: no goals
Theorem: CliffordAlgebra.equivOfIsometry_refl
File: Mathlib/LinearAlgebra/CliffordAlgebra/Basic.lean

tactic: ext x
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
M₁ : Type u_4
M₂ : Type u_5
M₃ : Type u_6
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : AddCommGroup M₃
inst✝² : Module R M₁
inst✝¹ : Module R M₂
inst✝ : Module R M₃
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
Q₃ : QuadraticForm R M₃
⊢ equivOfIsometry (QuadraticForm.IsometryEquiv.refl Q₁) = AlgEquiv.refl
state_after: case h
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
M₁ : Type u_4
M₂ : Type u_5
M₃ : Type u_6
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : AddCommGroup M₃
inst✝² : Module R M₁
inst✝¹ : Module R M₂
inst✝ : Module R M₃
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
Q₃ : QuadraticForm R M₃
x : CliffordAlgebra Q₁
⊢ (equivOfIsometry (QuadraticForm.IsometryEquiv.refl Q₁)) x = AlgEquiv.refl x

tactic: exact AlgHom.congr_fun (map_id Q₁) x
state_before: case h
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
M₁ : Type u_4
M₂ : Type u_5
M₃ : Type u_6
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : AddCommGroup M₃
inst✝² : Module R M₁
inst✝¹ : Module R M₂
inst✝ : Module R M₃
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
Q₃ : QuadraticForm R M₃
x : CliffordAlgebra Q₁
⊢ (equivOfIsometry (QuadraticForm.IsometryEquiv.refl Q₁)) x = AlgEquiv.refl x
state_after: no goals
Theorem: IsUnit.exists_left_inv
File: Mathlib/Algebra/Group/Units.lean

tactic: rcases h with ⟨⟨a, b, _, hba⟩, rfl⟩
state_before: α : Type u
M : Type u_1
N : Type u_2
inst✝ : Monoid M
a✝ b a : M
h : IsUnit a
⊢ ∃ b, b * a = 1
state_after: case intro.mk
α : Type u
M : Type u_1
N : Type u_2
inst✝ : Monoid M
a✝ b✝ a b : M
val_inv✝ : a * b = 1
hba : b * a = 1
⊢ ∃ b_1, b_1 * ↑{ val := a, inv := b, val_inv := val_inv✝, inv_val := hba } = 1

tactic: exact ⟨b, hba⟩
state_before: case intro.mk
α : Type u
M : Type u_1
N : Type u_2
inst✝ : Monoid M
a✝ b✝ a b : M
val_inv✝ : a * b = 1
hba : b * a = 1
⊢ ∃ b_1, b_1 * ↑{ val := a, inv := b, val_inv := val_inv✝, inv_val := hba } = 1
state_after: no goals
Theorem: Asymptotics.isLittleO_zero
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

tactic: simpa using mul_nonneg hc.le (norm_nonneg <| g' x)
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
G : Type u_5
E' : Type u_6
F' : Type u_7
G' : Type u_8
E'' : Type u_9
F'' : Type u_10
G'' : Type u_11
E''' : Type u_12
R : Type u_13
R' : Type u_14
𝕜 : Type u_15
𝕜' : Type u_16
inst✝¹³ : Norm E
inst✝¹² : Norm F
inst✝¹¹ : Norm G
inst✝¹⁰ : SeminormedAddCommGroup E'
inst✝⁹ : SeminormedAddCommGroup F'
inst✝⁸ : SeminormedAddCommGroup G'
inst✝⁷ : NormedAddCommGroup E''
inst✝⁶ : NormedAddCommGroup F''
inst✝⁵ : NormedAddCommGroup G''
inst✝⁴ : SeminormedRing R
inst✝³ : SeminormedAddGroup E'''
inst✝² : SeminormedRing R'
inst✝¹ : NormedDivisionRing 𝕜
inst✝ : NormedDivisionRing 𝕜'
c✝ c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
c : ℝ
hc : 0 < c
x : α
⊢ x ∈ {x | (fun x => ‖0‖ ≤ c * ‖g' x‖) x}
state_after: no goals
Theorem: Nat.factorizationLCMRight_zero_right
File: Mathlib/Data/Nat/Factorization/Basic.lean

tactic: simp [factorizationLCMRight]
state_before: a b m n p : ℕ
⊢ a.factorizationLCMRight 0 = 1
state_after: no goals
Theorem: Mathlib.Meta.NormNum.isNat_natMod
File: Mathlib/Tactic/NormNum/Basic.lean

tactic: aesop
state_before: n✝¹ n✝ : ℕ
⊢ ↑n✝¹ % ↑n✝ = ↑(n✝¹.mod n✝)
state_after: no goals
Theorem: LocalizedModule.mul_smul_aux
File: Mathlib/Algebra/Module/LocalizedModule.lean

tactic: induction' p with m s
state_before: R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
x y : T
p : LocalizedModule S M
⊢ (x * y) • p = x • y • p
state_after: case h
R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
x y : T
m : M
s : ↥S
⊢ (x * y) • mk m s = x • y • mk m s

tactic: rw [← IsLocalization.mk'_sec (M := S) T x, ← IsLocalization.mk'_sec (M := S) T y]
state_before: case h
R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
x y : T
m : M
s : ↥S
⊢ (x * y) • mk m s = x • y • mk m s
state_after: case h
R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
x y : T
m : M
s : ↥S
⊢ (IsLocalization.mk' T (IsLocalization.sec S x).1 (IsLocalization.sec S x).2 *
        IsLocalization.mk' T (IsLocalization.sec S y).1 (IsLocalization.sec S y).2) •
      mk m s =
    IsLocalization.mk' T (IsLocalization.sec S x).1 (IsLocalization.sec S x).2 •
      IsLocalization.mk' T (IsLocalization.sec S y).1 (IsLocalization.sec S y).2 • mk m s

tactic: simp_rw [← IsLocalization.mk'_mul, mk'_smul_mk, ← mul_smul, mul_assoc]
state_before: case h
R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
x y : T
m : M
s : ↥S
⊢ (IsLocalization.mk' T (IsLocalization.sec S x).1 (IsLocalization.sec S x).2 *
        IsLocalization.mk' T (IsLocalization.sec S y).1 (IsLocalization.sec S y).2) •
      mk m s =
    IsLocalization.mk' T (IsLocalization.sec S x).1 (IsLocalization.sec S x).2 •
      IsLocalization.mk' T (IsLocalization.sec S y).1 (IsLocalization.sec S y).2 • mk m s
state_after: no goals
Theorem: Complex.normSq_ofReal
File: Mathlib/Data/Complex/Basic.lean

tactic: simp [normSq, ofReal']
state_before: r : ℝ
⊢ normSq ↑r = r * r
state_after: no goals
Theorem: uniformInducing_iff_uniformSpace
File: Mathlib/Topology/UniformSpace/UniformEmbedding.lean

tactic: rw [uniformInducing_iff, UniformSpace.ext_iff, Filter.ext_iff]
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
f : α → β
⊢ UniformInducing f ↔ UniformSpace.comap f inst✝¹ = inst✝²
state_after: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
f : α → β
⊢ (∀ (s : Set (α × α)), s ∈ comap (fun x => (f x.1, f x.2)) (𝓤 β) ↔ s ∈ 𝓤 α) ↔ ∀ (s : Set (α × α)), s ∈ 𝓤 α ↔ s ∈ 𝓤 α

tactic: rfl
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
f : α → β
⊢ (∀ (s : Set (α × α)), s ∈ comap (fun x => (f x.1, f x.2)) (𝓤 β) ↔ s ∈ 𝓤 α) ↔ ∀ (s : Set (α × α)), s ∈ 𝓤 α ↔ s ∈ 𝓤 α
state_after: no goals
Theorem: Cardinal.aleph0_lt_aleph_one
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: rw [← succ_aleph0]
state_before: ⊢ ℵ₀ < aleph 1
state_after: ⊢ ℵ₀ < succ ℵ₀

tactic: apply lt_succ
state_before: ⊢ ℵ₀ < succ ℵ₀
state_after: no goals
Theorem: Filter.Germ.isConstant_coe_const
File: Mathlib/Order/Filter/Germ.lean

tactic: use b
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
l✝ : Filter α
f g h : α → β
l : Filter α
b : β
⊢ (↑fun x => b).IsConstant
state_after: no goals
Theorem: mul_le_mul_of_nonpos_right
File: Mathlib/Algebra/Order/Ring/Defs.lean

tactic: obtain ⟨d, hcd⟩ := exists_add_of_le hc
state_before: α : Type u
β : Type u_1
inst✝² : OrderedSemiring α
a b c d : α
inst✝¹ : ExistsAddOfLE α
inst✝ : ContravariantClass α α (swap fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
h : b ≤ a
hc : c ≤ 0
⊢ a * c ≤ b * c
state_after: case intro
α : Type u
β : Type u_1
inst✝² : OrderedSemiring α
a b c d✝ : α
inst✝¹ : ExistsAddOfLE α
inst✝ : ContravariantClass α α (swap fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
h : b ≤ a
hc : c ≤ 0
d : α
hcd : 0 = c + d
⊢ a * c ≤ b * c

tactic: refine le_of_add_le_add_right (a := b * d + a * d) ?_
state_before: case intro
α : Type u
β : Type u_1
inst✝² : OrderedSemiring α
a b c d✝ : α
inst✝¹ : ExistsAddOfLE α
inst✝ : ContravariantClass α α (swap fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
h : b ≤ a
hc : c ≤ 0
d : α
hcd : 0 = c + d
⊢ a * c ≤ b * c
state_after: case intro
α : Type u
β : Type u_1
inst✝² : OrderedSemiring α
a b c d✝ : α
inst✝¹ : ExistsAddOfLE α
inst✝ : ContravariantClass α α (swap fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
h : b ≤ a
hc : c ≤ 0
d : α
hcd : 0 = c + d
⊢ a * c + (b * d + a * d) ≤ b * c + (b * d + a * d)

tactic: calc
  _ = b * d := by rw [add_left_comm, ← mul_add, ← hcd, mul_zero, add_zero]
  _ ≤ a * d := mul_le_mul_of_nonneg_right h <| hcd.trans_le <| add_le_of_nonpos_left hc
  _ = _ := by rw [← add_assoc, ← mul_add, ← hcd, mul_zero, zero_add]
state_before: case intro
α : Type u
β : Type u_1
inst✝² : OrderedSemiring α
a b c d✝ : α
inst✝¹ : ExistsAddOfLE α
inst✝ : ContravariantClass α α (swap fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
h : b ≤ a
hc : c ≤ 0
d : α
hcd : 0 = c + d
⊢ a * c + (b * d + a * d) ≤ b * c + (b * d + a * d)
state_after: no goals

tactic: rw [add_left_comm, ← mul_add, ← hcd, mul_zero, add_zero]
state_before: α : Type u
β : Type u_1
inst✝² : OrderedSemiring α
a b c d✝ : α
inst✝¹ : ExistsAddOfLE α
inst✝ : ContravariantClass α α (swap fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
h : b ≤ a
hc : c ≤ 0
d : α
hcd : 0 = c + d
⊢ a * c + (b * d + a * d) = b * d
state_after: no goals

tactic: rw [← add_assoc, ← mul_add, ← hcd, mul_zero, zero_add]
state_before: α : Type u
β : Type u_1
inst✝² : OrderedSemiring α
a b c d✝ : α
inst✝¹ : ExistsAddOfLE α
inst✝ : ContravariantClass α α (swap fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
h : b ≤ a
hc : c ≤ 0
d : α
hcd : 0 = c + d
⊢ a * d = b * c + (b * d + a * d)
state_after: no goals
Theorem: le_compl_comm
File: Mathlib/Order/Heyting/Basic.lean

tactic: rw [le_compl_iff_disjoint_right, le_compl_iff_disjoint_left]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : HeytingAlgebra α
a b c : α
⊢ a ≤ bᶜ ↔ b ≤ aᶜ
state_after: no goals
Theorem: Real.rpow_add_one'
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rw [rpow_add' hx h, rpow_one]
state_before: x y z : ℝ
n : ℕ
hx : 0 ≤ x
h : y + 1 ≠ 0
⊢ x ^ (y + 1) = x ^ y * x
state_after: no goals
Theorem: ConvexOn.comp_affineMap
File: Mathlib/Analysis/Convex/Function.lean

tactic: rw [Convex.combo_affine_apply hab]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
α : Type u_4
β : Type u_5
ι : Type u_6
inst✝⁶ : LinearOrderedField 𝕜
inst✝⁵ : AddCommGroup E
inst✝⁴ : AddCommGroup F
inst✝³ : OrderedAddCommMonoid β
inst✝² : Module 𝕜 E
inst✝¹ : Module 𝕜 F
inst✝ : SMul 𝕜 β
f : F → β
g : E →ᵃ[𝕜] F
s : Set F
hf : ConvexOn 𝕜 s f
x : E
hx : x ∈ ⇑g ⁻¹' s
y : E
hy : y ∈ ⇑g ⁻¹' s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ f (g (a • x + b • y)) = f (a • g x + b • g y)
state_after: no goals
Theorem: wbtw_zero_one_iff
File: Mathlib/Analysis/Convex/Between.lean

tactic: rw [Wbtw, affineSegment, Set.mem_image]
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x : R
⊢ Wbtw R 0 x 1 ↔ x ∈ Set.Icc 0 1
state_after: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x : R
⊢ (∃ x_1 ∈ Set.Icc 0 1, (lineMap 0 1) x_1 = x) ↔ x ∈ Set.Icc 0 1

tactic: simp_rw [lineMap_apply_ring]
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x : R
⊢ (∃ x_1 ∈ Set.Icc 0 1, (lineMap 0 1) x_1 = x) ↔ x ∈ Set.Icc 0 1
state_after: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x : R
⊢ (∃ x_1 ∈ Set.Icc 0 1, (1 - x_1) * 0 + x_1 * 1 = x) ↔ x ∈ Set.Icc 0 1

tactic: simp
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x : R
⊢ (∃ x_1 ∈ Set.Icc 0 1, (1 - x_1) * 0 + x_1 * 1 = x) ↔ x ∈ Set.Icc 0 1
state_after: no goals
Theorem: PEquiv.injective_of_forall_ne_isSome
File: Mathlib/Data/PEquiv.lean

tactic: cases hfx : f x
state_before: α : Type u
β : Type v
γ : Type w
δ : Type x
f : α ≃. β
a₂ : α
h : ∀ (a₁ : α), a₁ ≠ a₂ → (f a₁).isSome = true
x : α
⊢ (fun b => Option.recOn b a₂ fun b' => Option.recOn (f.symm b') a₂ id) (f x) = x
state_after: case none
α : Type u
β : Type v
γ : Type w
δ : Type x
f : α ≃. β
a₂ : α
h : ∀ (a₁ : α), a₁ ≠ a₂ → (f a₁).isSome = true
x : α
hfx : f x = none
⊢ (fun b => Option.recOn b a₂ fun b' => Option.recOn (f.symm b') a₂ id) none = x

case some
α : Type u
β : Type v
γ : Type w
δ : Type x
f : α ≃. β
a₂ : α
h : ∀ (a₁ : α), a₁ ≠ a₂ → (f a₁).isSome = true
x : α
val✝ : β
hfx : f x = some val✝
⊢ (fun b => Option.recOn b a₂ fun b' => Option.recOn (f.symm b') a₂ id) (some val✝) = x

tactic: have : x = a₂ := not_imp_comm.1 (h x) (hfx.symm ▸ by simp)
state_before: case none
α : Type u
β : Type v
γ : Type w
δ : Type x
f : α ≃. β
a₂ : α
h : ∀ (a₁ : α), a₁ ≠ a₂ → (f a₁).isSome = true
x : α
hfx : f x = none
⊢ (fun b => Option.recOn b a₂ fun b' => Option.recOn (f.symm b') a₂ id) none = x
state_after: case none
α : Type u
β : Type v
γ : Type w
δ : Type x
f : α ≃. β
a₂ : α
h : ∀ (a₁ : α), a₁ ≠ a₂ → (f a₁).isSome = true
x : α
hfx : f x = none
this : x = a₂
⊢ (fun b => Option.recOn b a₂ fun b' => Option.recOn (f.symm b') a₂ id) none = x

tactic: simp [this]
state_before: case none
α : Type u
β : Type v
γ : Type w
δ : Type x
f : α ≃. β
a₂ : α
h : ∀ (a₁ : α), a₁ ≠ a₂ → (f a₁).isSome = true
x : α
hfx : f x = none
this : x = a₂
⊢ (fun b => Option.recOn b a₂ fun b' => Option.recOn (f.symm b') a₂ id) none = x
state_after: no goals

tactic: simp
state_before: α : Type u
β : Type v
γ : Type w
δ : Type x
f : α ≃. β
a₂ : α
h : ∀ (a₁ : α), a₁ ≠ a₂ → (f a₁).isSome = true
x : α
hfx : f x = none
⊢ ¬none.isSome = true
state_after: no goals

tactic: dsimp only
state_before: case some
α : Type u
β : Type v
γ : Type w
δ : Type x
f : α ≃. β
a₂ : α
h : ∀ (a₁ : α), a₁ ≠ a₂ → (f a₁).isSome = true
x : α
val✝ : β
hfx : f x = some val✝
⊢ (fun b => Option.recOn b a₂ fun b' => Option.recOn (f.symm b') a₂ id) (some val✝) = x
state_after: case some
α : Type u
β : Type v
γ : Type w
δ : Type x
f : α ≃. β
a₂ : α
h : ∀ (a₁ : α), a₁ ≠ a₂ → (f a₁).isSome = true
x : α
val✝ : β
hfx : f x = some val✝
⊢ Option.rec a₂ id (f.symm val✝) = x

tactic: rw [(eq_some_iff f).2 hfx]
state_before: case some
α : Type u
β : Type v
γ : Type w
δ : Type x
f : α ≃. β
a₂ : α
h : ∀ (a₁ : α), a₁ ≠ a₂ → (f a₁).isSome = true
x : α
val✝ : β
hfx : f x = some val✝
⊢ Option.rec a₂ id (f.symm val✝) = x
state_after: case some
α : Type u
β : Type v
γ : Type w
δ : Type x
f : α ≃. β
a₂ : α
h : ∀ (a₁ : α), a₁ ≠ a₂ → (f a₁).isSome = true
x : α
val✝ : β
hfx : f x = some val✝
⊢ Option.rec a₂ id (some x) = x

tactic: rfl
state_before: case some
α : Type u
β : Type v
γ : Type w
δ : Type x
f : α ≃. β
a₂ : α
h : ∀ (a₁ : α), a₁ ≠ a₂ → (f a₁).isSome = true
x : α
val✝ : β
hfx : f x = some val✝
⊢ Option.rec a₂ id (some x) = x
state_after: no goals
Theorem: Finset.prod_insertNone
File: Mathlib/Algebra/BigOperators/Option.lean

tactic: simp [insertNone]
state_before: α : Type u_1
M : Type u_2
inst✝ : CommMonoid M
f : Option α → M
s : Finset α
⊢ ∏ x ∈ insertNone s, f x = f none * ∏ x ∈ s, f (some x)
state_after: no goals
Theorem: MulAction.smul_mem_orbit_smul
File: Mathlib/GroupTheory/GroupAction/Basic.lean

tactic: simp only [orbit_smul, mem_orbit]
state_before: G : Type u_1
α : Type u_2
β : Type u_3
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : MulAction G β
g h : G
a : α
⊢ g • a ∈ orbit G (h • a)
state_after: no goals
Theorem: LieSubalgebra.ad_comp_incl_eq
File: Mathlib/Algebra/Lie/OfAssociative.lean

tactic: ext y
state_before: R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
K : LieSubalgebra R L
x : ↥K
⊢ (ad R L) ↑x ∘ₗ ↑K.incl = ↑K.incl ∘ₗ (ad R ↥K) x
state_after: case h
R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
K : LieSubalgebra R L
x y : ↥K
⊢ ((ad R L) ↑x ∘ₗ ↑K.incl) y = (↑K.incl ∘ₗ (ad R ↥K) x) y

tactic: simp only [ad_apply, LieHom.coe_toLinearMap, LieSubalgebra.coe_incl, LinearMap.coe_comp,
  LieSubalgebra.coe_bracket, Function.comp_apply]
state_before: case h
R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
K : LieSubalgebra R L
x y : ↥K
⊢ ((ad R L) ↑x ∘ₗ ↑K.incl) y = (↑K.incl ∘ₗ (ad R ↥K) x) y
state_after: no goals
Theorem: List.zipWithLeft'_eq_zipWithLeft'TR
File: .lake/packages/batteries/Batteries/Data/List/Basic.lean

tactic: funext α β γ f as bs
state_before: ⊢ @zipWithLeft' = @zipWithLeft'TR
state_after: case h.h.h.h.h.h
α : Type u_3
β : Type u_2
γ : Type u_1
f : α → Option β → γ
as : List α
bs : List β
⊢ zipWithLeft' f as bs = zipWithLeft'TR f as bs

tactic: simp [zipWithLeft'TR]
state_before: case h.h.h.h.h.h
α : Type u_3
β : Type u_2
γ : Type u_1
f : α → Option β → γ
as : List α
bs : List β
⊢ zipWithLeft' f as bs = zipWithLeft'TR f as bs
state_after: case h.h.h.h.h.h
α : Type u_3
β : Type u_2
γ : Type u_1
f : α → Option β → γ
as : List α
bs : List β
⊢ zipWithLeft' f as bs = zipWithLeft'TR.go f as bs #[]

tactic: simp [zipWithLeft'TR, go]
state_before: case h.h.h.h.h.h
α : Type u_3
β : Type u_2
γ : Type u_1
f : α → Option β → γ
as : List α
bs : List β
⊢ zipWithLeft' f as bs = zipWithLeft'TR.go f as bs #[]
state_after: no goals

tactic: simp [zipWithLeft'TR.go]
state_before: α : Type u_3
β : Type u_2
γ : Type u_1
f : α → Option β → γ
as : List α
bs✝ : List β
acc : Array γ
bs : List β
⊢ zipWithLeft'TR.go f [] bs acc =
    match zipWithLeft' f [] bs with
    | (l, r) => (acc.toList ++ l, r)
state_after: no goals

tactic: simp [zipWithLeft'TR.go, Array.foldl_data_eq_map]
state_before: α : Type u_3
β : Type u_2
γ : Type u_1
f : α → Option β → γ
as : List α
bs : List β
acc : Array γ
head✝ : α
tail✝ : List α
⊢ zipWithLeft'TR.go f (head✝ :: tail✝) [] acc =
    match zipWithLeft' f (head✝ :: tail✝) [] with
    | (l, r) => (acc.toList ++ l, r)
state_after: no goals

tactic: simp [zipWithLeft'TR.go, go _ as bs]
state_before: α : Type u_3
β : Type u_2
γ : Type u_1
f : α → Option β → γ
as✝ : List α
bs✝ : List β
acc : Array γ
a : α
as : List α
b : β
bs : List β
⊢ zipWithLeft'TR.go f (a :: as) (b :: bs) acc =
    match zipWithLeft' f (a :: as) (b :: bs) with
    | (l, r) => (acc.toList ++ l, r)
state_after: no goals