tasksource/leandojo huggingface dataset:
Theorem: biSup_const
File: Mathlib/Order/CompleteLattice.lean

tactic: haveI : Nonempty s := Set.nonempty_coe_sort.mpr hs
state_before: α : Type u_2
β : Type ?u.100367
β₂ : Type ?u.100370
γ : Type ?u.100373
ι✝ : Sort ?u.100376
ι' : Sort ?u.100379
κ : ι✝ → Sort ?u.100384
κ' : ι' → Sort ?u.100389
inst✝ : CompleteLattice α
f g s✝ t : ι✝ → α
a✝ b : α
ι : Type u_1
a : α
s : Set ι
hs : Set.Nonempty s
⊢ (⨆ (i : ι) (_ : i ∈ s), a) = a

tactic: rw [← iSup_subtype'', iSup_const]
state_before: α : Type u_2
β : Type ?u.100367
β₂ : Type ?u.100370
γ : Type ?u.100373
ι✝ : Sort ?u.100376
ι' : Sort ?u.100379
κ : ι✝ → Sort ?u.100384
κ' : ι' → Sort ?u.100389
inst✝ : CompleteLattice α
f g s✝ t : ι✝ → α
a✝ b : α
ι : Type u_1
a : α
s : Set ι
hs : Set.Nonempty s
this : Nonempty ↑s
⊢ (⨆ (i : ι) (_ : i ∈ s), a) = a
Theorem: CompleteLatticeHom.cancel_left
File: Mathlib/Order/Hom/CompleteLattice.lean

tactic: rw [← comp_apply, h, comp_apply]
state_before: F : Type ?u.77892
α : Type u_3
β : Type u_1
γ : Type u_2
δ : Type ?u.77904
ι : Sort ?u.77907
κ : ι → Sort ?u.77912
inst✝³ : CompleteLattice α
inst✝² : CompleteLattice β
inst✝¹ : CompleteLattice γ
inst✝ : CompleteLattice δ
g : CompleteLatticeHom β γ
f₁ f₂ : CompleteLatticeHom α β
hg : Injective ↑g
h : comp g f₁ = comp g f₂
a : α
⊢ ↑g (↑f₁ a) = ↑g (↑f₂ a)
Theorem: hasFDerivWithinAt_of_restrictScalars
File: Mathlib/Analysis/Calculus/FDeriv/RestrictScalars.lean

tactic: rw [← H] at h
state_before: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
𝕜' : Type u_4
inst✝⁹ : NontriviallyNormedField 𝕜'
inst✝⁸ : NormedAlgebra 𝕜 𝕜'
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedSpace 𝕜' E
inst✝⁴ : IsScalarTower 𝕜 𝕜' E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
f : E → F
f' : E →L[𝕜'] F
s : Set E
x : E
g' : E →L[𝕜] F
h : HasFDerivWithinAt f g' s x
H : restrictScalars 𝕜 f' = g'
⊢ HasFDerivWithinAt f f' s x

