1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: SkyscraperPresheafFunctor.map'_comp
File: Mathlib/Topology/Sheaves/Skyscraper.lean

tactic: ext U
state_before: X : TopCat
p₀ : ↑X
inst✝² : (U : Opens ↑X) → Decidable (p₀ ∈ U)
C : Type v
inst✝¹ : Category.{w, v} C
inst✝ : HasTerminal C
A a b c : C
f : a ⟶ b
g : b ⟶ c
⊢ map' p₀ (f ≫ g) = map' p₀ f ≫ map' p₀ g
state_after: case w
X : TopCat
p₀ : ↑X
inst✝² : (U : Opens ↑X) → Decidable (p₀ ∈ U)
C : Type v
inst✝¹ : Category.{w, v} C
inst✝ : HasTerminal C
A a b c : C
f : a ⟶ b
g : b ⟶ c
U : Opens ↑X
⊢ (map' p₀ (f ≫ g)).app { unop := U } = (map' p₀ f ≫ map' p₀ g).app { unop := U }

tactic: rw [NatTrans.comp_app]
state_before: case w
X : TopCat
p₀ : ↑X
inst✝² : (U : Opens ↑X) → Decidable (p₀ ∈ U)
C : Type v
inst✝¹ : Category.{w, v} C
inst✝ : HasTerminal C
A a b c : C
f : a ⟶ b
g : b ⟶ c
U : Opens ↑X
⊢ (map' p₀ (f ≫ g)).app { unop := U } = (map' p₀ f ≫ map' p₀ g).app { unop := U }
state_after: case w
X : TopCat
p₀ : ↑X
inst✝² : (U : Opens ↑X) → Decidable (p₀ ∈ U)
C : Type v
inst✝¹ : Category.{w, v} C
inst✝ : HasTerminal C
A a b c : C
f : a ⟶ b
g : b ⟶ c
U : Opens ↑X
⊢ (map' p₀ (f ≫ g)).app { unop := U } = (map' p₀ f).app { unop := U } ≫ (map' p₀ g).app { unop := U }

tactic: simp only [SkyscraperPresheafFunctor.map'_app]
state_before: case w
X : TopCat
p₀ : ↑X
inst✝² : (U : Opens ↑X) → Decidable (p₀ ∈ U)
C : Type v
inst✝¹ : Category.{w, v} C
inst✝ : HasTerminal C
A a b c : C
f : a ⟶ b
g : b ⟶ c
U : Opens ↑X
⊢ (map' p₀ (f ≫ g)).app { unop := U } = (map' p₀ f).app { unop := U } ≫ (map' p₀ g).app { unop := U }
state_after: case w
X : TopCat
p₀ : ↑X
inst✝² : (U : Opens ↑X) → Decidable (p₀ ∈ U)
C : Type v
inst✝¹ : Category.{w, v} C
inst✝ : HasTerminal C
A a b c : C
f : a ⟶ b
g : b ⟶ c
U : Opens ↑X
⊢ (if h : p₀ ∈ U then eqToHom ⋯ ≫ (f ≫ g) ≫ eqToHom ⋯
    else (⋯ ▸ terminalIsTerminal).from ((skyscraperPresheaf p₀ a).obj { unop := U })) =
    (if h : p₀ ∈ U then eqToHom ⋯ ≫ f ≫ eqToHom ⋯
      else (⋯ ▸ terminalIsTerminal).from ((skyscraperPresheaf p₀ a).obj { unop := U })) ≫
      if h : p₀ ∈ U then eqToHom ⋯ ≫ g ≫ eqToHom ⋯
      else (⋯ ▸ terminalIsTerminal).from ((skyscraperPresheaf p₀ b).obj { unop := U })

tactic: split_ifs with h <;> aesop_cat
state_before: case w
X : TopCat
p₀ : ↑X
inst✝² : (U : Opens ↑X) → Decidable (p₀ ∈ U)
C : Type v
inst✝¹ : Category.{w, v} C
inst✝ : HasTerminal C
A a b c : C
f : a ⟶ b
g : b ⟶ c
U : Opens ↑X
⊢ (if h : p₀ ∈ U then eqToHom ⋯ ≫ (f ≫ g) ≫ eqToHom ⋯
    else (⋯ ▸ terminalIsTerminal).from ((skyscraperPresheaf p₀ a).obj { unop := U })) =
    (if h : p₀ ∈ U then eqToHom ⋯ ≫ f ≫ eqToHom ⋯
      else (⋯ ▸ terminalIsTerminal).from ((skyscraperPresheaf p₀ a).obj { unop := U })) ≫
      if h : p₀ ∈ U then eqToHom ⋯ ≫ g ≫ eqToHom ⋯
      else (⋯ ▸ terminalIsTerminal).from ((skyscraperPresheaf p₀ b).obj { unop := U })
state_after: no goals
Theorem: Complex.cosh_add
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [← mul_right_inj' (two_ne_zero' ℂ), two_cosh, exp_add, neg_add, exp_add, eq_comm, mul_add, ←
  mul_assoc, two_cosh, ← mul_assoc, two_sinh, ← mul_right_inj' (two_ne_zero' ℂ), mul_add,
  mul_left_comm, two_cosh, mul_left_comm, two_sinh]
state_before: x y : ℂ
⊢ cosh (x + y) = cosh x * cosh y + sinh x * sinh y
state_after: x y : ℂ
⊢ (cexp x + cexp (-x)) * (cexp y + cexp (-y)) + (cexp x - cexp (-x)) * (cexp y - cexp (-y)) =
    2 * (cexp x * cexp y + cexp (-x) * cexp (-y))

tactic: exact cosh_add_aux
state_before: x y : ℂ
⊢ (cexp x + cexp (-x)) * (cexp y + cexp (-y)) + (cexp x - cexp (-x)) * (cexp y - cexp (-y)) =
    2 * (cexp x * cexp y + cexp (-x) * cexp (-y))
state_after: no goals
Theorem: Batteries.PairingHeapImp.Heap.noSibling_merge
File: .lake/packages/batteries/Batteries/Data/PairingHeap.lean

tactic: unfold merge
state_before: α : Type u_1
le : α → α → Bool
s₁ s₂ : Heap α
⊢ (merge le s₁ s₂).NoSibling
state_after: α : Type u_1
le : α → α → Bool
s₁ s₂ : Heap α
⊢ (match s₁, s₂ with
    | nil, nil => nil
    | nil, node a₂ c₂ sibling => node a₂ c₂ nil
    | node a₁ c₁ sibling, nil => node a₁ c₁ nil
    | node a₁ c₁ sibling, node a₂ c₂ sibling_1 =>
      if le a₁ a₂ = true then node a₁ (node a₂ c₂ c₁) nil else node a₂ (node a₁ c₁ c₂) nil).NoSibling

tactic: (split <;> try split) <;> constructor
state_before: α : Type u_1
le : α → α → Bool
s₁ s₂ : Heap α
⊢ (match s₁, s₂ with
    | nil, nil => nil
    | nil, node a₂ c₂ sibling => node a₂ c₂ nil
    | node a₁ c₁ sibling, nil => node a₁ c₁ nil
    | node a₁ c₁ sibling, node a₂ c₂ sibling_1 =>
      if le a₁ a₂ = true then node a₁ (node a₂ c₂ c₁) nil else node a₂ (node a₁ c₁ c₂) nil).NoSibling
state_after: no goals

tactic: split <;> try split
state_before: α : Type u_1
le : α → α → Bool
s₁ s₂ : Heap α
⊢ (match s₁, s₂ with
    | nil, nil => nil
    | nil, node a₂ c₂ sibling => node a₂ c₂ nil
    | node a₁ c₁ sibling, nil => node a₁ c₁ nil
    | node a₁ c₁ sibling, node a₂ c₂ sibling_1 =>
      if le a₁ a₂ = true then node a₁ (node a₂ c₂ c₁) nil else node a₂ (node a₁ c₁ c₂) nil).NoSibling
state_after: case h_1
α : Type u_1
le : α → α → Bool
x✝¹ x✝ : Heap α
⊢ nil.NoSibling

case h_2
α : Type u_1
le : α → α → Bool
x✝¹ x✝ : Heap α
a₂✝ : α
c₂✝ sibling✝ : Heap α
⊢ (node a₂✝ c₂✝ nil).NoSibling

case h_3
α : Type u_1
le : α → α → Bool
x✝¹ x✝ : Heap α
a₁✝ : α
c₁✝ sibling✝ : Heap α
⊢ (node a₁✝ c₁✝ nil).NoSibling

case h_4.isTrue
α : Type u_1
le : α → α → Bool
x✝¹ x✝ : Heap α
a₁✝ : α
c₁✝ sibling✝¹ : Heap α
a₂✝ : α
c₂✝ sibling✝ : Heap α
h✝ : le a₁✝ a₂✝ = true
⊢ (node a₁✝ (node a₂✝ c₂✝ c₁✝) nil).NoSibling

case h_4.isFalse
α : Type u_1
le : α → α → Bool
x✝¹ x✝ : Heap α
a₁✝ : α
c₁✝ sibling✝¹ : Heap α
a₂✝ : α
c₂✝ sibling✝ : Heap α
h✝ : ¬le a₁✝ a₂✝ = true
⊢ (node a₂✝ (node a₁✝ c₁✝ c₂✝) nil).NoSibling

tactic: split
state_before: case h_4
α : Type u_1
le : α → α → Bool
x✝¹ x✝ : Heap α
a₁✝ : α
c₁✝ sibling✝¹ : Heap α
a₂✝ : α
c₂✝ sibling✝ : Heap α
⊢ (if le a₁✝ a₂✝ = true then node a₁✝ (node a₂✝ c₂✝ c₁✝) nil else node a₂✝ (node a₁✝ c₁✝ c₂✝) nil).NoSibling
state_after: case h_4.isTrue
α : Type u_1
le : α → α → Bool
x✝¹ x✝ : Heap α
a₁✝ : α
c₁✝ sibling✝¹ : Heap α
a₂✝ : α
c₂✝ sibling✝ : Heap α
h✝ : le a₁✝ a₂✝ = true
⊢ (node a₁✝ (node a₂✝ c₂✝ c₁✝) nil).NoSibling

case h_4.isFalse
α : Type u_1
le : α → α → Bool
x✝¹ x✝ : Heap α
a₁✝ : α
c₁✝ sibling✝¹ : Heap α
a₂✝ : α
c₂✝ sibling✝ : Heap α
h✝ : ¬le a₁✝ a₂✝ = true
⊢ (node a₂✝ (node a₁✝ c₁✝ c₂✝) nil).NoSibling
Theorem: chainClosure_succ_total_aux
File: Mathlib/Order/Chain.lean

tactic: cases' ih with ih ih
state_before: case succ
α : Type u_1
β : Type u_2
r : α → α → Prop
c c₁ c₂ c₃✝ s t : Set α
a b x y : α
h : ∀ ⦃c₃ : Set α⦄, ChainClosure r c₃ → c₃ ⊆ c₂ → c₂ = c₃ ∨ SuccChain r c₃ ⊆ c₂
c₃ : Set α
hc₃ : ChainClosure r c₃
ih : SuccChain r c₂ ⊆ c₃ ∨ c₃ ⊆ c₂
⊢ SuccChain r c₂ ⊆ SuccChain r c₃ ∨ SuccChain r c₃ ⊆ c₂
state_after: case succ.inl
α : Type u_1
β : Type u_2
r : α → α → Prop
c c₁ c₂ c₃✝ s t : Set α
a b x y : α
h : ∀ ⦃c₃ : Set α⦄, ChainClosure r c₃ → c₃ ⊆ c₂ → c₂ = c₃ ∨ SuccChain r c₃ ⊆ c₂
c₃ : Set α
hc₃ : ChainClosure r c₃
ih : SuccChain r c₂ ⊆ c₃
⊢ SuccChain r c₂ ⊆ SuccChain r c₃ ∨ SuccChain r c₃ ⊆ c₂

case succ.inr
α : Type u_1
β : Type u_2
r : α → α → Prop
c c₁ c₂ c₃✝ s t : Set α
a b x y : α
h : ∀ ⦃c₃ : Set α⦄, ChainClosure r c₃ → c₃ ⊆ c₂ → c₂ = c₃ ∨ SuccChain r c₃ ⊆ c₂
c₃ : Set α
hc₃ : ChainClosure r c₃
ih : c₃ ⊆ c₂
⊢ SuccChain r c₂ ⊆ SuccChain r c₃ ∨ SuccChain r c₃ ⊆ c₂

tactic: exact Or.inl (ih.trans subset_succChain)
state_before: case succ.inl
α : Type u_1
β : Type u_2
r : α → α → Prop
c c₁ c₂ c₃✝ s t : Set α
a b x y : α
h : ∀ ⦃c₃ : Set α⦄, ChainClosure r c₃ → c₃ ⊆ c₂ → c₂ = c₃ ∨ SuccChain r c₃ ⊆ c₂
c₃ : Set α
hc₃ : ChainClosure r c₃
ih : SuccChain r c₂ ⊆ c₃
⊢ SuccChain r c₂ ⊆ SuccChain r c₃ ∨ SuccChain r c₃ ⊆ c₂
state_after: no goals

tactic: exact (h hc₃ ih).imp_left fun (h : c₂ = c₃) => h ▸ Subset.rfl
state_before: case succ.inr
α : Type u_1
β : Type u_2
r : α → α → Prop
c c₁ c₂ c₃✝ s t : Set α
a b x y : α
h : ∀ ⦃c₃ : Set α⦄, ChainClosure r c₃ → c₃ ⊆ c₂ → c₂ = c₃ ∨ SuccChain r c₃ ⊆ c₂
c₃ : Set α
hc₃ : ChainClosure r c₃
ih : c₃ ⊆ c₂
⊢ SuccChain r c₂ ⊆ SuccChain r c₃ ∨ SuccChain r c₃ ⊆ c₂
state_after: no goals

tactic: refine or_iff_not_imp_left.2 fun hn => sUnion_subset fun a ha => ?_
state_before: case union
α : Type u_1
β : Type u_2
r : α → α → Prop
c c₁ c₂ c₃ s t : Set α
a b x y : α
h : ∀ ⦃c₃ : Set α⦄, ChainClosure r c₃ → c₃ ⊆ c₂ → c₂ = c₃ ∨ SuccChain r c₃ ⊆ c₂
s✝ : Set (Set α)
a✝ : ∀ a ∈ s✝, ChainClosure r a
ih : ∀ a ∈ s✝, SuccChain r c₂ ⊆ a ∨ a ⊆ c₂
⊢ SuccChain r c₂ ⊆ ⋃₀ s✝ ∨ ⋃₀ s✝ ⊆ c₂
state_after: case union
α : Type u_1
β : Type u_2
r : α → α → Prop
c c₁ c₂ c₃ s t : Set α
a✝¹ b x y : α
h : ∀ ⦃c₃ : Set α⦄, ChainClosure r c₃ → c₃ ⊆ c₂ → c₂ = c₃ ∨ SuccChain r c₃ ⊆ c₂
s✝ : Set (Set α)
a✝ : ∀ a ∈ s✝, ChainClosure r a
ih : ∀ a ∈ s✝, SuccChain r c₂ ⊆ a ∨ a ⊆ c₂
hn : ¬SuccChain r c₂ ⊆ ⋃₀ s✝
a : Set α
ha : a ∈ s✝
⊢ a ⊆ c₂

tactic: exact (ih a ha).resolve_left fun h => hn <| h.trans <| subset_sUnion_of_mem ha
state_before: case union
α : Type u_1
β : Type u_2
r : α → α → Prop
c c₁ c₂ c₃ s t : Set α
a✝¹ b x y : α
h : ∀ ⦃c₃ : Set α⦄, ChainClosure r c₃ → c₃ ⊆ c₂ → c₂ = c₃ ∨ SuccChain r c₃ ⊆ c₂
s✝ : Set (Set α)
a✝ : ∀ a ∈ s✝, ChainClosure r a
ih : ∀ a ∈ s✝, SuccChain r c₂ ⊆ a ∨ a ⊆ c₂
hn : ¬SuccChain r c₂ ⊆ ⋃₀ s✝
a : Set α
ha : a ∈ s✝
⊢ a ⊆ c₂
state_after: no goals
Theorem: Finset.filter_univ_mem
File: Mathlib/Data/Fintype/Basic.lean

tactic: simp [filter_mem_eq_inter]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : Fintype α
inst✝ : DecidableEq α
s✝ t s : Finset α
⊢ filter (fun x => x ∈ s) univ = s
state_after: no goals
Theorem: Cardinal.cantorFunctionAux_false
File: Mathlib/Data/Real/Cardinality.lean

tactic: simp [cantorFunctionAux, h]
state_before: c : ℝ
f g : ℕ → Bool
n : ℕ
h : f n = false
⊢ cantorFunctionAux c f n = 0
state_after: no goals
Theorem: FreeAbelianGroup.support_add
File: Mathlib/GroupTheory/FreeAbelianGroupFinsupp.lean

tactic: simp only [support, AddMonoidHom.map_add]
state_before: X : Type u_1
a b : FreeAbelianGroup X
⊢ (a + b).support ⊆ a.support ∪ b.support
state_after: X : Type u_1
a b : FreeAbelianGroup X
⊢ (toFinsupp a + toFinsupp b).support ⊆ (toFinsupp a).support ∪ (toFinsupp b).support

tactic: apply Finsupp.support_add
state_before: X : Type u_1
a b : FreeAbelianGroup X
⊢ (toFinsupp a + toFinsupp b).support ⊆ (toFinsupp a).support ∪ (toFinsupp b).support
state_after: no goals
Theorem: WithZeroTopology.singleton_mem_nhds_of_ne_zero
File: Mathlib/Topology/Algebra/WithZeroTopology.lean

tactic: simp [h]
state_before: α : Type u_1
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
γ γ₁ γ₂ : Γ₀
l : Filter α
f : α → Γ₀
h : γ ≠ 0
⊢ {γ} ∈ 𝓝 γ
state_after: no goals
Theorem: EReal.coe_toReal_le
File: Mathlib/Data/Real/EReal.lean

tactic: by_cases h' : x = ⊤
state_before: x : EReal
h : x ≠ ⊥
⊢ ↑x.toReal ≤ x
state_after: case pos
x : EReal
h : x ≠ ⊥
h' : x = ⊤
⊢ ↑x.toReal ≤ x

case neg
x : EReal
h : x ≠ ⊥
h' : ¬x = ⊤
⊢ ↑x.toReal ≤ x

tactic: simp only [h', le_top]
state_before: case pos
x : EReal
h : x ≠ ⊥
h' : x = ⊤
⊢ ↑x.toReal ≤ x
state_after: no goals

tactic: simp only [le_refl, coe_toReal h' h]
state_before: case neg
x : EReal
h : x ≠ ⊥
h' : ¬x = ⊤
⊢ ↑x.toReal ≤ x
state_after: no goals
Theorem: Set.div_mem_centralizer₀
File: Mathlib/Algebra/GroupWithZero/Center.lean

tactic: rw [div_eq_mul_inv]
state_before: M₀ : Type u_1
G₀ : Type u_2
inst✝ : GroupWithZero G₀
s : Set G₀
a b : G₀
ha : a ∈ s.centralizer
hb : b ∈ s.centralizer
⊢ a / b ∈ s.centralizer
state_after: M₀ : Type u_1
G₀ : Type u_2
inst✝ : GroupWithZero G₀
s : Set G₀
a b : G₀
ha : a ∈ s.centralizer
hb : b ∈ s.centralizer
⊢ a * b⁻¹ ∈ s.centralizer

tactic: exact mul_mem_centralizer ha (inv_mem_centralizer₀ hb)
state_before: M₀ : Type u_1
G₀ : Type u_2
inst✝ : GroupWithZero G₀
s : Set G₀
a b : G₀
ha : a ∈ s.centralizer
hb : b ∈ s.centralizer
⊢ a * b⁻¹ ∈ s.centralizer
state_after: no goals
Theorem: Set.image2_left_comm
File: Mathlib/Data/Set/NAry.lean

tactic: rw [image2_swap f', image2_swap f]
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
f✝ f'✝ : α → β → γ
g✝ g'✝ : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
f : α → δ → ε
g : β → γ → δ
f' : α → γ → δ'
g' : β → δ' → ε
h_left_comm : ∀ (a : α) (b : β) (c : γ), f a (g b c) = g' b (f' a c)
⊢ image2 f s (image2 g t u) = image2 g' t (image2 f' s u)
state_after: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
f✝ f'✝ : α → β → γ
g✝ g'✝ : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
f : α → δ → ε
g : β → γ → δ
f' : α → γ → δ'
g' : β → δ' → ε
h_left_comm : ∀ (a : α) (b : β) (c : γ), f a (g b c) = g' b (f' a c)
⊢ image2 (fun a b => f b a) (image2 g t u) s = image2 g' t (image2 (fun a b => f' b a) u s)

tactic: exact image2_assoc fun _ _ _ => h_left_comm _ _ _
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
f✝ f'✝ : α → β → γ
g✝ g'✝ : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
f : α → δ → ε
g : β → γ → δ
f' : α → γ → δ'
g' : β → δ' → ε
h_left_comm : ∀ (a : α) (b : β) (c : γ), f a (g b c) = g' b (f' a c)
⊢ image2 (fun a b => f b a) (image2 g t u) s = image2 g' t (image2 (fun a b => f' b a) u s)
state_after: no goals
Theorem: MeasureTheory.SimpleFunc.memℒp_approxOn_range
File: Mathlib/MeasureTheory/Function/SimpleFuncDenseLp.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
inst✝ : SeparableSpace ↑(Set.range f ∪ {0})
hf : Memℒp f p μ
n : ℕ
⊢ 0 ∈ Set.range f ∪ {0}
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.equiv_of_X_eq_of_Y_eq
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: use Units.mk0 _ hPz / Units.mk0 _ hQz
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → F
hPz : P z ≠ 0
hQz : Q z ≠ 0
hx : P x * Q z ^ 2 = Q x * P z ^ 2
hy : P y * Q z ^ 3 = Q y * P z ^ 3
⊢ P ≈ Q
state_after: case h
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → F
hPz : P z ≠ 0
hQz : Q z ≠ 0
hx : P x * Q z ^ 2 = Q x * P z ^ 2
hy : P y * Q z ^ 3 = Q y * P z ^ 3
⊢ (fun m => m • Q) (Units.mk0 (P z) hPz / Units.mk0 (Q z) hQz) = P

