ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- exists_of_schnirelmannDensity_eq_zero
lemma exists_of_schnirelmannDensity_eq_zero {ε : ℝ} (hε : 0 < ε) (hA : schnirelmannDensity A = 0) :
    ∃ n, 0 < n ∧ ((Ioc 0 n).filter (· ∈ A)).card / n < ε 
Arguments: {A : Set ℕ} [DecidablePred fun x => x ∈ A] {ε : ℝ} (hε : 0 < ε) (hA : schnirelmannDensity A = 0)
Goal: ∃ n, 0 < n ∧ ↑(Finset.filter (fun x => x ∈ A) (Finset.Ioc 0 n)).card / ↑n < ε
-- schnirelmannDensity_empty
@[simp] lemma schnirelmannDensity_empty : schnirelmannDensity ∅ = 0 
Goal: schnirelmannDensity ∅ = 0
-- schnirelmannDensity_finset
lemma schnirelmannDensity_finset (A : Finset ℕ) : schnirelmannDensity A = 0 
Arguments: (A : Finset ℕ)
Goal: schnirelmannDensity ↑A = 0
-- schnirelmannDensity_finite
lemma schnirelmannDensity_finite {A : Set ℕ} [DecidablePred (· ∈ A)] (hA : A.Finite) :
    schnirelmannDensity A = 0 
Arguments: {A : Set ℕ} [DecidablePred fun x => x ∈ A] (hA : A.Finite)
Goal: schnirelmannDensity A = 0
-- schnirelmannDensity_univ
@[simp] lemma schnirelmannDensity_univ : schnirelmannDensity Set.univ = 1 
Goal: schnirelmannDensity Set.univ = 1
-- schnirelmannDensity_setOf_even
lemma schnirelmannDensity_setOf_even : schnirelmannDensity (setOf Even) = 0 
Goal: schnirelmannDensity (setOf Even) = 0
-- schnirelmannDensity_setOf_prime
lemma schnirelmannDensity_setOf_prime : schnirelmannDensity (setOf Nat.Prime) = 0 
Goal: schnirelmannDensity (setOf Nat.Prime) = 0
-- schnirelmannDensity_setOf_mod_eq_one
lemma schnirelmannDensity_setOf_mod_eq_one {m : ℕ} (hm : m ≠ 1) :
    schnirelmannDensity {n | n % m = 1} = (m⁻¹ : ℝ) 
Arguments: {m : ℕ} (hm : m ≠ 1)
Goal: schnirelmannDensity {n | n % m = 1} = (↑m)⁻¹
-- schnirelmannDensity_setOf_modeq_one
lemma schnirelmannDensity_setOf_modeq_one {m : ℕ} :
    schnirelmannDensity {n | n ≡ 1 [MOD m]} = (m⁻¹ : ℝ) 
Arguments: {m : ℕ}
Goal: schnirelmannDensity {n | n ≡ 1 [MOD m]} = (↑m)⁻¹
-- schnirelmannDensity_setOf_Odd
lemma schnirelmannDensity_setOf_Odd : schnirelmannDensity (setOf Odd) = 2⁻¹ 
Goal: schnirelmannDensity (setOf Odd) = 2⁻¹
-- mulDissociated_iff_sum_eq_subsingleton
@[to_additive] lemma mulDissociated_iff_sum_eq_subsingleton :
    MulDissociated s ↔ ∀ a, {t : Finset α | ↑t ⊆ s ∧ ∏ x in t, x = a}.Subsingleton 
Arguments: {α : Type u_1} [CommGroup α] {s : Set α}
Goal: MulDissociated s ↔ ∀ (a : α), {t | ↑t ⊆ s ∧ ∏ x ∈ t, x = a}.Subsingleton
-- addDissociated_iff_sum_eq_subsingleton
@[to_additive] lemma mulDissociated_iff_sum_eq_subsingleton :
    MulDissociated s ↔ ∀ a, {t : Finset α | ↑t ⊆ s ∧ ∏ x in t, x = a}.Subsingleton 
Arguments: {α : Type u_1} [AddCommGroup α] {s : Set α}
Goal: AddDissociated s ↔ ∀ (a : α), {t | ↑t ⊆ s ∧ ∑ x ∈ t, x = a}.Subsingleton
-- MulDissociated.subset
@[to_additive] lemma MulDissociated.subset {t : Set α} (hst : s ⊆ t) (ht : MulDissociated t) :
    MulDissociated s 
Arguments: {α : Type u_1} [CommGroup α] {s t : Set α} (hst : s ⊆ t) (ht : MulDissociated t)
Goal: MulDissociated s
-- AddDissociated.subset
@[to_additive] lemma MulDissociated.subset {t : Set α} (hst : s ⊆ t) (ht : MulDissociated t) :
    MulDissociated s 
