1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: GradedMonoid.mk_list_dProd
File: Mathlib/Algebra/GradedMonoid.lean

tactic: match l with
| [] => simp only [List.dProdIndex_nil, List.dProd_nil, List.map_nil, List.prod_nil]; rfl
| head::tail =>
  simp [← GradedMonoid.mk_list_dProd tail _ _, GradedMonoid.mk_mul_mk, List.prod_cons]
state_before: ι : Type u_1
α : Type u_2
A : ι → Type u_3
inst✝¹ : AddMonoid ι
inst✝ : GMonoid A
l : List α
fι : α → ι
fA : (a : α) → A (fι a)
⊢ mk (l.dProdIndex fι) (l.dProd fι fA) = (List.map (fun a => mk (fι a) (fA a)) l).prod
state_after: no goals

tactic: simp only [List.dProdIndex_nil, List.dProd_nil, List.map_nil, List.prod_nil]
state_before: ι : Type u_1
α : Type u_2
A : ι → Type u_3
inst✝¹ : AddMonoid ι
inst✝ : GMonoid A
l : List α
fι : α → ι
fA : (a : α) → A (fι a)
⊢ mk ([].dProdIndex fι) ([].dProd fι fA) = (List.map (fun a => mk (fι a) (fA a)) []).prod
state_after: ι : Type u_1
α : Type u_2
A : ι → Type u_3
inst✝¹ : AddMonoid ι
inst✝ : GMonoid A
l : List α
fι : α → ι
fA : (a : α) → A (fι a)
⊢ mk 0 GOne.one = 1

tactic: rfl
state_before: ι : Type u_1
α : Type u_2
A : ι → Type u_3
inst✝¹ : AddMonoid ι
inst✝ : GMonoid A
l : List α
fι : α → ι
fA : (a : α) → A (fι a)
⊢ mk 0 GOne.one = 1
state_after: no goals

tactic: simp [← GradedMonoid.mk_list_dProd tail _ _, GradedMonoid.mk_mul_mk, List.prod_cons]
state_before: ι : Type u_1
α : Type u_2
A : ι → Type u_3
inst✝¹ : AddMonoid ι
inst✝ : GMonoid A
l : List α
fι : α → ι
fA : (a : α) → A (fι a)
head : α
tail : List α
⊢ mk ((head :: tail).dProdIndex fι) ((head :: tail).dProd fι fA) =
    (List.map (fun a => mk (fι a) (fA a)) (head :: tail)).prod
state_after: no goals
Theorem: Convex.average_mem
File: Mathlib/Analysis/Convex/Integral.lean