tactic: simp only [Units.smul_def, smul_fin3, Units.val_div_eq_div_val, Units.val_mk0, div_pow, mul_comm,
  mul_div, ← hx, ← hy, mul_div_cancel_right₀ _ <| pow_ne_zero _ hQz, mul_div_cancel_right₀ _ hQz,
  fin3_def]
state_before: case h
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → F
hPz : P z ≠ 0
hQz : Q z ≠ 0
hx : P x * Q z ^ 2 = Q x * P z ^ 2
hy : P y * Q z ^ 3 = Q y * P z ^ 3
⊢ (fun m => m • Q) (Units.mk0 (P z) hPz / Units.mk0 (Q z) hQz) = P
state_after: no goals
Theorem: Filter.Realizer.mem_sets
File: Mathlib/Data/Analysis/Filter.lean

tactic: cases F
state_before: α : Type u_1
β : Type u_2
σ : Type u_3
τ : Type u_4
f : Filter α
F : f.Realizer
a : Set α
⊢ a ∈ f ↔ ∃ b, F.F.f b ⊆ a
state_after: case mk
α : Type u_1
β : Type u_2
σ : Type u_3
τ : Type u_4
f : Filter α
a : Set α
σ✝ : Type u_5
F✝ : CFilter (Set α) σ✝
eq✝ : F✝.toFilter = f
⊢ a ∈ f ↔ ∃ b, { σ := σ✝, F := F✝, eq := eq✝ }.F.f b ⊆ a

