1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: LinearMap.curry_uncurryLeft
File: Mathlib/LinearAlgebra/Multilinear/Basic.lean

tactic: ext m x
state_before: R : Type uR
S : Type uS
ι : Type uι
n : ℕ
M : Fin n.succ → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝⁶ : CommSemiring R
inst✝⁵ : (i : Fin n.succ) → AddCommMonoid (M i)
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M₂
inst✝² : (i : Fin n.succ) → Module R (M i)
inst✝¹ : Module R M'
inst✝ : Module R M₂
f : M 0 →ₗ[R] MultilinearMap R (fun i => M i.succ) M₂
⊢ f.uncurryLeft.curryLeft = f
state_after: case h.H
R : Type uR
S : Type uS
ι : Type uι
n : ℕ
M : Fin n.succ → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝⁶ : CommSemiring R
inst✝⁵ : (i : Fin n.succ) → AddCommMonoid (M i)
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M₂
inst✝² : (i : Fin n.succ) → Module R (M i)
inst✝¹ : Module R M'
inst✝ : Module R M₂
f : M 0 →ₗ[R] MultilinearMap R (fun i => M i.succ) M₂
m : M 0
x : (i : Fin n) → M i.succ
⊢ (f.uncurryLeft.curryLeft m) x = (f m) x

tactic: simp only [tail_cons, LinearMap.uncurryLeft_apply, MultilinearMap.curryLeft_apply]
state_before: case h.H
R : Type uR
S : Type uS
ι : Type uι
n : ℕ
M : Fin n.succ → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝⁶ : CommSemiring R
inst✝⁵ : (i : Fin n.succ) → AddCommMonoid (M i)
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M₂
inst✝² : (i : Fin n.succ) → Module R (M i)
inst✝¹ : Module R M'
inst✝ : Module R M₂
f : M 0 →ₗ[R] MultilinearMap R (fun i => M i.succ) M₂
m : M 0
x : (i : Fin n) → M i.succ
⊢ (f.uncurryLeft.curryLeft m) x = (f m) x
state_after: case h.H
R : Type uR
S : Type uS
ι : Type uι
n : ℕ
M : Fin n.succ → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝⁶ : CommSemiring R
inst✝⁵ : (i : Fin n.succ) → AddCommMonoid (M i)
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M₂
inst✝² : (i : Fin n.succ) → Module R (M i)
inst✝¹ : Module R M'
inst✝ : Module R M₂
f : M 0 →ₗ[R] MultilinearMap R (fun i => M i.succ) M₂
m : M 0
x : (i : Fin n) → M i.succ
⊢ (f (cons m x 0)) x = (f m) x

tactic: rw [cons_zero]
state_before: case h.H
R : Type uR
S : Type uS
ι : Type uι
n : ℕ
M : Fin n.succ → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝⁶ : CommSemiring R
inst✝⁵ : (i : Fin n.succ) → AddCommMonoid (M i)
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M₂
inst✝² : (i : Fin n.succ) → Module R (M i)
inst✝¹ : Module R M'
inst✝ : Module R M₂
f : M 0 →ₗ[R] MultilinearMap R (fun i => M i.succ) M₂
m : M 0
x : (i : Fin n) → M i.succ
⊢ (f (cons m x 0)) x = (f m) x
state_after: no goals
Theorem: MeasureTheory.Measure.sum_smul_dirac
File: Mathlib/MeasureTheory/Measure/Dirac.lean

tactic: simpa using (map_eq_sum μ id measurable_id).symm
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
inst✝³ : MeasurableSpace α
inst✝² : MeasurableSpace β
s : Set α
a : α
inst✝¹ : Countable α
inst✝ : MeasurableSingletonClass α
μ : Measure α
⊢ (sum fun a => μ {a} • dirac a) = μ
state_after: no goals
Theorem: Batteries.PairingHeapImp.Heap.noSibling_combine
File: .lake/packages/batteries/Batteries/Data/PairingHeap.lean

tactic: unfold combine
state_before: α : Type u_1
le : α → α → Bool
s : Heap α
⊢ (combine le s).NoSibling
state_after: α : Type u_1
le : α → α → Bool
s : Heap α
⊢ (match s with
    | h₁@h_1:(node a child h₂@h:(node a_1 child_1 s)) => merge le (merge le h₁ h₂) (combine le s)
    | h => h).NoSibling