tactic: refine hs.integral_mem hsc (ae_mono' ?_ hfs) hfi.to_average
state_before: α : Type u_1
E : Type u_2
F : Type u_3
m0 : MeasurableSpace α
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : CompleteSpace E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
μ : Measure α
s : Set E
t : Set α
f : α → E
g : E → ℝ
C : ℝ
inst✝¹ : IsFiniteMeasure μ
inst✝ : NeZero μ
hs : Convex ℝ s
hsc : IsClosed s
hfs : ∀ᵐ (x : α) ∂μ, f x ∈ s
hfi : Integrable f μ
⊢ ⨍ (x : α), f x ∂μ ∈ s
state_after: α : Type u_1
E : Type u_2
F : Type u_3
m0 : MeasurableSpace α
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : CompleteSpace E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
μ : Measure α
s : Set E
t : Set α
f : α → E
g : E → ℝ
C : ℝ
inst✝¹ : IsFiniteMeasure μ
inst✝ : NeZero μ
hs : Convex ℝ s
hsc : IsClosed s
hfs : ∀ᵐ (x : α) ∂μ, f x ∈ s
hfi : Integrable f μ
⊢ (μ univ)⁻¹ • μ ≪ μ

tactic: exact AbsolutelyContinuous.smul (refl _) _
state_before: α : Type u_1
E : Type u_2
F : Type u_3
m0 : MeasurableSpace α
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : CompleteSpace E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
μ : Measure α
s : Set E
t : Set α
f : α → E
g : E → ℝ
C : ℝ
inst✝¹ : IsFiniteMeasure μ
inst✝ : NeZero μ
hs : Convex ℝ s
hsc : IsClosed s
hfs : ∀ᵐ (x : α) ∂μ, f x ∈ s
hfi : Integrable f μ
⊢ (μ univ)⁻¹ • μ ≪ μ
state_after: no goals
Theorem: Turing.TM2.stmts_supportsStmt
File: Mathlib/Computability/TuringMachine.lean

tactic: simp only [stmts, Finset.mem_insertNone, Finset.mem_biUnion, Option.mem_def, Option.some.injEq,
  forall_eq', exists_imp, and_imp]
state_before: K : Type u_1
inst✝¹ : DecidableEq K
Γ : K → Type u_2
Λ : Type u_3
σ : Type u_4
inst✝ : Inhabited Λ
M : Λ → Stmt₂
S : Finset Λ
q : Stmt₂
ss : Supports M S
⊢ some q ∈ stmts M S → SupportsStmt S q
state_after: K : Type u_1
inst✝¹ : DecidableEq K
Γ : K → Type u_2
Λ : Type u_3
σ : Type u_4
inst✝ : Inhabited Λ
M : Λ → Stmt₂
S : Finset Λ
q : Stmt₂
ss : Supports M S
⊢ ∀ x ∈ S, q ∈ stmts₁ (M x) → SupportsStmt S q

tactic: exact fun l ls h ↦ stmts₁_supportsStmt_mono h (ss.2 _ ls)
state_before: K : Type u_1
inst✝¹ : DecidableEq K
Γ : K → Type u_2
Λ : Type u_3
σ : Type u_4
inst✝ : Inhabited Λ
M : Λ → Stmt₂
S : Finset Λ
q : Stmt₂
ss : Supports M S
⊢ ∀ x ∈ S, q ∈ stmts₁ (M x) → SupportsStmt S q
state_after: no goals
Theorem: List.Perm.bind_left
File: Mathlib/Data/List/Perm.lean

tactic: rwa [List.forall₂_map_right_iff, List.forall₂_map_left_iff, List.forall₂_same]
state_before: α : Type u_1
β : Type u_2
l✝ l₁ l₂ : List α
a : α
l : List α
f g : α → List β
h : ∀ a ∈ l, f a ~ g a
⊢ Forall₂ (fun x x_1 => x ~ x_1) (List.map f l) (List.map g l)
state_after: no goals
Theorem: floorDiv_zero
File: Mathlib/Algebra/Order/Floor/Div.lean

tactic: simp
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : OrderedAddCommMonoid α
inst✝² : OrderedAddCommMonoid β
inst✝¹ : SMulZeroClass α β
inst✝ : FloorDiv α β
a : α
b✝ c b : β
⊢ b ⌊/⌋ 0 = 0
state_after: no goals
Theorem: SimpleGraph.isBridge_iff_adj_and_forall_cycle_not_mem
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: rw [isBridge_iff, and_congr_right_iff]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
⊢ G.IsBridge s(v, w) ↔ G.Adj v w ∧ ∀ ⦃u : V⦄ (p : G.Walk u u), p.IsCycle → s(v, w) ∉ p.edges
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
⊢ G.Adj v w → (¬(G \ fromEdgeSet {s(v, w)}).Reachable v w ↔ ∀ ⦃u : V⦄ (p : G.Walk u u), p.IsCycle → s(v, w) ∉ p.edges)

tactic: intro h
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
⊢ G.Adj v w → (¬(G \ fromEdgeSet {s(v, w)}).Reachable v w ↔ ∀ ⦃u : V⦄ (p : G.Walk u u), p.IsCycle → s(v, w) ∉ p.edges)
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
h : G.Adj v w
⊢ ¬(G \ fromEdgeSet {s(v, w)}).Reachable v w ↔ ∀ ⦃u : V⦄ (p : G.Walk u u), p.IsCycle → s(v, w) ∉ p.edges

tactic: rw [← not_iff_not]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
h : G.Adj v w
⊢ ¬(G \ fromEdgeSet {s(v, w)}).Reachable v w ↔ ∀ ⦃u : V⦄ (p : G.Walk u u), p.IsCycle → s(v, w) ∉ p.edges
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
h : G.Adj v w
⊢ ¬¬(G \ fromEdgeSet {s(v, w)}).Reachable v w ↔ ¬∀ ⦃u : V⦄ (p : G.Walk u u), p.IsCycle → s(v, w) ∉ p.edges

tactic: push_neg
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
h : G.Adj v w
⊢ ¬¬(G \ fromEdgeSet {s(v, w)}).Reachable v w ↔ ¬∀ ⦃u : V⦄ (p : G.Walk u u), p.IsCycle → s(v, w) ∉ p.edges
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
h : G.Adj v w
⊢ (G \ fromEdgeSet {s(v, w)}).Reachable v w ↔ ∃ u p, p.IsCycle ∧ s(v, w) ∈ p.edges

tactic: rw [← adj_and_reachable_delete_edges_iff_exists_cycle]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
h : G.Adj v w
⊢ (G \ fromEdgeSet {s(v, w)}).Reachable v w ↔ ∃ u p, p.IsCycle ∧ s(v, w) ∈ p.edges
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
h : G.Adj v w
⊢ (G \ fromEdgeSet {s(v, w)}).Reachable v w ↔ G.Adj v w ∧ (G \ fromEdgeSet {s(v, w)}).Reachable v w

tactic: simp only [h, true_and_iff]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
h : G.Adj v w
⊢ (G \ fromEdgeSet {s(v, w)}).Reachable v w ↔ G.Adj v w ∧ (G \ fromEdgeSet {s(v, w)}).Reachable v w
state_after: no goals
Theorem: NormedAddGroupHom.ker_le_ker_completion
File: Mathlib/Analysis/Normed/Group/HomCompletion.lean

tactic: rintro _ ⟨⟨g, h₀ : f g = 0⟩, rfl⟩
state_before: G : Type u_1
inst✝² : SeminormedAddCommGroup G
H : Type u_2
inst✝¹ : SeminormedAddCommGroup H
K : Type u_3
inst✝ : SeminormedAddCommGroup K
f : NormedAddGroupHom G H
⊢ (toCompl.comp (incl f.ker)).range ≤ f.completion.ker
state_after: case intro.mk
G : Type u_1
inst✝² : SeminormedAddCommGroup G
H : Type u_2
inst✝¹ : SeminormedAddCommGroup H
K : Type u_3
inst✝ : SeminormedAddCommGroup K
f : NormedAddGroupHom G H
g : G
h₀ : f g = 0
⊢ (toCompl.comp (incl f.ker)).toAddMonoidHom ⟨g, h₀⟩ ∈ f.completion.ker

tactic: simp [h₀, mem_ker, Completion.coe_zero]
state_before: case intro.mk
G : Type u_1
inst✝² : SeminormedAddCommGroup G
H : Type u_2
inst✝¹ : SeminormedAddCommGroup H
K : Type u_3
inst✝ : SeminormedAddCommGroup K
f : NormedAddGroupHom G H
g : G
h₀ : f g = 0
⊢ (toCompl.comp (incl f.ker)).toAddMonoidHom ⟨g, h₀⟩ ∈ f.completion.ker
state_after: no goals
Theorem: Relation.comp_iff
File: Mathlib/Logic/Relation.lean

tactic: rw [this, comp_eq]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r✝ : α → β → Prop
p : β → γ → Prop
q : γ → δ → Prop
r : α → Prop → Prop
this : (fun x x_1 => x ↔ x_1) = fun x x_1 => x = x_1
⊢ (r ∘r fun x x_1 => x ↔ x_1) = r
state_after: no goals

tactic: funext a b
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r✝ : α → β → Prop
p : β → γ → Prop
q : γ → δ → Prop
r : α → Prop → Prop
⊢ (fun x x_1 => x ↔ x_1) = fun x x_1 => x = x_1
state_after: case h.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r✝ : α → β → Prop
p : β → γ → Prop
q : γ → δ → Prop
r : α → Prop → Prop
a b : Prop
⊢ (a ↔ b) = (a = b)

tactic: exact iff_eq_eq
state_before: case h.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r✝ : α → β → Prop
p : β → γ → Prop
q : γ → δ → Prop
r : α → Prop → Prop
a b : Prop
⊢ (a ↔ b) = (a = b)
state_after: no goals
Theorem: monovary_iff_forall_mul_nonneg
File: Mathlib/Algebra/Order/Monovary.lean

tactic: simp only [smul_eq_mul, monovary_iff_forall_smul_nonneg]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedRing α
f g : ι → α
s : Set ι
a b c d : α
⊢ Monovary f g ↔ ∀ (i j : ι), 0 ≤ (f j - f i) * (g j - g i)
state_after: no goals
Theorem: Set.mulIndicator_apply
File: Mathlib/Algebra/Group/Indicator.lean

tactic: unfold mulIndicator
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
a : α
inst✝ : Decidable (a ∈ s)
⊢ s.mulIndicator f a = if a ∈ s then f a else 1
state_after: α : 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
a : α
inst✝ : Decidable (a ∈ s)
⊢ (if a ∈ s then f a else 1) = if a ∈ s then f a else 1

tactic: congr
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
a : α
inst✝ : Decidable (a ∈ s)
⊢ (if a ∈ s then f a else 1) = if a ∈ s then f a else 1
state_after: no goals
Theorem: EuclideanGeometry.angle_eq_angle_of_dist_eq
File: Mathlib/Geometry/Euclidean/Triangle.lean

tactic: rw [dist_eq_norm_vsub V p1 p2, dist_eq_norm_vsub V p1 p3] at h
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h : dist p1 p2 = dist p1 p3
⊢ ∠ p1 p2 p3 = ∠ p1 p3 p2
state_after: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h : ‖p1 -ᵥ p2‖ = ‖p1 -ᵥ p3‖
⊢ ∠ p1 p2 p3 = ∠ p1 p3 p2

tactic: unfold angle
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h : ‖p1 -ᵥ p2‖ = ‖p1 -ᵥ p3‖
⊢ ∠ p1 p2 p3 = ∠ p1 p3 p2
state_after: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h : ‖p1 -ᵥ p2‖ = ‖p1 -ᵥ p3‖
⊢ InnerProductGeometry.angle (p1 -ᵥ p2) (p3 -ᵥ p2) = InnerProductGeometry.angle (p1 -ᵥ p3) (p2 -ᵥ p3)

tactic: convert angle_sub_eq_angle_sub_rev_of_norm_eq h
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h : ‖p1 -ᵥ p2‖ = ‖p1 -ᵥ p3‖
⊢ InnerProductGeometry.angle (p1 -ᵥ p2) (p3 -ᵥ p2) = InnerProductGeometry.angle (p1 -ᵥ p3) (p2 -ᵥ p3)
state_after: case h.e'_2.h.e'_5
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h : ‖p1 -ᵥ p2‖ = ‖p1 -ᵥ p3‖
⊢ p3 -ᵥ p2 = p1 -ᵥ p2 - (p1 -ᵥ p3)

case h.e'_3.h.e'_5
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h : ‖p1 -ᵥ p2‖ = ‖p1 -ᵥ p3‖
⊢ p2 -ᵥ p3 = p1 -ᵥ p3 - (p1 -ᵥ p2)

tactic: exact (vsub_sub_vsub_cancel_left p3 p2 p1).symm
state_before: case h.e'_2.h.e'_5
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h : ‖p1 -ᵥ p2‖ = ‖p1 -ᵥ p3‖
⊢ p3 -ᵥ p2 = p1 -ᵥ p2 - (p1 -ᵥ p3)
state_after: no goals

tactic: exact (vsub_sub_vsub_cancel_left p2 p3 p1).symm
state_before: case h.e'_3.h.e'_5
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h : ‖p1 -ᵥ p2‖ = ‖p1 -ᵥ p3‖
⊢ p2 -ᵥ p3 = p1 -ᵥ p3 - (p1 -ᵥ p2)
state_after: no goals
Theorem: SetTheory.PGame.Impartial.nonpos
File: Mathlib/SetTheory/Game/Impartial.lean

tactic: have h' := neg_lt_neg_iff.2 h
state_before: G : PGame
inst✝ : G.Impartial
h : 0 < G
⊢ False
state_after: G : PGame
inst✝ : G.Impartial
h : 0 < G
h' : -G < -0
⊢ False

tactic: rw [neg_zero, lt_congr_left (Equiv.symm (neg_equiv_self G))] at h'
state_before: G : PGame
inst✝ : G.Impartial
h : 0 < G
h' : -G < -0
⊢ False
state_after: G : PGame
inst✝ : G.Impartial
h : 0 < G
h' : G < 0
⊢ False

tactic: exact (h.trans h').false
state_before: G : PGame
inst✝ : G.Impartial
h : 0 < G
h' : G < 0
⊢ False
state_after: no goals
Theorem: SetTheory.PGame.lt_neg_iff
File: Mathlib/SetTheory/Game/PGame.lean

tactic: rw [← neg_neg x, neg_lt_neg_iff, neg_neg]
state_before: xl xr : Type u
x y : PGame
⊢ y < -x ↔ x < -y
state_after: no goals
Theorem: PicardLindelof.FunSpace.dist_iterate_next_le
File: Mathlib/Analysis/ODE/PicardLindelof.lean

tactic: refine dist_le_of_forall fun t => (dist_iterate_next_apply_le _ _ _ _).trans ?_
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
v : PicardLindelof E
f : v.FunSpace
inst✝ : CompleteSpace E
f₁ f₂ : v.FunSpace
n : ℕ
⊢ dist (next^[n] f₁) (next^[n] f₂) ≤ (↑v.L * v.tDist) ^ n / ↑n ! * dist f₁ f₂
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
v : PicardLindelof E
f : v.FunSpace
inst✝ : CompleteSpace E
f₁ f₂ : v.FunSpace
n : ℕ
t : ↑(Icc v.tMin v.tMax)
⊢ (↑v.L * |↑t - ↑v.t₀|) ^ n / ↑n ! * dist f₁ f₂ ≤ (↑v.L * v.tDist) ^ n / ↑n ! * dist f₁ f₂

tactic: have : |(t - v.t₀ : ℝ)| ≤ v.tDist := v.dist_t₀_le t
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
v : PicardLindelof E
f : v.FunSpace
inst✝ : CompleteSpace E
f₁ f₂ : v.FunSpace
n : ℕ
t : ↑(Icc v.tMin v.tMax)
⊢ (↑v.L * |↑t - ↑v.t₀|) ^ n / ↑n ! * dist f₁ f₂ ≤ (↑v.L * v.tDist) ^ n / ↑n ! * dist f₁ f₂
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
v : PicardLindelof E
f : v.FunSpace
inst✝ : CompleteSpace E
f₁ f₂ : v.FunSpace
n : ℕ
t : ↑(Icc v.tMin v.tMax)
this : |↑t - ↑v.t₀| ≤ v.tDist
⊢ (↑v.L * |↑t - ↑v.t₀|) ^ n / ↑n ! * dist f₁ f₂ ≤ (↑v.L * v.tDist) ^ n / ↑n ! * dist f₁ f₂

tactic: gcongr
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
v : PicardLindelof E
f : v.FunSpace
inst✝ : CompleteSpace E
f₁ f₂ : v.FunSpace
n : ℕ
t : ↑(Icc v.tMin v.tMax)
this : |↑t - ↑v.t₀| ≤ v.tDist
⊢ (↑v.L * |↑t - ↑v.t₀|) ^ n / ↑n ! * dist f₁ f₂ ≤ (↑v.L * v.tDist) ^ n / ↑n ! * dist f₁ f₂
state_after: no goals
Theorem: WithBot.mul_bot
File: Mathlib/Algebra/Order/Ring/WithTop.lean

tactic: rw [mul_bot', if_neg h]
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : MulZeroClass α
a b : WithBot α
h : a ≠ 0
⊢ a * ⊥ = ⊥
state_after: no goals
Theorem: ContDiffBump.hasCompactSupport
File: Mathlib/Analysis/Calculus/BumpFunction/Basic.lean

tactic: simp_rw [HasCompactSupport, f.tsupport_eq, isCompact_closedBall]
state_before: E : Type u_1
X : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup X
inst✝² : NormedSpace ℝ X
inst✝¹ : HasContDiffBump E
c : E
f : ContDiffBump c
x : E
n : ℕ∞
inst✝ : FiniteDimensional ℝ E
⊢ HasCompactSupport ↑f
state_after: no goals
Theorem: Finset.Ioc_eq_cons_Ioo
File: Mathlib/Order/Interval/Finset/Basic.lean

tactic: classical rw [cons_eq_insert, Ioo_insert_right h]
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : PartialOrder α
inst✝ : LocallyFiniteOrder α
a b c : α
h : a < b
⊢ Ioc a b = cons b (Ioo a b) ⋯
state_after: no goals

tactic: rw [cons_eq_insert, Ioo_insert_right h]
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : PartialOrder α
inst✝ : LocallyFiniteOrder α
a b c : α
h : a < b
⊢ Ioc a b = cons b (Ioo a b) ⋯
state_after: no goals
Theorem: Nat.add_div
File: Mathlib/Data/Nat/ModEq.lean

tactic: rw [← mul_right_inj' hc0.ne', ← @add_left_cancel_iff _ _ _ ((a + b) % c + a % c + b % c)]
state_before: m n a✝ b✝ c✝ d a b c : ℕ
hc0 : 0 < c
⊢ (a + b) / c = a / c + b / c + if c ≤ a % c + b % c then 1 else 0
state_after: m n a✝ b✝ c✝ d a b c : ℕ
hc0 : 0 < c
⊢ (a + b) % c + a % c + b % c + c * ((a + b) / c) =
    (a + b) % c + a % c + b % c + c * (a / c + b / c + if c ≤ a % c + b % c then 1 else 0)

tactic: suffices
  (a + b) % c + c * ((a + b) / c) + a % c + b % c =
    (a % c + c * (a / c) + (b % c + c * (b / c)) + c * if c ≤ a % c + b % c then 1 else 0) +
      (a + b) % c
  by simpa only [mul_add, add_comm, add_left_comm, add_assoc]
state_before: m n a✝ b✝ c✝ d a b c : ℕ
hc0 : 0 < c
⊢ (a + b) % c + a % c + b % c + c * ((a + b) / c) =
    (a + b) % c + a % c + b % c + c * (a / c + b / c + if c ≤ a % c + b % c then 1 else 0)
state_after: m n a✝ b✝ c✝ d a b c : ℕ
hc0 : 0 < c
⊢ (a + b) % c + c * ((a + b) / c) + a % c + b % c =
    (a % c + c * (a / c) + (b % c + c * (b / c)) + c * if c ≤ a % c + b % c then 1 else 0) + (a + b) % c

tactic: rw [mod_add_div, mod_add_div, mod_add_div, mul_ite, add_assoc, add_assoc]
state_before: m n a✝ b✝ c✝ d a b c : ℕ
hc0 : 0 < c
⊢ (a + b) % c + c * ((a + b) / c) + a % c + b % c =
    (a % c + c * (a / c) + (b % c + c * (b / c)) + c * if c ≤ a % c + b % c then 1 else 0) + (a + b) % c
state_after: m n a✝ b✝ c✝ d a b c : ℕ
hc0 : 0 < c
⊢ a + (b + (a % c + b % c)) = (a + b + if c ≤ a % c + b % c then c * 1 else c * 0) + (a + b) % c

tactic: conv_lhs => rw [← add_mod_add_ite]
state_before: m n a✝ b✝ c✝ d a b c : ℕ
hc0 : 0 < c
⊢ a + (b + (a % c + b % c)) = (a + b + if c ≤ a % c + b % c then c * 1 else c * 0) + (a + b) % c
state_after: m n a✝ b✝ c✝ d a b c : ℕ
hc0 : 0 < c
⊢ a + (b + ((a + b) % c + if c ≤ a % c + b % c then c else 0)) =
    (a + b + if c ≤ a % c + b % c then c * 1 else c * 0) + (a + b) % c

tactic: simp only [mul_one, mul_zero]
state_before: m n a✝ b✝ c✝ d a b c : ℕ
hc0 : 0 < c
⊢ a + (b + ((a + b) % c + if c ≤ a % c + b % c then c else 0)) =
    (a + b + if c ≤ a % c + b % c then c * 1 else c * 0) + (a + b) % c
state_after: m n a✝ b✝ c✝ d a b c : ℕ
hc0 : 0 < c
⊢ a + (b + ((a + b) % c + if c ≤ a % c + b % c then c else 0)) =
    (a + b + if c ≤ a % c + b % c then c else 0) + (a + b) % c

tactic: ac_rfl
state_before: m n a✝ b✝ c✝ d a b c : ℕ
hc0 : 0 < c
⊢ a + (b + ((a + b) % c + if c ≤ a % c + b % c then c else 0)) =
    (a + b + if c ≤ a % c + b % c then c else 0) + (a + b) % c
state_after: no goals

tactic: simpa only [mul_add, add_comm, add_left_comm, add_assoc]
state_before: m n a✝ b✝ c✝ d a b c : ℕ
hc0 : 0 < c
this :
  (a + b) % c + c * ((a + b) / c) + a % c + b % c =
    (a % c + c * (a / c) + (b % c + c * (b / c)) + c * if c ≤ a % c + b % c then 1 else 0) + (a + b) % c
⊢ (a + b) % c + a % c + b % c + c * ((a + b) / c) =
    (a + b) % c + a % c + b % c + c * (a / c + b / c + if c ≤ a % c + b % c then 1 else 0)
state_after: no goals
Theorem: AlgebraicGeometry.universally_isLocalAtTarget_of_morphismRestrict
File: Mathlib/AlgebraicGeometry/Morphisms/Constructors.lean

tactic: apply hP₂ f (fun i : 𝒰.J => Scheme.Hom.opensRange (𝒰.map i)) 𝒰.iSup_opensRange
state_before: P : MorphismProperty Scheme
hP₁ : P.RespectsIso
hP₂ :
  ∀ {X Y : Scheme} (f : X ⟶ Y) {ι : Type u} (U : ι → Opens ↑↑Y.toPresheafedSpace),
    iSup U = ⊤ → (∀ (i : ι), P (f ∣_ U i)) → P f
X✝ Y✝ : Scheme
f : X✝ ⟶ Y✝
𝒰 : Y✝.OpenCover
h𝒰 : ∀ (i : 𝒰.J), P pullback.snd
⊢ P f
state_after: P : MorphismProperty Scheme
hP₁ : P.RespectsIso
hP₂ :
  ∀ {X Y : Scheme} (f : X ⟶ Y) {ι : Type u} (U : ι → Opens ↑↑Y.toPresheafedSpace),
    iSup U = ⊤ → (∀ (i : ι), P (f ∣_ U i)) → P f
X✝ Y✝ : Scheme
f : X✝ ⟶ Y✝
𝒰 : Y✝.OpenCover
h𝒰 : ∀ (i : 𝒰.J), P pullback.snd
⊢ ∀ (i : 𝒰.J), P (f ∣_ Scheme.Hom.opensRange (𝒰.map i))

tactic: simp_rw [hP₁.arrow_mk_iso_iff (morphismRestrictOpensRange f _)]
state_before: P : MorphismProperty Scheme
hP₁ : P.RespectsIso
hP₂ :
  ∀ {X Y : Scheme} (f : X ⟶ Y) {ι : Type u} (U : ι → Opens ↑↑Y.toPresheafedSpace),
    iSup U = ⊤ → (∀ (i : ι), P (f ∣_ U i)) → P f
X✝ Y✝ : Scheme
f : X✝ ⟶ Y✝
𝒰 : Y✝.OpenCover
h𝒰 : ∀ (i : 𝒰.J), P pullback.snd
⊢ ∀ (i : 𝒰.J), P (f ∣_ Scheme.Hom.opensRange (𝒰.map i))
state_after: P : MorphismProperty Scheme
hP₁ : P.RespectsIso
hP₂ :
  ∀ {X Y : Scheme} (f : X ⟶ Y) {ι : Type u} (U : ι → Opens ↑↑Y.toPresheafedSpace),
    iSup U = ⊤ → (∀ (i : ι), P (f ∣_ U i)) → P f
X✝ Y✝ : Scheme
f : X✝ ⟶ Y✝
𝒰 : Y✝.OpenCover
h𝒰 : ∀ (i : 𝒰.J), P pullback.snd
⊢ ∀ (i : 𝒰.J), P pullback.snd

tactic: exact h𝒰
state_before: P : MorphismProperty Scheme
hP₁ : P.RespectsIso
hP₂ :
  ∀ {X Y : Scheme} (f : X ⟶ Y) {ι : Type u} (U : ι → Opens ↑↑Y.toPresheafedSpace),
    iSup U = ⊤ → (∀ (i : ι), P (f ∣_ U i)) → P f
X✝ Y✝ : Scheme
f : X✝ ⟶ Y✝
𝒰 : Y✝.OpenCover
h𝒰 : ∀ (i : 𝒰.J), P pullback.snd
⊢ ∀ (i : 𝒰.J), P pullback.snd
state_after: no goals
Theorem: Matrix.exp_blockDiagonal
File: Mathlib/Analysis/NormedSpace/MatrixExponential.lean

tactic: simp_rw [exp_eq_tsum, ← blockDiagonal_pow, ← blockDiagonal_smul, ← blockDiagonal_tsum]
state_before: 𝕂 : Type u_1
m : Type u_2
n : Type u_3
p : Type u_4
n' : m → Type u_5
𝔸 : Type u_6
inst✝¹¹ : Fintype m
inst✝¹⁰ : DecidableEq m
inst✝⁹ : Fintype n
inst✝⁸ : DecidableEq n
inst✝⁷ : (i : m) → Fintype (n' i)
inst✝⁶ : (i : m) → DecidableEq (n' i)
inst✝⁵ : Field 𝕂
inst✝⁴ : Ring 𝔸
inst✝³ : TopologicalSpace 𝔸
inst✝² : TopologicalRing 𝔸
inst✝¹ : Algebra 𝕂 𝔸
inst✝ : T2Space 𝔸
v : m → Matrix n n 𝔸
⊢ exp 𝕂 (blockDiagonal v) = blockDiagonal (exp 𝕂 v)
state_after: no goals
Theorem: GeneralizedContinuedFraction.of_h_eq_floor
File: Mathlib/Algebra/ContinuedFractions/Computation/Translations.lean

tactic: simp [of_h_eq_intFractPair_seq1_fst_b, IntFractPair.of]
state_before: K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
⊢ (of v).h = ↑⌊v⌋
state_after: no goals
Theorem: mul_eq_one_iff'
File: Mathlib/Algebra/Order/Monoid/Unbundled/Basic.lean

tactic: rintro ⟨rfl, rfl⟩
state_before: α : Type u_1
β : Type u_2
inst✝³ : MulOneClass α
inst✝² : PartialOrder α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b : α
ha : 1 ≤ a
hb : 1 ≤ b
⊢ a = 1 ∧ b = 1 → a * b = 1
state_after: case intro
α : Type u_1
β : Type u_2
inst✝³ : MulOneClass α
inst✝² : PartialOrder α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
ha hb : 1 ≤ 1
⊢ 1 * 1 = 1

tactic: rw [mul_one]
state_before: case intro
α : Type u_1
β : Type u_2
inst✝³ : MulOneClass α
inst✝² : PartialOrder α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
ha hb : 1 ≤ 1
⊢ 1 * 1 = 1
state_after: no goals