1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Stream'.take_succ'
File: Mathlib/Data/Stream/Init.lean

tactic: rw [take_succ, take_succ' n, ← List.cons_append, ← take_succ, get_tail]
state_before: α : Type u
β : Type v
δ : Type w
s : Stream' α
n : ℕ
⊢ take (n + 1 + 1) s = take (n + 1) s ++ [s.get (n + 1)]
state_after: no goals
Theorem: Real.one_le_toNNReal
File: Mathlib/Data/NNReal/Basic.lean

tactic: simpa using toNNReal_le_toNNReal_iff_of_pos one_pos
state_before: r : ℝ
⊢ 1 ≤ r.toNNReal ↔ 1 ≤ r
state_after: no goals
Theorem: FirstOrder.Language.Theory.exists_model_card_eq
File: Mathlib/ModelTheory/Satisfiability.lean

tactic: cases h with
| intro M MI =>
  haveI := MI
  obtain ⟨N, hN, rfl⟩ := exists_elementarilyEquivalent_card_eq L M κ h1 h2
  haveI : Nonempty N := hN.nonempty
  exact ⟨hN.theory_model.bundled, rfl⟩
state_before: L : Language
T : L.Theory
α : Type w
n : ℕ
h : ∃ M, Infinite ↑M
κ : Cardinal.{w}
h1 : ℵ₀ ≤ κ
h2 : lift.{w, max u v} L.card ≤ lift.{max u v, w} κ
⊢ ∃ N, #↑N = κ
state_after: no goals

tactic: haveI := MI
state_before: case intro
L : Language
T : L.Theory
α : Type w
n : ℕ
κ : Cardinal.{w}
h1 : ℵ₀ ≤ κ
h2 : lift.{w, max u v} L.card ≤ lift.{max u v, w} κ
M : T.ModelType
MI : Infinite ↑M
⊢ ∃ N, #↑N = κ
state_after: case intro
L : Language
T : L.Theory
α : Type w
n : ℕ
κ : Cardinal.{w}
h1 : ℵ₀ ≤ κ
h2 : lift.{w, max u v} L.card ≤ lift.{max u v, w} κ
M : T.ModelType
MI this : Infinite ↑M
⊢ ∃ N, #↑N = κ

tactic: obtain ⟨N, hN, rfl⟩ := exists_elementarilyEquivalent_card_eq L M κ h1 h2
state_before: case intro
L : Language
T : L.Theory
α : Type w
n : ℕ
κ : Cardinal.{w}
h1 : ℵ₀ ≤ κ
h2 : lift.{w, max u v} L.card ≤ lift.{max u v, w} κ
M : T.ModelType
MI this : Infinite ↑M
⊢ ∃ N, #↑N = κ
state_after: case intro.intro.intro
L : Language
T : L.Theory
α : Type w
n : ℕ
M : T.ModelType
MI this : Infinite ↑M
N : Bundled L.Structure
hN : ↑M ≅[L] ↑N
h1 : ℵ₀ ≤ #↑N
h2 : lift.{w, max u v} L.card ≤ lift.{max u v, w} #↑N
⊢ ∃ N_1, #↑N_1 = #↑N

tactic: haveI : Nonempty N := hN.nonempty
state_before: case intro.intro.intro
L : Language
T : L.Theory
α : Type w
n : ℕ
M : T.ModelType
MI this : Infinite ↑M
N : Bundled L.Structure
hN : ↑M ≅[L] ↑N
h1 : ℵ₀ ≤ #↑N
h2 : lift.{w, max u v} L.card ≤ lift.{max u v, w} #↑N
⊢ ∃ N_1, #↑N_1 = #↑N
state_after: case intro.intro.intro
L : Language
T : L.Theory
α : Type w
n : ℕ
M : T.ModelType
MI this✝ : Infinite ↑M
N : Bundled L.Structure
hN : ↑M ≅[L] ↑N
h1 : ℵ₀ ≤ #↑N
h2 : lift.{w, max u v} L.card ≤ lift.{max u v, w} #↑N
this : Nonempty ↑N
⊢ ∃ N_1, #↑N_1 = #↑N

tactic: exact ⟨hN.theory_model.bundled, rfl⟩
state_before: case intro.intro.intro
L : Language
T : L.Theory
α : Type w
n : ℕ
M : T.ModelType
MI this✝ : Infinite ↑M
N : Bundled L.Structure
hN : ↑M ≅[L] ↑N
h1 : ℵ₀ ≤ #↑N
h2 : lift.{w, max u v} L.card ≤ lift.{max u v, w} #↑N
this : Nonempty ↑N
⊢ ∃ N_1, #↑N_1 = #↑N
state_after: no goals
Theorem: Affine.Simplex.face_eq_mkOfPoint
File: Mathlib/LinearAlgebra/AffineSpace/Independent.lean

tactic: ext
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
n : ℕ
s : Simplex k P n
i : Fin (n + 1)
⊢ s.face ⋯ = mkOfPoint k (s.points i)
state_after: case h
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
n : ℕ
s : Simplex k P n
i : Fin (n + 1)
i✝ : Fin (0 + 1)
⊢ (s.face ⋯).points i✝ = (mkOfPoint k (s.points i)).points i✝

tactic: simp only [Affine.Simplex.mkOfPoint_points, Affine.Simplex.face_points]
state_before: case h
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
n : ℕ
s : Simplex k P n
i : Fin (n + 1)
i✝ : Fin (0 + 1)
⊢ (s.face ⋯).points i✝ = (mkOfPoint k (s.points i)).points i✝
state_after: case h
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
n : ℕ
s : Simplex k P n
i : Fin (n + 1)
i✝ : Fin (0 + 1)
⊢ s.points (({i}.orderEmbOfFin ⋯) i✝) = s.points i

tactic: rw [Finset.orderEmbOfFin_singleton]
state_before: case h
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
n : ℕ
s : Simplex k P n
i : Fin (n + 1)
i✝ : Fin (0 + 1)
⊢ s.points (({i}.orderEmbOfFin ⋯) i✝) = s.points i
state_after: no goals
Theorem: MeasureTheory.left_measure_le_of_levyProkhorovEDist_lt
File: Mathlib/MeasureTheory/Measure/LevyProkhorovMetric.lean

tactic: obtain ⟨c', ⟨hc', lt_c⟩⟩ := sInf_lt_iff.mp h
state_before: ι : Type u_1
Ω : Type u_2
inst✝¹ : MeasurableSpace Ω
inst✝ : PseudoEMetricSpace Ω
μ ν : Measure Ω
c : ℝ≥0∞
h : levyProkhorovEDist μ ν < c
B : Set Ω
B_mble : MeasurableSet B
⊢ μ B ≤ ν (thickening c.toReal B) + c
state_after: case intro.intro
ι : Type u_1
Ω : Type u_2
inst✝¹ : MeasurableSpace Ω
inst✝ : PseudoEMetricSpace Ω
μ ν : Measure Ω
c : ℝ≥0∞
h : levyProkhorovEDist μ ν < c
B : Set Ω
B_mble : MeasurableSet B
c' : ℝ≥0∞
hc' :
  c' ∈ {ε | ∀ (B : Set Ω), MeasurableSet B → μ B ≤ ν (thickening ε.toReal B) + ε ∧ ν B ≤ μ (thickening ε.toReal B) + ε}
lt_c : c' < c
⊢ μ B ≤ ν (thickening c.toReal B) + c

tactic: exact meas_le_of_le_of_forall_le_meas_thickening_add μ ν lt_c.le (hc' B B_mble).1
state_before: case intro.intro
ι : Type u_1
Ω : Type u_2
inst✝¹ : MeasurableSpace Ω
inst✝ : PseudoEMetricSpace Ω
μ ν : Measure Ω
c : ℝ≥0∞
h : levyProkhorovEDist μ ν < c
B : Set Ω
B_mble : MeasurableSet B
c' : ℝ≥0∞
hc' :
  c' ∈ {ε | ∀ (B : Set Ω), MeasurableSet B → μ B ≤ ν (thickening ε.toReal B) + ε ∧ ν B ≤ μ (thickening ε.toReal B) + ε}
lt_c : c' < c
⊢ μ B ≤ ν (thickening c.toReal B) + c
state_after: no goals
Theorem: SimpleGraph.Subgraph.isPerfectMatching_iff_forall_degree
File: Mathlib/Combinatorics/SimpleGraph/Matching.lean

tactic: simp [degree_eq_one_iff_unique_adj, isPerfectMatching_iff]
state_before: V : Type u
G : SimpleGraph V
M✝ M : G.Subgraph
inst✝ : (v : V) → Fintype ↑(M.neighborSet v)
⊢ M.IsPerfectMatching ↔ ∀ (v : V), M.degree v = 1
state_after: no goals
Theorem: Finset.sup_sigma
File: Mathlib/Data/Finset/Sigma.lean

tactic: simp only [le_antisymm_iff, Finset.sup_le_iff, mem_sigma, and_imp, Sigma.forall]
state_before: ι : Type u_1
α : ι → Type u_2
β : Type u_3
s s₁ s₂ : Finset ι
t t₁ t₂ : (i : ι) → Finset (α i)
f : (i : ι) × α i → β
inst✝¹ : SemilatticeSup β
inst✝ : OrderBot β
⊢ (s.sigma t).sup f = s.sup fun i => (t i).sup fun b => f ⟨i, b⟩
state_after: ι : Type u_1
α : ι → Type u_2
β : Type u_3
s s₁ s₂ : Finset ι
t t₁ t₂ : (i : ι) → Finset (α i)
f : (i : ι) × α i → β
inst✝¹ : SemilatticeSup β
inst✝ : OrderBot β
⊢ (∀ (a : ι) (b : α a), a ∈ s → b ∈ t a → f ⟨a, b⟩ ≤ s.sup fun i => (t i).sup fun b => f ⟨i, b⟩) ∧
    ∀ b ∈ s, ∀ b_1 ∈ t b, f ⟨b, b_1⟩ ≤ (s.sigma t).sup f

tactic: exact
  ⟨fun i a hi ha => (le_sup hi).trans' <| le_sup (f := fun a => f ⟨i, a⟩) ha, fun i hi a ha =>
    le_sup <| mem_sigma.2 ⟨hi, ha⟩⟩
state_before: ι : Type u_1
α : ι → Type u_2
β : Type u_3
s s₁ s₂ : Finset ι
t t₁ t₂ : (i : ι) → Finset (α i)
f : (i : ι) × α i → β
inst✝¹ : SemilatticeSup β
inst✝ : OrderBot β
⊢ (∀ (a : ι) (b : α a), a ∈ s → b ∈ t a → f ⟨a, b⟩ ≤ s.sup fun i => (t i).sup fun b => f ⟨i, b⟩) ∧
    ∀ b ∈ s, ∀ b_1 ∈ t b, f ⟨b, b_1⟩ ≤ (s.sigma t).sup f
state_after: no goals
Theorem: Set.PairwiseDisjoint.isPartition_of_exists_of_ne_empty
File: Mathlib/Data/Setoid/Partition.lean

tactic: refine ⟨h₃, fun a ↦ exists_unique_of_exists_of_unique (h₂ a) ?_⟩
state_before: α✝ : Type u_1
α : Type u_2
s : Set (Set α)
h₁ : s.PairwiseDisjoint id
h₂ : ∀ (a : α), ∃ x ∈ s, a ∈ x
h₃ : ∅ ∉ s
⊢ IsPartition s
state_after: α✝ : Type u_1
α : Type u_2
s : Set (Set α)
h₁ : s.PairwiseDisjoint id
h₂ : ∀ (a : α), ∃ x ∈ s, a ∈ x
h₃ : ∅ ∉ s
a : α
⊢ ∀ (y₁ y₂ : Set α), y₁ ∈ s ∧ a ∈ y₁ → y₂ ∈ s ∧ a ∈ y₂ → y₁ = y₂

tactic: intro b₁ b₂ hb₁ hb₂
state_before: α✝ : Type u_1
α : Type u_2
s : Set (Set α)
h₁ : s.PairwiseDisjoint id
h₂ : ∀ (a : α), ∃ x ∈ s, a ∈ x
h₃ : ∅ ∉ s
a : α
⊢ ∀ (y₁ y₂ : Set α), y₁ ∈ s ∧ a ∈ y₁ → y₂ ∈ s ∧ a ∈ y₂ → y₁ = y₂
state_after: α✝ : Type u_1
α : Type u_2
s : Set (Set α)
h₁ : s.PairwiseDisjoint id
h₂ : ∀ (a : α), ∃ x ∈ s, a ∈ x
h₃ : ∅ ∉ s
a : α
b₁ b₂ : Set α
hb₁ : b₁ ∈ s ∧ a ∈ b₁
hb₂ : b₂ ∈ s ∧ a ∈ b₂
⊢ b₁ = b₂

tactic: apply h₁.elim hb₁.1 hb₂.1
state_before: α✝ : Type u_1
α : Type u_2
s : Set (Set α)
h₁ : s.PairwiseDisjoint id
h₂ : ∀ (a : α), ∃ x ∈ s, a ∈ x
h₃ : ∅ ∉ s
a : α
b₁ b₂ : Set α
hb₁ : b₁ ∈ s ∧ a ∈ b₁
hb₂ : b₂ ∈ s ∧ a ∈ b₂
⊢ b₁ = b₂
state_after: α✝ : Type u_1
α : Type u_2
s : Set (Set α)
h₁ : s.PairwiseDisjoint id
h₂ : ∀ (a : α), ∃ x ∈ s, a ∈ x
h₃ : ∅ ∉ s
a : α
b₁ b₂ : Set α
hb₁ : b₁ ∈ s ∧ a ∈ b₁
hb₂ : b₂ ∈ s ∧ a ∈ b₂
⊢ ¬Disjoint (id b₁) (id b₂)

tactic: simp only [Set.not_disjoint_iff]
state_before: α✝ : Type u_1
α : Type u_2
s : Set (Set α)
h₁ : s.PairwiseDisjoint id
h₂ : ∀ (a : α), ∃ x ∈ s, a ∈ x
h₃ : ∅ ∉ s
a : α
b₁ b₂ : Set α
hb₁ : b₁ ∈ s ∧ a ∈ b₁
hb₂ : b₂ ∈ s ∧ a ∈ b₂
⊢ ¬Disjoint (id b₁) (id b₂)
state_after: α✝ : Type u_1
α : Type u_2
s : Set (Set α)
h₁ : s.PairwiseDisjoint id
h₂ : ∀ (a : α), ∃ x ∈ s, a ∈ x
h₃ : ∅ ∉ s
a : α
b₁ b₂ : Set α
hb₁ : b₁ ∈ s ∧ a ∈ b₁
hb₂ : b₂ ∈ s ∧ a ∈ b₂
⊢ ∃ x ∈ id b₁, x ∈ id b₂

tactic: exact ⟨a, hb₁.2, hb₂.2⟩
state_before: α✝ : Type u_1
α : Type u_2
s : Set (Set α)
h₁ : s.PairwiseDisjoint id
h₂ : ∀ (a : α), ∃ x ∈ s, a ∈ x
h₃ : ∅ ∉ s
a : α
b₁ b₂ : Set α
hb₁ : b₁ ∈ s ∧ a ∈ b₁
hb₂ : b₂ ∈ s ∧ a ∈ b₂
⊢ ∃ x ∈ id b₁, x ∈ id b₂
state_after: no goals
Theorem: InnerProductGeometry.angle_add_le_pi_div_two_of_inner_eq_zero
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/RightAngle.lean

tactic: rw [angle_add_eq_arccos_of_inner_eq_zero h, Real.arccos_le_pi_div_two]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ⟪x, y⟫_ℝ = 0
⊢ angle x (x + y) ≤ π / 2
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ⟪x, y⟫_ℝ = 0
⊢ 0 ≤ ‖x‖ / ‖x + y‖

tactic: exact div_nonneg (norm_nonneg _) (norm_nonneg _)
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ⟪x, y⟫_ℝ = 0
⊢ 0 ≤ ‖x‖ / ‖x + y‖
state_after: no goals
Theorem: ContinuousMap.Homotopy.end_path
File: Mathlib/AlgebraicTopology/FundamentalGroupoid/InducedMaps.lean

tactic: convert hfg 1 <;> simp only [Path.target]
state_before: X₁ X₂ Y : TopCat
f : C(↑X₁, ↑Y)
g : C(↑X₂, ↑Y)
x₀ x₁ : ↑X₁
x₂ x₃ : ↑X₂
p : Path x₀ x₁
q : Path x₂ x₃
hfg : ∀ (t : ↑I), f (p t) = g (q t)
⊢ f x₁ = g x₃
state_after: no goals
Theorem: Finset.image_add_left_Ioo
File: Mathlib/Algebra/Order/Interval/Finset.lean

tactic: rw [← map_add_left_Ioo, map_eq_image, addLeftEmbedding, Embedding.coeFn_mk]
state_before: ι : Type u_1
α : Type u_2
inst✝³ : OrderedCancelAddCommMonoid α
inst✝² : ExistsAddOfLE α
inst✝¹ : LocallyFiniteOrder α
inst✝ : DecidableEq α
a b c : α
⊢ image (fun x => c + x) (Ioo a b) = Ioo (c + a) (c + b)
state_after: no goals
Theorem: PartENat.natCast_get
File: Mathlib/Data/Nat/PartENat.lean

tactic: exact Part.ext' (iff_of_true trivial h) fun _ _ => rfl
state_before: x : PartENat
h : x.Dom
⊢ ↑(x.get h) = x
state_after: no goals
Theorem: Ideal.absNorm_span_insert
File: Mathlib/RingTheory/Ideal/Norm.lean

tactic: rw [absNorm_span_singleton]
state_before: S : Type u_1
inst✝⁵ : CommRing S
inst✝⁴ : IsDomain S
inst✝³ : Nontrivial S
inst✝² : IsDedekindDomain S
inst✝¹ : Module.Free ℤ S
inst✝ : Module.Finite ℤ S
r : S
s : Set S
⊢ absNorm (span {r}) ∣ ((Algebra.norm ℤ) r).natAbs
state_after: no goals
Theorem: MeasureTheory.IsFundamentalDomain.quotientMeasureEqMeasurePreimage
File: Mathlib/MeasureTheory/Group/FundamentalDomain.lean

tactic: simpa [h] using fund_dom_s.quotientMeasureEqMeasurePreimage_quotientMeasure
state_before: G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Group G
inst✝⁵ : MulAction G α
inst✝⁴ : MeasurableSpace α
ν : Measure α
inst✝³ : Countable G
inst✝² : MeasurableSpace G
inst✝¹ : SMulInvariantMeasure G α ν
inst✝ : MeasurableSMul G α
μ : Measure (Quotient α_mod_G)
s : Set α
fund_dom_s : IsFundamentalDomain G s ν
h : μ = Measure.map (Quotient.mk α_mod_G) (ν.restrict s)
⊢ QuotientMeasureEqMeasurePreimage ν μ
state_after: no goals
Theorem: PNat.pos_of_div_pos
File: Mathlib/Data/PNat/Basic.lean

tactic: apply pos_iff_ne_zero.2
state_before: n : ℕ+
a : ℕ
h : a ∣ ↑n
⊢ 0 < a
state_after: n : ℕ+
a : ℕ
h : a ∣ ↑n
⊢ a ≠ 0

tactic: intro hzero
state_before: n : ℕ+
a : ℕ
h : a ∣ ↑n
⊢ a ≠ 0
state_after: n : ℕ+
a : ℕ
h : a ∣ ↑n
hzero : a = 0
⊢ False

tactic: rw [hzero] at h
state_before: n : ℕ+
a : ℕ
h : a ∣ ↑n
hzero : a = 0
⊢ False
state_after: n : ℕ+
a : ℕ
h : 0 ∣ ↑n
hzero : a = 0
⊢ False

tactic: exact PNat.ne_zero n (eq_zero_of_zero_dvd h)
state_before: n : ℕ+
a : ℕ
h : 0 ∣ ↑n
hzero : a = 0
⊢ False
state_after: no goals
Theorem: quasispectrum.mem_of_not_quasiregular
File: Mathlib/Algebra/Algebra/Quasispectrum.lean

tactic: simpa using hr
state_before: R : Type u_1
A : Type u_2
inst✝⁴ : CommSemiring R
inst✝³ : NonUnitalRing A
inst✝² : Module R A
inst✝¹ : IsScalarTower R A A
inst✝ : SMulCommClass R A A
a : A
r : Rˣ
hr : ¬IsQuasiregular (-(r⁻¹ • a))
x✝ : IsUnit ↑r
⊢ ¬IsQuasiregular (-(x✝.unit⁻¹ • a))
state_after: no goals
Theorem: jacobiTheta₂_add_left'
File: Mathlib/NumberTheory/ModularForms/JacobiTheta/TwoVariable.lean

tactic: conv_rhs => erw [← tsum_mul_left, ← (Equiv.addRight 1).tsum_eq]
state_before: z τ : ℂ
⊢ jacobiTheta₂ (z + τ) τ = cexp (-↑π * I * (τ + 2 * z)) * jacobiTheta₂ z τ
state_after: z τ : ℂ
⊢ jacobiTheta₂ (z + τ) τ = ∑' (c : ℤ), cexp (-↑π * I * (τ + 2 * z)) * jacobiTheta₂_term ((Equiv.addRight 1) c) z τ

tactic: refine tsum_congr (fun n ↦ ?_)
state_before: z τ : ℂ
⊢ jacobiTheta₂ (z + τ) τ = ∑' (c : ℤ), cexp (-↑π * I * (τ + 2 * z)) * jacobiTheta₂_term ((Equiv.addRight 1) c) z τ
state_after: z τ : ℂ
n : ℤ
⊢ jacobiTheta₂_term n (z + τ) τ = cexp (-↑π * I * (τ + 2 * z)) * jacobiTheta₂_term ((Equiv.addRight 1) n) z τ

tactic: simp_rw [jacobiTheta₂_term, ← Complex.exp_add, Equiv.coe_addRight, Int.cast_add]
state_before: z τ : ℂ
n : ℤ
⊢ jacobiTheta₂_term n (z + τ) τ = cexp (-↑π * I * (τ + 2 * z)) * jacobiTheta₂_term ((Equiv.addRight 1) n) z τ
state_after: z τ : ℂ
n : ℤ
⊢ cexp (2 * ↑π * I * ↑n * (z + τ) + ↑π * I * ↑n ^ 2 * τ) =
    cexp (-↑π * I * (τ + 2 * z) + (2 * ↑π * I * (↑n + ↑1) * z + ↑π * I * (↑n + ↑1) ^ 2 * τ))

tactic: ring_nf
state_before: z τ : ℂ
n : ℤ
⊢ cexp (2 * ↑π * I * ↑n * (z + τ) + ↑π * I * ↑n ^ 2 * τ) =
    cexp (-↑π * I * (τ + 2 * z) + (2 * ↑π * I * (↑n + ↑1) * z + ↑π * I * (↑n + ↑1) ^ 2 * τ))
state_after: no goals
Theorem: Set.image_subset_range
File: Mathlib/Data/Set/Image.lean

tactic: rw [← image_univ]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : ι → α
s✝ t : Set α
f : α → β
s : Set α
⊢ f '' s ⊆ range f
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : ι → α
s✝ t : Set α
f : α → β
s : Set α
⊢ f '' s ⊆ f '' univ

tactic: exact image_subset _ (subset_univ _)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : ι → α
s✝ t : Set α
f : α → β
s : Set α
⊢ f '' s ⊆ f '' univ
state_after: no goals
Theorem: IntermediateField.induction_on_adjoin_fg
File: Mathlib/FieldTheory/Adjoin.lean

tactic: obtain ⟨S, rfl⟩ := hK
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
P : IntermediateField F E → Prop
base : P ⊥
ih : ∀ (K : IntermediateField F E) (x : E), P K → P (restrictScalars F (↥K)⟮x⟯)
K : IntermediateField F E
hK : K.FG
⊢ P K
state_after: case intro
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
P : IntermediateField F E → Prop
base : P ⊥
ih : ∀ (K : IntermediateField F E) (x : E), P K → P (restrictScalars F (↥K)⟮x⟯)
S : Finset E
⊢ P (adjoin F ↑S)

tactic: exact induction_on_adjoin_finset S P base fun K x _ hK => ih K x hK
state_before: case intro
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
P : IntermediateField F E → Prop
base : P ⊥
ih : ∀ (K : IntermediateField F E) (x : E), P K → P (restrictScalars F (↥K)⟮x⟯)
S : Finset E
⊢ P (adjoin F ↑S)
state_after: no goals
Theorem: Set.image2_assoc
File: Mathlib/Data/Set/NAry.lean

tactic: simp only [image2_subset_iff, forall_image2_iff, h_assoc]
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
f✝ f'✝ : α → β → γ
g✝ g'✝ : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
f : δ → γ → ε
g : α → β → δ
f' : α → ε' → ε
g' : β → γ → ε'
h_assoc : ∀ (a : α) (b : β) (c : γ), f (g a b) c = f' a (g' b c)
x✝ : Set ε
⊢ image2 f (image2 g s t) u ⊆ x✝ ↔ image2 f' s (image2 g' t u) ⊆ x✝
state_after: no goals
Theorem: Finset.inv_smul_finset_distrib₀
File: Mathlib/Data/Finset/Pointwise.lean

