ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Nat.recDiagAux_zero_right
File: .lake/packages/batteries/Batteries/Data/Nat/Lemmas.lean

Proof steps:
state_before: motive : Nat → Nat → Sort u_1
zero_left : (n : Nat) → motive 0 n
zero_right : (m : Nat) → motive m 0
succ_succ : (m n : Nat) → motive m n → motive (m + 1) (n + 1)
m : Nat
h : autoParam (zero_left 0 = zero_right 0) _auto✝
⊢ Nat.recDiagAux zero_left zero_right succ_succ m 0 = zero_right m
state_after: case zero
motive : Nat → Nat → Sort u_1
zero_left : (n : Nat) → motive 0 n
zero_right : (m : Nat) → motive m 0
succ_succ : (m n : Nat) → motive m n → motive (m + 1) (n + 1)
h : autoParam (zero_left 0 = zero_right 0) _auto✝
⊢ Nat.recDiagAux zero_left zero_right succ_succ 0 0 = zero_right 0

case succ
motive : Nat → Nat → Sort u_1
zero_left : (n : Nat) → motive 0 n
zero_right : (m : Nat) → motive m 0
succ_succ : (m n : Nat) → motive m n → motive (m + 1) (n + 1)
h : autoParam (zero_left 0 = zero_right 0) _auto✝
n✝ : Nat
⊢ Nat.recDiagAux zero_left zero_right succ_succ (n✝ + 1) 0 = zero_right (n✝ + 1)
tactic: cases m
state_before: case zero
motive : Nat → Nat → Sort u_1
zero_left : (n : Nat) → motive 0 n
zero_right : (m : Nat) → motive m 0
succ_succ : (m n : Nat) → motive m n → motive (m + 1) (n + 1)
h : autoParam (zero_left 0 = zero_right 0) _auto✝
⊢ Nat.recDiagAux zero_left zero_right succ_succ 0 0 = zero_right 0

case succ
motive : Nat → Nat → Sort u_1
zero_left : (n : Nat) → motive 0 n
zero_right : (m : Nat) → motive m 0
succ_succ : (m n : Nat) → motive m n → motive (m + 1) (n + 1)
h : autoParam (zero_left 0 = zero_right 0) _auto✝
n✝ : Nat
⊢ Nat.recDiagAux zero_left zero_right succ_succ (n✝ + 1) 0 = zero_right (n✝ + 1)
state_after: case succ
motive : Nat → Nat → Sort u_1
zero_left : (n : Nat) → motive 0 n
zero_right : (m : Nat) → motive m 0
succ_succ : (m n : Nat) → motive m n → motive (m + 1) (n + 1)
h : autoParam (zero_left 0 = zero_right 0) _auto✝
n✝ : Nat
⊢ Nat.recDiagAux zero_left zero_right succ_succ (n✝ + 1) 0 = zero_right (n✝ + 1)
tactic: exact h
state_before: case succ
motive : Nat → Nat → Sort u_1
zero_left : (n : Nat) → motive 0 n
zero_right : (m : Nat) → motive m 0
succ_succ : (m n : Nat) → motive m n → motive (m + 1) (n + 1)
h : autoParam (zero_left 0 = zero_right 0) _auto✝
n✝ : Nat
⊢ Nat.recDiagAux zero_left zero_right succ_succ (n✝ + 1) 0 = zero_right (n✝ + 1)
state_after: no goals
tactic: rfl
Theorem: WeierstrassCurve.Jacobian.map_negDblY
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

Proof steps:
state_before: R : Type u
inst✝² : CommRing R
W' : Jacobian R
F : Type v
inst✝¹ : Field F
W : Jacobian F
S : Type u_1
inst✝ : CommRing S
f : R →+* S
P Q : Fin 3 → R
⊢ negDblY (map W' f) (⇑f ∘ P) = f (W'.negDblY P)
state_after: no goals
tactic: simp [negDblY]
Theorem: coplanar_iff_finrank_le_two
File: Mathlib/LinearAlgebra/AffineSpace/FiniteDimensional.lean

