ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Monoid.CoprodI.NeWord.toList_head?
@[simp]
theorem toList_head? {i j} (w : NeWord M i j) : w.toList.head? = Option.some ⟨i, w.head⟩ 
Arguments: {ι : Type u_1} {M : ι → Type u_2} [(i : ι) → Monoid (M i)] {i j : ι} (w : Monoid.CoprodI.NeWord M i j)
Goal: w.toList.head? = some ⟨i, w.head⟩
-- Monoid.CoprodI.NeWord.toList_getLast?
@[simp]
theorem toList_getLast? {i j} (w : NeWord M i j) : w.toList.getLast? = Option.some ⟨j, w.last⟩ 
Arguments: {ι : Type u_1} {M : ι → Type u_2} [(i : ι) → Monoid (M i)] {i j : ι} (w : Monoid.CoprodI.NeWord M i j)
Goal: w.toList.getLast? = some ⟨j, w.last⟩
-- Monoid.CoprodI.NeWord.of_word
theorem of_word (w : Word M) (h : w ≠ empty) : ∃ (i j : _) (w' : NeWord M i j), w'.toWord = w 
Arguments: {ι : Type u_1} {M : ι → Type u_2} [(i : ι) → Monoid (M i)] (w : Monoid.CoprodI.Word M) (h : w ≠ Monoid.CoprodI.Word.empty)
Goal: ∃ i j w', w'.toWord = w
-- Monoid.CoprodI.NeWord.singleton_head
@[simp]
theorem singleton_head {i} (x : M i) (hne_one : x ≠ 1) : (singleton x hne_one).head = x 
Arguments: {ι : Type u_1} {M : ι → Type u_2} [(i : ι) → Monoid (M i)] {i : ι} (x : M i) (hne_one : x ≠ 1)
Goal: (Monoid.CoprodI.NeWord.singleton x hne_one).head = x
-- Monoid.CoprodI.NeWord.singleton_last
@[simp]
theorem singleton_last {i} (x : M i) (hne_one : x ≠ 1) : (singleton x hne_one).last = x 
Arguments: {ι : Type u_1} {M : ι → Type u_2} [(i : ι) → Monoid (M i)] {i : ι} (x : M i) (hne_one : x ≠ 1)
Goal: (Monoid.CoprodI.NeWord.singleton x hne_one).last = x
-- Monoid.CoprodI.NeWord.prod_singleton
@[simp]
theorem prod_singleton {i} (x : M i) (hne_one : x ≠ 1) : (singleton x hne_one).prod = of x 
Arguments: {ι : Type u_1} {M : ι → Type u_2} [(i : ι) → Monoid (M i)] {i : ι} (x : M i) (hne_one : x ≠ 1)
Goal: (Monoid.CoprodI.NeWord.singleton x hne_one).prod = Monoid.CoprodI.of x
-- Monoid.CoprodI.NeWord.append_head
@[simp]
theorem append_head {i j k l} {w₁ : NeWord M i j} {hne : j ≠ k} {w₂ : NeWord M k l} :
    (append w₁ hne w₂).head = w₁.head 
Arguments: {ι : Type u_1} {M : ι → Type u_2} [(i : ι) → Monoid (M i)] {i j k l : ι} {w₁ : Monoid.CoprodI.NeWord M i j} {hne : j ≠ k} {w₂ : Monoid.CoprodI.NeWord M k l}
Goal: (w₁.append hne w₂).head = w₁.head
-- Monoid.CoprodI.NeWord.append_last
@[simp]
theorem append_last {i j k l} {w₁ : NeWord M i j} {hne : j ≠ k} {w₂ : NeWord M k l} :
    (append w₁ hne w₂).last = w₂.last 
Arguments: {ι : Type u_1} {M : ι → Type u_2} [(i : ι) → Monoid (M i)] {i j k l : ι} {w₁ : Monoid.CoprodI.NeWord M i j} {hne : j ≠ k} {w₂ : Monoid.CoprodI.NeWord M k l}
Goal: (w₁.append hne w₂).last = w₂.last
-- Monoid.CoprodI.NeWord.append_prod
@[simp]
theorem append_prod {i j k l} {w₁ : NeWord M i j} {hne : j ≠ k} {w₂ : NeWord M k l} :
    (append w₁ hne w₂).prod = w₁.prod * w₂.prod 
Arguments: {ι : Type u_1} {M : ι → Type u_2} [(i : ι) → Monoid (M i)] {i j k l : ι} {w₁ : Monoid.CoprodI.NeWord M i j} {hne : j ≠ k} {w₂ : Monoid.CoprodI.NeWord M k l}
Goal: (w₁.append hne w₂).prod = w₁.prod * w₂.prod
-- Monoid.CoprodI.NeWord.replaceHead_head
@[simp]
theorem replaceHead_head {i j : ι} (x : M i) (hnotone : x ≠ 1) (w : NeWord M i j) :
    (replaceHead x hnotone w).head = x 
Arguments: {ι : Type u_1} {M : ι → Type u_2} [(i : ι) → Monoid (M i)] {i j : ι} (x : M i) (hnotone : x ≠ 1) (w : Monoid.CoprodI.NeWord M i j)
Goal: (Monoid.CoprodI.NeWord.replaceHead x hnotone w).head = x
-- Monoid.CoprodI.NeWord.mulHead_head
@[simp]
theorem mulHead_head {i j : ι} (w : NeWord M i j) (x : M i) (hnotone : x * w.head ≠ 1) :
    (mulHead w x hnotone).head = x * w.head 
Arguments: {ι : Type u_1} {M : ι → Type u_2} [(i : ι) → Monoid (M i)] {i j : ι} (w : Monoid.CoprodI.NeWord M i j) (x : M i) (hnotone : x * w.head ≠ 1)
Goal: (w.mulHead x hnotone).head = x * w.head
-- Monoid.CoprodI.NeWord.mulHead_prod
@[simp]
theorem mulHead_prod {i j : ι} (w : NeWord M i j) (x : M i) (hnotone : x * w.head ≠ 1) :
    (mulHead w x hnotone).prod = of x * w.prod 
Arguments: {ι : Type u_1} {M : ι → Type u_2} [(i : ι) → Monoid (M i)] {i j : ι} (w : Monoid.CoprodI.NeWord M i j) (x : M i) (hnotone : x * w.head ≠ 1)
Goal: (w.mulHead x hnotone).prod = Monoid.CoprodI.of x * w.prod
-- Monoid.CoprodI.NeWord.inv_prod
@[simp]
theorem inv_prod {i j} (w : NeWord G i j) : w.inv.prod = w.prod⁻¹ 
Arguments: {ι : Type u_1} {G : ι → Type u_4} [(i : ι) → Group (G i)] {i j : ι} (w : Monoid.CoprodI.NeWord G i j)
Goal: w.inv.prod = w.prod⁻¹
-- Monoid.CoprodI.NeWord.inv_head
@[simp]
theorem inv_head {i j} (w : NeWord G i j) : w.inv.head = w.last⁻¹ 
Arguments: {ι : Type u_1} {G : ι → Type u_4} [(i : ι) → Group (G i)] {i j : ι} (w : Monoid.CoprodI.NeWord G i j)
Goal: w.inv.head = w.last⁻¹
-- Monoid.CoprodI.NeWord.inv_last
@[simp]
theorem inv_last {i j} (w : NeWord G i j) : w.inv.last = w.head⁻¹ 
Arguments: {ι : Type u_1} {G : ι → Type u_4} [(i : ι) → Group (G i)] {i j : ι} (w : Monoid.CoprodI.NeWord G i j)
Goal: w.inv.last = w.head⁻¹
-- Monoid.CoprodI.lift_word_ping_pong
theorem lift_word_ping_pong {i j k} (w : NeWord H i j) (hk : j ≠ k) :
    lift f w.prod • X k ⊆ X i 
Arguments: {ι : Type u_1} {G : Type u_4} [Group G] {H : ι → Type u_5} [(i : ι) → Group (H i)] (f : (i : ι) → H i →* G) {α : Type u_6} [MulAction G α] (X : ι → Set α) (hpp : Pairwise fun i j => ∀ (h : H i), h ≠ 1 → (f i) h • X j ⊆ X i) {i j k : ι} (w : Monoid.CoprodI.NeWord H i j) (hk : j ≠ k)
Goal: (Monoid.CoprodI.lift f) w.prod • X k ⊆ X i
-- Monoid.CoprodI.lift_word_prod_nontrivial_of_other_i
theorem lift_word_prod_nontrivial_of_other_i {i j k} (w : NeWord H i j) (hhead : k ≠ i)
    (hlast : k ≠ j) : lift f w.prod ≠ 1 
Arguments: {ι : Type u_1} {G : Type u_4} [Group G] {H : ι → Type u_5} [(i : ι) → Group (H i)] (f : (i : ι) → H i →* G) {α : Type u_6} [MulAction G α] (X : ι → Set α) (hXnonempty : ∀ (i : ι), (X i).Nonempty) (hXdisj : Pairwise fun i j => Disjoint (X i) (X j)) (hpp : Pairwise fun i j => ∀ (h : H i), h ≠ 1 → (f i) h • X j ⊆ X i) {i j k : ι} (w : Monoid.CoprodI.NeWord H i j) (hhead : k ≠ i) (hlast : k ≠ j)
Goal: (Monoid.CoprodI.lift f) w.prod ≠ 1
-- Monoid.CoprodI.lift_word_prod_nontrivial_of_head_eq_last
theorem lift_word_prod_nontrivial_of_head_eq_last {i} (w : NeWord H i i) : lift f w.prod ≠ 1 
Arguments: {ι : Type u_1} [hnontriv : Nontrivial ι] {G : Type u_4} [Group G] {H : ι → Type u_5} [(i : ι) → Group (H i)] (f : (i : ι) → H i →* G) {α : Type u_6} [MulAction G α] (X : ι → Set α) (hXnonempty : ∀ (i : ι), (X i).Nonempty) (hXdisj : Pairwise fun i j => Disjoint (X i) (X j)) (hpp : Pairwise fun i j => ∀ (h : H i), h ≠ 1 → (f i) h • X j ⊆ X i) {i : ι} (w : Monoid.CoprodI.NeWord H i i)
Goal: (Monoid.CoprodI.lift f) w.prod ≠ 1
-- Monoid.CoprodI.lift_word_prod_nontrivial_of_head_card
theorem lift_word_prod_nontrivial_of_head_card {i j} (w : NeWord H i j) (hcard : 3 ≤ #(H i))
    (hheadtail : i ≠ j) : lift f w.prod ≠ 1 
Arguments: {ι : Type u_1} [hnontriv : Nontrivial ι] {G : Type u_4} [Group G] {H : ι → Type u_5} [(i : ι) → Group (H i)] (f : (i : ι) → H i →* G) {α : Type u_6} [MulAction G α] (X : ι → Set α) (hXnonempty : ∀ (i : ι), (X i).Nonempty) (hXdisj : Pairwise fun i j => Disjoint (X i) (X j)) (hpp : Pairwise fun i j => ∀ (h : H i), h ≠ 1 → (f i) h • X j ⊆ X i) {i j : ι} (w : Monoid.CoprodI.NeWord H i j) (hcard : 3 ≤ Cardinal.mk (H i)) (hheadtail : i ≠ j)
Goal: (Monoid.CoprodI.lift f) w.prod ≠ 1
-- Monoid.CoprodI.lift_word_prod_nontrivial_of_not_empty
theorem lift_word_prod_nontrivial_of_not_empty {i j} (w : NeWord H i j) : lift f w.prod ≠ 1 
Arguments: {ι : Type u_1} [hnontriv : Nontrivial ι] {G : Type u_4} [Group G] {H : ι → Type u_5} [(i : ι) → Group (H i)] (f : (i : ι) → H i →* G) (hcard : 3 ≤ Cardinal.mk ι ∨ ∃ i, 3 ≤ Cardinal.mk (H i)) {α : Type u_6} [MulAction G α] (X : ι → Set α) (hXnonempty : ∀ (i : ι), (X i).Nonempty) (hXdisj : Pairwise fun i j => Disjoint (X i) (X j)) (hpp : Pairwise fun i j => ∀ (h : H i), h ≠ 1 → (f i) h • X j ⊆ X i) {i j : ι} (w : Monoid.CoprodI.NeWord H i j)
Goal: (Monoid.CoprodI.lift f) w.prod ≠ 1
-- Monoid.CoprodI.empty_of_word_prod_eq_one
theorem empty_of_word_prod_eq_one {w : Word H} (h : lift f w.prod = 1) : w = Word.empty 
Arguments: {ι : Type u_1} [hnontriv : Nontrivial ι] {G : Type u_4} [Group G] {H : ι → Type u_5} [(i : ι) → Group (H i)] (f : (i : ι) → H i →* G) (hcard : 3 ≤ Cardinal.mk ι ∨ ∃ i, 3 ≤ Cardinal.mk (H i)) {α : Type u_6} [MulAction G α] (X : ι → Set α) (hXnonempty : ∀ (i : ι), (X i).Nonempty) (hXdisj : Pairwise fun i j => Disjoint (X i) (X j)) (hpp : Pairwise fun i j => ∀ (h : H i), h ≠ 1 → (f i) h • X j ⊆ X i) {w : Monoid.CoprodI.Word H} (h : (Monoid.CoprodI.lift f) w.prod = 1)
Goal: w = Monoid.CoprodI.Word.empty
-- Monoid.CoprodI.lift_injective_of_ping_pong
theorem lift_injective_of_ping_pong : Function.Injective (lift f) 
Arguments: {ι : Type u_1} [hnontriv : Nontrivial ι] {G : Type u_4} [Group G] {H : ι → Type u_5} [(i : ι) → Group (H i)] (f : (i : ι) → H i →* G) (hcard : 3 ≤ Cardinal.mk ι ∨ ∃ i, 3 ≤ Cardinal.mk (H i)) {α : Type u_6} [MulAction G α] (X : ι → Set α) (hXnonempty : ∀ (i : ι), (X i).Nonempty) (hXdisj : Pairwise fun i j => Disjoint (X i) (X j)) (hpp : Pairwise fun i j => ∀ (h : H i), h ≠ 1 → (f i) h • X j ⊆ X i)
Goal: Function.Injective ⇑(Monoid.CoprodI.lift f)
-- freeGroupEquivCoprodI_apply
@[simps!]
def _root_.freeGroupEquivCoprodI {ι : Type u_1} :
    FreeGroup ι ≃* CoprodI fun _ : ι => FreeGroup Unit 
Arguments: {ι : Type u_1} (a : FreeGroup ι)
Goal: freeGroupEquivCoprodI a = (FreeGroup.lift fun i => Monoid.CoprodI.of (FreeGroup.of ())) a
-- freeGroupEquivCoprodI_symm_apply
@[simps!]
def _root_.freeGroupEquivCoprodI {ι : Type u_1} :
    FreeGroup ι ≃* CoprodI fun _ : ι => FreeGroup Unit 
Arguments: {ι : Type u_1} (a : Monoid.CoprodI fun x => FreeGroup Unit)
Goal: freeGroupEquivCoprodI.symm a = (Monoid.CoprodI.lift fun i => FreeGroup.lift fun x => FreeGroup.of i) a
-- FreeGroup.injective_lift_of_ping_pong
theorem _root_.FreeGroup.injective_lift_of_ping_pong : Function.Injective (FreeGroup.lift a) 
Arguments: {ι : Type u_1} [Nontrivial ι] {G : Type u_1} [Group G] (a : ι → G) {α : Type u_4} [MulAction G α] (X Y : ι → Set α) (hXnonempty : ∀ (i : ι), (X i).Nonempty) (hXdisj : Pairwise fun i j => Disjoint (X i) (X j)) (hYdisj : Pairwise fun i j => Disjoint (Y i) (Y j)) (hXYdisj : ∀ (i j : ι), Disjoint (X i) (Y j)) (hX : ∀ (i : ι), a i • (Y i)ᶜ ⊆ X i) (hY : ∀ (i : ι), a⁻¹ i • (X i)ᶜ ⊆ Y i)
Goal: Function.Injective ⇑(FreeGroup.lift a)
-- Equiv.Perm.isConj_of_support_equiv
theorem isConj_of_support_equiv
    (f : { x // x ∈ (σ.support : Set α) } ≃ { x // x ∈ (τ.support : Set α) })
    (hf : ∀ (x : α) (hx : x ∈ (σ.support : Set α)),
      (f ⟨σ x, apply_mem_support.2 hx⟩ : α) = τ ↑(f ⟨x, hx⟩)) :
    IsConj σ τ 
Arguments: {α : Type u} [DecidableEq α] [Fintype α] {σ τ : Equiv.Perm α} (f : { x // x ∈ ↑σ.support } ≃ { x // x ∈ ↑τ.support }) (hf : ∀ (x : α) (hx : x ∈ ↑σ.support), ↑(f ⟨σ x, ⋯⟩) = τ ↑(f ⟨x, hx⟩))
Goal: IsConj σ τ
-- Equiv.Perm.perm_inv_on_of_perm_on_finset
theorem perm_inv_on_of_perm_on_finset {s : Finset α} {f : Perm α} (h : ∀ x ∈ s, f x ∈ s) {y : α}
    (hy : y ∈ s) : f⁻¹ y ∈ s 
Arguments: {α : Type u} {s : Finset α} {f : Equiv.Perm α} (h : ∀ x ∈ s, f x ∈ s) {y : α} (hy : y ∈ s)
Goal: f⁻¹ y ∈ s
-- Equiv.Perm.perm_inv_mapsTo_of_mapsTo
theorem perm_inv_mapsTo_of_mapsTo (f : Perm α) {s : Set α} [Finite s] (h : Set.MapsTo f s s) :
    Set.MapsTo (f⁻¹ : _) s s 
Arguments: {α : Type u} (f : Equiv.Perm α) {s : Set α} [Finite ↑s] (h : Set.MapsTo (⇑f) s s)
Goal: Set.MapsTo (⇑f⁻¹) s s
-- Equiv.Perm.perm_inv_mapsTo_iff_mapsTo
@[simp]
theorem perm_inv_mapsTo_iff_mapsTo {f : Perm α} {s : Set α} [Finite s] :
    Set.MapsTo (f⁻¹ : _) s s ↔ Set.MapsTo f s s 
Arguments: {α : Type u} {f : Equiv.Perm α} {s : Set α} [Finite ↑s]
Goal: Set.MapsTo (⇑f⁻¹) s s ↔ Set.MapsTo (⇑f) s s
-- Equiv.Perm.perm_inv_on_of_perm_on_finite
theorem perm_inv_on_of_perm_on_finite {f : Perm α} {p : α → Prop} [Finite { x // p x }]
    (h : ∀ x, p x → p (f x)) {x : α} (hx : p x) : p (f⁻¹ x) 
Arguments: {α : Type u} {f : Equiv.Perm α} {p : α → Prop} [Finite { x // p x }] (h : ∀ (x : α), p x → p (f x)) {x : α} (hx : p x)
Goal: p (f⁻¹ x)
-- Equiv.Perm.subtypePermOfFintype_apply
@[simp]
theorem subtypePermOfFintype_apply (f : Perm α) {p : α → Prop} [Finite { x // p x }]
    (h : ∀ x, p x → p (f x)) (x : { x // p x }) : subtypePermOfFintype f h x = ⟨f x, h x x.2⟩ 
Arguments: {α : Type u} (f : Equiv.Perm α) {p : α → Prop} [Finite { x // p x }] (h : ∀ (x : α), p x → p (f x)) (x : { x // p x })
Goal: (f.subtypePermOfFintype h) x = ⟨f ↑x, ⋯⟩
-- Equiv.Perm.subtypePermOfFintype_one
theorem subtypePermOfFintype_one (p : α → Prop) [Finite { x // p x }]
    (h : ∀ x, p x → p ((1 : Perm α) x)) : @subtypePermOfFintype α 1 p _ h = 1 
Arguments: {α : Type u} (p : α → Prop) [Finite { x // p x }] (h : ∀ (x : α), p x → p (1 x))
Goal: Equiv.Perm.subtypePermOfFintype 1 h = 1
-- Equiv.Perm.perm_mapsTo_inl_iff_mapsTo_inr
theorem perm_mapsTo_inl_iff_mapsTo_inr {m n : Type*} [Finite m] [Finite n] (σ : Perm (m ⊕ n)) :
    Set.MapsTo σ (Set.range Sum.inl) (Set.range Sum.inl) ↔
      Set.MapsTo σ (Set.range Sum.inr) (Set.range Sum.inr) 
Arguments: {m : Type u_1} {n : Type u_2} [Finite m] [Finite n] (σ : Equiv.Perm (m ⊕ n))
Goal: Set.MapsTo (⇑σ) (Set.range Sum.inl) (Set.range Sum.inl) ↔ Set.MapsTo (⇑σ) (Set.range Sum.inr) (Set.range Sum.inr)
-- Equiv.Perm.mem_sumCongrHom_range_of_perm_mapsTo_inl
theorem mem_sumCongrHom_range_of_perm_mapsTo_inl {m n : Type*} [Finite m] [Finite n]
    {σ : Perm (m ⊕ n)} (h : Set.MapsTo σ (Set.range Sum.inl) (Set.range Sum.inl)) :
    σ ∈ (sumCongrHom m n).range 
Arguments: {m : Type u_1} {n : Type u_2} [Finite m] [Finite n] {σ : Equiv.Perm (m ⊕ n)} (h : Set.MapsTo (⇑σ) (Set.range Sum.inl) (Set.range Sum.inl))
Goal: σ ∈ (Equiv.Perm.sumCongrHom m n).range
-- Equiv.Perm.Disjoint.orderOf
nonrec theorem Disjoint.orderOf {σ τ : Perm α} (hστ : Disjoint σ τ) :
    orderOf (σ * τ) = Nat.lcm (orderOf σ) (orderOf τ) 
Arguments: {α : Type u} {σ τ : Equiv.Perm α} (hστ : σ.Disjoint τ)
Goal: orderOf (σ * τ) = (orderOf σ).lcm (orderOf τ)
-- Equiv.Perm.Disjoint.extendDomain
theorem Disjoint.extendDomain {p : β → Prop} [DecidablePred p] (f : α ≃ Subtype p)
    {σ τ : Perm α} (h : Disjoint σ τ) : Disjoint (σ.extendDomain f) (τ.extendDomain f) 
Arguments: {α : Type u} {β : Type v} {p : β → Prop} [DecidablePred p] (f : α ≃ Subtype p) {σ τ : Equiv.Perm α} (h : σ.Disjoint τ)
Goal: (σ.extendDomain f).Disjoint (τ.extendDomain f)
-- Equiv.Perm.Disjoint.isConj_mul
theorem Disjoint.isConj_mul [Finite α] {σ τ π ρ : Perm α} (hc1 : IsConj σ π)
    (hc2 : IsConj τ ρ) (hd1 : Disjoint σ τ) (hd2 : Disjoint π ρ) : IsConj (σ * τ) (π * ρ) 
Arguments: {α : Type u} [Finite α] {σ τ π ρ : Equiv.Perm α} (hc1 : IsConj σ π) (hc2 : IsConj τ ρ) (hd1 : σ.Disjoint τ) (hd2 : π.Disjoint ρ)
Goal: IsConj (σ * τ) (π * ρ)
-- Equiv.Perm.support_pow_coprime
theorem support_pow_coprime {σ : Perm α} {n : ℕ} (h : Nat.Coprime n (orderOf σ)) :
    (σ ^ n).support = σ.support 
Arguments: {α : Type u} [DecidableEq α] [Fintype α] {σ : Equiv.Perm α} {n : ℕ} (h : n.Coprime (orderOf σ))
Goal: (σ ^ n).support = σ.support
-- Part.fix_def
protected theorem fix_def {x : α} (h' : ∃ i, (Fix.approx f i x).Dom) :
    Part.fix f x = Fix.approx f (Nat.succ (Nat.find h')) x 
Arguments: {α : Type u_1} {β : α → Type u_2} (f : ((a : α) → Part (β a)) → (a : α) → Part (β a)) {x : α} (h' : ∃ i, (Part.Fix.approx f i x).Dom)
Goal: Part.fix f x = Part.Fix.approx f (Nat.find h').succ x
-- Part.fix_def'
theorem fix_def' {x : α} (h' : ¬∃ i, (Fix.approx f i x).Dom) : Part.fix f x = none 
Arguments: {α : Type u_1} {β : α → Type u_2} (f : ((a : α) → Part (β a)) → (a : α) → Part (β a)) {x : α} (h' : ¬∃ i, (Part.Fix.approx f i x).Dom)
Goal: Part.fix f x = Part.none
-- LawfulMonadCont.callCC_bind_right
class LawfulMonadCont (m : Type u → Type v) [Monad m] [MonadCont m]
    extends LawfulMonad m : Prop where
  callCC_bind_right {α ω γ} (cmd : m α) (next : Label ω m γ → α → m ω) :
    (callCC fun f => cmd >>= next f) = cmd >>= fun x => callCC fun f => next f x
  callCC_bind_left {α} (β) (x : α) (dead : Label α m β → β → m α) :
    (callCC fun f : Label α m β => goto f x >>= dead f) = pure x
  callCC_dummy {α β} (dummy : m α) : (callCC fun _ : Label α m β => dummy) = dummy
Arguments: {m : Type u → Type v} [Monad m] [MonadCont m] [self : LawfulMonadCont m] {α ω γ : Type u} (cmd : m α) (next : ContT.Label ω m γ → α → m ω)
Goal: (MonadCont.callCC fun f => cmd >>= next f) = do
  let x ← cmd
  MonadCont.callCC fun f => next f x
-- LawfulMonadCont.callCC_dummy
class LawfulMonadCont (m : Type u → Type v) [Monad m] [MonadCont m]
    extends LawfulMonad m : Prop where
  callCC_bind_right {α ω γ} (cmd : m α) (next : Label ω m γ → α → m ω) :
    (callCC fun f => cmd >>= next f) = cmd >>= fun x => callCC fun f => next f x
  callCC_bind_left {α} (β) (x : α) (dead : Label α m β → β → m α) :
    (callCC fun f : Label α m β => goto f x >>= dead f) = pure x
  callCC_dummy {α β} (dummy : m α) : (callCC fun _ : Label α m β => dummy) = dummy
Arguments: {m : Type u → Type v} [Monad m] [MonadCont m] [self : LawfulMonadCont m] {α β : Type u} (dummy : m α)
Goal: (MonadCont.callCC fun x => dummy) = dummy
-- LawfulMonadCont.callCC_bind_left
class LawfulMonadCont (m : Type u → Type v) [Monad m] [MonadCont m]
    extends LawfulMonad m : Prop where
  callCC_bind_right {α ω γ} (cmd : m α) (next : Label ω m γ → α → m ω) :
    (callCC fun f => cmd >>= next f) = cmd >>= fun x => callCC fun f => next f x
  callCC_bind_left {α} (β) (x : α) (dead : Label α m β → β → m α) :
    (callCC fun f : Label α m β => goto f x >>= dead f) = pure x
  callCC_dummy {α β} (dummy : m α) : (callCC fun _ : Label α m β => dummy) = dummy
Arguments: {m : Type u → Type v} [Monad m] [MonadCont m] [self : LawfulMonadCont m] {α : Type u} (β : Type u) (x : α) (dead : ContT.Label α m β → β → m α)
Goal: (MonadCont.callCC fun f => ContT.goto f x >>= dead f) = pure x
-- ContT.run_contT_map_contT
theorem run_contT_map_contT (f : m r → m r) (x : ContT r m α) : run (map f x) = f ∘ run x 
Arguments: {r : Type u} {m : Type u → Type v} {α : Type w} (f : m r → m r) (x : ContT r m α)
Goal: (ContT.map f x).run = f ∘ x.run
-- ContT.run_withContT
theorem run_withContT (f : (β → m r) → α → m r) (x : ContT r m α) :
    run (withContT f x) = run x ∘ f 
Arguments: {r : Type u} {m : Type u → Type v} {α β : Type w} (f : (β → m r) → α → m r) (x : ContT r m α)
Goal: (ContT.withContT f x).run = x.run ∘ f
-- ContT.ext
@[ext]
protected theorem ext {x y : ContT r m α} (h : ∀ f, x.run f = y.run f) : x = y 
Arguments: {r : Type u} {m : Type u → Type v} {α : Type w} {x y : ContT r m α} (h : ∀ (f : α → m r), x.run f = y.run f)
Goal: x = y
-- ContT.monadLift_bind
theorem monadLift_bind [Monad m] [LawfulMonad m] {α β} (x : m α) (f : α → m β) :
    (monadLift (x >>= f) : ContT r m β) = monadLift x >>= monadLift ∘ f 
Arguments: {r : Type u} {m : Type u → Type v} [Monad m] [LawfulMonad m] {α β : Type u} (x : m α) (f : α → m β)
Goal: ContT.monadLift (x >>= f) = ContT.monadLift x >>= ContT.monadLift ∘ f
-- ExceptT.goto_mkLabel
theorem ExceptT.goto_mkLabel {α β ε : Type _} (x : Label (Except.{u, u} ε α) m β) (i : α) :
    goto (ExceptT.mkLabel x) i = ExceptT.mk (Except.ok <$> goto x (Except.ok i)) 
Arguments: {m : Type u → Type v} [Monad m] {α β ε : Type u} (x : ContT.Label (Except ε α) m β) (i : α)
Goal: ContT.goto (ExceptT.mkLabel x) i = ExceptT.mk (Except.ok <$> ContT.goto x (Except.ok i))
-- OptionT.goto_mkLabel
theorem OptionT.goto_mkLabel {α β : Type _} (x : Label (Option.{u} α) m β) (i : α) :
    goto (OptionT.mkLabel x) i = OptionT.mk (goto x (some i) >>= fun a => pure (some a)) 
Arguments: {m : Type u → Type v} [Monad m] {α β : Type u} (x : ContT.Label (Option α) m β) (i : α)
Goal: ContT.goto (OptionT.mkLabel x) i =
  OptionT.mk do
    let a ← ContT.goto x (some i)
    pure (some a)
-- WriterT.goto_mkLabel
theorem WriterT.goto_mkLabel {α β ω : Type _} [EmptyCollection ω] (x : Label (α × ω) m β) (i : α) :
    goto (WriterT.mkLabel x) i = monadLift (goto x (i, ∅)) 
Arguments: {m : Type u → Type v} [Monad m] {α : Type u_1} {β ω : Type u} [EmptyCollection ω] (x : ContT.Label (α × ω) m β) (i : α)
Goal: ContT.goto (WriterT.mkLabel x) i = monadLift (ContT.goto x (i, ∅))
-- WriterT.goto_mkLabel'
theorem WriterT.goto_mkLabel' {α β ω : Type _} [Monoid ω] (x : Label (α × ω) m β) (i : α) :
    goto (WriterT.mkLabel' x) i = monadLift (goto x (i, 1)) 
Arguments: {m : Type u → Type v} [Monad m] {α : Type u_1} {β ω : Type u} [Monoid ω] (x : ContT.Label (α × ω) m β) (i : α)
Goal: ContT.goto (WriterT.mkLabel' x) i = monadLift (ContT.goto x (i, 1))
-- StateT.goto_mkLabel
theorem StateT.goto_mkLabel {α β σ : Type u} (x : Label (α × σ) m (β × σ)) (i : α) :
    goto (StateT.mkLabel x) i = StateT.mk (fun s => goto x (i, s)) 
Arguments: {m : Type u → Type v} {α β σ : Type u} (x : ContT.Label (α × σ) m (β × σ)) (i : α)
Goal: ContT.goto (StateT.mkLabel x) i = StateT.mk fun s => ContT.goto x (i, s)
-- ReaderT.goto_mkLabel
theorem ReaderT.goto_mkLabel {α ρ β} (x : Label α m β) (i : α) :
    goto (ReaderT.mkLabel ρ x) i = monadLift (goto x i) 
Arguments: {m : Type u → Type v} {α : Type u_1} {ρ β : Type u} (x : ContT.Label α m β) (i : α)
Goal: ContT.goto (ReaderT.mkLabel ρ x) i = monadLift (ContT.goto x i)
-- Subgroup.leftTransversals.diff_mul_diff
@[to_additive]
theorem diff_mul_diff : diff ϕ R S * diff ϕ S T = diff ϕ R T 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {A : Type u_2} [CommGroup A] (ϕ : ↥H →* A) (R S T : ↑(Subgroup.leftTransversals ↑H)) [H.FiniteIndex]
Goal: Subgroup.leftTransversals.diff ϕ R S * Subgroup.leftTransversals.diff ϕ S T = Subgroup.leftTransversals.diff ϕ R T
-- AddSubgroup.leftTransversals.diff_add_diff
@[to_additive]
theorem diff_mul_diff : diff ϕ R S * diff ϕ S T = diff ϕ R T 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {A : Type u_2} [AddCommGroup A] (ϕ : ↥H →+ A) (R S T : ↑(AddSubgroup.leftTransversals ↑H)) [H.FiniteIndex]
Goal: AddSubgroup.leftTransversals.diff ϕ R S + AddSubgroup.leftTransversals.diff ϕ S T =
  AddSubgroup.leftTransversals.diff ϕ R T
-- AddSubgroup.leftTransversals.diff_self
@[to_additive]
theorem diff_self : diff ϕ T T = 1 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {A : Type u_2} [AddCommGroup A] (ϕ : ↥H →+ A) (T : ↑(AddSubgroup.leftTransversals ↑H)) [H.FiniteIndex]
Goal: AddSubgroup.leftTransversals.diff ϕ T T = 0
-- Subgroup.leftTransversals.diff_self
@[to_additive]
theorem diff_self : diff ϕ T T = 1 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {A : Type u_2} [CommGroup A] (ϕ : ↥H →* A) (T : ↑(Subgroup.leftTransversals ↑H)) [H.FiniteIndex]
Goal: Subgroup.leftTransversals.diff ϕ T T = 1
-- Subgroup.leftTransversals.diff_inv
@[to_additive]
theorem diff_inv : (diff ϕ S T)⁻¹ = diff ϕ T S 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {A : Type u_2} [CommGroup A] (ϕ : ↥H →* A) (S T : ↑(Subgroup.leftTransversals ↑H)) [H.FiniteIndex]
Goal: (Subgroup.leftTransversals.diff ϕ S T)⁻¹ = Subgroup.leftTransversals.diff ϕ T S
-- AddSubgroup.leftTransversals.diff_neg
@[to_additive]
theorem diff_inv : (diff ϕ S T)⁻¹ = diff ϕ T S 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {A : Type u_2} [AddCommGroup A] (ϕ : ↥H →+ A) (S T : ↑(AddSubgroup.leftTransversals ↑H)) [H.FiniteIndex]
Goal: -AddSubgroup.leftTransversals.diff ϕ S T = AddSubgroup.leftTransversals.diff ϕ T S
-- Subgroup.leftTransversals.smul_diff_smul
@[to_additive]
theorem smul_diff_smul (g : G) : diff ϕ (g • S) (g • T) = diff ϕ S T 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {A : Type u_2} [CommGroup A] (ϕ : ↥H →* A) (S T : ↑(Subgroup.leftTransversals ↑H)) [H.FiniteIndex] (g : G)
Goal: Subgroup.leftTransversals.diff ϕ (g • S) (g • T) = Subgroup.leftTransversals.diff ϕ S T
-- AddSubgroup.leftTransversals.vadd_diff_vadd
@[to_additive]
theorem smul_diff_smul (g : G) : diff ϕ (g • S) (g • T) = diff ϕ S T 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {A : Type u_2} [AddCommGroup A] (ϕ : ↥H →+ A) (S T : ↑(AddSubgroup.leftTransversals ↑H)) [H.FiniteIndex] (g : G)
Goal: AddSubgroup.leftTransversals.diff ϕ (g +ᵥ S) (g +ᵥ T) = AddSubgroup.leftTransversals.diff ϕ S T
-- AddMonoidHom.transfer_def
@[to_additive]
theorem transfer_def [FiniteIndex H] (g : G) : transfer ϕ g = diff ϕ T (g • T) 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {A : Type u_2} [AddCommGroup A] (ϕ : ↥H →+ A) (T : ↑(AddSubgroup.leftTransversals ↑H)) [H.FiniteIndex] (g : G)
Goal: ϕ.transfer g = AddSubgroup.leftTransversals.diff ϕ T (g +ᵥ T)