tactic: obtain rfl | ha := eq_or_ne a 0
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : DecidableEq β
inst✝² : GroupWithZero α
inst✝¹ : MulAction α β
s✝ t : Finset β
a✝ : α
b : β
inst✝ : DecidableEq α
a : α
s : Finset α
⊢ (a • s)⁻¹ = op a⁻¹ • s⁻¹
state_after: case inl
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : DecidableEq β
inst✝² : GroupWithZero α
inst✝¹ : MulAction α β
s✝ t : Finset β
a : α
b : β
inst✝ : DecidableEq α
s : Finset α
⊢ (0 • s)⁻¹ = op 0⁻¹ • s⁻¹

case inr
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : DecidableEq β
inst✝² : GroupWithZero α
inst✝¹ : MulAction α β
s✝ t : Finset β
a✝ : α
b : β
inst✝ : DecidableEq α
a : α
s : Finset α
ha : a ≠ 0
⊢ (a • s)⁻¹ = op a⁻¹ • s⁻¹

tactic: obtain rfl | hs := s.eq_empty_or_nonempty <;> simp [*]
state_before: case inl
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : DecidableEq β
inst✝² : GroupWithZero α
inst✝¹ : MulAction α β
s✝ t : Finset β
a : α
b : β
inst✝ : DecidableEq α
s : Finset α
⊢ (0 • s)⁻¹ = op 0⁻¹ • s⁻¹
state_after: no goals