tactic: split
state_before: α : Type u_1
le : α → α → Bool
s : Heap α
⊢ (match s with
    | h₁@h_1:(node a child h₂@h:(node a_1 child_1 s)) => merge le (merge le h₁ h₂) (combine le s)
    | h => h).NoSibling
state_after: case h_1
α : Type u_1
le : α → α → Bool
x✝ : Heap α
a✝¹ : α
child✝¹ : Heap α
a✝ : α
child✝ s✝ : Heap α
⊢ (merge le (merge le (node a✝¹ child✝¹ (node a✝ child✝ s✝)) (node a✝ child✝ s✝)) (combine le s✝)).NoSibling

case h_2
α : Type u_1
le : α → α → Bool
s x✝¹ : Heap α
x✝ : ∀ (a : α) (child : Heap α) (a_1 : α) (child_1 s_1 : Heap α), s = node a child (node a_1 child_1 s_1) → False
⊢ s.NoSibling

tactic: exact noSibling_merge _ _ _
state_before: case h_1
α : Type u_1
le : α → α → Bool
x✝ : Heap α
a✝¹ : α
child✝¹ : Heap α
a✝ : α
child✝ s✝ : Heap α
⊢ (merge le (merge le (node a✝¹ child✝¹ (node a✝ child✝ s✝)) (node a✝ child✝ s✝)) (combine le s✝)).NoSibling
state_after: no goals

tactic: match s with
| nil | node _ _ nil => constructor
| node _ _ (node _ _ s) => rename_i h; exact (h _ _ _ _ _ rfl).elim
state_before: case h_2
α : Type u_1
le : α → α → Bool
s x✝¹ : Heap α
x✝ : ∀ (a : α) (child : Heap α) (a_1 : α) (child_1 s_1 : Heap α), s = node a child (node a_1 child_1 s_1) → False
⊢ s.NoSibling
state_after: no goals

tactic: constructor
state_before: α : Type u_1
le : α → α → Bool
s x✝¹ : Heap α
a✝ : α
child✝ : Heap α
x✝ :
  ∀ (a : α) (child : Heap α) (a_1 : α) (child_1 s : Heap α),
    node a✝ child✝ nil = node a child (node a_1 child_1 s) → False
⊢ (node a✝ child✝ nil).NoSibling
state_after: no goals

tactic: rename_i h
state_before: α : Type u_1
le : α → α → Bool
s✝ x✝¹ : Heap α
a✝¹ : α
child✝¹ : Heap α
a✝ : α
child✝ s : Heap α
x✝ :
  ∀ (a : α) (child : Heap α) (a_1 : α) (child_1 s_1 : Heap α),
    node a✝¹ child✝¹ (node a✝ child✝ s) = node a child (node a_1 child_1 s_1) → False
⊢ (node a✝¹ child✝¹ (node a✝ child✝ s)).NoSibling
state_after: α : Type u_1
le : α → α → Bool
s✝ x✝ : Heap α
a✝¹ : α
child✝¹ : Heap α
a✝ : α
child✝ s : Heap α
h :
  ∀ (a : α) (child : Heap α) (a_1 : α) (child_1 s_1 : Heap α),
    node a✝¹ child✝¹ (node a✝ child✝ s) = node a child (node a_1 child_1 s_1) → False
⊢ (node a✝¹ child✝¹ (node a✝ child✝ s)).NoSibling

tactic: exact (h _ _ _ _ _ rfl).elim
state_before: α : Type u_1
le : α → α → Bool
s✝ x✝ : Heap α
a✝¹ : α
child✝¹ : Heap α
a✝ : α
child✝ s : Heap α
h :
  ∀ (a : α) (child : Heap α) (a_1 : α) (child_1 s_1 : Heap α),
    node a✝¹ child✝¹ (node a✝ child✝ s) = node a child (node a_1 child_1 s_1) → False
⊢ (node a✝¹ child✝¹ (node a✝ child✝ s)).NoSibling
state_after: no goals
Theorem: List.isRotated_prev_eq
File: Mathlib/Data/List/Cycle.lean

