1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: ModelWithCorners.unique_diff_preimage
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

tactic: rw [inter_comm]
state_before: 𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_3
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
s : Set H
hs : IsOpen s
⊢ UniqueDiffOn 𝕜 (↑I.symm ⁻¹' s ∩ range ↑I)
state_after: 𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_3
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
s : Set H
hs : IsOpen s
⊢ UniqueDiffOn 𝕜 (range ↑I ∩ ↑I.symm ⁻¹' s)

tactic: exact I.unique_diff.inter (hs.preimage I.continuous_invFun)
state_before: 𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_3
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
s : Set H
hs : IsOpen s
⊢ UniqueDiffOn 𝕜 (range ↑I ∩ ↑I.symm ⁻¹' s)
state_after: no goals
Theorem: Nat.dvd_pow_iff_ceilRoot_dvd
File: Mathlib/Data/Nat/Factorization/Root.lean

tactic: obtain rfl | ha := eq_or_ne a 0
state_before: a b n : ℕ
hn : n ≠ 0
⊢ a ∣ b ^ n ↔ n.ceilRoot a ∣ b
state_after: case inl
b n : ℕ
hn : n ≠ 0
⊢ 0 ∣ b ^ n ↔ n.ceilRoot 0 ∣ b

case inr
a b n : ℕ
hn : n ≠ 0
ha : a ≠ 0
⊢ a ∣ b ^ n ↔ n.ceilRoot a ∣ b

tactic: obtain rfl | hb := eq_or_ne b 0
state_before: case inr
a b n : ℕ
hn : n ≠ 0
ha : a ≠ 0
⊢ a ∣ b ^ n ↔ n.ceilRoot a ∣ b
state_after: case inr.inl
a n : ℕ
hn : n ≠ 0
ha : a ≠ 0
⊢ a ∣ 0 ^ n ↔ n.ceilRoot a ∣ 0

case inr.inr
a b n : ℕ
hn : n ≠ 0
ha : a ≠ 0
hb : b ≠ 0
⊢ a ∣ b ^ n ↔ n.ceilRoot a ∣ b

tactic: rw [← factorization_le_iff_dvd ha (pow_ne_zero _ hb),
  ← factorization_le_iff_dvd (ceilRoot_ne_zero.2 ⟨hn, ha⟩) hb, factorization_pow,
  factorization_ceilRoot, ceilDiv_le_iff_le_smul (β := ℕ →₀ ℕ) (pos_iff_ne_zero.2 hn)]
state_before: case inr.inr
a b n : ℕ
hn : n ≠ 0
ha : a ≠ 0
hb : b ≠ 0
⊢ a ∣ b ^ n ↔ n.ceilRoot a ∣ b
state_after: no goals

tactic: aesop
state_before: case inl
b n : ℕ
hn : n ≠ 0
⊢ 0 ∣ b ^ n ↔ n.ceilRoot 0 ∣ b
state_after: no goals

tactic: simp [hn]
state_before: case inr.inl
a n : ℕ
hn : n ≠ 0
ha : a ≠ 0
⊢ a ∣ 0 ^ n ↔ n.ceilRoot a ∣ 0
state_after: no goals
Theorem: LinearMap.toMatrix_baseChange
File: Mathlib/RingTheory/TensorProduct/Basic.lean

tactic: ext
state_before: R : Type u_1
M₁ : Type u_2
M₂ : Type u_3
ι : Type u_4
ι₂ : Type u_5
A : Type u_6
inst✝¹⁰ : Fintype ι
inst✝⁹ : Finite ι₂
inst✝⁸ : DecidableEq ι
inst✝⁷ : DecidableEq ι₂
inst✝⁶ : CommSemiring R
inst✝⁵ : CommSemiring A
inst✝⁴ : Algebra R A
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
f : M₁ →ₗ[R] M₂
b₁ : Basis ι R M₁
b₂ : Basis ι₂ R M₂
⊢ (toMatrix (basis A b₁) (basis A b₂)) (baseChange A f) = ((toMatrix b₁ b₂) f).map ⇑(algebraMap R A)
state_after: case a
R : Type u_1
M₁ : Type u_2
M₂ : Type u_3
ι : Type u_4
ι₂ : Type u_5
A : Type u_6
inst✝¹⁰ : Fintype ι
inst✝⁹ : Finite ι₂
inst✝⁸ : DecidableEq ι
inst✝⁷ : DecidableEq ι₂
inst✝⁶ : CommSemiring R
inst✝⁵ : CommSemiring A
inst✝⁴ : Algebra R A
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
f : M₁ →ₗ[R] M₂
b₁ : Basis ι R M₁
b₂ : Basis ι₂ R M₂
i✝ : ι₂
j✝ : ι
⊢ (toMatrix (basis A b₁) (basis A b₂)) (baseChange A f) i✝ j✝ = ((toMatrix b₁ b₂) f).map (⇑(algebraMap R A)) i✝ j✝

tactic: simp [toMatrix_apply]
state_before: case a
R : Type u_1
M₁ : Type u_2
M₂ : Type u_3
ι : Type u_4
ι₂ : Type u_5
A : Type u_6
inst✝¹⁰ : Fintype ι
inst✝⁹ : Finite ι₂
inst✝⁸ : DecidableEq ι
inst✝⁷ : DecidableEq ι₂
inst✝⁶ : CommSemiring R
inst✝⁵ : CommSemiring A
inst✝⁴ : Algebra R A
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
f : M₁ →ₗ[R] M₂
b₁ : Basis ι R M₁
b₂ : Basis ι₂ R M₂
i✝ : ι₂
j✝ : ι
⊢ (toMatrix (basis A b₁) (basis A b₂)) (baseChange A f) i✝ j✝ = ((toMatrix b₁ b₂) f).map (⇑(algebraMap R A)) i✝ j✝
state_after: no goals
Theorem: IsCompact.union
File: Mathlib/Topology/Compactness/Compact.lean

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 (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: exact isCompact_iUnion fun b => by cases b <;> assumption
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: cases b <;> assumption
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
b : Bool
⊢ IsCompact (bif b then s else t)
state_after: no goals
Theorem: Linarith.lt_of_lt_of_eq
File: Mathlib/Tactic/Linarith/Lemmas.lean

tactic: simp [*]
state_before: α : Type u_1
inst✝ : OrderedSemiring α
a b : α
ha : a < 0
hb : b = 0
⊢ a + b < 0
state_after: no goals
Theorem: Matrix.range_cons_cons_empty
File: Mathlib/Data/Fin/VecNotation.lean

tactic: rw [range_cons, range_cons_empty, Set.singleton_union]
state_before: α : Type u
m n o : ℕ
m' : Type u_1
n' : Type u_2
o' : Type u_3
x y : α
u : Fin 0 → α
⊢ Set.range (vecCons x (vecCons y u)) = {x, y}
state_after: no goals
Theorem: MonoidHom.transfer_center_eq_pow
File: Mathlib/GroupTheory/Transfer.lean

tactic: rw [← mul_right_inj, ← hk.comm,
mul_inv_cancel_right]
state_before: G : Type u_1
inst✝² : Group G
H : Subgroup G
A : Type u_2
inst✝¹ : CommGroup A
ϕ : ↥H →* A
T : ↑(leftTransversals ↑H)
inst✝ : (center G).FiniteIndex
g : G
k : ℕ
x✝ : G
hk : x✝⁻¹ * g ^ k * x✝ ∈ center G
⊢ x✝⁻¹ * g ^ k * x✝ = g ^ k
state_after: no goals
Theorem: Set.Nonempty.zero_div
File: Mathlib/Data/Set/Pointwise/Basic.lean

tactic: simpa [mem_div] using hs
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : GroupWithZero α
s t : Set α
hs : s.Nonempty
⊢ 0 ⊆ 0 / s
state_after: no goals
Theorem: generatePiSystem_measurableSet
File: Mathlib/MeasureTheory/PiSystem.lean

tactic: induction' h_in_pi with s h_s s u _ _ _ h_s h_u
state_before: α : Type u_1
M : MeasurableSpace α
S : Set (Set α)
h_meas_S : ∀ s ∈ S, MeasurableSet s
t : Set α
h_in_pi : t ∈ generatePiSystem S
⊢ MeasurableSet t
state_after: case base
α : Type u_1
M : MeasurableSpace α
S : Set (Set α)
h_meas_S : ∀ s ∈ S, MeasurableSet s
t s : Set α
h_s : s ∈ S
⊢ MeasurableSet s

case inter
α : Type u_1
M : MeasurableSpace α
S : Set (Set α)
h_meas_S : ∀ s ∈ S, MeasurableSet s
t s u : Set α
h_s✝ : generatePiSystem S s
h_t✝ : generatePiSystem S u
h_nonempty✝ : (s ∩ u).Nonempty
h_s : MeasurableSet s
h_u : MeasurableSet u
⊢ MeasurableSet (s ∩ u)

tactic: apply h_meas_S _ h_s
state_before: case base
α : Type u_1
M : MeasurableSpace α
S : Set (Set α)
h_meas_S : ∀ s ∈ S, MeasurableSet s
t s : Set α
h_s : s ∈ S
⊢ MeasurableSet s
state_after: no goals

tactic: apply MeasurableSet.inter h_s h_u
state_before: case inter
α : Type u_1
M : MeasurableSpace α
S : Set (Set α)
h_meas_S : ∀ s ∈ S, MeasurableSet s
t s u : Set α
h_s✝ : generatePiSystem S s
h_t✝ : generatePiSystem S u
h_nonempty✝ : (s ∩ u).Nonempty
h_s : MeasurableSet s
h_u : MeasurableSet u
⊢ MeasurableSet (s ∩ u)
state_after: no goals
Theorem: Set.compl_union_self
File: Mathlib/Data/Set/Basic.lean

tactic: rw [union_comm, union_compl_self]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s✝ s₁ s₂ t t₁ t₂ u s : Set α
⊢ sᶜ ∪ s = univ
state_after: no goals
Theorem: ascPochhammer_succ_eval
File: Mathlib/RingTheory/Polynomial/Pochhammer.lean

tactic: rw [ascPochhammer_succ_right, mul_add, eval_add, eval_mul_X, ← Nat.cast_comm, ← C_eq_natCast,
  eval_C_mul, Nat.cast_comm, ← mul_add]
state_before: S✝ : Type u
inst✝¹ : Semiring S✝
S : Type u_1
inst✝ : Semiring S
n : ℕ
k : S
⊢ eval k (ascPochhammer S (n + 1)) = eval k (ascPochhammer S n) * (k + ↑n)
state_after: no goals
Theorem: Surreal.Multiplication.ih4_neg
File: Mathlib/SetTheory/Surreal/Multiplication.lean

tactic: simp_rw [IH4, isOption_neg]
state_before: x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
⊢ IH4 x₁ x₂ y → IH4 (-x₂) (-x₁) y ∧ IH4 x₁ x₂ (-y)
state_after: x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
⊢ (∀ ⦃z w : PGame⦄, w.IsOption y → (z.IsOption x₁ → P2 z x₂ w) ∧ (z.IsOption x₂ → P2 x₁ z w)) →
    (∀ ⦃z w : PGame⦄, w.IsOption y → ((-z).IsOption x₂ → P2 z (-x₁) w) ∧ ((-z).IsOption x₁ → P2 (-x₂) z w)) ∧
      ∀ ⦃z w : PGame⦄, (-w).IsOption y → (z.IsOption x₁ → P2 z x₂ w) ∧ (z.IsOption x₂ → P2 x₁ z w)

tactic: refine fun h ↦ ⟨fun z w h' ↦ ?_, fun z w h' ↦ ?_⟩
state_before: x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
⊢ (∀ ⦃z w : PGame⦄, w.IsOption y → (z.IsOption x₁ → P2 z x₂ w) ∧ (z.IsOption x₂ → P2 x₁ z w)) →
    (∀ ⦃z w : PGame⦄, w.IsOption y → ((-z).IsOption x₂ → P2 z (-x₁) w) ∧ ((-z).IsOption x₁ → P2 (-x₂) z w)) ∧
      ∀ ⦃z w : PGame⦄, (-w).IsOption y → (z.IsOption x₁ → P2 z x₂ w) ∧ (z.IsOption x₂ → P2 x₁ z w)
state_after: case refine_1
x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h : ∀ ⦃z w : PGame⦄, w.IsOption y → (z.IsOption x₁ → P2 z x₂ w) ∧ (z.IsOption x₂ → P2 x₁ z w)
z w : PGame
h' : w.IsOption y
⊢ ((-z).IsOption x₂ → P2 z (-x₁) w) ∧ ((-z).IsOption x₁ → P2 (-x₂) z w)

case refine_2
x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h : ∀ ⦃z w : PGame⦄, w.IsOption y → (z.IsOption x₁ → P2 z x₂ w) ∧ (z.IsOption x₂ → P2 x₁ z w)
z w : PGame
h' : (-w).IsOption y
⊢ (z.IsOption x₁ → P2 z x₂ w) ∧ (z.IsOption x₂ → P2 x₁ z w)

tactic: convert (h h').symm using 2 <;> rw [P2_neg_left, neg_neg]
state_before: case refine_1
x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h : ∀ ⦃z w : PGame⦄, w.IsOption y → (z.IsOption x₁ → P2 z x₂ w) ∧ (z.IsOption x₂ → P2 x₁ z w)
z w : PGame
h' : w.IsOption y
⊢ ((-z).IsOption x₂ → P2 z (-x₁) w) ∧ ((-z).IsOption x₁ → P2 (-x₂) z w)
state_after: no goals

tactic: convert h h' using 2 <;> rw [P2_neg_right]
state_before: case refine_2
x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h : ∀ ⦃z w : PGame⦄, w.IsOption y → (z.IsOption x₁ → P2 z x₂ w) ∧ (z.IsOption x₂ → P2 x₁ z w)
z w : PGame
h' : (-w).IsOption y
⊢ (z.IsOption x₁ → P2 z x₂ w) ∧ (z.IsOption x₂ → P2 x₁ z w)
state_after: no goals
Theorem: IsSl2Triple.HasPrimitiveVectorWith.lie_f_pow_toEnd_f
File: Mathlib/Algebra/Lie/Sl2.lean

tactic: simp [pow_succ']
state_before: R : Type u_1
L : Type u_2
M : Type u_3
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
h e f : L
m : M
μ : R
t : IsSl2Triple h e f
P✝ P : t.HasPrimitiveVectorWith m μ
n : ℕ
⊢ ⁅f, ((toEnd R L M) f ^ n) m⁆ = ((toEnd R L M) f ^ (n + 1)) m
state_after: no goals
Theorem: Set.center_units_subset
File: Mathlib/Algebra/GroupWithZero/Center.lean

tactic: rw [mem_preimage, _root_.Semigroup.mem_center_iff]
state_before: M₀ : Type u_1
G₀ : Type u_2
inst✝ : GroupWithZero G₀
s : Set G₀
a b : G₀
x✝ : G₀ˣ
ha : x✝ ∈ center G₀ˣ
⊢ x✝ ∈ Units.val ⁻¹' center G₀
state_after: M₀ : Type u_1
G₀ : Type u_2
inst✝ : GroupWithZero G₀
s : Set G₀
a b : G₀
x✝ : G₀ˣ
ha : x✝ ∈ center G₀ˣ
⊢ ∀ (g : G₀), g * ↑x✝ = ↑x✝ * g

tactic: intro b
state_before: M₀ : Type u_1
G₀ : Type u_2
inst✝ : GroupWithZero G₀
s : Set G₀
a b : G₀
x✝ : G₀ˣ
ha : x✝ ∈ center G₀ˣ
⊢ ∀ (g : G₀), g * ↑x✝ = ↑x✝ * g
state_after: M₀ : Type u_1
G₀ : Type u_2
inst✝ : GroupWithZero G₀
s : Set G₀
a b✝ : G₀
x✝ : G₀ˣ
ha : x✝ ∈ center G₀ˣ
b : G₀
⊢ b * ↑x✝ = ↑x✝ * b

tactic: obtain rfl | hb := eq_or_ne b 0
state_before: M₀ : Type u_1
G₀ : Type u_2
inst✝ : GroupWithZero G₀
s : Set G₀
a b✝ : G₀
x✝ : G₀ˣ
ha : x✝ ∈ center G₀ˣ
b : G₀
⊢ b * ↑x✝ = ↑x✝ * b
state_after: case inl
M₀ : Type u_1
G₀ : Type u_2
inst✝ : GroupWithZero G₀
s : Set G₀
a b : G₀
x✝ : G₀ˣ
ha : x✝ ∈ center G₀ˣ
⊢ 0 * ↑x✝ = ↑x✝ * 0

case inr
M₀ : Type u_1
G₀ : Type u_2
inst✝ : GroupWithZero G₀
s : Set G₀
a b✝ : G₀
x✝ : G₀ˣ
ha : x✝ ∈ center G₀ˣ
b : G₀
hb : b ≠ 0
⊢ b * ↑x✝ = ↑x✝ * b

tactic: rw [zero_mul, mul_zero]
state_before: case inl
M₀ : Type u_1
G₀ : Type u_2
inst✝ : GroupWithZero G₀
s : Set G₀
a b : G₀
x✝ : G₀ˣ
ha : x✝ ∈ center G₀ˣ
⊢ 0 * ↑x✝ = ↑x✝ * 0
state_after: no goals

tactic: exact Units.ext_iff.mp (ha.comm (Units.mk0 b hb)).symm
state_before: case inr
M₀ : Type u_1
G₀ : Type u_2
inst✝ : GroupWithZero G₀
s : Set G₀
a b✝ : G₀
x✝ : G₀ˣ
ha : x✝ ∈ center G₀ˣ
b : G₀
hb : b ≠ 0
⊢ b * ↑x✝ = ↑x✝ * b
state_after: no goals
Theorem: integral_inv_one_add_sq
File: Mathlib/Analysis/SpecialFunctions/Integrals.lean

tactic: simp only [← one_div, integral_one_div_one_add_sq]
state_before: a b : ℝ
n : ℕ
⊢ ∫ (x : ℝ) in a..b, (1 + x ^ 2)⁻¹ = arctan b - arctan a
state_after: no goals
Theorem: RingHom.cancel_left
File: Mathlib/Algebra/Ring/Hom/Defs.lean

tactic: rw [← comp_apply, h, comp_apply]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
x✝² : NonAssocSemiring α
x✝¹ : NonAssocSemiring β
x✝ : NonAssocSemiring γ
g : β →+* γ
f₁ f₂ : α →+* β
hg : Injective ⇑g
h : g.comp f₁ = g.comp f₂
x : α
⊢ g (f₁ x) = g (f₂ x)
state_after: no goals
Theorem: CliffordAlgebra.comp_ι_sq_scalar
File: Mathlib/LinearAlgebra/CliffordAlgebra/Basic.lean

tactic: rw [← AlgHom.map_mul, ι_sq_scalar, AlgHom.commutes]
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
g : CliffordAlgebra Q →ₐ[R] A
m : M
⊢ g ((ι Q) m) * g ((ι Q) m) = (algebraMap R A) (Q m)
state_after: no goals
Theorem: UpperHalfPlane.ModularGroup.denom_apply
File: Mathlib/Analysis/Complex/UpperHalfPlane/Basic.lean

tactic: simp [denom, coe']
state_before: g✝ : SL(2, ℤ)
z✝ : ℍ
Γ : Subgroup SL(2, ℤ)
g : SL(2, ℤ)
z : ℍ
⊢ denom (↑g) z = ↑(↑g 1 0) * ↑z + ↑(↑g 1 1)
state_after: no goals
Theorem: LieDerivation.eqOn_lieSpan
File: Mathlib/Algebra/Lie/Derivation/Basic.lean

tactic: simp only [map_zero]
state_before: R : Type u_1
L : Type u_2
M : Type u_3
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
D D1 D2 : LieDerivation R L M
a b : L
s : Set L
h : Set.EqOn (⇑D1) (⇑D2) s
z : L
hz : z ∈ ↑(LieSubalgebra.lieSpan R L s)
⊢ D1 0 = D2 0
state_after: no goals

tactic: simp only [map_smul, hx]
state_before: R : Type u_1
L : Type u_2
M : Type u_3
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
D D1 D2 : LieDerivation R L M
a b : L
s : Set L
h : Set.EqOn (⇑D1) (⇑D2) s
z : L
hz : z ∈ ↑(LieSubalgebra.lieSpan R L s)
zero : D1 0 = D2 0
x✝¹ : R
x✝ : L
hx : D1 x✝ = D2 x✝
⊢ D1 (x✝¹ • x✝) = D2 (x✝¹ • x✝)
state_after: no goals

tactic: simp only [map_add, hx, hy]
state_before: R : Type u_1
L : Type u_2
M : Type u_3
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
D D1 D2 : LieDerivation R L M
a b : L
s : Set L
h : Set.EqOn (⇑D1) (⇑D2) s
z : L
hz : z ∈ ↑(LieSubalgebra.lieSpan R L s)
zero : D1 0 = D2 0
smul : ∀ (r : R) {x : L}, D1 x = D2 x → D1 (r • x) = D2 (r • x)
x✝¹ x✝ : L
hx : D1 x✝¹ = D2 x✝¹
hy : D1 x✝ = D2 x✝
⊢ D1 (x✝¹ + x✝) = D2 (x✝¹ + x✝)
state_after: no goals

tactic: simp only [apply_lie_eq_sub, hx, hy]
state_before: R : Type u_1
L : Type u_2
M : Type u_3
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
D D1 D2 : LieDerivation R L M
a b : L
s : Set L
h : Set.EqOn (⇑D1) (⇑D2) s
z : L
hz : z ∈ ↑(LieSubalgebra.lieSpan R L s)
zero : D1 0 = D2 0
smul : ∀ (r : R) {x : L}, D1 x = D2 x → D1 (r • x) = D2 (r • x)
add : ∀ (x y : L), D1 x = D2 x → D1 y = D2 y → D1 (x + y) = D2 (x + y)
x✝¹ x✝ : L
hx : D1 x✝¹ = D2 x✝¹
hy : D1 x✝ = D2 x✝
⊢ D1 ⁅x✝¹, x✝⁆ = D2 ⁅x✝¹, x✝⁆
state_after: no goals
Theorem: Filter.mem_iInf_of_directed
File: Mathlib/Order/Filter/Basic.lean

tactic: simp only [← Filter.mem_sets, iInf_sets_eq h, mem_iUnion]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f✝ g : Filter α
s✝ t : Set α
f : ι → Filter α
h : Directed (fun x x_1 => x ≥ x_1) f
inst✝ : Nonempty ι
s : Set α
⊢ s ∈ iInf f ↔ ∃ i, s ∈ f i
state_after: no goals
Theorem: Fin.natCast_lt_natCast
File: Mathlib/Data/Fin/Basic.lean

tactic: rw [← Nat.lt_succ_iff] at han hbn
state_before: n m a b : ℕ
han : a ≤ n
hbn : b ≤ n
⊢ ↑a < ↑b ↔ a < b
state_after: n m a b : ℕ
han : a < n.succ
hbn : b < n.succ
⊢ ↑a < ↑b ↔ a < b

tactic: simp [lt_iff_val_lt_val, Nat.mod_eq_of_lt, han, hbn]
state_before: n m a b : ℕ
han : a < n.succ
hbn : b < n.succ
⊢ ↑a < ↑b ↔ a < b
state_after: no goals
Theorem: ContinuousAt.comp₂_of_eq
File: Mathlib/Topology/Constructions.lean

tactic: rw [← e] at hf
state_before: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : TopologicalSpace W
inst✝¹ : TopologicalSpace ε
inst✝ : TopologicalSpace ζ
f : Y × Z → W
g : X → Y
h : X → Z
x : X
y : Y × Z
hf : ContinuousAt f y
hg : ContinuousAt g x
hh : ContinuousAt h x
e : (g x, h x) = y
⊢ ContinuousAt (fun x => f (g x, h x)) x
state_after: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : TopologicalSpace W
inst✝¹ : TopologicalSpace ε
inst✝ : TopologicalSpace ζ
f : Y × Z → W
g : X → Y
h : X → Z
x : X
y : Y × Z
hf : ContinuousAt f (g x, h x)
hg : ContinuousAt g x
hh : ContinuousAt h x
e : (g x, h x) = y
⊢ ContinuousAt (fun x => f (g x, h x)) x

tactic: exact hf.comp₂ hg hh
state_before: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : TopologicalSpace W
inst✝¹ : TopologicalSpace ε
inst✝ : TopologicalSpace ζ
f : Y × Z → W
g : X → Y
h : X → Z
x : X
y : Y × Z
hf : ContinuousAt f (g x, h x)
hg : ContinuousAt g x
hh : ContinuousAt h x
e : (g x, h x) = y
⊢ ContinuousAt (fun x => f (g x, h x)) x
state_after: no goals
Theorem: ENNReal.ofReal_natCast
File: Mathlib/Data/ENNReal/Basic.lean

tactic: simp [ENNReal.ofReal]
state_before: α : Type u_1
a b c d : ℝ≥0∞
r p q : ℝ≥0
n : ℕ
⊢ ENNReal.ofReal ↑n = ↑n
state_after: no goals
Theorem: Ordnode.Bounded.dual
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: cases o₁ <;> cases o₂ <;> trivial
state_before: α : Type u_1
inst✝ : Preorder α
o₁ : WithBot α
o₂ : WithTop α
h : nil.Bounded o₁ o₂
⊢ nil.dual.Bounded o₂ o₁
state_after: no goals
Theorem: CategoryTheory.Iso.symm_self_id_assoc
File: Mathlib/CategoryTheory/Iso.lean

tactic: rw [← trans_assoc, symm_self_id, refl_trans]
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y Z : C
α : X ≅ Y
β : Y ≅ Z
⊢ α.symm ≪≫ α ≪≫ β = β
state_after: no goals
Theorem: Prod.mk_wcovBy_mk_iff
File: Mathlib/Order/Cover.lean

tactic: refine ⟨fun h => ?_, ?_⟩
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
⊢ (a₁, b₁) ⩿ (a₂, b₂) ↔ a₁ ⩿ a₂ ∧ b₁ = b₂ ∨ b₁ ⩿ b₂ ∧ a₁ = a₂
state_after: case refine_1
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
h : (a₁, b₁) ⩿ (a₂, b₂)
⊢ a₁ ⩿ a₂ ∧ b₁ = b₂ ∨ b₁ ⩿ b₂ ∧ a₁ = a₂

case refine_2
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
⊢ a₁ ⩿ a₂ ∧ b₁ = b₂ ∨ b₁ ⩿ b₂ ∧ a₁ = a₂ → (a₁, b₁) ⩿ (a₂, b₂)

tactic: obtain rfl | rfl : a₁ = a₂ ∨ b₁ = b₂ := fst_eq_or_snd_eq_of_wcovBy h
state_before: case refine_1
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
h : (a₁, b₁) ⩿ (a₂, b₂)
⊢ a₁ ⩿ a₂ ∧ b₁ = b₂ ∨ b₁ ⩿ b₂ ∧ a₁ = a₂
state_after: case refine_1.inl
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ : α
b b₁ b₂ : β
x y : α × β
h : (a₁, b₁) ⩿ (a₁, b₂)
⊢ a₁ ⩿ a₁ ∧ b₁ = b₂ ∨ b₁ ⩿ b₂ ∧ a₁ = a₁

case refine_1.inr
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ : β
x y : α × β
h : (a₁, b₁) ⩿ (a₂, b₁)
⊢ a₁ ⩿ a₂ ∧ b₁ = b₁ ∨ b₁ ⩿ b₁ ∧ a₁ = a₂

tactic: exact Or.inr ⟨mk_wcovBy_mk_iff_right.1 h, rfl⟩
state_before: case refine_1.inl
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ : α
b b₁ b₂ : β
x y : α × β
h : (a₁, b₁) ⩿ (a₁, b₂)
⊢ a₁ ⩿ a₁ ∧ b₁ = b₂ ∨ b₁ ⩿ b₂ ∧ a₁ = a₁
state_after: no goals

tactic: exact Or.inl ⟨mk_wcovBy_mk_iff_left.1 h, rfl⟩
state_before: case refine_1.inr
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ : β
x y : α × β
h : (a₁, b₁) ⩿ (a₂, b₁)
⊢ a₁ ⩿ a₂ ∧ b₁ = b₁ ∨ b₁ ⩿ b₁ ∧ a₁ = a₂
state_after: no goals

tactic: rintro (⟨h, rfl⟩ | ⟨h, rfl⟩)
state_before: case refine_2
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
⊢ a₁ ⩿ a₂ ∧ b₁ = b₂ ∨ b₁ ⩿ b₂ ∧ a₁ = a₂ → (a₁, b₁) ⩿ (a₂, b₂)
state_after: case refine_2.inl.intro
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ : β
x y : α × β
h : a₁ ⩿ a₂
⊢ (a₁, b₁) ⩿ (a₂, b₁)

case refine_2.inr.intro
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ : α
b b₁ b₂ : β
x y : α × β
h : b₁ ⩿ b₂
⊢ (a₁, b₁) ⩿ (a₁, b₂)

tactic: exact mk_wcovBy_mk_iff_left.2 h
state_before: case refine_2.inl.intro
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ : β
x y : α × β
h : a₁ ⩿ a₂
⊢ (a₁, b₁) ⩿ (a₂, b₁)
state_after: no goals

tactic: exact mk_wcovBy_mk_iff_right.2 h
state_before: case refine_2.inr.intro
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ : α
b b₁ b₂ : β
x y : α × β
h : b₁ ⩿ b₂
⊢ (a₁, b₁) ⩿ (a₁, b₂)
state_after: no goals