Proof steps:
state_before: k : Type u_1
V : Type u_2
P : Type u_3
ι : Type u_4
inst✝⁴ : DivisionRing k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
s : Set P
inst✝ : FiniteDimensional k ↥(vectorSpan k s)
⊢ Coplanar k s ↔ finrank k ↥(vectorSpan k s) ≤ 2
state_after: k : Type u_1
V : Type u_2
P : Type u_3
ι : Type u_4
inst✝⁴ : DivisionRing k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
s : Set P
inst✝ : FiniteDimensional k ↥(vectorSpan k s)
h : Coplanar k s ↔ Module.rank k ↥(vectorSpan k s) ≤ 2
⊢ Coplanar k s ↔ finrank k ↥(vectorSpan k s) ≤ 2
tactic: have h : Coplanar k s ↔ Module.rank k (vectorSpan k s) ≤ 2 := Iff.rfl
state_before: k : Type u_1
V : Type u_2
P : Type u_3
ι : Type u_4
inst✝⁴ : DivisionRing k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
s : Set P
inst✝ : FiniteDimensional k ↥(vectorSpan k s)
h : Coplanar k s ↔ Module.rank k ↥(vectorSpan k s) ≤ 2
⊢ Coplanar k s ↔ finrank k ↥(vectorSpan k s) ≤ 2
state_after: k : Type u_1
V : Type u_2
P : Type u_3
ι : Type u_4
inst✝⁴ : DivisionRing k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
s : Set P
inst✝ : FiniteDimensional k ↥(vectorSpan k s)
h : Coplanar k s ↔ ↑(finrank k ↥(vectorSpan k s)) ≤ 2
⊢ Coplanar k s ↔ finrank k ↥(vectorSpan k s) ≤ 2
tactic: rw [← finrank_eq_rank] at h
state_before: k : Type u_1
V : Type u_2
P : Type u_3
ι : Type u_4
inst✝⁴ : DivisionRing k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
s : Set P
inst✝ : FiniteDimensional k ↥(vectorSpan k s)
h : Coplanar k s ↔ ↑(finrank k ↥(vectorSpan k s)) ≤ 2
⊢ Coplanar k s ↔ finrank k ↥(vectorSpan k s) ≤ 2
state_after: no goals
tactic: exact mod_cast h
Theorem: HahnSeries.order_pow
File: Mathlib/RingTheory/HahnSeries/Multiplication.lean

Proof steps:
state_before: Γ✝ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝³ : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_5
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
x : HahnSeries Γ R
n : ℕ
⊢ (x ^ n).order = n • x.order
state_after: case zero
Γ✝ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝³ : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_5
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
x : HahnSeries Γ R
⊢ (x ^ 0).order = 0 • x.order

case succ
Γ✝ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝³ : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_5
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
x : HahnSeries Γ R
h : ℕ
IH : (x ^ h).order = h • x.order
⊢ (x ^ (h + 1)).order = (h + 1) • x.order
tactic: induction' n with h IH
state_before: case succ
Γ✝ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝³ : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_5
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
x : HahnSeries Γ R
h : ℕ
IH : (x ^ h).order = h • x.order
⊢ (x ^ (h + 1)).order = (h + 1) • x.order
state_after: case succ.inl
Γ✝ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝³ : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_5
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
h : ℕ
IH : (0 ^ h).order = h • order 0
⊢ (0 ^ (h + 1)).order = (h + 1) • order 0

case succ.inr
Γ✝ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝³ : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_5
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
x : HahnSeries Γ R
h : ℕ
IH : (x ^ h).order = h • x.order
hx : x ≠ 0
⊢ (x ^ (h + 1)).order = (h + 1) • x.order
tactic: rcases eq_or_ne x 0 with (rfl | hx)
state_before: case succ.inr
Γ✝ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝³ : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_5
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
x : HahnSeries Γ R
h : ℕ
IH : (x ^ h).order = h • x.order
hx : x ≠ 0
⊢ (x ^ (h + 1)).order = (h + 1) • x.order
state_after: no goals
tactic: rw [pow_succ, order_mul (pow_ne_zero _ hx) hx, succ_nsmul, IH]
Theorem: multiplicity_normalizedFactorsEquivSpanNormalizedFactors_eq_multiplicity
File: Mathlib/RingTheory/DedekindDomain/Ideal.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁹ : CommRing R
inst✝⁸ : CommRing A
inst✝⁷ : Field K
inst✝⁶ : IsDomain R
inst✝⁵ : IsPrincipalIdealRing R
inst✝⁴ : DecidableEq R
inst✝³ : DecidableEq (Ideal R)
inst✝² : NormalizationMonoid R
inst✝¹ : DecidableRel fun x x_1 => x ∣ x_1
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
r d : R
hr : r ≠ 0
hd : d ∈ normalizedFactors r
⊢ multiplicity d r = multiplicity (↑((normalizedFactorsEquivSpanNormalizedFactors hr) ⟨d, hd⟩)) (span {r})
state_after: no goals
tactic: simp only [normalizedFactorsEquivSpanNormalizedFactors, multiplicity_eq_multiplicity_span,
    Subtype.coe_mk, Equiv.ofBijective_apply]