tactic: rw [← next_reverse_eq_prev _ hn, ← next_reverse_eq_prev _ (h.nodup_iff.mp hn)]
state_before: α : Type u_1
inst✝ : DecidableEq α
l✝ : List α
x✝ : α
l l' : List α
h : l ~r l'
hn : l.Nodup
x : α
hx : x ∈ l
⊢ l.prev x hx = l'.prev x ⋯
state_after: α : Type u_1
inst✝ : DecidableEq α
l✝ : List α
x✝ : α
l l' : List α
h : l ~r l'
hn : l.Nodup
x : α
hx : x ∈ l
⊢ l.reverse.next x ⋯ = l'.reverse.next x ⋯

tactic: exact isRotated_next_eq h.reverse (nodup_reverse.mpr hn) _
state_before: α : Type u_1
inst✝ : DecidableEq α
l✝ : List α
x✝ : α
l l' : List α
h : l ~r l'
hn : l.Nodup
x : α
hx : x ∈ l
⊢ l.reverse.next x ⋯ = l'.reverse.next x ⋯
state_after: no goals
Theorem: NumberField.InfinitePlace.norm_embedding_eq
File: Mathlib/NumberTheory/NumberField/Embeddings.lean

tactic: nth_rewrite 2 [← mk_embedding w]
state_before: k : Type u_1
inst✝² : Field k
K : Type u_2
inst✝¹ : Field K
F : Type u_3
inst✝ : Field F
w : InfinitePlace K
x : K
⊢ ‖w.embedding x‖ = w x
state_after: k : Type u_1
inst✝² : Field k
K : Type u_2
inst✝¹ : Field K
F : Type u_3
inst✝ : Field F
w : InfinitePlace K
x : K
⊢ ‖w.embedding x‖ = (mk w.embedding) x

tactic: rfl
state_before: k : Type u_1
inst✝² : Field k
K : Type u_2
inst✝¹ : Field K
F : Type u_3
inst✝ : Field F
w : InfinitePlace K
x : K
⊢ ‖w.embedding x‖ = (mk w.embedding) x
state_after: no goals
Theorem: Equiv.pointReflection_vsub_right
File: Mathlib/Algebra/AddTorsor.lean

tactic: simp [pointReflection, two_nsmul, vadd_vsub_assoc]
state_before: G : Type u_1
P : Type u_2
inst✝¹ : AddGroup G
inst✝ : AddTorsor G P
x y : P
⊢ (pointReflection x) y -ᵥ y = 2 • (x -ᵥ y)
state_after: no goals
Theorem: Cardinal.mk_list_eq_max_mk_aleph0
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: cases finite_or_infinite α
state_before: α : Type u
inst✝ : Nonempty α
⊢ #(List α) = max #α ℵ₀
state_after: case inl
α : Type u
inst✝ : Nonempty α
h✝ : Finite α
⊢ #(List α) = max #α ℵ₀

case inr
α : Type u
inst✝ : Nonempty α
h✝ : Infinite α
⊢ #(List α) = max #α ℵ₀

tactic: rw [mk_list_eq_aleph0, eq_comm, max_eq_right]
state_before: case inl
α : Type u
inst✝ : Nonempty α
h✝ : Finite α
⊢ #(List α) = max #α ℵ₀
state_after: case inl
α : Type u
inst✝ : Nonempty α
h✝ : Finite α
⊢ #α ≤ ℵ₀

tactic: exact mk_le_aleph0
state_before: case inl
α : Type u
inst✝ : Nonempty α
h✝ : Finite α
⊢ #α ≤ ℵ₀
state_after: no goals

tactic: rw [mk_list_eq_mk, eq_comm, max_eq_left]
state_before: case inr
α : Type u
inst✝ : Nonempty α
h✝ : Infinite α
⊢ #(List α) = max #α ℵ₀
state_after: case inr
α : Type u
inst✝ : Nonempty α
h✝ : Infinite α
⊢ ℵ₀ ≤ #α

tactic: exact aleph0_le_mk α
state_before: case inr
α : Type u
inst✝ : Nonempty α
h✝ : Infinite α
⊢ ℵ₀ ≤ #α
state_after: no goals
Theorem: strictAnti_dual_iff
File: Mathlib/Order/Monotone/Basic.lean

tactic: rw [strictAnti_toDual_comp_iff, strictMono_comp_ofDual_iff]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
δ : Type u_2
π : ι → Type u_3
r : α → α → Prop
inst✝¹ : Preorder α
inst✝ : Preorder β
f : α → β
s : Set α
⊢ StrictAnti (⇑toDual ∘ f ∘ ⇑ofDual) ↔ StrictAnti f
state_after: no goals
Theorem: HomologicalComplex.XIsoOfEq_hom_comp_d
File: Mathlib/Algebra/Homology/HomologicalComplex.lean