tactic: subst f
state_before: case mk
α : Type u_1
β : Type u_2
σ : Type u_3
τ : Type u_4
f : Filter α
a : Set α
σ✝ : Type u_5
F✝ : CFilter (Set α) σ✝
eq✝ : F✝.toFilter = f
⊢ a ∈ f ↔ ∃ b, { σ := σ✝, F := F✝, eq := eq✝ }.F.f b ⊆ a
state_after: case mk
α : Type u_1
β : Type u_2
σ : Type u_3
τ : Type u_4
a : Set α
σ✝ : Type u_5
F✝ : CFilter (Set α) σ✝
⊢ a ∈ F✝.toFilter ↔ ∃ b, { σ := σ✝, F := F✝, eq := ⋯ }.F.f b ⊆ a

tactic: rfl
state_before: case mk
α : Type u_1
β : Type u_2
σ : Type u_3
τ : Type u_4
a : Set α
σ✝ : Type u_5
F✝ : CFilter (Set α) σ✝
⊢ a ∈ F✝.toFilter ↔ ∃ b, { σ := σ✝, F := F✝, eq := ⋯ }.F.f b ⊆ a
state_after: no goals
Theorem: Subalgebra.iSupLift_comp_inclusion
File: Mathlib/Algebra/Algebra/Subalgebra/Directed.lean

