1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Ordinal.type_subrel_lt
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: refine Quotient.inductionOn o ?_
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u}
⊢ type (Subrel (fun x x_1 => x < x_1) {o' | o' < o}) = lift.{u + 1, u} o
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u}
⊢ ∀ (a : WellOrder), type (Subrel (fun x x_1 => x < x_1) {o' | o' < ⟦a⟧}) = lift.{u + 1, u} ⟦a⟧

tactic: rintro ⟨α, r, wo⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u}
⊢ ∀ (a : WellOrder), type (Subrel (fun x x_1 => x < x_1) {o' | o' < ⟦a⟧}) = lift.{u + 1, u} ⟦a⟧
state_after: case mk
α✝ : Type u_1
β : Type u_2
γ : Type u_3
r✝ : α✝ → α✝ → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u}
α : Type u
r : α → α → Prop
wo : IsWellOrder α r
⊢ type (Subrel (fun x x_1 => x < x_1) {o' | o' < ⟦{ α := α, r := r, wo := wo }⟧}) =
    lift.{u + 1, u} ⟦{ α := α, r := r, wo := wo }⟧

tactic: apply Quotient.sound
state_before: case mk
α✝ : Type u_1
β : Type u_2
γ : Type u_3
r✝ : α✝ → α✝ → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u}
α : Type u
r : α → α → Prop
wo : IsWellOrder α r
⊢ type (Subrel (fun x x_1 => x < x_1) {o' | o' < ⟦{ α := α, r := r, wo := wo }⟧}) =
    lift.{u + 1, u} ⟦{ α := α, r := r, wo := wo }⟧
state_after: case mk.a
α✝ : Type u_1
β : Type u_2
γ : Type u_3
r✝ : α✝ → α✝ → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u}
α : Type u
r : α → α → Prop
wo : IsWellOrder α r
⊢ { α := ↑{o' | o' < ⟦{ α := α, r := r, wo := wo }⟧},
      r := Subrel (fun x x_1 => x < x_1) {o' | o' < ⟦{ α := α, r := r, wo := wo }⟧}, wo := ⋯ } ≈
    { α := ULift.{u + 1, u} { α := α, r := r, wo := wo }.α, r := ULift.down ⁻¹'o { α := α, r := r, wo := wo }.r,
      wo := ⋯ }

tactic: constructor
state_before: case mk.a
α✝ : Type u_1
β : Type u_2
γ : Type u_3
r✝ : α✝ → α✝ → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u}
α : Type u
r : α → α → Prop
wo : IsWellOrder α r
⊢ { α := ↑{o' | o' < ⟦{ α := α, r := r, wo := wo }⟧},
      r := Subrel (fun x x_1 => x < x_1) {o' | o' < ⟦{ α := α, r := r, wo := wo }⟧}, wo := ⋯ } ≈
    { α := ULift.{u + 1, u} { α := α, r := r, wo := wo }.α, r := ULift.down ⁻¹'o { α := α, r := r, wo := wo }.r,
      wo := ⋯ }
state_after: case mk.a.val
α✝ : Type u_1
β : Type u_2
γ : Type u_3
r✝ : α✝ → α✝ → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u}
α : Type u
r : α → α → Prop
wo : IsWellOrder α r
⊢ Subrel (fun x x_1 => x < x_1) {o' | o' < ⟦{ α := α, r := r, wo := wo }⟧} ≃r
    ULift.down ⁻¹'o { α := α, r := r, wo := wo }.r

tactic: refine ((RelIso.preimage Equiv.ulift r).trans (enumIso r).symm).symm
state_before: case mk.a.val
α✝ : Type u_1
β : Type u_2
γ : Type u_3
r✝ : α✝ → α✝ → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u}
α : Type u
r : α → α → Prop
wo : IsWellOrder α r
⊢ Subrel (fun x x_1 => x < x_1) {o' | o' < ⟦{ α := α, r := r, wo := wo }⟧} ≃r
    ULift.down ⁻¹'o { α := α, r := r, wo := wo }.r
state_after: no goals
Theorem: SetTheory.PGame.lf_iff_exists_le
File: Mathlib/SetTheory/Game/PGame.lean