tactic: subst h
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
K : HomologicalComplex V c
p₁ p₂ : ι
h : p₁ = p₂
p₃ : ι
⊢ (K.XIsoOfEq h).hom ≫ K.d p₂ p₃ = K.d p₁ p₃
state_after: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
K : HomologicalComplex V c
p₁ p₃ : ι
⊢ (K.XIsoOfEq ⋯).hom ≫ K.d p₁ p₃ = K.d p₁ p₃

tactic: simp
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
K : HomologicalComplex V c
p₁ p₃ : ι
⊢ (K.XIsoOfEq ⋯).hom ≫ K.d p₁ p₃ = K.d p₁ p₃
state_after: no goals
Theorem: IsAlgebraic.algebraMap
File: Mathlib/RingTheory/Algebraic.lean

tactic: rw [aeval_algebraMap_apply, hf₂, map_zero]
state_before: R : Type u
S : Type u_1
A : Type v
inst✝⁶ : CommRing R
inst✝⁵ : CommRing S
inst✝⁴ : Ring A
inst✝³ : Algebra R A
inst✝² : Algebra R S
inst✝¹ : Algebra S A
inst✝ : IsScalarTower R S A
a : S
x✝ : IsAlgebraic R a
f : R[X]
hf₁ : f ≠ 0
hf₂ : (aeval a) f = 0
⊢ (aeval ((algebraMap S A) a)) f = 0
state_after: no goals
Theorem: ContinuousMap.nhds_compactOpen
File: Mathlib/Topology/CompactOpen.lean

tactic: simp_rw [compactOpen_eq, nhds_generateFrom, mem_setOf_eq, @and_comm (f ∈ _), iInf_and,
  ← image_prod, iInf_image, biInf_prod, mem_setOf_eq]
state_before: α : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
T : Type u_5
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace T
K : Set X
U : Set Y
f : C(X, Y)
⊢ 𝓝 f = ⨅ K, ⨅ (_ : IsCompact K), ⨅ U, ⨅ (_ : IsOpen U), ⨅ (_ : MapsTo (⇑f) K U), 𝓟 {g | MapsTo (⇑g) K U}
state_after: no goals
Theorem: Polynomial.degree_X_pow_le
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: simpa only [C_1, one_mul] using degree_C_mul_X_pow_le n (1 : R)
state_before: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p q r : R[X]
n : ℕ
⊢ (X ^ n).degree ≤ ↑n
state_after: no goals
Theorem: Finset.erase_inj
File: Mathlib/Data/Finset/Basic.lean

tactic: refine ⟨fun h => eq_of_mem_of_not_mem_erase hx ?_, congr_arg _⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t u v : Finset α
a b x y : α
s : Finset α
hx : x ∈ s
⊢ s.erase x = s.erase y ↔ x = y
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t u v : Finset α
a b x y : α
s : Finset α
hx : x ∈ s
h : s.erase x = s.erase y
⊢ x ∉ s.erase y

tactic: rw [← h]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t u v : Finset α
a b x y : α
s : Finset α
hx : x ∈ s
h : s.erase x = s.erase y
⊢ x ∉ s.erase y
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t u v : Finset α
a b x y : α
s : Finset α
hx : x ∈ s
h : s.erase x = s.erase y
⊢ x ∉ s.erase x

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t u v : Finset α
a b x y : α
s : Finset α
hx : x ∈ s
h : s.erase x = s.erase y
⊢ x ∉ s.erase x
state_after: no goals
Theorem: Polynomial.map_toSubring
File: Mathlib/RingTheory/Polynomial/Basic.lean

tactic: ext n
state_before: R : Type u
S : Type u_1
inst✝¹ : Ring R
inst✝ : Semiring S
f : R →+* S
x : S
p : R[X]
T : Subring R
hp : ↑p.coeffs ⊆ ↑T
⊢ map T.subtype (p.toSubring T hp) = p
state_after: case a
R : Type u
S : Type u_1
inst✝¹ : Ring R
inst✝ : Semiring S
f : R →+* S
x : S
p : R[X]
T : Subring R
hp : ↑p.coeffs ⊆ ↑T
n : ℕ
⊢ (map T.subtype (p.toSubring T hp)).coeff n = p.coeff n