tactic: ext
state_before: R : Type u_1
A : Type u_2
B : Type u_3
inst✝⁵ : CommSemiring R
inst✝⁴ : Semiring A
inst✝³ : Algebra R A
inst✝² : Semiring B
inst✝¹ : Algebra R B
S : Subalgebra R A
ι : Type u_4
inst✝ : Nonempty ι
K : ι → Subalgebra R A
dir : Directed (fun x x_1 => x ≤ x_1) K
f : (i : ι) → ↥(K i) →ₐ[R] B
hf : ∀ (i j : ι) (h : K i ≤ K j), f i = (f j).comp (inclusion h)
T : Subalgebra R A
hT : T = iSup K
i : ι
h : K i ≤ T
⊢ (iSupLift K dir f hf T hT).comp (inclusion h) = f i
state_after: case H
R : Type u_1
A : Type u_2
B : Type u_3
inst✝⁵ : CommSemiring R
inst✝⁴ : Semiring A
inst✝³ : Algebra R A
inst✝² : Semiring B
inst✝¹ : Algebra R B
S : Subalgebra R A
ι : Type u_4
inst✝ : Nonempty ι
K : ι → Subalgebra R A
dir : Directed (fun x x_1 => x ≤ x_1) K
f : (i : ι) → ↥(K i) →ₐ[R] B
hf : ∀ (i j : ι) (h : K i ≤ K j), f i = (f j).comp (inclusion h)
T : Subalgebra R A
hT : T = iSup K
i : ι
h : K i ≤ T
x✝ : ↥(K i)
⊢ ((iSupLift K dir f hf T hT).comp (inclusion h)) x✝ = (f i) x✝