tactic: ext
state_before: case inr
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : DecidableEq β
inst✝² : GroupWithZero α
inst✝¹ : MulAction α β
s✝ t : Finset β
a✝ : α
b : β
inst✝ : DecidableEq α
a : α
s : Finset α
ha : a ≠ 0
⊢ (a • s)⁻¹ = op a⁻¹ • s⁻¹
state_after: case inr.a
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : DecidableEq β
inst✝² : GroupWithZero α
inst✝¹ : MulAction α β
s✝ t : Finset β
a✝¹ : α
b : β
inst✝ : DecidableEq α
a : α
s : Finset α
ha : a ≠ 0
a✝ : α
⊢ a✝ ∈ (a • s)⁻¹ ↔ a✝ ∈ op a⁻¹ • s⁻¹

tactic: simp [← inv_smul_mem_iff₀, *]
state_before: case inr.a
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : DecidableEq β
inst✝² : GroupWithZero α
inst✝¹ : MulAction α β
s✝ t : Finset β
a✝¹ : α
b : β
inst✝ : DecidableEq α
a : α
s : Finset α
ha : a ≠ 0
a✝ : α
⊢ a✝ ∈ (a • s)⁻¹ ↔ a✝ ∈ op a⁻¹ • s⁻¹
state_after: no goals
Theorem: Orientation.inner_rightAngleRotationAux₁_left
File: Mathlib/Analysis/InnerProductSpace/TwoDim.lean