tactic: simp [coeff_map]
state_before: case a
R : Type u
S : Type u_1
inst✝¹ : Ring R
inst✝ : Semiring S
f : R →+* S
x : S
p : R[X]
T : Subring R
hp : ↑p.coeffs ⊆ ↑T
n : ℕ
⊢ (map T.subtype (p.toSubring T hp)).coeff n = p.coeff n
state_after: no goals
Theorem: Stream'.WSeq.cons_congr
File: Mathlib/Data/Seq/WSeq.lean

tactic: unfold Equiv
state_before: α : Type u
β : Type v
γ : Type w
s t : WSeq α
a : α
h : s ~ʷ t
⊢ cons a s ~ʷ cons a t
state_after: α : Type u
β : Type v
γ : Type w
s t : WSeq α
a : α
h : s ~ʷ t
⊢ LiftRel (fun x x_1 => x = x_1) (cons a s) (cons a t)

tactic: simpa using h
state_before: α : Type u
β : Type v
γ : Type w
s t : WSeq α
a : α
h : s ~ʷ t
⊢ LiftRel (fun x x_1 => x = x_1) (cons a s) (cons a t)
state_after: no goals
Theorem: Set.iUnion_Ioc_eq_Ioi_self_iff
File: Mathlib/Order/Interval/Set/Disjoint.lean

tactic: simp [← Ioi_inter_Iic, ← inter_iUnion, subset_def]
state_before: ι : Sort u
α : Type v
β : Type w
inst✝ : LinearOrder α
a₁ a₂ b₁ b₂ : α
f : ι → α
a : α
⊢ ⋃ i, Ioc a (f i) = Ioi a ↔ ∀ (x : α), a < x → ∃ i, x ≤ f i
state_after: no goals
Theorem: rotationOf_rotation
File: Mathlib/Analysis/Complex/Isometry.lean

tactic: simp
state_before: a : ↥circle
⊢ ↑(rotationOf (rotation a)) = ↑a
state_after: no goals
Theorem: LucasLehmer.norm_num_ext.testFalseHelper
File: Mathlib/NumberTheory/LucasLehmer.lean