tactic: simp
state_before: case H
R : Type u_1
A : Type u_2
B : Type u_3
inst✝⁵ : CommSemiring R
inst✝⁴ : Semiring A
inst✝³ : Algebra R A
inst✝² : Semiring B
inst✝¹ : Algebra R B
S : Subalgebra R A
ι : Type u_4
inst✝ : Nonempty ι
K : ι → Subalgebra R A
dir : Directed (fun x x_1 => x ≤ x_1) K
f : (i : ι) → ↥(K i) →ₐ[R] B
hf : ∀ (i j : ι) (h : K i ≤ K j), f i = (f j).comp (inclusion h)
T : Subalgebra R A
hT : T = iSup K
i : ι
h : K i ≤ T
x✝ : ↥(K i)
⊢ ((iSupLift K dir f hf T hT).comp (inclusion h)) x✝ = (f i) x✝
state_after: no goals
Theorem: Opens.pretopology_ofGrothendieck
File: Mathlib/CategoryTheory/Sites/Spaces.lean

tactic: apply le_antisymm
state_before: T : Type u
inst✝ : TopologicalSpace T
⊢ Pretopology.ofGrothendieck (Opens T) (grothendieckTopology T) = pretopology T
state_after: case a
T : Type u
inst✝ : TopologicalSpace T
⊢ Pretopology.ofGrothendieck (Opens T) (grothendieckTopology T) ≤ pretopology T