Arguments: {α : Type u_1} [AddCommGroup α] {s t : Set α} (hst : s ⊆ t) (ht : AddDissociated t)
Goal: AddDissociated s
-- mulDissociated_empty
@[to_additive (attr := simp)] lemma mulDissociated_empty : MulDissociated (∅ : Set α) 
Arguments: {α : Type u_1} [CommGroup α]
Goal: MulDissociated ∅
-- addDissociated_empty
@[to_additive (attr := simp)] lemma mulDissociated_empty : MulDissociated (∅ : Set α) 
Arguments: {α : Type u_1} [AddCommGroup α]
Goal: AddDissociated ∅
-- mulDissociated_singleton
@[to_additive (attr := simp)]
lemma mulDissociated_singleton : MulDissociated ({a} : Set α) ↔ a ≠ 1 
Arguments: {α : Type u_1} [CommGroup α] {a : α}
Goal: MulDissociated {a} ↔ a ≠ 1
-- addDissociated_singleton
@[to_additive (attr := simp)]
lemma mulDissociated_singleton : MulDissociated ({a} : Set α) ↔ a ≠ 1 
Arguments: {α : Type u_1} [AddCommGroup α] {a : α}
Goal: AddDissociated {a} ↔ a ≠ 0
-- not_addDissociated
@[to_additive (attr := simp)]
lemma not_mulDissociated :
    ¬ MulDissociated s ↔
      ∃ t : Finset α, ↑t ⊆ s ∧ ∃ u : Finset α, ↑u ⊆ s ∧ t ≠ u ∧ ∏ x in t, x = ∏ x in u, x 
Arguments: {α : Type u_1} [AddCommGroup α] {s : Set α}
Goal: ¬AddDissociated s ↔ ∃ t, ↑t ⊆ s ∧ ∃ u, ↑u ⊆ s ∧ t ≠ u ∧ ∑ x ∈ t, x = ∑ x ∈ u, x
-- not_mulDissociated
@[to_additive (attr := simp)]
lemma not_mulDissociated :
    ¬ MulDissociated s ↔
      ∃ t : Finset α, ↑t ⊆ s ∧ ∃ u : Finset α, ↑u ⊆ s ∧ t ≠ u ∧ ∏ x in t, x = ∏ x in u, x 
Arguments: {α : Type u_1} [CommGroup α] {s : Set α}
Goal: ¬MulDissociated s ↔ ∃ t, ↑t ⊆ s ∧ ∃ u, ↑u ⊆ s ∧ t ≠ u ∧ ∏ x ∈ t, x = ∏ x ∈ u, x
-- not_addDissociated_iff_exists_disjoint
@[to_additive]
lemma not_mulDissociated_iff_exists_disjoint :
    ¬ MulDissociated s ↔
      ∃ t u : Finset α, ↑t ⊆ s ∧ ↑u ⊆ s ∧ Disjoint t u ∧ t ≠ u ∧ ∏ a in t, a = ∏ a in u, a 
Arguments: {α : Type u_1} [AddCommGroup α] {s : Set α}
Goal: ¬AddDissociated s ↔ ∃ t u, ↑t ⊆ s ∧ ↑u ⊆ s ∧ Disjoint t u ∧ t ≠ u ∧ ∑ a ∈ t, a = ∑ a ∈ u, a
-- not_mulDissociated_iff_exists_disjoint
@[to_additive]
lemma not_mulDissociated_iff_exists_disjoint :
    ¬ MulDissociated s ↔
      ∃ t u : Finset α, ↑t ⊆ s ∧ ↑u ⊆ s ∧ Disjoint t u ∧ t ≠ u ∧ ∏ a in t, a = ∏ a in u, a 