tactic: rw [LF, le_iff_forall_lf, not_and_or]
state_before: xl xr : Type u
x y : PGame
⊢ x ⧏ y ↔ (∃ i, x ≤ y.moveLeft i) ∨ ∃ j, x.moveRight j ≤ y
state_after: xl xr : Type u
x y : PGame
⊢ ((¬∀ (i : y.LeftMoves), y.moveLeft i ⧏ x) ∨ ¬∀ (j : x.RightMoves), y ⧏ x.moveRight j) ↔
    (∃ i, x ≤ y.moveLeft i) ∨ ∃ j, x.moveRight j ≤ y

tactic: simp
state_before: xl xr : Type u
x y : PGame
⊢ ((¬∀ (i : y.LeftMoves), y.moveLeft i ⧏ x) ∨ ¬∀ (j : x.RightMoves), y ⧏ x.moveRight j) ↔
    (∃ i, x ≤ y.moveLeft i) ∨ ∃ j, x.moveRight j ≤ y
state_after: no goals
Theorem: LinearMap.pi_eq_zero
File: Mathlib/LinearAlgebra/Pi.lean

tactic: simp only [LinearMap.ext_iff, pi_apply, funext_iff]
state_before: R : Type u
K : Type u'
M : Type v
V : Type v'
M₂ : Type w
V₂ : Type w'
M₃ : Type y
V₃ : Type y'
M₄ : Type z
ι : Type x
ι' : Type x'
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R M₂
inst✝³ : AddCommMonoid M₃
inst✝² : Module R M₃
φ : ι → Type i
inst✝¹ : (i : ι) → AddCommMonoid (φ i)
inst✝ : (i : ι) → Module R (φ i)
f : (i : ι) → M₂ →ₗ[R] φ i
⊢ pi f = 0 ↔ ∀ (i : ι), f i = 0
state_after: R : Type u
K : Type u'
M : Type v
V : Type v'
M₂ : Type w
V₂ : Type w'
M₃ : Type y
V₃ : Type y'
M₄ : Type z
ι : Type x
ι' : Type x'
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R M₂
inst✝³ : AddCommMonoid M₃
inst✝² : Module R M₃
φ : ι → Type i
inst✝¹ : (i : ι) → AddCommMonoid (φ i)
inst✝ : (i : ι) → Module R (φ i)
f : (i : ι) → M₂ →ₗ[R] φ i
⊢ (∀ (x : M₂) (a : ι), (f a) x = 0 x a) ↔ ∀ (i : ι) (x : M₂), (f i) x = 0 x

tactic: exact ⟨fun h a b => h b a, fun h a b => h b a⟩
state_before: R : Type u
K : Type u'
M : Type v
V : Type v'
M₂ : Type w
V₂ : Type w'
M₃ : Type y
V₃ : Type y'
M₄ : Type z
ι : Type x
ι' : Type x'
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R M₂
inst✝³ : AddCommMonoid M₃
inst✝² : Module R M₃
φ : ι → Type i
inst✝¹ : (i : ι) → AddCommMonoid (φ i)
inst✝ : (i : ι) → Module R (φ i)
f : (i : ι) → M₂ →ₗ[R] φ i
⊢ (∀ (x : M₂) (a : ι), (f a) x = 0 x a) ↔ ∀ (i : ι) (x : M₂), (f i) x = 0 x
state_after: no goals
Theorem: Finset.insert_inj_on'
File: Mathlib/Data/Fintype/Basic.lean

tactic: rw [coe_compl]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : Fintype α
s✝ t : Finset α
inst✝ : DecidableEq α
a : α
s : Finset α
⊢ Set.InjOn (fun a => insert a s) ↑sᶜ
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : Fintype α
s✝ t : Finset α
inst✝ : DecidableEq α
a : α
s : Finset α
⊢ Set.InjOn (fun a => insert a s) (↑s)ᶜ

tactic: exact s.insert_inj_on
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : Fintype α
s✝ t : Finset α
inst✝ : DecidableEq α
a : α
s : Finset α
⊢ Set.InjOn (fun a => insert a s) (↑s)ᶜ
state_after: no goals
Theorem: Mathlib.Tactic.Group.zpow_trick_one
File: Mathlib/Tactic/Group.lean

tactic: rw [mul_assoc, mul_self_zpow]
state_before: G : Type u_1
inst✝ : Group G
a b : G
m : ℤ
⊢ a * b * b ^ m = a * b ^ (m + 1)
state_after: no goals
Theorem: TopologicalSpace.isOpen_biUnion_countable
File: Mathlib/Topology/Bases.lean