case a
T : Type u
inst✝ : TopologicalSpace T
⊢ pretopology T ≤ Pretopology.ofGrothendieck (Opens T) (grothendieckTopology T)

tactic: intro X R hR x hx
state_before: case a
T : Type u
inst✝ : TopologicalSpace T
⊢ Pretopology.ofGrothendieck (Opens T) (grothendieckTopology T) ≤ pretopology T
state_after: case a
T : Type u
inst✝ : TopologicalSpace T
X : Opens T
R : Presieve X
hR : R ∈ (Pretopology.ofGrothendieck (Opens T) (grothendieckTopology T)).coverings X
x : T
hx : x ∈ X
⊢ ∃ U f, R f ∧ x ∈ U

tactic: rcases hR x hx with ⟨U, f, ⟨V, g₁, g₂, hg₂, _⟩, hU⟩
state_before: case a
T : Type u
inst✝ : TopologicalSpace T
X : Opens T
R : Presieve X
hR : R ∈ (Pretopology.ofGrothendieck (Opens T) (grothendieckTopology T)).coverings X
x : T
hx : x ∈ X
⊢ ∃ U f, R f ∧ x ∈ U
state_after: case a.intro.intro.intro.intro.intro.intro.intro
T : Type u
inst✝ : TopologicalSpace T
X : Opens T
R : Presieve X
hR : R ∈ (Pretopology.ofGrothendieck (Opens T) (grothendieckTopology T)).coverings X
x : T
hx : x ∈ X
U : Opens T
f : U ⟶ X
hU : x ∈ U
V : Opens T
g₁ : U ⟶ V
g₂ : V ⟶ X
hg₂ : R g₂
right✝ : g₁ ≫ g₂ = f
⊢ ∃ U f, R f ∧ x ∈ U

