/-- The difference with `StarSubalgebra.adjoin_induction` is that this acts on the subtype. -/
theorem adjoin_induction' {s : Set A} {p : adjoin R s → Prop} (a : adjoin R s)
    (Hs : ∀ (x) (h : x ∈ s), p ⟨x, subset_adjoin R s h⟩) (Halg : ∀ r, p (algebraMap R _ r))
    (Hadd : ∀ x y, p x → p y → p (x + y)) (Hmul : ∀ x y, p x → p y → p (x * y))
    (Hstar : ∀ x, p x → p (star x)) : p a :=
  Subtype.recOn a fun b hb => by
    refine' Exists.elim _ fun (hb : b ∈ adjoin R s) (hc : p ⟨b, hb⟩) => hc
    apply adjoin_induction hb
    

Proof state:
case Hs
F : Type u_1
R : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring R
inst✝⁸ : StarRing R
inst✝⁷ : Semiring A
inst✝⁶ : Algebra R A
inst✝⁵ : StarRing A
inst✝⁴ : StarModule R A
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : StarModule R B
s : Set A
p : ↥(adjoin R s) → Prop
a : ↥(adjoin R s)
Hs : ∀ (x : A) (h : x ∈ s), p { val := x, property := (_ : x ∈ ↑(adjoin R s)) }
Halg : ∀ (r : R), p ((algebraMap R ↥(adjoin R s)) r)
Hadd : ∀ (x y : ↥(adjoin R s)), p x → p y → p (x + y)
Hmul : ∀ (x y : ↥(adjoin R s)), p x → p y → p (x * y)
Hstar : ∀ (x : ↥(adjoin R s)), p x → p (star x)
b : A
hb : b ∈ adjoin R s
⊢ ∀ x ∈ s, ∃ (x_1 : x ∈ adjoin R s), p { val := x, property := x_1 }
case Halg
F : Type u_1
R : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring R
inst✝⁸ : StarRing R
inst✝⁷ : Semiring A
inst✝⁶ : Algebra R A
inst✝⁵ : StarRing A
inst✝⁴ : StarModule R A
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : StarModule R B
s : Set A
p : ↥(adjoin R s) → Prop
a : ↥(adjoin R s)
Hs : ∀ (x : A) (h : x ∈ s), p { val := x, property := (_ : x ∈ ↑(adjoin R s)) }
Halg : ∀ (r : R), p ((algebraMap R ↥(adjoin R s)) r)
Hadd : ∀ (x y : ↥(adjoin R s)), p x → p y → p (x + y)
Hmul : ∀ (x y : ↥(adjoin R s)), p x → p y → p (x * y)
Hstar : ∀ (x : ↥(adjoin R s)), p x → p (star x)
b : A
hb : b ∈ adjoin R s
⊢ ∀ (r : R), ∃ (x : (algebraMap R A) r ∈ adjoin R s), p { val := (algebraMap R A) r, property := x }
case Hadd
F : Type u_1
R : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring R
inst✝⁸ : StarRing R
inst✝⁷ : Semiring A
inst✝⁶ : Algebra R A
inst✝⁵ : StarRing A
inst✝⁴ : StarModule R A
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : StarModule R B
s : Set A
p : ↥(adjoin R s) → Prop
a : ↥(adjoin R s)
Hs : ∀ (x : A) (h : x ∈ s), p { val := x, property := (_ : x ∈ ↑(adjoin R s)) }
Halg : ∀ (r : R), p ((algebraMap R ↥(adjoin R s)) r)
Hadd : ∀ (x y : ↥(adjoin R s)), p x → p y → p (x + y)
Hmul : ∀ (x y : ↥(adjoin R s)), p x → p y → p (x * y)
Hstar : ∀ (x : ↥(adjoin R s)), p x → p (star x)
b : A
hb : b ∈ adjoin R s
⊢ ∀ (x y : A),
    (∃ (x_1 : x ∈ adjoin R s), p { val := x, property := x_1 }) →
      (∃ (x : y ∈ adjoin R s), p { val := y, property := x }) →
        ∃ (x_1 : x + y ∈ adjoin R s), p { val := x + y, property := x_1 }
case Hmul
F : Type u_1
R : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring R
inst✝⁸ : StarRing R
inst✝⁷ : Semiring A
inst✝⁶ : Algebra R A
inst✝⁵ : StarRing A
inst✝⁴ : StarModule R A
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : StarModule R B
s : Set A
p : ↥(adjoin R s) → Prop
a : ↥(adjoin R s)
Hs : ∀ (x : A) (h : x ∈ s), p { val := x, property := (_ : x ∈ ↑(adjoin R s)) }
Halg : ∀ (r : R), p ((algebraMap R ↥(adjoin R s)) r)
Hadd : ∀ (x y : ↥(adjoin R s)), p x → p y → p (x + y)
Hmul : ∀ (x y : ↥(adjoin R s)), p x → p y → p (x * y)
Hstar : ∀ (x : ↥(adjoin R s)), p x → p (star x)
b : A
hb : b ∈ adjoin R s
⊢ ∀ (x y : A),
    (∃ (x_1 : x ∈ adjoin R s), p { val := x, property := x_1 }) →
      (∃ (x : y ∈ adjoin R s), p { val := y, property := x }) →
        ∃ (x_1 : x * y ∈ adjoin R s), p { val := x * y, property := x_1 }
case Hstar
F : Type u_1
R : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring R
inst✝⁸ : StarRing R
inst✝⁷ : Semiring A
inst✝⁶ : Algebra R A
inst✝⁵ : StarRing A
inst✝⁴ : StarModule R A
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : StarModule R B
s : Set A
p : ↥(adjoin R s) → Prop
a : ↥(adjoin R s)
Hs : ∀ (x : A) (h : x ∈ s), p { val := x, property := (_ : x ∈ ↑(adjoin R s)) }
Halg : ∀ (r : R), p ((algebraMap R ↥(adjoin R s)) r)
Hadd : ∀ (x y : ↥(adjoin R s)), p x → p y → p (x + y)
Hmul : ∀ (x y : ↥(adjoin R s)), p x → p y → p (x * y)
Hstar : ∀ (x : ↥(adjoin R s)), p x → p (star x)
b : A
hb : b ∈ adjoin R s
⊢ ∀ (x : A),
    (∃ (x_1 : x ∈ adjoin R s), p { val := x, property := x_1 }) →
      ∃ (x_1 : star x ∈ adjoin R s), p { val := star x, property := x_1 }

Next tactic:
exacts [fun x hx => ⟨subset_adjoin R s hx, Hs x hx⟩, fun r =>
      ⟨StarSubalgebra.algebraMap_mem _ r, Halg r⟩, fun x y hx hy =>
      Exists.elim hx fun hx' hx => Exists.elim hy fun hy' hy => ⟨add_mem hx' hy', Hadd _ _ hx hy⟩,
      fun x y hx hy =>
      Exists.elim hx fun hx' hx => Exists.elim hy fun hy' hy => ⟨mul_mem hx' hy', Hmul _ _ hx hy⟩,
      fun x hx => Exists.elim hx fun hx' hx => ⟨star_mem hx', Hstar _ hx⟩]