tactic: simp_rw [← Subtype.exists_set_subtype, biUnion_image]
state_before: α : Type u
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
ι : Type u_1
I : Set ι
s : ι → Set α
H : ∀ i ∈ I, IsOpen (s i)
⊢ ∃ T ⊆ I, T.Countable ∧ ⋃ i ∈ T, s i = ⋃ i ∈ I, s i
state_after: α : Type u
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
ι : Type u_1
I : Set ι
s : ι → Set α
H : ∀ i ∈ I, IsOpen (s i)
⊢ ∃ s_1, (Subtype.val '' s_1).Countable ∧ ⋃ y ∈ s_1, s ↑y = ⋃ i ∈ I, s i

tactic: rcases isOpen_iUnion_countable (fun i : I ↦ s i) fun i ↦ H i i.2 with ⟨T, hTc, hU⟩
state_before: α : Type u
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
ι : Type u_1
I : Set ι
s : ι → Set α
H : ∀ i ∈ I, IsOpen (s i)
⊢ ∃ s_1, (Subtype.val '' s_1).Countable ∧ ⋃ y ∈ s_1, s ↑y = ⋃ i ∈ I, s i
state_after: case intro.intro
α : Type u
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
ι : Type u_1
I : Set ι
s : ι → Set α
H : ∀ i ∈ I, IsOpen (s i)
T : Set ↑I
hTc : T.Countable
hU : ⋃ i ∈ T, s ↑i = ⋃ i, s ↑i
⊢ ∃ s_1, (Subtype.val '' s_1).Countable ∧ ⋃ y ∈ s_1, s ↑y = ⋃ i ∈ I, s i

tactic: exact ⟨T, hTc.image _, hU.trans <| iUnion_subtype ..⟩
state_before: case intro.intro
α : Type u
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
ι : Type u_1
I : Set ι
s : ι → Set α
H : ∀ i ∈ I, IsOpen (s i)
T : Set ↑I
hTc : T.Countable
hU : ⋃ i ∈ T, s ↑i = ⋃ i, s ↑i
⊢ ∃ s_1, (Subtype.val '' s_1).Countable ∧ ⋃ y ∈ s_1, s ↑y = ⋃ i ∈ I, s i
state_after: no goals
Theorem: FirstOrder.Language.BoundedFormula.realize_alls
File: Mathlib/ModelTheory/Semantics.lean

tactic: induction' n with n ih
state_before: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n : ℕ
T : L.Theory
φ : L.BoundedFormula α n
v : α → M
⊢ φ.alls.Realize v ↔ ∀ (xs : Fin n → M), φ.Realize v xs
state_after: case zero
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n : ℕ
T : L.Theory
v : α → M
φ : L.BoundedFormula α 0
⊢ φ.alls.Realize v ↔ ∀ (xs : Fin 0 → M), φ.Realize v xs

case succ
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n✝ : ℕ
T : L.Theory
v : α → M
n : ℕ
ih : ∀ {φ : L.BoundedFormula α n}, φ.alls.Realize v ↔ ∀ (xs : Fin n → M), φ.Realize v xs
φ : L.BoundedFormula α (n + 1)
⊢ φ.alls.Realize v ↔ ∀ (xs : Fin (n + 1) → M), φ.Realize v xs

tactic: exact Unique.forall_iff.symm
state_before: case zero
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n : ℕ
T : L.Theory
v : α → M
φ : L.BoundedFormula α 0
⊢ φ.alls.Realize v ↔ ∀ (xs : Fin 0 → M), φ.Realize v xs
state_after: no goals

tactic: simp only [alls, ih, Realize]
state_before: case succ
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n✝ : ℕ
T : L.Theory
v : α → M
n : ℕ
ih : ∀ {φ : L.BoundedFormula α n}, φ.alls.Realize v ↔ ∀ (xs : Fin n → M), φ.Realize v xs
φ : L.BoundedFormula α (n + 1)
⊢ φ.alls.Realize v ↔ ∀ (xs : Fin (n + 1) → M), φ.Realize v xs
state_after: case succ
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n✝ : ℕ
T : L.Theory
v : α → M
n : ℕ
ih : ∀ {φ : L.BoundedFormula α n}, φ.alls.Realize v ↔ ∀ (xs : Fin n → M), φ.Realize v xs
φ : L.BoundedFormula α (n + 1)
⊢ (∀ (xs : Fin n → M) (x : M), φ.Realize v (snoc xs x)) ↔ ∀ (xs : Fin (n + 1) → M), φ.Realize v xs