tactic: exact h
state_before: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
𝕜' : Type u_4
inst✝⁹ : NontriviallyNormedField 𝕜'
inst✝⁸ : NormedAlgebra 𝕜 𝕜'
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedSpace 𝕜' E
inst✝⁴ : IsScalarTower 𝕜 𝕜' E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
f : E → F
f' : E →L[𝕜'] F
s : Set E
x : E
g' : E →L[𝕜] F
h : HasFDerivWithinAt f (restrictScalars 𝕜 f') s x
H : restrictScalars 𝕜 f' = g'
⊢ HasFDerivWithinAt f f' s x
Theorem: Nat.succ_pred
File: src/lean/Init/Data/Nat/Basic.lean

tactic: induction a with
| zero => contradiction
| succ => rfl
state_before: a : Nat
h : a ≠ 0
⊢ succ (pred a) = a

tactic: contradiction
state_before: case zero
h : zero ≠ 0
⊢ succ (pred zero) = zero

tactic: rfl
state_before: case succ
n✝ : Nat
n_ih✝ : n✝ ≠ 0 → succ (pred n✝) = n✝
h : succ n✝ ≠ 0
⊢ succ (pred (succ n✝)) = succ n✝
Theorem: MeasureTheory.set_lintegral_congr_fun
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: rw [lintegral_congr_ae]
state_before: α : Type u_1
β : Type ?u.294994
γ : Type ?u.294997
δ : Type ?u.295000
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
hfg : ∀ᵐ (x : α) ∂μ, x ∈ s → f x = g x
⊢ (∫⁻ (x : α) in s, f x ∂μ) = ∫⁻ (x : α) in s, g x ∂μ

tactic: rw [EventuallyEq]
state_before: α : Type u_1
β : Type ?u.294994
γ : Type ?u.294997
δ : Type ?u.295000
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
hfg : ∀ᵐ (x : α) ∂μ, x ∈ s → f x = g x
⊢ (fun x => f x) =ᵐ[Measure.restrict μ s] fun a => g a

tactic: rwa [ae_restrict_iff' hs]
state_before: α : Type u_1
β : Type ?u.294994
γ : Type ?u.294997
δ : Type ?u.295000
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
hfg : ∀ᵐ (x : α) ∂μ, x ∈ s → f x = g x
⊢ ∀ᵐ (x : α) ∂Measure.restrict μ s, f x = g x
Theorem: AddSubgroup.ker_saturated
File: Mathlib/GroupTheory/Subgroup/Saturated.lean

tactic: intro n g hg
state_before: A₁ : Type u_1
A₂ : Type u_2
inst✝² : AddCommGroup A₁
inst✝¹ : AddCommGroup A₂
inst✝ : NoZeroSMulDivisors ℕ A₂
f : A₁ →+ A₂
⊢ Saturated (AddMonoidHom.ker f)

tactic: simpa only [f.mem_ker, nsmul_eq_smul, f.map_nsmul, smul_eq_zero] using hg
state_before: A₁ : Type u_1
A₂ : Type u_2
inst✝² : AddCommGroup A₁
inst✝¹ : AddCommGroup A₂
inst✝ : NoZeroSMulDivisors ℕ A₂
f : A₁ →+ A₂
n : ℕ
g : A₁
hg : n • g ∈ AddMonoidHom.ker f
⊢ n = 0 ∨ g ∈ AddMonoidHom.ker f
Theorem: MeasureTheory.integral_eq
File: Mathlib/MeasureTheory/Integral/Bochner.lean

tactic: rw [integral]
state_before: α : Type u_2
E : Type u_1
F : Type ?u.769930
𝕜 : Type ?u.769933
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : CompleteSpace E
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : SMulCommClass ℝ 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f✝ g : α → E
m : MeasurableSpace α
μ : Measure α
f : α → E
hf : Integrable f
⊢ (∫ (a : α), f a ∂μ) = L1.integral (Integrable.toL1 f hf)

tactic: exact @dif_pos _ (id _) hf _ _ _
state_before: α : Type u_2
E : Type u_1
F : Type ?u.769930
𝕜 : Type ?u.769933
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : CompleteSpace E
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : SMulCommClass ℝ 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f✝ g : α → E
m : MeasurableSpace α
μ : Measure α
f : α → E
hf : Integrable f
⊢ (if hf : Integrable fun a => f a then L1.integral (Integrable.toL1 (fun a => f a) hf) else 0) =
    L1.integral (Integrable.toL1 f hf)
Theorem: AffineBasis.sum_coord_apply_eq_one
File: Mathlib/LinearAlgebra/AffineSpace/Basis.lean

tactic: have hq : q ∈ affineSpan k (range b) := by
  rw [b.tot]
  exact AffineSubspace.mem_top k V q
state_before: ι : Type u_1
ι' : Type ?u.112987
k : Type u_2
V : Type u_3
P : Type u_4
inst✝⁴ : AddCommGroup V
inst✝³ : AffineSpace V P
inst✝² : Ring k
inst✝¹ : Module k V
b : AffineBasis ι k P
s : Finset ι
i j : ι
e : ι ≃ ι'
inst✝ : Fintype ι
q : P
⊢ ∑ i : ι, ↑(coord b i) q = 1

tactic: obtain ⟨w, hw, rfl⟩ := eq_affineCombination_of_mem_affineSpan_of_fintype hq
state_before: ι : Type u_1
ι' : Type ?u.112987
k : Type u_2
V : Type u_3
P : Type u_4
inst✝⁴ : AddCommGroup V
inst✝³ : AffineSpace V P
inst✝² : Ring k
inst✝¹ : Module k V
b : AffineBasis ι k P
s : Finset ι
i j : ι
e : ι ≃ ι'
inst✝ : Fintype ι
q : P
hq : q ∈ affineSpan k (range ↑b)
⊢ ∑ i : ι, ↑(coord b i) q = 1

tactic: convert hw
state_before: case intro.intro
ι : Type u_1
ι' : Type ?u.112987
k : Type u_2
V : Type u_3
P : Type u_4
inst✝⁴ : AddCommGroup V
inst✝³ : AffineSpace V P
inst✝² : Ring k
inst✝¹ : Module k V
b : AffineBasis ι k P
s : Finset ι
i j : ι
e : ι ≃ ι'
inst✝ : Fintype ι
w : ι → k
hw : ∑ i : ι, w i = 1
hq : ↑(Finset.affineCombination k Finset.univ ↑b) w ∈ affineSpan k (range ↑b)
⊢ ∑ i : ι, ↑(coord b i) (↑(Finset.affineCombination k Finset.univ ↑b) w) = 1

tactic: exact b.coord_apply_combination_of_mem (Finset.mem_univ _) hw
state_before: case h.e'_2.a
ι : Type u_1
ι' : Type ?u.112987
k : Type u_2
V : Type u_3
P : Type u_4
inst✝⁴ : AddCommGroup V
inst✝³ : AffineSpace V P
inst✝² : Ring k
inst✝¹ : Module k V
b : AffineBasis ι k P
s : Finset ι
i j : ι
e : ι ≃ ι'
inst✝ : Fintype ι
w : ι → k
hw : ∑ i : ι, w i = 1
hq : ↑(Finset.affineCombination k Finset.univ ↑b) w ∈ affineSpan k (range ↑b)
x✝ : ι
a✝ : x✝ ∈ Finset.univ
⊢ ↑(coord b x✝) (↑(Finset.affineCombination k Finset.univ ↑b) w) = w x✝

tactic: rw [b.tot]
state_before: ι : Type u_1
ι' : Type ?u.112987
k : Type u_2
V : Type u_3
P : Type u_4
inst✝⁴ : AddCommGroup V
inst✝³ : AffineSpace V P
inst✝² : Ring k
inst✝¹ : Module k V
b : AffineBasis ι k P
s : Finset ι
i j : ι
e : ι ≃ ι'
inst✝ : Fintype ι
q : P
⊢ q ∈ affineSpan k (range ↑b)

tactic: exact AffineSubspace.mem_top k V q
state_before: ι : Type u_1
ι' : Type ?u.112987
k : Type u_2
V : Type u_3
P : Type u_4
inst✝⁴ : AddCommGroup V
inst✝³ : AffineSpace V P
inst✝² : Ring k
inst✝¹ : Module k V
b : AffineBasis ι k P
s : Finset ι
i j : ι
e : ι ≃ ι'
inst✝ : Fintype ι
q : P
⊢ q ∈ ⊤
Theorem: Polynomial.ofFinsupp_eq_zero
File: Mathlib/Data/Polynomial/Basic.lean

tactic: rw [← ofFinsupp_zero, ofFinsupp_inj]
state_before: R : Type u
a✝ b : R
m n : ℕ
inst✝ : Semiring R
p q : R[X]
a : AddMonoidAlgebra R ℕ
⊢ { toFinsupp := a } = 0 ↔ a = 0
Theorem: List.isRotated_concat
File: Mathlib/Data/List/Rotate.lean

tactic: simp
state_before: α : Type u
l l' : List α
hd : α
tl : List α
⊢ rotate (hd :: tl) 1 = tl ++ [hd]
Theorem: subsingleton_floorRing
File: Mathlib/Algebra/Order/Floor.lean

tactic: refine' ⟨fun H₁ H₂ => _⟩
state_before: F : Type ?u.312400
α✝ : Type ?u.312403
β : Type ?u.312406
α : Type u_1
inst✝ : LinearOrderedRing α
⊢ Subsingleton (FloorRing α)

tactic: have : H₁.floor = H₂.floor :=
  funext fun a => (H₁.gc_coe_floor.u_unique H₂.gc_coe_floor) fun _ => rfl
state_before: F : Type ?u.312400
α✝ : Type ?u.312403
β : Type ?u.312406
α : Type u_1
inst✝ : LinearOrderedRing α
H₁ H₂ : FloorRing α
⊢ H₁ = H₂

tactic: have : H₁.ceil = H₂.ceil := funext fun a => (H₁.gc_ceil_coe.l_unique H₂.gc_ceil_coe) fun _ => rfl
state_before: F : Type ?u.312400
α✝ : Type ?u.312403
β : Type ?u.312406
α : Type u_1
inst✝ : LinearOrderedRing α
H₁ H₂ : FloorRing α
this : FloorRing.floor = FloorRing.floor
⊢ H₁ = H₂

tactic: cases H₁
state_before: F : Type ?u.312400
α✝ : Type ?u.312403
β : Type ?u.312406
α : Type u_1
inst✝ : LinearOrderedRing α
H₁ H₂ : FloorRing α
this✝ : FloorRing.floor = FloorRing.floor
this : FloorRing.ceil = FloorRing.ceil
⊢ H₁ = H₂

tactic: cases H₂
state_before: case mk
F : Type ?u.312400
α✝ : Type ?u.312403
β : Type ?u.312406
α : Type u_1
inst✝ : LinearOrderedRing α
H₂ : FloorRing α
floor✝ ceil✝ : α → ℤ
gc_coe_floor✝ : GaloisConnection Int.cast floor✝
gc_ceil_coe✝ : GaloisConnection ceil✝ Int.cast
this✝ : FloorRing.floor = FloorRing.floor
this : FloorRing.ceil = FloorRing.ceil
⊢ { floor := floor✝, ceil := ceil✝, gc_coe_floor := gc_coe_floor✝, gc_ceil_coe := gc_ceil_coe✝ } = H₂

tactic: congr
state_before: case mk.mk
F : Type ?u.312400
α✝ : Type ?u.312403
β : Type ?u.312406
α : Type u_1
inst✝ : LinearOrderedRing α
floor✝¹ ceil✝¹ : α → ℤ
gc_coe_floor✝¹ : GaloisConnection Int.cast floor✝¹
gc_ceil_coe✝¹ : GaloisConnection ceil✝¹ Int.cast
floor✝ ceil✝ : α → ℤ
gc_coe_floor✝ : GaloisConnection Int.cast floor✝
gc_ceil_coe✝ : GaloisConnection ceil✝ Int.cast
this✝ : FloorRing.floor = FloorRing.floor
this : FloorRing.ceil = FloorRing.ceil
⊢ { floor := floor✝¹, ceil := ceil✝¹, gc_coe_floor := gc_coe_floor✝¹, gc_ceil_coe := gc_ceil_coe✝¹ } =
    { floor := floor✝, ceil := ceil✝, gc_coe_floor := gc_coe_floor✝, gc_ceil_coe := gc_ceil_coe✝ }
Theorem: ZNum.zneg_bit1
File: Mathlib/Data/Num/Lemmas.lean

tactic: cases n <;> rfl
state_before: α : Type ?u.658372
n : ZNum
⊢ -ZNum.bit1 n = ZNum.bitm1 (-n)
Theorem: AlgebraicTopology.alternatingFaceMapComplex_obj_d
File: Mathlib/AlgebraicTopology/AlternatingFaceMapComplex.lean

tactic: dsimp only [alternatingFaceMapComplex, AlternatingFaceMapComplex.obj]
state_before: C : Type u_2
inst✝¹ : Category C
inst✝ : Preadditive C
X : SimplicialObject C
n : ℕ
⊢ HomologicalComplex.d ((alternatingFaceMapComplex C).obj X) (n + 1) n = AlternatingFaceMapComplex.objD X n

tactic: apply ChainComplex.of_d
state_before: C : Type u_2
inst✝¹ : Category C
inst✝ : Preadditive C
X : SimplicialObject C
n : ℕ
⊢ HomologicalComplex.d
      (ChainComplex.of (fun n => X.obj [n].op) (AlternatingFaceMapComplex.objD X)
        (_ : ∀ (n : ℕ), AlternatingFaceMapComplex.objD X (n + 1) ≫ AlternatingFaceMapComplex.objD X n = 0))
      (n + 1) n =
    AlternatingFaceMapComplex.objD X n
Theorem: UniformEquiv.toEquiv_injective
File: Mathlib/Topology/UniformSpace/Equiv.lean

tactic: simpa only [mk.injEq]
state_before: α : Type u
β : Type u_1
γ : Type ?u.8291
δ : Type ?u.8294
inst✝³ : UniformSpace α
inst✝² : UniformSpace β
inst✝¹ : UniformSpace γ
inst✝ : UniformSpace δ
e : α ≃ β
h₁ : UniformContinuous e.toFun
h₂ : UniformContinuous e.invFun
e' : α ≃ β
h₁' : UniformContinuous e'.toFun
h₂' : UniformContinuous e'.invFun
h :
  { toEquiv := e, uniformContinuous_toFun := h₁, uniformContinuous_invFun := h₂ }.toEquiv =
    { toEquiv := e', uniformContinuous_toFun := h₁', uniformContinuous_invFun := h₂' }.toEquiv
⊢ { toEquiv := e, uniformContinuous_toFun := h₁, uniformContinuous_invFun := h₂ } =
    { toEquiv := e', uniformContinuous_toFun := h₁', uniformContinuous_invFun := h₂' }
Theorem: Right.pow_lt_one_of_lt
File: Mathlib/Algebra/GroupPower/Order.lean

tactic: rw [pow_succ]
state_before: β : Type ?u.94928
A : Type ?u.94931
G : Type ?u.94934
M : Type u_1
R : Type ?u.94940
inst✝² : Monoid M
inst✝¹ : Preorder M
inst✝ : CovariantClass M M (swap fun x x_1 => x * x_1) fun x x_1 => x < x_1
n✝ : ℕ
x : M
hn : 0 < n✝
h : x < 1
n : ℕ
x✝ : Nat.succ 0 ≤ n
ih : x ^ n < 1
⊢ x ^ (n + 1) < 1

tactic: exact Right.mul_lt_one h ih
state_before: β : Type ?u.94928
A : Type ?u.94931
G : Type ?u.94934
M : Type u_1
R : Type ?u.94940
inst✝² : Monoid M
inst✝¹ : Preorder M
inst✝ : CovariantClass M M (swap fun x x_1 => x * x_1) fun x x_1 => x < x_1
n✝ : ℕ
x : M
hn : 0 < n✝
h : x < 1
n : ℕ
x✝ : Nat.succ 0 ≤ n
ih : x ^ n < 1
⊢ x * x ^ n < 1
Theorem: OnePoint.isClosed_iff_of_mem
File: Mathlib/Topology/Compactification/OnePoint.lean

tactic: have : ∞ ∉ sᶜ := fun H => H h
state_before: X : Type u_1
inst✝ : TopologicalSpace X
s : Set (OnePoint X)
t : Set X
h : ∞ ∈ s
⊢ IsClosed s ↔ IsClosed (some ⁻¹' s)

tactic: rw [← isOpen_compl_iff, isOpen_iff_of_not_mem this, ← isOpen_compl_iff, preimage_compl]
state_before: X : Type u_1
inst✝ : TopologicalSpace X
s : Set (OnePoint X)
t : Set X
h : ∞ ∈ s
this : ¬∞ ∈ sᶜ
⊢ IsClosed s ↔ IsClosed (some ⁻¹' s)
Theorem: List.takeWhile_idem
File: Mathlib/Data/List/Basic.lean

tactic: simp_rw [takeWhile_takeWhile, and_self_iff, Bool.decide_coe]
state_before: ι : Type ?u.423975
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Bool
l : List α
⊢ takeWhile p (takeWhile p l) = takeWhile p l
Theorem: ProjectiveSpectrum.vanishingIdeal_univ
File: Mathlib/AlgebraicGeometry/ProjectiveSpectrum/Topology.lean

tactic: simpa using (gc_ideal _).u_top
state_before: R : Type u_2
A : Type u_1
inst✝³ : CommSemiring R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
⊢ vanishingIdeal ∅ = ⊤
Theorem: BilinForm.isOrtho_smul_right
File: Mathlib/LinearAlgebra/BilinearForm.lean

tactic: dsimp only [IsOrtho]
state_before: R : Type ?u.780464
M : Type ?u.780467
inst✝²² : Semiring R
inst✝²¹ : AddCommMonoid M
inst✝²⁰ : Module R M
R₁ : Type ?u.780503
M₁ : Type ?u.780506
inst✝¹⁹ : Ring R₁
inst✝¹⁸ : AddCommGroup M₁
inst✝¹⁷ : Module R₁ M₁
R₂ : Type ?u.781115
M₂ : Type ?u.781118
inst✝¹⁶ : CommSemiring R₂
inst✝¹⁵ : AddCommMonoid M₂
inst✝¹⁴ : Module R₂ M₂
R₃ : Type ?u.781305
M₃ : Type ?u.781308
inst✝¹³ : CommRing R₃
inst✝¹² : AddCommGroup M₃
inst✝¹¹ : Module R₃ M₃
V : Type ?u.781896
K : Type ?u.781899
inst✝¹⁰ : Field K
inst✝⁹ : AddCommGroup V
inst✝⁸ : Module K V
B : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M₂' : Type ?u.783113
M₂'' : Type ?u.783116
inst✝⁷ : AddCommMonoid M₂'
inst✝⁶ : AddCommMonoid M₂''
inst✝⁵ : Module R₂ M₂'
inst✝⁴ : Module R₂ M₂''
R₄ : Type u_1
M₄ : Type u_2
inst✝³ : Ring R₄
inst✝² : IsDomain R₄
inst✝¹ : AddCommGroup M₄
inst✝ : Module R₄ M₄
G : BilinForm R₄ M₄
x y : M₄
a : R₄
ha : a ≠ 0
⊢ IsOrtho G x (a • y) ↔ IsOrtho G x y

tactic: rw [smul_right, mul_eq_zero, or_iff_right ha]
state_before: R : Type ?u.780464
M : Type ?u.780467
inst✝²² : Semiring R
inst✝²¹ : AddCommMonoid M
inst✝²⁰ : Module R M
R₁ : Type ?u.780503
M₁ : Type ?u.780506
inst✝¹⁹ : Ring R₁
inst✝¹⁸ : AddCommGroup M₁
inst✝¹⁷ : Module R₁ M₁
R₂ : Type ?u.781115
M₂ : Type ?u.781118
inst✝¹⁶ : CommSemiring R₂
inst✝¹⁵ : AddCommMonoid M₂
inst✝¹⁴ : Module R₂ M₂
R₃ : Type ?u.781305
M₃ : Type ?u.781308
inst✝¹³ : CommRing R₃
inst✝¹² : AddCommGroup M₃
inst✝¹¹ : Module R₃ M₃
V : Type ?u.781896
K : Type ?u.781899
inst✝¹⁰ : Field K
inst✝⁹ : AddCommGroup V
inst✝⁸ : Module K V
B : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M₂' : Type ?u.783113
M₂'' : Type ?u.783116
inst✝⁷ : AddCommMonoid M₂'
inst✝⁶ : AddCommMonoid M₂''
inst✝⁵ : Module R₂ M₂'
inst✝⁴ : Module R₂ M₂''
R₄ : Type u_1
M₄ : Type u_2
inst✝³ : Ring R₄
inst✝² : IsDomain R₄
inst✝¹ : AddCommGroup M₄
inst✝ : Module R₄ M₄
G : BilinForm R₄ M₄
x y : M₄
a : R₄
ha : a ≠ 0
⊢ bilin G x (a • y) = 0 ↔ bilin G x y = 0
Theorem: Part.bind_assoc
File: Mathlib/Data/Part.lean

tactic: simp
state_before: α : Type u_2
β : Type u_3
γ✝ : Type ?u.26068
γ : Type u_1
f : Part α
g : α → Part β
k : β → Part γ
a : γ
⊢ a ∈ Part.bind (Part.bind f g) k ↔ a ∈ Part.bind f fun x => Part.bind (g x) k

tactic: exact
  ⟨fun ⟨_, ⟨_, h₁, h₂⟩, h₃⟩ => ⟨_, h₁, _, h₂, h₃⟩, fun ⟨_, h₁, _, h₂, h₃⟩ =>
    ⟨_, ⟨_, h₁, h₂⟩, h₃⟩⟩
state_before: α : Type u_2
β : Type u_3
γ✝ : Type ?u.26068
γ : Type u_1
f : Part α
g : α → Part β
k : β → Part γ
a : γ
⊢ (∃ a_1, (∃ a, a ∈ f ∧ a_1 ∈ g a) ∧ a ∈ k a_1) ↔ ∃ a_1, a_1 ∈ f ∧ ∃ a_2, a_2 ∈ g a_1 ∧ a ∈ k a_2
Theorem: Set.PartiallyWellOrderedOn.iff_not_exists_isMinBadSeq
File: Mathlib/Order/WellFoundedSet.lean

tactic: rw [iff_forall_not_isBadSeq, ← not_exists, not_congr]
state_before: ι : Type ?u.146971
α : Type u_1
β : Type ?u.146977
r : α → α → Prop
rk : α → ℕ
s : Set α
⊢ PartiallyWellOrderedOn s r ↔ ¬∃ f, IsBadSeq r s f ∧ ∀ (n : ℕ), IsMinBadSeq r rk s n f

tactic: constructor
state_before: ι : Type ?u.146971
α : Type u_1
β : Type ?u.146977
r : α → α → Prop
rk : α → ℕ
s : Set α
⊢ (∃ x, IsBadSeq r s x) ↔ ∃ f, IsBadSeq r s f ∧ ∀ (n : ℕ), IsMinBadSeq r rk s n f

tactic: apply exists_min_bad_of_exists_bad
state_before: case mp
ι : Type ?u.146971
α : Type u_1
β : Type ?u.146977
r : α → α → Prop
rk : α → ℕ
s : Set α
⊢ (∃ x, IsBadSeq r s x) → ∃ f, IsBadSeq r s f ∧ ∀ (n : ℕ), IsMinBadSeq r rk s n f

tactic: rintro ⟨f, hf1, -⟩
state_before: case mpr
ι : Type ?u.146971
α : Type u_1
β : Type ?u.146977
r : α → α → Prop
rk : α → ℕ
s : Set α
⊢ (∃ f, IsBadSeq r s f ∧ ∀ (n : ℕ), IsMinBadSeq r rk s n f) → ∃ x, IsBadSeq r s x

tactic: exact ⟨f, hf1⟩
state_before: case mpr.intro.intro
ι : Type ?u.146971
α : Type u_1
β : Type ?u.146977
r : α → α → Prop
rk : α → ℕ
s : Set α
f : ℕ → α
hf1 : IsBadSeq r s f
⊢ ∃ x, IsBadSeq r s x
Theorem: basis_le_span'
File: Mathlib/LinearAlgebra/Dimension.lean

tactic: haveI := nontrivial_of_invariantBasisNumber R
state_before: K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.307604
R : Type u
inst✝⁴ : Ring R
inst✝³ : RankCondition R
M : Type v
inst✝² : AddCommGroup M
inst✝¹ : Module R M
ι : Type u_1
b : Basis ι R M
w : Set M
inst✝ : Fintype ↑w
s : span R w = ⊤
⊢ (#ι) ≤ ↑(Fintype.card ↑w)

tactic: haveI := basisFintypeOfFiniteSpans w s b
state_before: K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.307604
R : Type u
inst✝⁴ : Ring R
inst✝³ : RankCondition R
M : Type v
inst✝² : AddCommGroup M
inst✝¹ : Module R M
ι : Type u_1
b : Basis ι R M
w : Set M
inst✝ : Fintype ↑w
s : span R w = ⊤
this : Nontrivial R
⊢ (#ι) ≤ ↑(Fintype.card ↑w)

tactic: rw [Cardinal.mk_fintype ι]
state_before: K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.307604
R : Type u
inst✝⁴ : Ring R
inst✝³ : RankCondition R
M : Type v
inst✝² : AddCommGroup M
inst✝¹ : Module R M
ι : Type u_1
b : Basis ι R M
w : Set M
inst✝ : Fintype ↑w
s : span R w = ⊤
this✝ : Nontrivial R
this : Fintype ι
⊢ (#ι) ≤ ↑(Fintype.card ↑w)

tactic: simp only [Cardinal.natCast_le]
state_before: K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.307604
R : Type u
inst✝⁴ : Ring R
inst✝³ : RankCondition R
M : Type v
inst✝² : AddCommGroup M
inst✝¹ : Module R M
ι : Type u_1
b : Basis ι R M
w : Set M
inst✝ : Fintype ↑w
s : span R w = ⊤
this✝ : Nontrivial R
this : Fintype ι
⊢ ↑(Fintype.card ι) ≤ ↑(Fintype.card ↑w)

tactic: exact Basis.le_span'' b s
state_before: K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.307604
R : Type u
inst✝⁴ : Ring R
inst✝³ : RankCondition R
M : Type v
inst✝² : AddCommGroup M
inst✝¹ : Module R M
ι : Type u_1
b : Basis ι R M
w : Set M
inst✝ : Fintype ↑w
s : span R w = ⊤
this✝ : Nontrivial R
this : Fintype ι
⊢ Fintype.card ι ≤ Fintype.card ↑w
Theorem: Ordinal.mod_self
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: simp only [a0, zero_mod]
state_before: α : Type ?u.260750
β : Type ?u.260753
γ : Type ?u.260756
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a : Ordinal
a0 : a = 0
⊢ a % a = 0

tactic: simp only [mod_def, div_self a0, mul_one, sub_self]
state_before: α : Type ?u.260750
β : Type ?u.260753
γ : Type ?u.260756
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a : Ordinal
a0 : ¬a = 0
⊢ a % a = 0
Theorem: Subsemigroup.prod_eq_top_iff
File: Mathlib/GroupTheory/Subsemigroup/Operations.lean

tactic: simp only [eq_top_iff, le_prod_iff, ← (gc_map_comap _).le_iff_le, ← srange_eq_map, srange_fst,
  srange_snd]
state_before: M : Type u_1
N : Type u_2
P : Type ?u.78061
σ : Type ?u.78064
inst✝⁴ : Mul M
inst✝³ : Mul N
inst✝² : Mul P
S : Subsemigroup M
inst✝¹ : Nonempty M
inst✝ : Nonempty N
s : Subsemigroup M
t : Subsemigroup N
⊢ prod s t = ⊤ ↔ s = ⊤ ∧ t = ⊤
Theorem: Algebra.TensorProduct.comm_tmul
File: Mathlib/RingTheory/TensorProduct.lean

tactic: simp [TensorProduct.comm]
state_before: R : Type u
inst✝⁸ : CommSemiring R
A : Type v₁
inst✝⁷ : Semiring A
inst✝⁶ : Algebra R A
B : Type v₂
inst✝⁵ : Semiring B
inst✝⁴ : Algebra R B
C : Type v₃
inst✝³ : Semiring C
inst✝² : Algebra R C
D : Type v₄
inst✝¹ : Semiring D
inst✝ : Algebra R D
a : A
b : B
⊢ ↑(TensorProduct.comm R A B) (a ⊗ₜ[R] b) = b ⊗ₜ[R] a
Theorem: IsOpenMap.coverPreserving
File: Mathlib/Topology/Sheaves/SheafCondition/Sites.lean

tactic: constructor
state_before: C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
F : TopCat.Presheaf C Y
hf : IsOpenMap ((forget TopCat).map f)
⊢ CoverPreserving (Opens.grothendieckTopology ↑X) (Opens.grothendieckTopology ↑Y) (functor hf)

tactic: rintro U S hU _ ⟨x, hx, rfl⟩
state_before: case cover_preserve
C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
F : TopCat.Presheaf C Y
hf : IsOpenMap ((forget TopCat).map f)
⊢ ∀ {U : Opens ↑X} {S : Sieve U},
    S ∈ GrothendieckTopology.sieves (Opens.grothendieckTopology ↑X) U →
      Sieve.functorPushforward (functor hf) S ∈
        GrothendieckTopology.sieves (Opens.grothendieckTopology ↑Y) ((functor hf).obj U)

tactic: obtain ⟨V, i, hV, hxV⟩ := hU x hx
state_before: case cover_preserve.intro.intro
C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
F : TopCat.Presheaf C Y
hf : IsOpenMap ((forget TopCat).map f)
U : Opens ↑X
S : Sieve U
hU : S ∈ GrothendieckTopology.sieves (Opens.grothendieckTopology ↑X) U
x : (forget TopCat).obj X
hx : x ∈ ↑U
⊢ ∃ U_1 f_1, (Sieve.functorPushforward (functor hf) S).arrows f_1 ∧ (forget TopCat).map f x ∈ U_1

tactic: exact ⟨_, hf.functor.map i, ⟨_, i, 𝟙 _, hV, rfl⟩, Set.mem_image_of_mem f hxV⟩
state_before: case cover_preserve.intro.intro.intro.intro.intro
C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
F : TopCat.Presheaf C Y
hf : IsOpenMap ((forget TopCat).map f)
U : Opens ↑X
S : Sieve U
hU : S ∈ GrothendieckTopology.sieves (Opens.grothendieckTopology ↑X) U
x : (forget TopCat).obj X
hx : x ∈ ↑U
V : Opens ↑X
i : V ⟶ U
hV : S.arrows i
hxV : x ∈ V
⊢ ∃ U_1 f_1, (Sieve.functorPushforward (functor hf) S).arrows f_1 ∧ (forget TopCat).map f x ∈ U_1
Theorem: inducing_sigma_map
File: Mathlib/Topology/Constructions.lean

tactic: simp only [inducing_iff_nhds, Sigma.forall, Sigma.nhds_mk, Sigma.map_mk, ← map_sigma_mk_comap h₁,
  map_inj sigma_mk_injective]
state_before: α : Type u
β : Type v
γ : Type ?u.533113
δ : Type ?u.533116
ε : Type ?u.533119
ζ : Type ?u.533122
ι : Type u_1
κ : Type u_2
σ : ι → Type u_3
τ : κ → Type u_4
inst✝² : (i : ι) → TopologicalSpace (σ i)
inst✝¹ : (k : κ) → TopologicalSpace (τ k)
inst✝ : TopologicalSpace α
f₁ : ι → κ
f₂ : (i : ι) → σ i → τ (f₁ i)
h₁ : Injective f₁
⊢ Inducing (Sigma.map f₁ f₂) ↔ ∀ (i : ι), Inducing (f₂ i)