Theorem: ProbabilityTheory.measure_cdf
File: Mathlib/Probability/Cdf.lean

Proof steps:
state_before: μ : Measure ℝ
inst✝ : IsProbabilityMeasure μ
⊢ (cdf μ).measure = μ
state_after: μ : Measure ℝ
inst✝ : IsProbabilityMeasure μ
a : ℝ
⊢ (cdf μ).measure (Iic a) = μ (Iic a)
tactic: refine Measure.ext_of_Iic (cdf μ).measure μ (fun a ↦ ?_)
state_before: μ : Measure ℝ
inst✝ : IsProbabilityMeasure μ
a : ℝ
⊢ (cdf μ).measure (Iic a) = μ (Iic a)
state_after: no goals
tactic: rw [StieltjesFunction.measure_Iic _ (tendsto_cdf_atBot μ), sub_zero, ofReal_cdf]
Theorem: isProperMap_iff_universally_closed
File: Mathlib/Topology/Maps/Proper/UniversallyClosed.lean

Proof steps:
state_before: X : Type u
Y : Type v
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : X → Y
⊢ IsProperMap f ↔ Continuous f ∧ ∀ (Z : Type u) [inst : TopologicalSpace Z], IsClosedMap (Prod.map f id)
state_after: case mp
X : Type u
Y : Type v
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : X → Y
H : IsProperMap f
⊢ Continuous f ∧ ∀ (Z : Type u) [inst : TopologicalSpace Z], IsClosedMap (Prod.map f id)

case mpr
X : Type u
Y : Type v
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : X → Y
H : Continuous f ∧ ∀ (Z : Type u) [inst : TopologicalSpace Z], IsClosedMap (Prod.map f id)
⊢ IsProperMap f
tactic: constructor <;> intro H
Theorem: MeasureTheory.lintegral_const_mul
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
⊢ ∫⁻ (a : α), r * f a ∂μ = ∫⁻ (a : α), ⨆ n, ↑(const α r * eapprox f n) a ∂μ
state_after: case e_f
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
⊢ (fun a => r * f a) = fun a => ⨆ n, ↑(const α r * eapprox f n) a
tactic: congr
state_before: case e_f
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
⊢ (fun a => r * f a) = fun a => ⨆ n, ↑(const α r * eapprox f n) a
state_after: case e_f.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
a : α
⊢ r * f a = ⨆ n, ↑(const α r * eapprox f n) a
tactic: funext a
state_before: case e_f.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
a : α
⊢ r * f a = ⨆ n, ↑(const α r * eapprox f n) a
state_after: case e_f.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
a : α
⊢ ⨆ i, r * ↑(eapprox f i) a = ⨆ n, ↑(const α r * eapprox f n) a
tactic: rw [← iSup_eapprox_apply f hf, ENNReal.mul_iSup]
state_before: case e_f.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
a : α
⊢ ⨆ i, r * ↑(eapprox f i) a = ⨆ n, ↑(const α r * eapprox f n) a
state_after: no goals
tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
⊢ ∫⁻ (a : α), ⨆ n, ↑(const α r * eapprox f n) a ∂μ = ⨆ n, r * (eapprox f n).lintegral μ
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
⊢ ⨆ n, ∫⁻ (a : α), ↑(const α r * eapprox f n) a ∂μ = ⨆ n, r * (eapprox f n).lintegral μ