tactic: exact ⟨fun h xs => Fin.snoc_init_self xs ▸ h _ _, fun h xs x => h (Fin.snoc xs x)⟩
state_before: case succ
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n✝ : ℕ
T : L.Theory
v : α → M
n : ℕ
ih : ∀ {φ : L.BoundedFormula α n}, φ.alls.Realize v ↔ ∀ (xs : Fin n → M), φ.Realize v xs
φ : L.BoundedFormula α (n + 1)
⊢ (∀ (xs : Fin n → M) (x : M), φ.Realize v (snoc xs x)) ↔ ∀ (xs : Fin (n + 1) → M), φ.Realize v xs
state_after: no goals
Theorem: NonUnitalAlgebra.coe_iInf
File: Mathlib/Algebra/Algebra/NonUnitalSubalgebra.lean

tactic: simp [iInf]
state_before: F : Type u_1
R : Type u
A : Type v
B : Type w
inst✝¹⁰ : CommSemiring R
inst✝⁹ : NonUnitalNonAssocSemiring A
inst✝⁸ : Module R A
inst✝⁷ : IsScalarTower R A A
inst✝⁶ : SMulCommClass R A A
inst✝⁵ : NonUnitalNonAssocSemiring B
inst✝⁴ : Module R B
inst✝³ : IsScalarTower R B B
inst✝² : SMulCommClass R B B
inst✝¹ : FunLike F A B
inst✝ : NonUnitalAlgHomClass F R A B
ι : Sort u_2
S : ι → NonUnitalSubalgebra R A
⊢ ↑(⨅ i, S i) = ⋂ i, ↑(S i)
state_after: no goals
Theorem: Semiquot.eq_pure
File: Mathlib/Data/Semiquot.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
q : Semiquot α
p : q.IsPure
a : α
⊢ a ∈ q ↔ a ∈ pure (q.get p)
state_after: α : Type u_1
β : Type u_2
q : Semiquot α
p : q.IsPure
a : α
⊢ a ∈ q ↔ a = q.get p

tactic: exact ⟨fun h => p _ h _ (get_mem _), fun e => e.symm ▸ get_mem _⟩
state_before: α : Type u_1
β : Type u_2
q : Semiquot α
p : q.IsPure
a : α
⊢ a ∈ q ↔ a = q.get p
state_after: no goals
Theorem: Set.nonempty_of_ncard_ne_zero
File: Mathlib/Data/Set/Card.lean

tactic: rw [nonempty_iff_ne_empty]
state_before: α : Type u_1
β : Type u_2
s t : Set α
hs : s.ncard ≠ 0
⊢ s.Nonempty
state_after: α : Type u_1
β : Type u_2
s t : Set α
hs : s.ncard ≠ 0
⊢ s ≠ ∅

tactic: rintro rfl
state_before: α : Type u_1
β : Type u_2
s t : Set α
hs : s.ncard ≠ 0
⊢ s ≠ ∅
state_after: α : Type u_1
β : Type u_2
t : Set α
hs : ∅.ncard ≠ 0
⊢ False

tactic: simp at hs
state_before: α : Type u_1
β : Type u_2
t : Set α
hs : ∅.ncard ≠ 0
⊢ False
state_after: no goals
Theorem: collapse_eq
File: Mathlib/Combinatorics/SetFamily/FourFunctions.lean

tactic: rw [collapse, filter_collapse_eq ha]
state_before: α : Type u_1
β : Type u_2
inst✝² : DecidableEq α
inst✝¹ : LinearOrderedCommSemiring β
inst✝ : ExistsAddOfLE β
𝒜✝ ℬ : Finset (Finset α)
a : α
f✝ f₁ f₂ f₃ f₄ g μ : Finset α → β
s t u : Finset α
ha : a ∉ s
𝒜 : Finset (Finset α)
f : Finset α → β
⊢ collapse 𝒜 a f s = (if s ∈ 𝒜 then f s else 0) + if insert a s ∈ 𝒜 then f (insert a s) else 0
state_after: α : Type u_1
β : Type u_2
inst✝² : DecidableEq α
inst✝¹ : LinearOrderedCommSemiring β
inst✝ : ExistsAddOfLE β
𝒜✝ ℬ : Finset (Finset α)
a : α
f✝ f₁ f₂ f₃ f₄ g μ : Finset α → β
s t u : Finset α
ha : a ∉ s
𝒜 : Finset (Finset α)
f : Finset α → β
⊢ ∑ t ∈ if s ∈ 𝒜 then if insert a s ∈ 𝒜 then {s, insert a s} else {s} else if insert a s ∈ 𝒜 then {insert a s} else ∅,
      f t =
    (if s ∈ 𝒜 then f s else 0) + if insert a s ∈ 𝒜 then f (insert a s) else 0