tactic: rw [Nat.blt_eq] at hp
state_before: p : ℕ
hp : Nat.blt 1 p = true
h : Nat.ble 1 (sMod' (2 ^ p - 1) (p - 2)) = true
⊢ ¬LucasLehmerTest p
state_after: p : ℕ
hp : 1 < p
h : Nat.ble 1 (sMod' (2 ^ p - 1) (p - 2)) = true
⊢ ¬LucasLehmerTest p

tactic: rw [Nat.ble_eq, Nat.succ_le, Nat.pos_iff_ne_zero] at h
state_before: p : ℕ
hp : 1 < p
h : Nat.ble 1 (sMod' (2 ^ p - 1) (p - 2)) = true
⊢ ¬LucasLehmerTest p
state_after: p : ℕ
hp : 1 < p
h : sMod' (2 ^ p - 1) (p - 2) ≠ 0
⊢ ¬LucasLehmerTest p

tactic: rw [LucasLehmerTest, LucasLehmer.residue_eq_zero_iff_sMod_eq_zero p hp, ← sMod'_eq_sMod p _ hp]
state_before: p : ℕ
hp : 1 < p
h : sMod' (2 ^ p - 1) (p - 2) ≠ 0
⊢ ¬LucasLehmerTest p
state_after: p : ℕ
hp : 1 < p
h : sMod' (2 ^ p - 1) (p - 2) ≠ 0
⊢ ¬↑(sMod' (2 ^ p - 1) (p - 2)) = 0

tactic: simpa using h
state_before: p : ℕ
hp : 1 < p
h : sMod' (2 ^ p - 1) (p - 2) ≠ 0
⊢ ¬↑(sMod' (2 ^ p - 1) (p - 2)) = 0
state_after: no goals
Theorem: Finset.cons_subset_cons
File: Mathlib/Data/Finset/Basic.lean

tactic: rwa [← coe_subset, coe_cons, coe_cons, Set.insert_subset_insert_iff, coe_subset]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s t : Finset α
a b : α
hs : a ∉ s
ht : a ∉ t
⊢ cons a s hs ⊆ cons a t ht ↔ s ⊆ t
state_after: no goals
Theorem: Set.finite_iff_finite_of_encard_eq_encard
File: Mathlib/Data/Set/Card.lean

tactic: rw [← encard_lt_top_iff, ← encard_lt_top_iff, h]
state_before: α : Type u_1
β : Type u_2
s t : Set α
h : s.encard = t.encard
⊢ s.Finite ↔ t.Finite
state_after: no goals
Theorem: covBy_sup_of_inf_covBy_of_inf_covBy_right
File: Mathlib/Order/ModularLattice.lean

tactic: rw [inf_comm, sup_comm]
state_before: α : Type u_1
inst✝¹ : Lattice α
inst✝ : IsWeakUpperModularLattice α
a b : α
⊢ a ⊓ b ⋖ a → a ⊓ b ⋖ b → b ⋖ a ⊔ b
state_after: α : Type u_1
inst✝¹ : Lattice α
inst✝ : IsWeakUpperModularLattice α
a b : α
⊢ b ⊓ a ⋖ a → b ⊓ a ⋖ b → b ⋖ b ⊔ a

tactic: exact fun ha hb => covBy_sup_of_inf_covBy_of_inf_covBy_left hb ha
state_before: α : Type u_1
inst✝¹ : Lattice α
inst✝ : IsWeakUpperModularLattice α
a b : α
⊢ b ⊓ a ⋖ a → b ⊓ a ⋖ b → b ⋖ b ⊔ a
state_after: no goals
Theorem: NumberField.InfinitePlace.le_iff_le
File: Mathlib/NumberTheory/NumberField/Embeddings.lean

tactic: rintro hφ ⟨w, ⟨φ, rfl⟩⟩
state_before: k : Type u_1
inst✝² : Field k
K : Type u_2
inst✝¹ : Field K
F : Type u_3
inst✝ : Field F
x : K
r : ℝ
⊢ (∀ (φ : K →+* ℂ), ‖φ x‖ ≤ r) → ∀ (w : InfinitePlace K), w x ≤ r
state_after: case mk.intro
k : Type u_1
inst✝² : Field k
K : Type u_2
inst✝¹ : Field K
F : Type u_3
inst✝ : Field F
x : K
r : ℝ
hφ : ∀ (φ : K →+* ℂ), ‖φ x‖ ≤ r
φ : K →+* ℂ
⊢ ⟨place φ, ⋯⟩ x ≤ r

tactic: exact hφ φ
state_before: case mk.intro
k : Type u_1
inst✝² : Field k
K : Type u_2
inst✝¹ : Field K
F : Type u_3
inst✝ : Field F
x : K
r : ℝ
hφ : ∀ (φ : K →+* ℂ), ‖φ x‖ ≤ r
φ : K →+* ℂ
⊢ ⟨place φ, ⋯⟩ x ≤ r
state_after: no goals
Theorem: AdjoinRoot.nontrivial
File: Mathlib/RingTheory/AdjoinRoot.lean

tactic: simp_rw [Ne, span_singleton_eq_top, Polynomial.isUnit_iff, not_exists, not_and]
state_before: R : Type u
S : Type v
K : Type w
inst✝¹ : CommRing R
f : R[X]
inst✝ : IsDomain R
h : f.degree ≠ 0
⊢ span {f} ≠ ⊤
state_after: R : Type u
S : Type v
K : Type w
inst✝¹ : CommRing R
f : R[X]
inst✝ : IsDomain R
h : f.degree ≠ 0
⊢ ∀ (x : R), IsUnit x → ¬C x = f

tactic: rintro x hx rfl
state_before: R : Type u
S : Type v
K : Type w
inst✝¹ : CommRing R
f : R[X]
inst✝ : IsDomain R
h : f.degree ≠ 0
⊢ ∀ (x : R), IsUnit x → ¬C x = f
state_after: R : Type u
S : Type v
K : Type w
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : R
hx : IsUnit x
h : (C x).degree ≠ 0
⊢ False

tactic: exact h (degree_C hx.ne_zero)
state_before: R : Type u
S : Type v
K : Type w
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : R
hx : IsUnit x
h : (C x).degree ≠ 0
⊢ False
state_after: no goals
Theorem: RingHom.ker_eq_bot_iff_eq_zero
File: Mathlib/RingTheory/Ideal/Maps.lean

tactic: rw [← injective_iff_map_eq_zero f, injective_iff_ker_eq_bot]
state_before: R : Type u
S : Type v
T : Type w
F : Type u_1
inst✝² : Ring R
inst✝¹ : Semiring S
inst✝ : FunLike F R S
rc : RingHomClass F R S
f : F
⊢ ker f = ⊥ ↔ ∀ (x : R), f x = 0 → x = 0
state_after: no goals
Theorem: Orientation.cos_oangle_sub_left_of_oangle_eq_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Oriented/RightAngle.lean

tactic: rw [← neg_inj, oangle_rev, ← oangle_neg_orientation_eq_neg, neg_inj] at h ⊢
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : o.oangle x y = ↑(π / 2)
⊢ (o.oangle (x - y) x).cos = ‖x‖ / ‖x - y‖
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : (-o).oangle y x = ↑(π / 2)
⊢ ((-o).oangle x (x - y)).cos = ‖x‖ / ‖x - y‖

tactic: exact (-o).cos_oangle_sub_right_of_oangle_eq_pi_div_two h
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : (-o).oangle y x = ↑(π / 2)
⊢ ((-o).oangle x (x - y)).cos = ‖x‖ / ‖x - y‖
state_after: no goals
Theorem: gauge_le_one_of_mem
File: Mathlib/Analysis/Convex/Gauge.lean

tactic: rwa [one_smul]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
x✝ : E
a : ℝ
x : E
hx : x ∈ s
⊢ x ∈ 1 • s
state_after: no goals
Theorem: Rat.one_mul
File: .lake/packages/batteries/Batteries/Data/Rat/Lemmas.lean

tactic: simp [mul_def, normalize_self]
state_before: a : Rat
⊢ 1 * a = a
state_after: no goals
Theorem: WittVector.wittOne_zero_eq_one
File: Mathlib/RingTheory/WittVector/Defs.lean

tactic: apply MvPolynomial.map_injective (Int.castRingHom ℚ) Int.cast_injective
state_before: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
⊢ wittOne p 0 = 1
state_after: case a
p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
⊢ (map (Int.castRingHom ℚ)) (wittOne p 0) = (map (Int.castRingHom ℚ)) 1

tactic: simp only [wittOne, wittStructureRat, xInTermsOfW_zero, AlgHom.map_one, RingHom.map_one,
  bind₁_X_right, map_wittStructureInt]
state_before: case a
p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
⊢ (map (Int.castRingHom ℚ)) (wittOne p 0) = (map (Int.castRingHom ℚ)) 1
state_after: no goals
Theorem: Fin.card_fintypeIcc
File: Mathlib/Order/Interval/Finset/Fin.lean

tactic: rw [← card_Icc, Fintype.card_ofFinset]
state_before: n : ℕ
a b : Fin n
⊢ Fintype.card ↑(Set.Icc a b) = ↑b + 1 - ↑a
state_after: no goals
Theorem: coe_notMemRangeEquiv_symm
File: Mathlib/Data/Finset/Basic.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
k j : ℕ
⊢ j + k ∉ range k
state_after: no goals
Theorem: Function.Periodic.sub_const
File: Mathlib/Algebra/Periodic.lean

tactic: simpa only [sub_eq_add_neg] using h.add_const (-a)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x : α
inst✝ : AddCommGroup α
h : Periodic f c
a : α
⊢ Periodic (fun x => f (x - a)) c
state_after: no goals
Theorem: Nat.ceilRoot_one_left
File: Mathlib/Data/Nat/Factorization/Root.lean

tactic: simp [ceilRoot]
state_before: a✝ b n a : ℕ
⊢ ceilRoot 1 a = a
state_after: a✝ b n a : ℕ
⊢ (if a = 0 then 0 else a.factorization.prod fun p k => p ^ k) = a

tactic: split_ifs <;> simp [*]
state_before: a✝ b n a : ℕ
⊢ (if a = 0 then 0 else a.factorization.prod fun p k => p ^ k) = a
state_after: no goals
Theorem: LowerSet.Iic_iInf
File: Mathlib/Order/UpperLower/Basic.lean

tactic: simp only [mem_Iic_iff, mem_iInf_iff, le_iInf_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝ : CompleteLattice α
f : ι → α
c : α
⊢ c ∈ Iic (⨅ i, f i) ↔ c ∈ ⨅ i, Iic (f i)
state_after: no goals