tactic: exact ⟨V, g₂, hg₂, g₁.le hU⟩
state_before: case a.intro.intro.intro.intro.intro.intro.intro
T : Type u
inst✝ : TopologicalSpace T
X : Opens T
R : Presieve X
hR : R ∈ (Pretopology.ofGrothendieck (Opens T) (grothendieckTopology T)).coverings X
x : T
hx : x ∈ X
U : Opens T
f : U ⟶ X
hU : x ∈ U
V : Opens T
g₁ : U ⟶ V
g₂ : V ⟶ X
hg₂ : R g₂
right✝ : g₁ ≫ g₂ = f
⊢ ∃ U f, R f ∧ x ∈ U
state_after: no goals

tactic: intro X R hR x hx
state_before: case a
T : Type u
inst✝ : TopologicalSpace T
⊢ pretopology T ≤ Pretopology.ofGrothendieck (Opens T) (grothendieckTopology T)
state_after: case a
T : Type u
inst✝ : TopologicalSpace T
X : Opens T
R : Presieve X
hR : R ∈ (pretopology T).coverings X
x : T
hx : x ∈ X
⊢ ∃ U f, (Sieve.generate R).arrows f ∧ x ∈ U

tactic: rcases hR x hx with ⟨U, f, hf, hU⟩
state_before: case a
T : Type u
inst✝ : TopologicalSpace T
X : Opens T
R : Presieve X
hR : R ∈ (pretopology T).coverings X
x : T
hx : x ∈ X
⊢ ∃ U f, (Sieve.generate R).arrows f ∧ x ∈ U
state_after: case a.intro.intro.intro
T : Type u
inst✝ : TopologicalSpace T
X : Opens T
R : Presieve X
hR : R ∈ (pretopology T).coverings X
x : T
hx : x ∈ X
U : Opens T
f : U ⟶ X
hf : R f
hU : x ∈ U
⊢ ∃ U f, (Sieve.generate R).arrows f ∧ x ∈ U