tactic: split_ifs <;> simp [(ne_of_mem_of_not_mem' (mem_insert_self a s) ha).symm, *]
state_before: α : Type u_1
β : Type u_2
inst✝² : DecidableEq α
inst✝¹ : LinearOrderedCommSemiring β
inst✝ : ExistsAddOfLE β
𝒜✝ ℬ : Finset (Finset α)
a : α
f✝ f₁ f₂ f₃ f₄ g μ : Finset α → β
s t u : Finset α
ha : a ∉ s
𝒜 : Finset (Finset α)
f : Finset α → β
⊢ ∑ t ∈ if s ∈ 𝒜 then if insert a s ∈ 𝒜 then {s, insert a s} else {s} else if insert a s ∈ 𝒜 then {insert a s} else ∅,
      f t =
    (if s ∈ 𝒜 then f s else 0) + if insert a s ∈ 𝒜 then f (insert a s) else 0
state_after: no goals
Theorem: Partrec.bind
File: Mathlib/Computability/Partrec.lean

tactic: simp [Seq.seq]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
σ : Type u_4
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
f : α →. β
g : α → β →. σ
hf : Partrec f
hg : Partrec₂ g
n : ℕ
⊢ (do
      let n ← Seq.seq (Nat.pair <$> Part.some n) fun x => (↑(decode n)).bind fun a => map encode (f a)
      (↑(decode n)).bind fun a => map encode ((fun p => g p.1 p.2) a)) =
    (↑(decode n)).bind fun a => map encode ((fun a => (f a).bind (g a)) a)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
σ : Type u_4
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
f : α →. β
g : α → β →. σ
hf : Partrec f
hg : Partrec₂ g
n : ℕ
⊢ (((↑(decode n)).bind fun y => map (Nat.pair n) (map encode (f y))).bind fun n =>
      (↑((decode (Nat.unpair n).1).bind fun a => Option.map (Prod.mk a) (decode (Nat.unpair n).2))).bind fun a =>
        map encode (g a.1 a.2)) =
    (↑(decode n)).bind fun a => (f a).bind fun y => map encode (g a y)

tactic: cases' e : decode (α := α) n with a <;> simp [e, encodek]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
σ : Type u_4
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
f : α →. β
g : α → β →. σ
hf : Partrec f
hg : Partrec₂ g
n : ℕ
⊢ (((↑(decode n)).bind fun y => map (Nat.pair n) (map encode (f y))).bind fun n =>
      (↑((decode (Nat.unpair n).1).bind fun a => Option.map (Prod.mk a) (decode (Nat.unpair n).2))).bind fun a =>
        map encode (g a.1 a.2)) =
    (↑(decode n)).bind fun a => (f a).bind fun y => map encode (g a y)
state_after: no goals
Theorem: Int.cast_sub
File: Mathlib/Data/Int/Cast/Basic.lean

tactic: simp [Int.sub_eq_add_neg, sub_eq_add_neg, Int.cast_neg, Int.cast_add]
state_before: R : Type u
inst✝ : AddGroupWithOne R
m n : ℤ
⊢ ↑(m - n) = ↑m - ↑n
state_after: no goals
Theorem: WeierstrassCurve.map_Φ
File: Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Basic.lean

tactic: simp only [Φ, map_ΨSq, map_preΨ, map_Ψ₂Sq, ← coe_mapRingHom]
state_before: R : Type r
S : Type s
inst✝¹ : CommRing R
inst✝ : CommRing S
W : WeierstrassCurve R
f : R →+* S
n : ℤ
⊢ (W.map f).Φ n = Polynomial.map f (W.Φ n)
state_after: R : Type r
S : Type s
inst✝¹ : CommRing R
inst✝ : CommRing S
W : WeierstrassCurve R
f : R →+* S
n : ℤ
⊢ (X * (mapRingHom f) (W.ΨSq n) -
      (mapRingHom f) (W.preΨ (n + 1)) * (mapRingHom f) (W.preΨ (n - 1)) * if Even n then 1 else (mapRingHom f) W.Ψ₂Sq) =
    (mapRingHom f) (X * W.ΨSq n - W.preΨ (n + 1) * W.preΨ (n - 1) * if Even n then 1 else W.Ψ₂Sq)

tactic: map_simp
state_before: R : Type r
S : Type s
inst✝¹ : CommRing R
inst✝ : CommRing S
W : WeierstrassCurve R
f : R →+* S
n : ℤ
⊢ (X * (mapRingHom f) (W.ΨSq n) -
      (mapRingHom f) (W.preΨ (n + 1)) * (mapRingHom f) (W.preΨ (n - 1)) * if Even n then 1 else (mapRingHom f) W.Ψ₂Sq) =
    (mapRingHom f) (X * W.ΨSq n - W.preΨ (n + 1) * W.preΨ (n - 1) * if Even n then 1 else W.Ψ₂Sq)
state_after: no goals
Theorem: Matrix.mulVec_transpose
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : NonUnitalCommSemiring α
inst✝ : Fintype m
A : Matrix m n α
x : m → α
⊢ Aᵀ *ᵥ x = x ᵥ* A
state_after: case h
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : NonUnitalCommSemiring α
inst✝ : Fintype m
A : Matrix m n α
x : m → α
x✝ : n
⊢ (Aᵀ *ᵥ x) x✝ = (x ᵥ* A) x✝

tactic: apply dotProduct_comm
state_before: case h
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : NonUnitalCommSemiring α
inst✝ : Fintype m
A : Matrix m n α
x : m → α
x✝ : n
⊢ (Aᵀ *ᵥ x) x✝ = (x ᵥ* A) x✝
state_after: no goals
Theorem: Irreducible.dvd_iff
File: Mathlib/Algebra/Associated.lean

tactic: constructor
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
x y : α
hx : Irreducible x
⊢ y ∣ x ↔ IsUnit y ∨ x ~ᵤ y
state_after: case mp
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
x y : α
hx : Irreducible x
⊢ y ∣ x → IsUnit y ∨ x ~ᵤ y

case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
x y : α
hx : Irreducible x
⊢ IsUnit y ∨ x ~ᵤ y → y ∣ x

tactic: rintro ⟨z, hz⟩
state_before: case mp
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
x y : α
hx : Irreducible x
⊢ y ∣ x → IsUnit y ∨ x ~ᵤ y
state_after: case mp.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
x y : α
hx : Irreducible x
z : α
hz : x = y * z
⊢ IsUnit y ∨ x ~ᵤ y

tactic: obtain (h|h) := hx.isUnit_or_isUnit hz
state_before: case mp.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
x y : α
hx : Irreducible x
z : α
hz : x = y * z
⊢ IsUnit y ∨ x ~ᵤ y
state_after: case mp.intro.inl
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
x y : α
hx : Irreducible x
z : α
hz : x = y * z
h : IsUnit y
⊢ IsUnit y ∨ x ~ᵤ y

case mp.intro.inr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
x y : α
hx : Irreducible x
z : α
hz : x = y * z
h : IsUnit z
⊢ IsUnit y ∨ x ~ᵤ y

tactic: exact Or.inl h
state_before: case mp.intro.inl
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
x y : α
hx : Irreducible x
z : α
hz : x = y * z
h : IsUnit y
⊢ IsUnit y ∨ x ~ᵤ y
state_after: no goals

tactic: rw [hz]
state_before: case mp.intro.inr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
x y : α
hx : Irreducible x
z : α
hz : x = y * z
h : IsUnit z
⊢ IsUnit y ∨ x ~ᵤ y
state_after: case mp.intro.inr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
x y : α
hx : Irreducible x
z : α
hz : x = y * z
h : IsUnit z
⊢ IsUnit y ∨ y * z ~ᵤ y

tactic: exact Or.inr (associated_mul_unit_left _ _ h)
state_before: case mp.intro.inr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
x y : α
hx : Irreducible x
z : α
hz : x = y * z
h : IsUnit z
⊢ IsUnit y ∨ y * z ~ᵤ y
state_after: no goals

tactic: rintro (hy|h)
state_before: case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
x y : α
hx : Irreducible x
⊢ IsUnit y ∨ x ~ᵤ y → y ∣ x
state_after: case mpr.inl
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
x y : α
hx : Irreducible x
hy : IsUnit y
⊢ y ∣ x

case mpr.inr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
x y : α
hx : Irreducible x
h : x ~ᵤ y
⊢ y ∣ x

tactic: exact hy.dvd
state_before: case mpr.inl
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
x y : α
hx : Irreducible x
hy : IsUnit y
⊢ y ∣ x
state_after: no goals

tactic: exact h.symm.dvd
state_before: case mpr.inr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
x y : α
hx : Irreducible x
h : x ~ᵤ y
⊢ y ∣ x
state_after: no goals
Theorem: MonoidHom.map_mul_inv
File: Mathlib/Algebra/Group/Hom/Defs.lean

tactic: simp
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
H : Type u_8
F : Type u_9
inst✝³ : Group G
inst✝² : CommGroup H
inst✝¹ : Group α
inst✝ : DivisionMonoid β
f : α →* β
g h : α
⊢ f (g * h⁻¹) = f g * (f h)⁻¹
state_after: no goals
Theorem: SimpleGraph.Walk.isCycle_copy
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: subst_vars
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v w x y u u' : V
p : G.Walk u u
hu : u = u'
⊢ (p.copy hu hu).IsCycle ↔ p.IsCycle
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w x y u' : V
p : G.Walk u' u'
⊢ (p.copy ⋯ ⋯).IsCycle ↔ p.IsCycle

tactic: rfl
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w x y u' : V
p : G.Walk u' u'
⊢ (p.copy ⋯ ⋯).IsCycle ↔ p.IsCycle
state_after: no goals
Theorem: Relation.TransGen.trans_right
File: Mathlib/Logic/Relation.lean

tactic: induction hbc with
| single hbc => exact tail' hab hbc
| tail _ hcd hac => exact hac.tail hcd
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a b c d : α
hab : ReflTransGen r a b
hbc : TransGen r b c
⊢ TransGen r a c
state_after: no goals

tactic: exact tail' hab hbc
state_before: case single
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a b c d : α
hab : ReflTransGen r a b
b✝ : α
hbc : r b b✝
⊢ TransGen r a b✝
state_after: no goals

tactic: exact hac.tail hcd
state_before: case tail
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a b c d : α
hab : ReflTransGen r a b
b✝ c✝ : α
a✝ : TransGen r b b✝
hcd : r b✝ c✝
hac : TransGen r a b✝
⊢ TransGen r a c✝
state_after: no goals
Theorem: FirstOrder.Language.BoundedFormula.realize_liftAt_one
File: Mathlib/ModelTheory/Semantics.lean

tactic: simp [realize_liftAt (add_le_add_right hmn 1), castSucc]
state_before: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n✝ l : ℕ
φ✝ ψ : L.BoundedFormula α l
θ : L.BoundedFormula α l.succ
v✝ : α → M
xs✝ : Fin l → M
n m : ℕ
φ : L.BoundedFormula α n
v : α → M
xs : Fin (n + 1) → M
hmn : m ≤ n
⊢ (liftAt 1 m φ).Realize v xs ↔ φ.Realize v (xs ∘ fun i => if ↑i < m then i.castSucc else i.succ)
state_after: no goals
Theorem: CategoryTheory.Limits.pullbackConeOfRightIso_π_app_none
File: Mathlib/CategoryTheory/Limits/Shapes/Pullbacks.lean

tactic: simp
state_before: C : Type u
inst✝² : Category.{v, u} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
W X Y Z : C
f : X ⟶ Z
g : Y ⟶ Z
inst✝ : IsIso g
⊢ (pullbackConeOfRightIso f g).π.app none = f
state_after: no goals
Theorem: Submonoid.LocalizationMap.mul_inv
File: Mathlib/GroupTheory/MonoidLocalization.lean

tactic: rw [mul_inv_right h, mul_assoc, mul_comm _ (f y₂), ← mul_assoc, mul_inv_left h, mul_comm x₂,
  f.map_mul, f.map_mul]
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : M →* N
h : ∀ (y : ↥S), IsUnit (f ↑y)
x₁ x₂ : M
y₁ y₂ : ↥S
⊢ f x₁ * ↑((IsUnit.liftRight (f.restrict S) h) y₁)⁻¹ = f x₂ * ↑((IsUnit.liftRight (f.restrict S) h) y₂)⁻¹ ↔
    f (x₁ * ↑y₂) = f (x₂ * ↑y₁)
state_after: no goals