tactic: simp only [rightAngleRotationAux₁, LinearEquiv.trans_symm, LinearIsometryEquiv.toLinearEquiv_symm,
  LinearMap.coe_comp, LinearEquiv.coe_coe, Function.comp_apply, LinearEquiv.trans_apply,
  LinearIsometryEquiv.coe_toLinearEquiv]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
⊢ ⟪o.rightAngleRotationAux₁ x, y⟫_ℝ = (o.areaForm x) y
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
⊢ ⟪(InnerProductSpace.toDual ℝ E).symm (LinearMap.toContinuousLinearMap.symm.symm (o.areaForm x)), y⟫_ℝ =
    (o.areaForm x) y

tactic: rw [InnerProductSpace.toDual_symm_apply]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
⊢ ⟪(InnerProductSpace.toDual ℝ E).symm (LinearMap.toContinuousLinearMap.symm.symm (o.areaForm x)), y⟫_ℝ =
    (o.areaForm x) y
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
⊢ (LinearMap.toContinuousLinearMap.symm.symm (o.areaForm x)) y = (o.areaForm x) y

tactic: norm_cast
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
⊢ (LinearMap.toContinuousLinearMap.symm.symm (o.areaForm x)) y = (o.areaForm x) y
state_after: no goals
Theorem: subalgebra_top_rank_eq_submodule_top_rank
File: Mathlib/LinearAlgebra/Dimension/Constructions.lean