tactic: exact ⟨U, f, Sieve.le_generate R U hf, hU⟩
state_before: case a.intro.intro.intro
T : Type u
inst✝ : TopologicalSpace T
X : Opens T
R : Presieve X
hR : R ∈ (pretopology T).coverings X
x : T
hx : x ∈ X
U : Opens T
f : U ⟶ X
hf : R f
hU : x ∈ U
⊢ ∃ U f, (Sieve.generate R).arrows f ∧ x ∈ U
state_after: no goals
Theorem: SubfieldClass.nnqsmul_mem
File: Mathlib/Algebra/Field/Subfield.lean

tactic: simpa only [NNRat.smul_def] using mul_mem (nnratCast_mem _ _) hx
state_before: K : Type u
L : Type v
M : Type w
inst✝³ : DivisionRing K
inst✝² : DivisionRing L
inst✝¹ : DivisionRing M
S : Type u_1
inst✝ : SetLike S K
h : SubfieldClass S K
x : K
s : S
q : ℚ≥0
hx : x ∈ s
⊢ q • x ∈ s
state_after: no goals
Theorem: uniformEmbedding_set_inclusion
File: Mathlib/Topology/UniformSpace/UniformEmbedding.lean

tactic: rw [uniformity_subtype, uniformity_subtype, comap_comap]
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
s t : Set α
hst : s ⊆ t
⊢ comap (fun x => (inclusion hst x.1, inclusion hst x.2)) (𝓤 ↑t) = 𝓤 ↑s
state_after: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
s t : Set α
hst : s ⊆ t
⊢ comap ((fun q => (↑q.1, ↑q.2)) ∘ fun x => (inclusion hst x.1, inclusion hst x.2)) (𝓤 α) =
    comap (fun q => (↑q.1, ↑q.2)) (𝓤 α)

tactic: rfl
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
s t : Set α
hst : s ⊆ t
⊢ comap ((fun q => (↑q.1, ↑q.2)) ∘ fun x => (inclusion hst x.1, inclusion hst x.2)) (𝓤 α) =
    comap (fun q => (↑q.1, ↑q.2)) (𝓤 α)
state_after: no goals