Arguments: {α : Type u_1} [CommGroup α] {s : Set α}
Goal: ¬MulDissociated s ↔ ∃ t u, ↑t ⊆ s ∧ ↑u ⊆ s ∧ Disjoint t u ∧ t ≠ u ∧ ∏ a ∈ t, a = ∏ a ∈ u, a
-- AddEquiv.addDissociated_preimage
@[to_additive (attr := simp)] lemma MulEquiv.mulDissociated_preimage (e : β ≃* α) :
    MulDissociated (e ⁻¹' s) ↔ MulDissociated s 
Arguments: {α : Type u_1} {β : Type u_2} [AddCommGroup α] [AddCommGroup β] {s : Set α} (e : β ≃+ α)
Goal: AddDissociated (⇑e ⁻¹' s) ↔ AddDissociated s
-- MulEquiv.mulDissociated_preimage
@[to_additive (attr := simp)] lemma MulEquiv.mulDissociated_preimage (e : β ≃* α) :
    MulDissociated (e ⁻¹' s) ↔ MulDissociated s 
Arguments: {α : Type u_1} {β : Type u_2} [CommGroup α] [CommGroup β] {s : Set α} (e : β ≃* α)
Goal: MulDissociated (⇑e ⁻¹' s) ↔ MulDissociated s
-- mulDissociated_inv
@[to_additive (attr := simp)] lemma mulDissociated_inv : MulDissociated s⁻¹ ↔ MulDissociated s 
Arguments: {α : Type u_1} [CommGroup α] {s : Set α}
Goal: MulDissociated s⁻¹ ↔ MulDissociated s
-- addDissociated_neg
@[to_additive (attr := simp)] lemma mulDissociated_inv : MulDissociated s⁻¹ ↔ MulDissociated s 
Arguments: {α : Type u_1} [AddCommGroup α] {s : Set α}
Goal: AddDissociated (-s) ↔ AddDissociated s
-- Finset.mem_mulSpan
@[to_additive (attr := simp)]
lemma mem_mulSpan :
    a ∈ mulSpan s ↔ ∃ ε : α → ℤ, (∀ a, ε a = -1 ∨ ε a = 0 ∨ ε a = 1) ∧ ∏ a in s, a ^ ε a = a 
Arguments: {α : Type u_1} [CommGroup α] [DecidableEq α] [Fintype α] {s : Finset α} {a : α}
Goal: a ∈ s.mulSpan ↔ ∃ ε, (∀ (a : α), ε a = -1 ∨ ε a = 0 ∨ ε a = 1) ∧ ∏ a ∈ s, a ^ ε a = a
-- Finset.mem_addSpan
@[to_additive (attr := simp)]
lemma mem_mulSpan :
    a ∈ mulSpan s ↔ ∃ ε : α → ℤ, (∀ a, ε a = -1 ∨ ε a = 0 ∨ ε a = 1) ∧ ∏ a in s, a ^ ε a = a 
Arguments: {α : Type u_1} [AddCommGroup α] [DecidableEq α] [Fintype α] {s : Finset α} {a : α}
Goal: a ∈ s.addSpan ↔ ∃ ε, (∀ (a : α), ε a = -1 ∨ ε a = 0 ∨ ε a = 1) ∧ ∑ a ∈ s, ε a • a = a
-- Finset.subset_mulSpan
@[to_additive (attr := simp)]
lemma subset_mulSpan : s ⊆ mulSpan s 
Arguments: {α : Type u_1} [CommGroup α] [DecidableEq α] [Fintype α] {s : Finset α}
Goal: s ⊆ s.mulSpan
-- Finset.subset_addSpan
@[to_additive (attr := simp)]
lemma subset_mulSpan : s ⊆ mulSpan s 
Arguments: {α : Type u_1} [AddCommGroup α] [DecidableEq α] [Fintype α] {s : Finset α}
Goal: s ⊆ s.addSpan
-- Finset.sum_sub_sum_mem_addSpan
@[to_additive]
lemma prod_div_prod_mem_mulSpan (ht : t ⊆ s) (hu : u ⊆ s) :
    (∏ a in t, a) / ∏ a in u, a ∈ mulSpan s 
Arguments: {α : Type u_1} [AddCommGroup α] [DecidableEq α] [Fintype α] {s t u : Finset α} (ht : t ⊆ s) (hu : u ⊆ s)
Goal: ∑ a ∈ t, a - ∑ a ∈ u, a ∈ s.addSpan
-- Finset.prod_div_prod_mem_mulSpan
@[to_additive]
lemma prod_div_prod_mem_mulSpan (ht : t ⊆ s) (hu : u ⊆ s) :
    (∏ a in t, a) / ∏ a in u, a ∈ mulSpan s 
Arguments: {α : Type u_1} [CommGroup α] [DecidableEq α] [Fintype α] {s t u : Finset α} (ht : t ⊆ s) (hu : u ⊆ s)
Goal: (∏ a ∈ t, a) / ∏ a ∈ u, a ∈ s.mulSpan
-- Finset.exists_subset_mulSpan_card_le_of_forall_mulDissociated
@[to_additive "If every dissociated subset of `s` has size at most `d`, then `s` is actually
generated by a subset of size at most `d`.

This is a dissociation analog of the fact that a set whose linearly independent subspaces all have
size at most `d` is of dimension at most `d` itself."]
lemma exists_subset_mulSpan_card_le_of_forall_mulDissociated
    (hs : ∀ s', s' ⊆ s → MulDissociated (s' : Set α) → s'.card ≤ d) :
    ∃ s', s' ⊆ s ∧ s'.card ≤ d ∧ s ⊆ mulSpan s' 
Arguments: {α : Type u_1} [CommGroup α] [DecidableEq α] [Fintype α] {s : Finset α} {d : ℕ} (hs : ∀ s' ⊆ s, MulDissociated ↑s' → s'.card ≤ d)
Goal: ∃ s' ⊆ s, s'.card ≤ d ∧ s ⊆ s'.mulSpan
-- Finset.exists_subset_addSpan_card_le_of_forall_addDissociated
@[to_additive "If every dissociated subset of `s` has size at most `d`, then `s` is actually
generated by a subset of size at most `d`.

This is a dissociation analog of the fact that a set whose linearly independent subspaces all have
size at most `d` is of dimension at most `d` itself."]
lemma exists_subset_mulSpan_card_le_of_forall_mulDissociated
    (hs : ∀ s', s' ⊆ s → MulDissociated (s' : Set α) → s'.card ≤ d) :
    ∃ s', s' ⊆ s ∧ s'.card ≤ d ∧ s ⊆ mulSpan s' 
Arguments: {α : Type u_1} [AddCommGroup α] [DecidableEq α] [Fintype α] {s : Finset α} {d : ℕ} (hs : ∀ s' ⊆ s, AddDissociated ↑s' → s'.card ≤ d)
Goal: ∃ s' ⊆ s, s'.card ≤ d ∧ s ⊆ s'.addSpan
-- HallMarriageTheorem.hall_cond_of_erase
theorem hall_cond_of_erase {x : ι} (a : α)
    (ha : ∀ s : Finset ι, s.Nonempty → s ≠ univ → s.card < (s.biUnion t).card)
    (s' : Finset { x' : ι | x' ≠ x }) : s'.card ≤ (s'.biUnion fun x' => (t x').erase a).card 
Arguments: {ι : Type u} {α : Type v} [DecidableEq α] {t : ι → Finset α} [Fintype ι] {x : ι} (a : α) (ha : ∀ (s : Finset ι), s.Nonempty → s ≠ Finset.univ → s.card < (s.biUnion t).card) (s' : Finset ↑{x' | x' ≠ x})
Goal: s'.card ≤ (s'.biUnion fun x' => (t ↑x').erase a).card
-- HallMarriageTheorem.hall_hard_inductive_step_A
theorem hall_hard_inductive_step_A {n : ℕ} (hn : Fintype.card ι = n + 1)
    (ht : ∀ s : Finset ι, s.card ≤ (s.biUnion t).card)
    (ih :
      ∀ {ι' : Type u} [Fintype ι'] (t' : ι' → Finset α),
        Fintype.card ι' ≤ n →
          (∀ s' : Finset ι', s'.card ≤ (s'.biUnion t').card) →
            ∃ f : ι' → α, Function.Injective f ∧ ∀ x, f x ∈ t' x)
    (ha : ∀ s : Finset ι, s.Nonempty → s ≠ univ → s.card < (s.biUnion t).card) :
    ∃ f : ι → α, Function.Injective f ∧ ∀ x, f x ∈ t x 
Arguments: {ι : Type u} {α : Type v} [DecidableEq α] {t : ι → Finset α} [Fintype ι] {n : ℕ} (hn : Fintype.card ι = n + 1) (ht : ∀ (s : Finset ι), s.card ≤ (s.biUnion t).card) (ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), s'.card ≤ (s'.biUnion t').card) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x) (ha : ∀ (s : Finset ι), s.Nonempty → s ≠ Finset.univ → s.card < (s.biUnion t).card)
Goal: ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
-- HallMarriageTheorem.hall_cond_of_restrict
theorem hall_cond_of_restrict {ι : Type u} {t : ι → Finset α} {s : Finset ι}
    (ht : ∀ s : Finset ι, s.card ≤ (s.biUnion t).card) (s' : Finset (s : Set ι)) :
    s'.card ≤ (s'.biUnion fun a' => t a').card 
Arguments: {α : Type v} [DecidableEq α] {ι : Type u} {t : ι → Finset α} {s : Finset ι} (ht : ∀ (s : Finset ι), s.card ≤ (s.biUnion t).card) (s' : Finset ↑↑s)
Goal: s'.card ≤ (s'.biUnion fun a' => t ↑a').card
-- HallMarriageTheorem.hall_cond_of_compl
theorem hall_cond_of_compl {ι : Type u} {t : ι → Finset α} {s : Finset ι}
    (hus : s.card = (s.biUnion t).card) (ht : ∀ s : Finset ι, s.card ≤ (s.biUnion t).card)
    (s' : Finset (sᶜ : Set ι)) : s'.card ≤ (s'.biUnion fun x' => t x' \ s.biUnion t).card 
Arguments: {α : Type v} [DecidableEq α] {ι : Type u} {t : ι → Finset α} {s : Finset ι} (hus : s.card = (s.biUnion t).card) (ht : ∀ (s : Finset ι), s.card ≤ (s.biUnion t).card) (s' : Finset ↑(↑s)ᶜ)
Goal: s'.card ≤ (s'.biUnion fun x' => t ↑x' \ s.biUnion t).card
-- HallMarriageTheorem.hall_hard_inductive_step_B
theorem hall_hard_inductive_step_B {n : ℕ} (hn : Fintype.card ι = n + 1)
    (ht : ∀ s : Finset ι, s.card ≤ (s.biUnion t).card)
    (ih :
      ∀ {ι' : Type u} [Fintype ι'] (t' : ι' → Finset α),
        Fintype.card ι' ≤ n →
          (∀ s' : Finset ι', s'.card ≤ (s'.biUnion t').card) →
            ∃ f : ι' → α, Function.Injective f ∧ ∀ x, f x ∈ t' x)
    (s : Finset ι) (hs : s.Nonempty) (hns : s ≠ univ) (hus : s.card = (s.biUnion t).card) :
    ∃ f : ι → α, Function.Injective f ∧ ∀ x, f x ∈ t x 
Arguments: {ι : Type u} {α : Type v} [DecidableEq α] {t : ι → Finset α} [Fintype ι] {n : ℕ} (hn : Fintype.card ι = n + 1) (ht : ∀ (s : Finset ι), s.card ≤ (s.biUnion t).card) (ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), s'.card ≤ (s'.biUnion t').card) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x) (s : Finset ι) (hs : s.Nonempty) (hns : s ≠ Finset.univ) (hus : s.card = (s.biUnion t).card)
Goal: ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
-- HallMarriageTheorem.hall_hard_inductive
theorem hall_hard_inductive (ht : ∀ s : Finset ι, s.card ≤ (s.biUnion t).card) :
    ∃ f : ι → α, Function.Injective f ∧ ∀ x, f x ∈ t x 
Arguments: {ι : Type u} {α : Type v} [DecidableEq α] {t : ι → Finset α} [Finite ι] (ht : ∀ (s : Finset ι), s.card ≤ (s.biUnion t).card)
Goal: ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
-- Finset.all_card_le_biUnion_card_iff_existsInjective'
theorem Finset.all_card_le_biUnion_card_iff_existsInjective' {ι α : Type*} [Finite ι]
    [DecidableEq α] (t : ι → Finset α) :
    (∀ s : Finset ι, s.card ≤ (s.biUnion t).card) ↔
      ∃ f : ι → α, Function.Injective f ∧ ∀ x, f x ∈ t x 
Arguments: {ι : Type u_1} {α : Type u_2} [Finite ι] [DecidableEq α] (t : ι → Finset α)
Goal: (∀ (s : Finset ι), s.card ≤ (s.biUnion t).card) ↔ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
-- ThreeAPFree.mono
@[to_additive]
theorem ThreeGPFree.mono (h : t ⊆ s) (hs : ThreeGPFree s) : ThreeGPFree t 
Arguments: {α : Type u_2} [AddMonoid α] {s t : Set α} (h : t ⊆ s) (hs : ThreeAPFree s)
Goal: ThreeAPFree t
-- ThreeGPFree.mono
@[to_additive]
theorem ThreeGPFree.mono (h : t ⊆ s) (hs : ThreeGPFree s) : ThreeGPFree t 
Arguments: {α : Type u_2} [Monoid α] {s t : Set α} (h : t ⊆ s) (hs : ThreeGPFree s)
Goal: ThreeGPFree t
-- threeGPFree_empty
@[to_additive (attr := simp)]
theorem threeGPFree_empty : ThreeGPFree (∅ : Set α) 
Arguments: {α : Type u_2} [Monoid α]
Goal: ThreeGPFree ∅
-- threeAPFree_empty
@[to_additive (attr := simp)]
theorem threeGPFree_empty : ThreeGPFree (∅ : Set α) 
Arguments: {α : Type u_2} [AddMonoid α]
Goal: ThreeAPFree ∅
-- Set.Subsingleton.threeGPFree
@[to_additive]
theorem Set.Subsingleton.threeGPFree (hs : s.Subsingleton) : ThreeGPFree s 
Arguments: {α : Type u_2} [Monoid α] {s : Set α} (hs : s.Subsingleton)
Goal: ThreeGPFree s
-- Set.Subsingleton.threeAPFree
@[to_additive]
theorem Set.Subsingleton.threeGPFree (hs : s.Subsingleton) : ThreeGPFree s 
Arguments: {α : Type u_2} [AddMonoid α] {s : Set α} (hs : s.Subsingleton)
Goal: ThreeAPFree s
-- threeAPFree_singleton
@[to_additive (attr := simp)]
theorem threeGPFree_singleton (a : α) : ThreeGPFree ({a} : Set α) 
Arguments: {α : Type u_2} [AddMonoid α] (a : α)
Goal: ThreeAPFree {a}
-- threeGPFree_singleton
@[to_additive (attr := simp)]
theorem threeGPFree_singleton (a : α) : ThreeGPFree ({a} : Set α) 
Arguments: {α : Type u_2} [Monoid α] (a : α)
Goal: ThreeGPFree {a}
-- ThreeAPFree.prod
@[to_additive ThreeAPFree.prod]
theorem ThreeGPFree.prod {t : Set β} (hs : ThreeGPFree s) (ht : ThreeGPFree t) :
    ThreeGPFree (s ×ˢ t) 
Arguments: {α : Type u_2} {β : Type u_3} [AddMonoid α] [AddMonoid β] {s : Set α} {t : Set β} (hs : ThreeAPFree s) (ht : ThreeAPFree t)
Goal: ThreeAPFree (s ×ˢ t)
-- ThreeGPFree.prod
@[to_additive ThreeAPFree.prod]
theorem ThreeGPFree.prod {t : Set β} (hs : ThreeGPFree s) (ht : ThreeGPFree t) :
    ThreeGPFree (s ×ˢ t) 
Arguments: {α : Type u_2} {β : Type u_3} [Monoid α] [Monoid β] {s : Set α} {t : Set β} (hs : ThreeGPFree s) (ht : ThreeGPFree t)
Goal: ThreeGPFree (s ×ˢ t)
-- threeAPFree_pi
@[to_additive]
theorem threeGPFree_pi {ι : Type*} {α : ι → Type*} [∀ i, Monoid (α i)] {s : ∀ i, Set (α i)}
    (hs : ∀ i, ThreeGPFree (s i)) : ThreeGPFree ((univ : Set ι).pi s) 
Arguments: {ι : Type u_6} {α : ι → Type u_7} [(i : ι) → AddMonoid (α i)] {s : (i : ι) → Set (α i)} (hs : ∀ (i : ι), ThreeAPFree (s i))
Goal: ThreeAPFree (Set.univ.pi s)
-- threeGPFree_pi
@[to_additive]
theorem threeGPFree_pi {ι : Type*} {α : ι → Type*} [∀ i, Monoid (α i)] {s : ∀ i, Set (α i)}
    (hs : ∀ i, ThreeGPFree (s i)) : ThreeGPFree ((univ : Set ι).pi s) 
Arguments: {ι : Type u_6} {α : ι → Type u_7} [(i : ι) → Monoid (α i)] {s : (i : ι) → Set (α i)} (hs : ∀ (i : ι), ThreeGPFree (s i))
Goal: ThreeGPFree (Set.univ.pi s)
-- ThreeAPFree.of_image
@[to_additive
"Arithmetic progressions of length three are preserved under `2`-Freiman homomorphisms."]
lemma ThreeGPFree.of_image (hf : IsMulFreimanHom 2 s t f) (hf' : s.InjOn f) (hAs : A ⊆ s)
    (hA : ThreeGPFree (f '' A)) : ThreeGPFree A 
Arguments: {α : Type u_2} {β : Type u_3} [AddCommMonoid α] [AddCommMonoid β] {s A : Set α} {t : Set β} {f : α → β} (hf : IsAddFreimanHom 2 s t f) (hf' : Set.InjOn f s) (hAs : A ⊆ s) (hA : ThreeAPFree (f '' A))
Goal: ThreeAPFree A
-- ThreeGPFree.of_image
@[to_additive
"Arithmetic progressions of length three are preserved under `2`-Freiman homomorphisms."]
lemma ThreeGPFree.of_image (hf : IsMulFreimanHom 2 s t f) (hf' : s.InjOn f) (hAs : A ⊆ s)
    (hA : ThreeGPFree (f '' A)) : ThreeGPFree A 
Arguments: {α : Type u_2} {β : Type u_3} [CommMonoid α] [CommMonoid β] {s A : Set α} {t : Set β} {f : α → β} (hf : IsMulFreimanHom 2 s t f) (hf' : Set.InjOn f s) (hAs : A ⊆ s) (hA : ThreeGPFree (f '' A))
Goal: ThreeGPFree A
-- threeAPFree_image
@[to_additive
"Arithmetic progressions of length three are preserved under `2`-Freiman isomorphisms."]
lemma threeGPFree_image (hf : IsMulFreimanIso 2 s t f) (hAs : A ⊆ s) :
    ThreeGPFree (f '' A) ↔ ThreeGPFree A 
Arguments: {α : Type u_2} {β : Type u_3} [AddCommMonoid α] [AddCommMonoid β] {s A : Set α} {t : Set β} {f : α → β} (hf : IsAddFreimanIso 2 s t f) (hAs : A ⊆ s)
Goal: ThreeAPFree (f '' A) ↔ ThreeAPFree A
-- threeGPFree_image
@[to_additive
"Arithmetic progressions of length three are preserved under `2`-Freiman isomorphisms."]
lemma threeGPFree_image (hf : IsMulFreimanIso 2 s t f) (hAs : A ⊆ s) :
    ThreeGPFree (f '' A) ↔ ThreeGPFree A 
Arguments: {α : Type u_2} {β : Type u_3} [CommMonoid α] [CommMonoid β] {s A : Set α} {t : Set β} {f : α → β} (hf : IsMulFreimanIso 2 s t f) (hAs : A ⊆ s)
Goal: ThreeGPFree (f '' A) ↔ ThreeGPFree A
-- IsMulFreimanHom.threeGPFree
@[to_additive]
lemma IsMulFreimanHom.threeGPFree (hf : IsMulFreimanHom 2 s t f) (hf' : s.InjOn f)
    (ht : ThreeGPFree t) : ThreeGPFree s 
Arguments: {α : Type u_2} {β : Type u_3} [CommMonoid α] [CommMonoid β] {s : Set α} {t : Set β} {f : α → β} (hf : IsMulFreimanHom 2 s t f) (hf' : Set.InjOn f s) (ht : ThreeGPFree t)
Goal: ThreeGPFree s
-- IsAddFreimanHom.threeAPFree
@[to_additive]
lemma IsMulFreimanHom.threeGPFree (hf : IsMulFreimanHom 2 s t f) (hf' : s.InjOn f)
    (ht : ThreeGPFree t) : ThreeGPFree s 
Arguments: {α : Type u_2} {β : Type u_3} [AddCommMonoid α] [AddCommMonoid β] {s : Set α} {t : Set β} {f : α → β} (hf : IsAddFreimanHom 2 s t f) (hf' : Set.InjOn f s) (ht : ThreeAPFree t)
Goal: ThreeAPFree s
-- IsAddFreimanIso.threeAPFree_congr
@[to_additive]
lemma IsMulFreimanIso.threeGPFree_congr (hf : IsMulFreimanIso 2 s t f) :
    ThreeGPFree s ↔ ThreeGPFree t 
Arguments: {α : Type u_2} {β : Type u_3} [AddCommMonoid α] [AddCommMonoid β] {s : Set α} {t : Set β} {f : α → β} (hf : IsAddFreimanIso 2 s t f)
Goal: ThreeAPFree s ↔ ThreeAPFree t
-- IsMulFreimanIso.threeGPFree_congr
@[to_additive]
lemma IsMulFreimanIso.threeGPFree_congr (hf : IsMulFreimanIso 2 s t f) :
    ThreeGPFree s ↔ ThreeGPFree t 
Arguments: {α : Type u_2} {β : Type u_3} [CommMonoid α] [CommMonoid β] {s : Set α} {t : Set β} {f : α → β} (hf : IsMulFreimanIso 2 s t f)
Goal: ThreeGPFree s ↔ ThreeGPFree t
-- ThreeGPFree.image'
@[to_additive]
theorem ThreeGPFree.image' [FunLike F α β] [MulHomClass F α β] (f : F) (hf : (s * s).InjOn f)
    (h : ThreeGPFree s) : ThreeGPFree (f '' s) 
Arguments: {F : Type u_1} {α : Type u_2} {β : Type u_3} [CommMonoid α] [CommMonoid β] {s : Set α} [FunLike F α β] [MulHomClass F α β] (f : F) (hf : Set.InjOn (⇑f) (s * s)) (h : ThreeGPFree s)
Goal: ThreeGPFree (⇑f '' s)
-- ThreeAPFree.image'
@[to_additive]
theorem ThreeGPFree.image' [FunLike F α β] [MulHomClass F α β] (f : F) (hf : (s * s).InjOn f)
    (h : ThreeGPFree s) : ThreeGPFree (f '' s) 
Arguments: {F : Type u_1} {α : Type u_2} {β : Type u_3} [AddCommMonoid α] [AddCommMonoid β] {s : Set α} [FunLike F α β] [AddHomClass F α β] (f : F) (hf : Set.InjOn (⇑f) (s + s)) (h : ThreeAPFree s)
Goal: ThreeAPFree (⇑f '' s)
-- ThreeGPFree.eq_right
lemma ThreeGPFree.eq_right (hs : ThreeGPFree s) :
    ∀ ⦃a⦄, a ∈ s → ∀ ⦃b⦄, b ∈ s → ∀ ⦃c⦄, c ∈ s → a * c = b * b → b = c 
Arguments: {α : Type u_2} [CancelCommMonoid α] {s : Set α} (hs : ThreeGPFree s) ⦃a : α⦄
Goal: a ∈ s → ∀ ⦃b : α⦄, b ∈ s → ∀ ⦃c : α⦄, c ∈ s → a * c = b * b → b = c
-- threeAPFree_insert
@[to_additive] lemma threeGPFree_insert :
    ThreeGPFree (insert a s) ↔ ThreeGPFree s ∧
      (∀ ⦃b⦄, b ∈ s → ∀ ⦃c⦄, c ∈ s → a * c = b * b → a = b) ∧
        ∀ ⦃b⦄, b ∈ s → ∀ ⦃c⦄, c ∈ s → b * c = a * a → b = a 
Arguments: {α : Type u_2} [AddCancelCommMonoid α] {s : Set α} {a : α}
Goal: ThreeAPFree (insert a s) ↔
  ThreeAPFree s ∧
    (∀ ⦃b : α⦄, b ∈ s → ∀ ⦃c : α⦄, c ∈ s → a + c = b + b → a = b) ∧
      ∀ ⦃b : α⦄, b ∈ s → ∀ ⦃c : α⦄, c ∈ s → b + c = a + a → b = a
-- threeGPFree_insert
@[to_additive] lemma threeGPFree_insert :
    ThreeGPFree (insert a s) ↔ ThreeGPFree s ∧
      (∀ ⦃b⦄, b ∈ s → ∀ ⦃c⦄, c ∈ s → a * c = b * b → a = b) ∧
        ∀ ⦃b⦄, b ∈ s → ∀ ⦃c⦄, c ∈ s → b * c = a * a → b = a 
Arguments: {α : Type u_2} [CancelCommMonoid α] {s : Set α} {a : α}
Goal: ThreeGPFree (insert a s) ↔
  ThreeGPFree s ∧
    (∀ ⦃b : α⦄, b ∈ s → ∀ ⦃c : α⦄, c ∈ s → a * c = b * b → a = b) ∧
      ∀ ⦃b : α⦄, b ∈ s → ∀ ⦃c : α⦄, c ∈ s → b * c = a * a → b = a
-- ThreeGPFree.smul_set
@[to_additive]
theorem ThreeGPFree.smul_set (hs : ThreeGPFree s) : ThreeGPFree (a • s) 
Arguments: {α : Type u_2} [CancelCommMonoid α] {s : Set α} {a : α} (hs : ThreeGPFree s)
Goal: ThreeGPFree (a • s)
-- ThreeAPFree.vadd_set
@[to_additive]
theorem ThreeGPFree.smul_set (hs : ThreeGPFree s) : ThreeGPFree (a • s) 
Arguments: {α : Type u_2} [AddCancelCommMonoid α] {s : Set α} {a : α} (hs : ThreeAPFree s)
Goal: ThreeAPFree (a +ᵥ s)
-- threeAPFree_vadd_set
@[to_additive] lemma threeGPFree_smul_set : ThreeGPFree (a • s) ↔ ThreeGPFree s 
Arguments: {α : Type u_2} [AddCancelCommMonoid α] {s : Set α} {a : α}
Goal: ThreeAPFree (a +ᵥ s) ↔ ThreeAPFree s
-- threeGPFree_smul_set
@[to_additive] lemma threeGPFree_smul_set : ThreeGPFree (a • s) ↔ ThreeGPFree s 
Arguments: {α : Type u_2} [CancelCommMonoid α] {s : Set α} {a : α}
Goal: ThreeGPFree (a • s) ↔ ThreeGPFree s
-- threeGPFree_insert_of_lt
@[to_additive]
theorem threeGPFree_insert_of_lt (hs : ∀ i ∈ s, i < a) :
    ThreeGPFree (insert a s) ↔
      ThreeGPFree s ∧ ∀ ⦃b⦄, b ∈ s → ∀ ⦃c⦄, c ∈ s → a * c = b * b → a = b 
Arguments: {α : Type u_2} [OrderedCancelCommMonoid α] {s : Set α} {a : α} (hs : ∀ i ∈ s, i < a)
Goal: ThreeGPFree (insert a s) ↔ ThreeGPFree s ∧ ∀ ⦃b : α⦄, b ∈ s → ∀ ⦃c : α⦄, c ∈ s → a * c = b * b → a = b
-- threeAPFree_insert_of_lt
@[to_additive]
theorem threeGPFree_insert_of_lt (hs : ∀ i ∈ s, i < a) :
    ThreeGPFree (insert a s) ↔
      ThreeGPFree s ∧ ∀ ⦃b⦄, b ∈ s → ∀ ⦃c⦄, c ∈ s → a * c = b * b → a = b 
Arguments: {α : Type u_2} [OrderedCancelAddCommMonoid α] {s : Set α} {a : α} (hs : ∀ i ∈ s, i < a)
Goal: ThreeAPFree (insert a s) ↔ ThreeAPFree s ∧ ∀ ⦃b : α⦄, b ∈ s → ∀ ⦃c : α⦄, c ∈ s → a + c = b + b → a = b
-- ThreeGPFree.smul_set₀
lemma ThreeGPFree.smul_set₀ (hs : ThreeGPFree s) (ha : a ≠ 0) : ThreeGPFree (a • s) 
Arguments: {α : Type u_2} [CancelCommMonoidWithZero α] [NoZeroDivisors α] {s : Set α} {a : α} (hs : ThreeGPFree s) (ha : a ≠ 0)
Goal: ThreeGPFree (a • s)