tactic: rw [← Algebra.top_toSubmodule]
state_before: R S : Type u
M : Type v
M' : Type v'
M₁ : Type v
ι : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝¹⁰ : Ring R
inst✝⁹ : CommRing S
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup M'
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R M
inst✝⁴ : Module R M'
inst✝³ : Module R M₁
F : Type u_2
E : Type u_3
inst✝² : CommRing F
inst✝¹ : Ring E
inst✝ : Algebra F E
⊢ Module.rank F ↥⊤ = Module.rank F ↥⊤
state_after: R S : Type u
M : Type v
M' : Type v'
M₁ : Type v
ι : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝¹⁰ : Ring R
inst✝⁹ : CommRing S
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup M'
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R M
inst✝⁴ : Module R M'
inst✝³ : Module R M₁
F : Type u_2
E : Type u_3
inst✝² : CommRing F
inst✝¹ : Ring E
inst✝ : Algebra F E
⊢ Module.rank F ↥⊤ = Module.rank F ↥(Subalgebra.toSubmodule ⊤)

tactic: rfl
state_before: R S : Type u
M : Type v
M' : Type v'
M₁ : Type v
ι : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝¹⁰ : Ring R
inst✝⁹ : CommRing S
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup M'
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R M
inst✝⁴ : Module R M'
inst✝³ : Module R M₁
F : Type u_2
E : Type u_3
inst✝² : CommRing F
inst✝¹ : Ring E
inst✝ : Algebra F E
⊢ Module.rank F ↥⊤ = Module.rank F ↥(Subalgebra.toSubmodule ⊤)
state_after: no goals
Theorem: toSubalgebra_toIntermediateField'
File: Mathlib/FieldTheory/IntermediateField.lean

tactic: ext
state_before: K : Type u_1
L : Type u_2
L' : Type u_3
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Field L'
inst✝¹ : Algebra K L
inst✝ : Algebra K L'
S✝ : IntermediateField K L
S : Subalgebra K L
hS : IsField ↥S
⊢ (S.toIntermediateField' hS).toSubalgebra = S
state_after: case h
K : Type u_1
L : Type u_2
L' : Type u_3
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Field L'
inst✝¹ : Algebra K L
inst✝ : Algebra K L'
S✝ : IntermediateField K L
S : Subalgebra K L
hS : IsField ↥S
x✝ : L
⊢ x✝ ∈ (S.toIntermediateField' hS).toSubalgebra ↔ x✝ ∈ S

tactic: rfl
state_before: case h
K : Type u_1
L : Type u_2
L' : Type u_3
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Field L'
inst✝¹ : Algebra K L
inst✝ : Algebra K L'
S✝ : IntermediateField K L
S : Subalgebra K L
hS : IsField ↥S
x✝ : L
⊢ x✝ ∈ (S.toIntermediateField' hS).toSubalgebra ↔ x✝ ∈ S
state_after: no goals