Theorem: IsPGroup.exists_le_sylow
File: Mathlib/GroupTheory/Sylow.lean

tactic: refine' Exists.imp (fun k hk => _) (hc1 S.2 ⟨g, hg⟩)
state_before: p : ℕ
G : Type u_1
inst✝ : Group G
P : Subgroup G
hP : IsPGroup p { x // x ∈ P }
c : Set (Subgroup G)
hc1 : c ⊆ {Q | IsPGroup p { x // x ∈ Q }}
hc2 : IsChain (fun x x_1 => x ≤ x_1) c
Q : Subgroup G
hQ : Q ∈ c
x✝ :
  { x //
    x ∈
      {
        toSubmonoid :=
          {
            toSubsemigroup :=
              { carrier := ⋃ (R : ↑c), ↑↑R,
                mul_mem' :=
                  (_ : ∀ {g : G} (h : G), (g ∈ ⋃ (R : ↑c), ↑↑R) → (h ∈ ⋃ (R : ↑c), ↑↑R) → g * h ∈ ⋃ (R : ↑c), ↑↑R) },
            one_mem' := (_ : ∃ t, (t ∈ Set.range fun R => ↑↑R) ∧ 1 ∈ t) },
        inv_mem' :=
          (_ :
            ∀ {g : G},
              g ∈
                  {
                        toSubsemigroup :=
                          { carrier := ⋃ (R : ↑c), ↑↑R,
                            mul_mem' :=
                              (_ :
                                ∀ {g : G} (h : G),
                                  (g ∈ ⋃ (R : ↑c), ↑↑R) → (h ∈ ⋃ (R : ↑c), ↑↑R) → g * h ∈ ⋃ (R : ↑c), ↑↑R) },
                        one_mem' := (_ : ∃ t, (t ∈ Set.range fun R => ↑↑R) ∧ 1 ∈ t) }.toSubsemigroup.carrier →
                g⁻¹ ∈
                  {
                        toSubsemigroup :=
                          { carrier := ⋃ (R : ↑c), ↑↑R,
                            mul_mem' :=
                              (_ :
                                ∀ {g : G} (h : G),
                                  (g ∈ ⋃ (R : ↑c), ↑↑R) → (h ∈ ⋃ (R : ↑c), ↑↑R) → g * h ∈ ⋃ (R : ↑c), ↑↑R) },
                        one_mem' := (_ : ∃ t, (t ∈ Set.range fun R => ↑↑R) ∧ 1 ∈ t) }.toSubsemigroup.carrier) } }
g : G
S : ↑c
hg : g ∈ (fun R => ↑↑R) S
⊢ ∃ k, { val := g, property := (_ : ∃ t, (t ∈ Set.range fun R => ↑↑R) ∧ g ∈ t) } ^ p ^ k = 1

tactic: rwa [Subtype.ext_iff, coe_pow] at hk⊢
state_before: p : ℕ
G : Type u_1
inst✝ : Group G
P : Subgroup G
hP : IsPGroup p { x // x ∈ P }
c : Set (Subgroup G)
hc1 : c ⊆ {Q | IsPGroup p { x // x ∈ Q }}
hc2 : IsChain (fun x x_1 => x ≤ x_1) c
Q : Subgroup G
hQ : Q ∈ c
x✝ :
  { x //
    x ∈
      {
        toSubmonoid :=
          {
            toSubsemigroup :=
              { carrier := ⋃ (R : ↑c), ↑↑R,
                mul_mem' :=
                  (_ : ∀ {g : G} (h : G), (g ∈ ⋃ (R : ↑c), ↑↑R) → (h ∈ ⋃ (R : ↑c), ↑↑R) → g * h ∈ ⋃ (R : ↑c), ↑↑R) },
            one_mem' := (_ : ∃ t, (t ∈ Set.range fun R => ↑↑R) ∧ 1 ∈ t) },
        inv_mem' :=
          (_ :
            ∀ {g : G},
              g ∈
                  {
                        toSubsemigroup :=
                          { carrier := ⋃ (R : ↑c), ↑↑R,
                            mul_mem' :=
                              (_ :
                                ∀ {g : G} (h : G),
                                  (g ∈ ⋃ (R : ↑c), ↑↑R) → (h ∈ ⋃ (R : ↑c), ↑↑R) → g * h ∈ ⋃ (R : ↑c), ↑↑R) },
                        one_mem' := (_ : ∃ t, (t ∈ Set.range fun R => ↑↑R) ∧ 1 ∈ t) }.toSubsemigroup.carrier →
                g⁻¹ ∈
                  {
                        toSubsemigroup :=
                          { carrier := ⋃ (R : ↑c), ↑↑R,
                            mul_mem' :=
                              (_ :
                                ∀ {g : G} (h : G),
                                  (g ∈ ⋃ (R : ↑c), ↑↑R) → (h ∈ ⋃ (R : ↑c), ↑↑R) → g * h ∈ ⋃ (R : ↑c), ↑↑R) },
                        one_mem' := (_ : ∃ t, (t ∈ Set.range fun R => ↑↑R) ∧ 1 ∈ t) }.toSubsemigroup.carrier) } }
g : G
S : ↑c
hg : g ∈ (fun R => ↑↑R) S
k : ℕ
hk : { val := g, property := hg } ^ p ^ k = 1
⊢ { val := g, property := (_ : ∃ t, (t ∈ Set.range fun R => ↑↑R) ∧ g ∈ t) } ^ p ^ k = 1