case hf
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
⊢ ∀ (n : ℕ), Measurable ↑(const α r * eapprox f n)

case h_mono
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
⊢ Monotone fun n => ↑(const α r * eapprox f n)
tactic: rw [lintegral_iSup]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
⊢ ⨆ n, r * (eapprox f n).lintegral μ = r * ∫⁻ (a : α), f a ∂μ
state_after: no goals
tactic: rw [← ENNReal.mul_iSup, lintegral_eq_iSup_eapprox_lintegral hf]
Theorem: Set.biInter_and'
File: Mathlib/Data/Set/Lattice.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
p : ι' → Prop
q : ι → ι' → Prop
s : (x : ι) → (y : ι') → p y ∧ q x y → Set α
⊢ ⋂ x, ⋂ y, ⋂ (h : p y ∧ q x y), s x y h = ⋂ y, ⋂ (hy : p y), ⋂ x, ⋂ (hx : q x y), s x y ⋯
state_after: no goals
tactic: simp only [iInter_and, @iInter_comm _ ι]
Theorem: Set.mulIndicator_image
File: Mathlib/Algebra/Group/Indicator.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
M : Type u_4
N : Type u_5
inst✝¹ : One M
inst✝ : One N
s✝ t : Set α
f✝ g✝ : α → M
a : α
s : Set α
f : β → M
g : α → β
hg : Injective g
x : α
⊢ (g '' s).mulIndicator f (g x) = s.mulIndicator (f ∘ g) x
state_after: no goals
tactic: rw [← mulIndicator_comp_right, preimage_image_eq _ hg]
Theorem: Finset.truncatedInf_empty
File: Mathlib/Combinatorics/SetFamily/AhlswedeZhang.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝⁵ : SemilatticeInf α
inst✝⁴ : BoundedOrder α
inst✝³ : DecidableRel fun x x_1 => x ≤ x_1
inst✝² : SemilatticeInf β
inst✝¹ : BoundedOrder β
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a✝ a : α
⊢ a ∉ upperClosure ↑∅
state_after: no goals
tactic: simp
Theorem: LinearMap.IsAdjointPair.sub
File: Mathlib/LinearAlgebra/SesquilinearForm.lean

Proof steps:
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
Mₗ₁ : Type u_9
Mₗ₁' : Type u_10
Mₗ₂ : Type u_11
Mₗ₂' : Type u_12
K : Type u_13
K₁ : Type u_14
K₂ : Type u_15
V : Type u_16
V₁ : Type u_17
V₂ : Type u_18
n : Type u_19
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : AddCommGroup M₁
inst✝² : Module R M₁
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
B F : M →ₗ[R] M →ₗ[R] M₂
B' : M₁ →ₗ[R] M₁ →ₗ[R] M₂
f f' : M →ₗ[R] M₁
g g' : M₁ →ₗ[R] M
h : B.IsAdjointPair B' f g
h' : B.IsAdjointPair B' f' g'
x : M
x✝ : M₁
⊢ (B' ((f - f') x)) x✝ = (B x) ((g - g') x✝)
state_after: no goals
tactic: rw [f.sub_apply, g.sub_apply, B'.map_sub₂, (B x).map_sub, h, h']
Theorem: LinearMap.BilinForm.dualSubmodule_span_of_basis
File: Mathlib/LinearAlgebra/BilinearForm/DualLattice.lean

Proof steps:
state_before: R : Type u_4
S : Type u_2
M : Type u_3
inst✝⁸ : CommRing R
inst✝⁷ : Field S
inst✝⁶ : AddCommGroup M
inst✝⁵ : Algebra R S
inst✝⁴ : Module R M
inst✝³ : Module S M
inst✝² : IsScalarTower R S M
B : BilinForm S M
ι : Type u_1
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
hB : B.Nondegenerate
b : Basis ι S M
⊢ B.dualSubmodule (Submodule.span R (Set.range ⇑b)) = Submodule.span R (Set.range ⇑(B.dualBasis hB b))
state_after: case intro
R : Type u_4
S : Type u_2
M : Type u_3
inst✝⁸ : CommRing R
inst✝⁷ : Field S
inst✝⁶ : AddCommGroup M
inst✝⁵ : Algebra R S
inst✝⁴ : Module R M
inst✝³ : Module S M
inst✝² : IsScalarTower R S M
B : BilinForm S M
ι : Type u_1
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
hB : B.Nondegenerate
b : Basis ι S M
val✝ : Fintype ι
⊢ B.dualSubmodule (Submodule.span R (Set.range ⇑b)) = Submodule.span R (Set.range ⇑(B.dualBasis hB b))
tactic: cases nonempty_fintype ι
state_before: case intro
R : Type u_4
S : Type u_2
M : Type u_3
inst✝⁸ : CommRing R
inst✝⁷ : Field S
inst✝⁶ : AddCommGroup M
inst✝⁵ : Algebra R S
inst✝⁴ : Module R M
inst✝³ : Module S M
inst✝² : IsScalarTower R S M
B : BilinForm S M
ι : Type u_1
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
hB : B.Nondegenerate
b : Basis ι S M
val✝ : Fintype ι
⊢ B.dualSubmodule (Submodule.span R (Set.range ⇑b)) = Submodule.span R (Set.range ⇑(B.dualBasis hB b))
state_after: case intro.a
R : Type u_4
S : Type u_2
M : Type u_3
inst✝⁸ : CommRing R
inst✝⁷ : Field S
inst✝⁶ : AddCommGroup M
inst✝⁵ : Algebra R S
inst✝⁴ : Module R M
inst✝³ : Module S M
inst✝² : IsScalarTower R S M
B : BilinForm S M
ι : Type u_1
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
hB : B.Nondegenerate
b : Basis ι S M
val✝ : Fintype ι
⊢ B.dualSubmodule (Submodule.span R (Set.range ⇑b)) ≤ Submodule.span R (Set.range ⇑(B.dualBasis hB b))

case intro.a
R : Type u_4
S : Type u_2
M : Type u_3
inst✝⁸ : CommRing R
inst✝⁷ : Field S
inst✝⁶ : AddCommGroup M
inst✝⁵ : Algebra R S
inst✝⁴ : Module R M
inst✝³ : Module S M
inst✝² : IsScalarTower R S M
B : BilinForm S M
ι : Type u_1
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
hB : B.Nondegenerate
b : Basis ι S M
val✝ : Fintype ι
⊢ Submodule.span R (Set.range ⇑(B.dualBasis hB b)) ≤ B.dualSubmodule (Submodule.span R (Set.range ⇑b))
tactic: apply le_antisymm
Theorem: MeasureTheory.lintegral_const
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
c : ℝ≥0∞
⊢ ∫⁻ (x : α), c ∂μ = c * μ univ
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
c : ℝ≥0∞
⊢ ∫⁻ (x : α), c ∂μ = ∫⁻ (a : α), Function.const α c a ∂μ
tactic: rw [← SimpleFunc.const_lintegral, ← SimpleFunc.lintegral_eq_lintegral, SimpleFunc.coe_const]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
c : ℝ≥0∞
⊢ ∫⁻ (x : α), c ∂μ = ∫⁻ (a : α), Function.const α c a ∂μ
state_after: no goals
tactic: rfl
Theorem: ContinuousMultilinearMap.le_mul_prod_of_le_opNorm_of_le
File: Mathlib/Analysis/NormedSpace/Multilinear/Basic.lean

Proof steps:
state_before: 𝕜 : Type u
ι : Type v
ι' : Type v'
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
G : Type wG
G' : Type wG'
inst✝¹² : Fintype ι
inst✝¹¹ : Fintype ι'
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁷ : (i : ι) → SeminormedAddCommGroup (E₁ i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁵ : (i : ι') → SeminormedAddCommGroup (E' i)
inst✝⁴ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝³ : SeminormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : SeminormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
C : ℝ
b : ι → ℝ
hC : ‖f‖ ≤ C
hm : ∀ (i : ι), ‖m i‖ ≤ b i
⊢ 0 ≤ ∏ i : ι, ‖m i‖
state_after: no goals
tactic: positivity
Theorem: _private.Mathlib.Topology.MetricSpace.GromovHausdorffRealized.0.GromovHausdorff.HD_bound_aux1
File: Mathlib/Topology/MetricSpace/GromovHausdorffRealized.lean

Proof steps:
state_before: X : Type u
Y : Type v
inst✝⁵ : MetricSpace X
inst✝⁴ : CompactSpace X
inst✝³ : Nonempty X
inst✝² : MetricSpace Y
inst✝¹ : CompactSpace Y
inst✝ : Nonempty Y
f✝ : GromovHausdorff.ProdSpaceFun X Y
x y z t : X ⊕ Y
f : GromovHausdorff.Cb X Y
C : ℝ
⊢ BddAbove (range fun x => ⨅ y, f (inl x, inr y) + C)
state_after: case intro
X : Type u
Y : Type v
inst✝⁵ : MetricSpace X
inst✝⁴ : CompactSpace X
inst✝³ : Nonempty X
inst✝² : MetricSpace Y
inst✝¹ : CompactSpace Y
inst✝ : Nonempty Y
f✝ : GromovHausdorff.ProdSpaceFun X Y
x y z t : X ⊕ Y
f : GromovHausdorff.Cb X Y
C Cf : ℝ
hCf : Cf ∈ upperBounds (range ⇑f)
⊢ BddAbove (range fun x => ⨅ y, f (inl x, inr y) + C)
tactic: obtain ⟨Cf, hCf⟩ := f.isBounded_range.bddAbove
state_before: case intro
X : Type u
Y : Type v
inst✝⁵ : MetricSpace X
inst✝⁴ : CompactSpace X
inst✝³ : Nonempty X
inst✝² : MetricSpace Y
inst✝¹ : CompactSpace Y
inst✝ : Nonempty Y
f✝ : GromovHausdorff.ProdSpaceFun X Y
x y z t : X ⊕ Y
f : GromovHausdorff.Cb X Y
C Cf : ℝ
hCf : Cf ∈ upperBounds (range ⇑f)
⊢ BddAbove (range fun x => ⨅ y, f (inl x, inr y) + C)
state_after: case intro
X : Type u
Y : Type v
inst✝⁵ : MetricSpace X
inst✝⁴ : CompactSpace X
inst✝³ : Nonempty X
inst✝² : MetricSpace Y
inst✝¹ : CompactSpace Y
inst✝ : Nonempty Y
f✝ : GromovHausdorff.ProdSpaceFun X Y
x✝ y z t : X ⊕ Y
f : GromovHausdorff.Cb X Y
C Cf : ℝ
hCf : Cf ∈ upperBounds (range ⇑f)
x : X
⊢ ⨅ y, f (inl x, inr y) + C ≤ Cf + C
tactic: refine ⟨Cf + C, forall_mem_range.2 fun x => ?_⟩
state_before: case intro
X : Type u
Y : Type v
inst✝⁵ : MetricSpace X
inst✝⁴ : CompactSpace X
inst✝³ : Nonempty X
inst✝² : MetricSpace Y
inst✝¹ : CompactSpace Y
inst✝ : Nonempty Y
f✝ : GromovHausdorff.ProdSpaceFun X Y
x✝ y z t : X ⊕ Y
f : GromovHausdorff.Cb X Y
C Cf : ℝ
hCf : Cf ∈ upperBounds (range ⇑f)
x : X
⊢ ⨅ y, f (inl x, inr y) + C ≤ Cf + C
state_after: no goals
tactic: calc
    ⨅ y, f (inl x, inr y) + C ≤ f (inl x, inr default) + C := ciInf_le (HD_below_aux1 C) default
    _ ≤ Cf + C := add_le_add ((fun x => hCf (mem_range_self x)) _) le_rfl
Theorem: le_min
File: Mathlib/Init/Order/LinearOrder.lean

Proof steps:
state_before: α : Type u
inst✝ : LinearOrder α
a b c : α
h₁ : c ≤ a
h₂ : c ≤ b
⊢ c ≤ min a b
state_after: no goals
tactic: if h : a ≤ b
  then simp [min_def, if_pos h]; exact h₁
  else simp [min_def, if_neg h]; exact h₂
Theorem: Submodule.basisOfPid_bot
File: Mathlib/LinearAlgebra/FreeModule/PID.lean

Proof steps:
state_before: ι✝ : Type u_1
R : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : IsDomain R
inst✝³ : IsPrincipalIdealRing R
M : Type u_3
inst✝² : AddCommGroup M
inst✝¹ : Module R M
b✝ : ι✝ → M
ι : Type u_4
inst✝ : Finite ι
b : Basis ι R M
⊢ basisOfPid b ⊥ = ⟨0, Basis.empty ↥⊥⟩
state_after: case mk
ι✝ : Type u_1
R : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : IsDomain R
inst✝³ : IsPrincipalIdealRing R
M : Type u_3
inst✝² : AddCommGroup M
inst✝¹ : Module R M
b✝ : ι✝ → M
ι : Type u_4
inst✝ : Finite ι
b : Basis ι R M
n : ℕ
b' : Basis (Fin n) R ↥⊥
⊢ ⟨n, b'⟩ = ⟨0, Basis.empty ↥⊥⟩
tactic: obtain ⟨n, b'⟩ := Submodule.basisOfPid b ⊥
state_before: case mk
ι✝ : Type u_1
R : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : IsDomain R
inst✝³ : IsPrincipalIdealRing R
M : Type u_3
inst✝² : AddCommGroup M
inst✝¹ : Module R M
b✝ : ι✝ → M
ι : Type u_4
inst✝ : Finite ι
b : Basis ι R M
n : ℕ
b' : Basis (Fin n) R ↥⊥
⊢ ⟨n, b'⟩ = ⟨0, Basis.empty ↥⊥⟩
state_after: case mk
ι✝ : Type u_1
R : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : IsDomain R
inst✝³ : IsPrincipalIdealRing R
M : Type u_3
inst✝² : AddCommGroup M
inst✝¹ : Module R M
b✝ : ι✝ → M
ι : Type u_4
inst✝ : Finite ι
b : Basis ι R M
n : ℕ
b' : Basis (Fin n) R ↥⊥
e : Fin n ≃ Fin 0 := b'.indexEquiv (Basis.empty ↥⊥)
⊢ ⟨n, b'⟩ = ⟨0, Basis.empty ↥⊥⟩
tactic: let e : Fin n ≃ Fin 0 := b'.indexEquiv (Basis.empty _ : Basis (Fin 0) R (⊥ : Submodule R M))
state_before: case mk
ι✝ : Type u_1
R : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : IsDomain R
inst✝³ : IsPrincipalIdealRing R
M : Type u_3
inst✝² : AddCommGroup M
inst✝¹ : Module R M
b✝ : ι✝ → M
ι : Type u_4
inst✝ : Finite ι
b : Basis ι R M
n : ℕ
b' : Basis (Fin n) R ↥⊥
e : Fin n ≃ Fin 0 := b'.indexEquiv (Basis.empty ↥⊥)
⊢ ⟨n, b'⟩ = ⟨0, Basis.empty ↥⊥⟩
state_after: case mk
ι✝ : Type u_1
R : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : IsDomain R
inst✝³ : IsPrincipalIdealRing R
M : Type u_3
inst✝² : AddCommGroup M
inst✝¹ : Module R M
b✝ : ι✝ → M
ι : Type u_4
inst✝ : Finite ι
b : Basis ι R M
b' : Basis (Fin 0) R ↥⊥
e : Fin 0 ≃ Fin 0 := b'.indexEquiv (Basis.empty ↥⊥)
⊢ ⟨0, b'⟩ = ⟨0, Basis.empty ↥⊥⟩
tactic: obtain rfl : n = 0 := by simpa using Fintype.card_eq.mpr ⟨e⟩
state_before: case mk
ι✝ : Type u_1
R : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : IsDomain R
inst✝³ : IsPrincipalIdealRing R
M : Type u_3
inst✝² : AddCommGroup M
inst✝¹ : Module R M
b✝ : ι✝ → M
ι : Type u_4
inst✝ : Finite ι
b : Basis ι R M
b' : Basis (Fin 0) R ↥⊥
e : Fin 0 ≃ Fin 0 := b'.indexEquiv (Basis.empty ↥⊥)
⊢ ⟨0, b'⟩ = ⟨0, Basis.empty ↥⊥⟩
state_after: no goals
tactic: exact Sigma.eq rfl (Basis.eq_of_apply_eq <| finZeroElim)