Rules for integrands involving inert trig functions

0.  ∫(((a ((F[c+d x])^p)))^n)dx  when F∈{Sin,Cos,Tan,Cot,Sec,Csc} ∧ n∉ℤ ∧ p∈ℤ

1:  ∫(((a ((F[c+d x])^p)))^n)dx  when F∈{Sin,Cos,Tan,Cot,Sec,Csc} ∧ n∉ℤ ∧ p∈ℤ

Derivation: Piecewise constant extraction

Basis: (∂_x)((((a ((F[c+d x])^p)))^n)/((F[c+d x])^(n p)))==0

Rule: If  F∈{Sin,Cos,Tan,Cot,Sec,Csc} ∧ n∉ℤ ∧ p∈ℤ, then

∫(((a ((F[c+d x])^p)))^n)dx  ⟶  ((((a ((F[c+d x])^p)))^n)/((F[c+d x])^(n p)))∫((F[c+d x])^(n p))dx

Program code:

Int[(a_.*F_[c_.+d_.*x_]^p_)^n_,x_Symbol] :=
  With[{v=ActivateTrig[F[c+d*x]]},
  a^IntPart[n]*(v/NonfreeFactors[v,x])^(p*IntPart[n])*(a*v^p)^FracPart[n]/NonfreeFactors[v,x]^(p*FracPart[n])*
    Int[NonfreeFactors[v,x]^(n*p),x]] /;
FreeQ[{a,c,d,n,p},x] && InertTrigQ[F] && Not[IntegerQ[n]] && IntegerQ[p]

2:  ∫(((a (((b F[c+d x]))^p)))^n)dx  when  F∈{Sin,Cos,Tan,Cot,Sec,Csc} ∧ n∉ℤ ∧ p∉ℤ

Derivation: Piecewise constant extraction

Basis: (∂_x)((((a (((b F[c+d x]))^p)))^n)/( (((b F[c+d x]))^(n p))))==0

Rule: If  F∈{Sin,Cos,Tan,Cot,Sec,Csc} ∧ n∉ℤ ∧ p∉ℤ, then

∫(((a (((b F[c+d x]))^p)))^n)dx  ⟶  (((a^(IntPart[n])) (((a (((b F[c+d x]))^p)))^(FracPart[n])))/( (((b F[c+d x]))^(p FracPart[n]))))∫(((b F[c+d x]))^(n p))dx

Program code:

Int[(a_.*(b_.*F_[c_.+d_.*x_])^p_)^n_.,x_Symbol] :=
  With[{v=ActivateTrig[F[c+d*x]]},
  a^IntPart[n]*(a*(b*v)^p)^FracPart[n]/(b*v)^(p*FracPart[n])*Int[(b*v)^(n*p),x]] /;
FreeQ[{a,b,c,d,n,p},x] && InertTrigQ[F] && Not[IntegerQ[n]] && Not[IntegerQ[p]]

1.  ∫F[Sin[a+b x]]Trig[a+b x]dx

1:  ∫F[Sin[a+b x]]Cos[a+b x]dx

Reference: G&R 2.503, CRC 483

Reference: G&R 2.502, CRC 482

Derivation: Integration by substitution

Basis: F[Sin[a+b x]] Cos[a+b x]==(1/b)F[Sin[a+b x]] (∂_x)Sin[a+b x]

Rule:

∫F[Sin[a+b x]]Cos[a+b x]dx  ⟶  (1/b)Subst[∫F[x]dx,x,Sin[a+b x]]

Program code:

Int[u_*F_[c_.*(a_.+b_.*x_)],x_Symbol] :=
  With[{d=FreeFactors[Sin[c*(a+b*x)],x]},
  d/(b*c)*Subst[Int[SubstFor[1,Sin[c*(a+b*x)]/d,u,x],x],x,Sin[c*(a+b*x)]/d] /;
 FunctionOfQ[Sin[c*(a+b*x)]/d,u,x,True]] /;
FreeQ[{a,b,c},x] && (EqQ[F,Cos] || EqQ[F,cos])

Int[u_*F_[c_.*(a_.+b_.*x_)],x_Symbol] :=
  With[{d=FreeFactors[Cos[c*(a+b*x)],x]},
  -d/(b*c)*Subst[Int[SubstFor[1,Cos[c*(a+b*x)]/d,u,x],x],x,Cos[c*(a+b*x)]/d] /;
 FunctionOfQ[Cos[c*(a+b*x)]/d,u,x,True]] /;
FreeQ[{a,b,c},x] && (EqQ[F,Sin] || EqQ[F,sin])

Int[u_*Cosh[c_.*(a_.+b_.*x_)],x_Symbol] :=
  With[{d=FreeFactors[Sinh[c*(a+b*x)],x]},
  d/(b*c)*Subst[Int[SubstFor[1,Sinh[c*(a+b*x)]/d,u,x],x],x,Sinh[c*(a+b*x)]/d] /;
 FunctionOfQ[Sinh[c*(a+b*x)]/d,u,x,True]] /;
FreeQ[{a,b,c},x]

Int[u_*Sinh[c_.*(a_.+b_.*x_)],x_Symbol] :=
  With[{d=FreeFactors[Cosh[c*(a+b*x)],x]},
  d/(b*c)*Subst[Int[SubstFor[1,Cosh[c*(a+b*x)]/d,u,x],x],x,Cosh[c*(a+b*x)]/d] /;
 FunctionOfQ[Cosh[c*(a+b*x)]/d,u,x,True]] /;
FreeQ[{a,b,c},x]

2:  ∫F[Sin[a+b x]]Cot[a+b x]dx

Reference: G&R 2.503, CRC 483

Reference: G&R 2.502, CRC 482

Derivation: Integration by substitution

Basis: F[Sin[a+b x]] Cot[a+b x]==((F[Sin[a+b x]])/(b Sin[a+b x])) (∂_x)Sin[a+b x]

Rule:

∫F[Sin[a+b x]]Cot[a+b x]dx  ⟶  (1/b)Subst[∫((F[x])/x) dx,x,Sin[a+b x]]

Program code:

Int[u_*F_[c_.*(a_.+b_.*x_)],x_Symbol] :=
  With[{d=FreeFactors[Sin[c*(a+b*x)],x]},
  1/(b*c)*Subst[Int[SubstFor[1/x,Sin[c*(a+b*x)]/d,u,x],x],x,Sin[c*(a+b*x)]/d] /;
 FunctionOfQ[Sin[c*(a+b*x)]/d,u,x,True]] /;
FreeQ[{a,b,c},x] && (EqQ[F,Cot] || EqQ[F,cot])

Int[u_*F_[c_.*(a_.+b_.*x_)],x_Symbol] :=
  With[{d=FreeFactors[Cos[c*(a+b*x)],x]},
  -1/(b*c)*Subst[Int[SubstFor[1/x,Cos[c*(a+b*x)]/d,u,x],x],x,Cos[c*(a+b*x)]/d] /;
 FunctionOfQ[Cos[c*(a+b*x)]/d,u,x,True]] /;
FreeQ[{a,b,c},x] && (EqQ[F,Tan] || EqQ[F,tan])

Int[u_*Coth[c_.*(a_.+b_.*x_)],x_Symbol] :=
  With[{d=FreeFactors[Sinh[c*(a+b*x)],x]},
  1/(b*c)*Subst[Int[SubstFor[1/x,Sinh[c*(a+b*x)]/d,u,x],x],x,Sinh[c*(a+b*x)]/d] /;
 FunctionOfQ[Sinh[c*(a+b*x)]/d,u,x,True]] /;
FreeQ[{a,b,c},x]

Int[u_*Tanh[c_.*(a_.+b_.*x_)],x_Symbol] :=
  With[{d=FreeFactors[Cosh[c*(a+b*x)],x]},
  1/(b*c)*Subst[Int[SubstFor[1/x,Cosh[c*(a+b*x)]/d,u,x],x],x,Cosh[c*(a+b*x)]/d] /;
 FunctionOfQ[Cosh[c*(a+b*x)]/d,u,x,True]] /;
FreeQ[{a,b,c},x]

2.  ∫F[Tan[a+b x]]((Trig[a+b x])^n)dx

1:  ∫F[Tan[a+b x]]((Sec[a+b x])^2)dx

Reference: G&R 2.504

Derivation: Integration by substitution

Basis: F[Tan[a+b x]] ((Sec[a+b x])^2)==(1/b)F[Tan[a+b x]] (∂_x)Tan[a+b x]

Rule:

∫F[Tan[a+b x]]((Sec[a+b x])^2)dx  ⟶  (1/b)Subst[∫F[x]dx,x,Tan[a+b x]]

Program code:

Int[u_*F_[c_.*(a_.+b_.*x_)]^2,x_Symbol] :=
  With[{d=FreeFactors[Tan[c*(a+b*x)],x]},
  d/(b*c)*Subst[Int[SubstFor[1,Tan[c*(a+b*x)]/d,u,x],x],x,Tan[c*(a+b*x)]/d] /;
 FunctionOfQ[Tan[c*(a+b*x)]/d,u,x,True]] /;
FreeQ[{a,b,c},x] && NonsumQ[u] && (EqQ[F,Sec] || EqQ[F,sec])

Int[u_/cos[c_.*(a_.+b_.*x_)]^2,x_Symbol] :=
  With[{d=FreeFactors[Tan[c*(a+b*x)],x]},
  d/(b*c)*Subst[Int[SubstFor[1,Tan[c*(a+b*x)]/d,u,x],x],x,Tan[c*(a+b*x)]/d] /;
 FunctionOfQ[Tan[c*(a+b*x)]/d,u,x,True]] /;
FreeQ[{a,b,c},x] && NonsumQ[u]

Int[u_*F_[c_.*(a_.+b_.*x_)]^2,x_Symbol] :=
  With[{d=FreeFactors[Cot[c*(a+b*x)],x]},
  -d/(b*c)*Subst[Int[SubstFor[1,Cot[c*(a+b*x)]/d,u,x],x],x,Cot[c*(a+b*x)]/d] /;
 FunctionOfQ[Cot[c*(a+b*x)]/d,u,x,True]] /;
FreeQ[{a,b,c},x] && NonsumQ[u] && (EqQ[F,Csc] || EqQ[F,csc])

Int[u_/sin[c_.*(a_.+b_.*x_)]^2,x_Symbol] :=
  With[{d=FreeFactors[Cot[c*(a+b*x)],x]},
  -d/(b*c)*Subst[Int[SubstFor[1,Cot[c*(a+b*x)]/d,u,x],x],x,Cot[c*(a+b*x)]/d] /;
 FunctionOfQ[Cot[c*(a+b*x)]/d,u,x,True]] /;
FreeQ[{a,b,c},x] && NonsumQ[u]

Int[u_*Sech[c_.*(a_.+b_.*x_)]^2,x_Symbol] :=
  With[{d=FreeFactors[Tanh[c*(a+b*x)],x]},
  d/(b*c)*Subst[Int[SubstFor[1,Tanh[c*(a+b*x)]/d,u,x],x],x,Tanh[c*(a+b*x)]/d] /;
 FunctionOfQ[Tanh[c*(a+b*x)]/d,u,x,True]] /;
FreeQ[{a,b,c},x] && NonsumQ[u]

Int[u_*Csch[c_.*(a_.+b_.*x_)]^2,x_Symbol] :=
  With[{d=FreeFactors[Coth[c*(a+b*x)],x]},
  -d/(b*c)*Subst[Int[SubstFor[1,Coth[c*(a+b*x)]/d,u,x],x],x,Coth[c*(a+b*x)]/d] /;
 FunctionOfQ[Coth[c*(a+b*x)]/d,u,x,True]] /;
FreeQ[{a,b,c},x] && NonsumQ[u]

2:  ∫F[Tan[a+b x]]((Cot[a+b x])^n)dx  when n∈ℤ

Reference: G&R 2.504

Derivation: Integration by substitution

Basis: If  n∈ℤ, then F[Tan[a+b x]] ((Cot[a+b x])^n)==((F[Tan[a+b x]])/(b ((Tan[a+b x])^n) (1+((Tan[a+b x])^2))))(∂_x)Tan[a+b x]

Rule: If  n∈ℤ, then

∫F[Tan[a+b x]]((Cot[a+b x])^n)dx  ⟶  (1/b)Subst[∫((F[x])/((x^n) (1+(x^2)))) dx,x,Tan[a+b x]]

Program code:

Int[u_*F_[c_.*(a_.+b_.*x_)]^n_.,x_Symbol] :=
  With[{d=FreeFactors[Tan[c*(a+b*x)],x]},
  1/(b*c*d^(n-1))*Subst[Int[SubstFor[1/(x^n*(1+d^2*x^2)),Tan[c*(a+b*x)]/d,u,x],x],x,Tan[c*(a+b*x)]/d] /;
 FunctionOfQ[Tan[c*(a+b*x)]/d,u,x,True] && TryPureTanSubst[ActivateTrig[u]*Cot[c*(a+b*x)]^n,x]] /;
FreeQ[{a,b,c},x] && IntegerQ[n] && (EqQ[F,Cot] || EqQ[F,cot])

Int[u_*F_[c_.*(a_.+b_.*x_)]^n_.,x_Symbol] :=
  With[{d=FreeFactors[Cot[c*(a+b*x)],x]},
  -1/(b*c*d^(n-1))*Subst[Int[SubstFor[1/(x^n*(1+d^2*x^2)),Cot[c*(a+b*x)]/d,u,x],x],x,Cot[c*(a+b*x)]/d] /;
 FunctionOfQ[Cot[c*(a+b*x)]/d,u,x,True] && TryPureTanSubst[ActivateTrig[u]*Tan[c*(a+b*x)]^n,x]] /;
FreeQ[{a,b,c},x] && IntegerQ[n] && (EqQ[F,Tan] || EqQ[F,tan])

Int[u_*Coth[c_.*(a_.+b_.*x_)]^n_.,x_Symbol] :=
  With[{d=FreeFactors[Tanh[c*(a+b*x)],x]},
  1/(b*c*d^(n-1))*Subst[Int[SubstFor[1/(x^n*(1-d^2*x^2)),Tanh[c*(a+b*x)]/d,u,x],x],x,Tanh[c*(a+b*x)]/d] /;
 FunctionOfQ[Tanh[c*(a+b*x)]/d,u,x,True] && TryPureTanSubst[ActivateTrig[u]*Coth[c*(a+b*x)]^n,x]] /;
FreeQ[{a,b,c},x] && IntegerQ[n]

Int[u_*Tanh[c_.*(a_.+b_.*x_)]^n_.,x_Symbol] :=
  With[{d=FreeFactors[Coth[c*(a+b*x)],x]},
  1/(b*c*d^(n-1))*Subst[Int[SubstFor[1/(x^n*(1-d^2*x^2)),Coth[c*(a+b*x)]/d,u,x],x],x,Coth[c*(a+b*x)]/d] /;
 FunctionOfQ[Coth[c*(a+b*x)]/d,u,x,True] && TryPureTanSubst[ActivateTrig[u]*Tanh[c*(a+b*x)]^n,x]] /;
FreeQ[{a,b,c},x] && IntegerQ[n]

3:  ∫F[Tan[a+b x]]dx

Reference: G&R 2.504

Derivation: Integration by substitution

Basis: F[Tan[z]]==((F[Tan[z]])/(1+((Tan[z])^2)))(∂_z)Tan[z]

Rule:

∫F[Tan[a+b x]]dx  ⟶  (1/b)Subst[∫((F[x])/(1+(x^2))) dx,x,Tan[a+b x]]

Program code:

If[TrueQ[$LoadShowSteps],

Int[u_,x_Symbol] :=
  With[{v=FunctionOfTrig[u,x]},
  ShowStep["","Int[F[Cot[a+b*x]],x]","-1/b*Subst[Int[F[x]/(1+x^2),x],x,Cot[a+b*x]]",Hold[
  With[{d=FreeFactors[Cot[v],x]},
  Dist[-d/Coefficient[v,x,1],Subst[Int[SubstFor[1/(1+d^2*x^2),Cot[v]/d,u,x],x],x,Cot[v]/d],x]]]] /;
 Not[FalseQ[v]] && FunctionOfQ[NonfreeFactors[Cot[v],x],u,x,True] && TryPureTanSubst[ActivateTrig[u],x]] /;
SimplifyFlag,

Int[u_,x_Symbol] :=
  With[{v=FunctionOfTrig[u,x]},
  With[{d=FreeFactors[Cot[v],x]},
  Dist[-d/Coefficient[v,x,1],Subst[Int[SubstFor[1/(1+d^2*x^2),Cot[v]/d,u,x],x],x,Cot[v]/d],x]] /;
 Not[FalseQ[v]] && FunctionOfQ[NonfreeFactors[Cot[v],x],u,x,True] && TryPureTanSubst[ActivateTrig[u],x]]]

If[TrueQ[$LoadShowSteps],

Int[u_,x_Symbol] :=
  With[{v=FunctionOfTrig[u,x]},
  ShowStep["","Int[F[Tan[a+b*x]],x]","1/b*Subst[Int[F[x]/(1+x^2),x],x,Tan[a+b*x]]",Hold[
  With[{d=FreeFactors[Tan[v],x]},
  Dist[d/Coefficient[v,x,1],Subst[Int[SubstFor[1/(1+d^2*x^2),Tan[v]/d,u,x],x],x,Tan[v]/d],x]]]] /;
 Not[FalseQ[v]] && FunctionOfQ[NonfreeFactors[Tan[v],x],u,x,True] && TryPureTanSubst[ActivateTrig[u],x]] /;
SimplifyFlag,

Int[u_,x_Symbol] :=
  With[{v=FunctionOfTrig[u,x]},
  With[{d=FreeFactors[Tan[v],x]},
  Dist[d/Coefficient[v,x,1],Subst[Int[SubstFor[1/(1+d^2*x^2),Tan[v]/d,u,x],x],x,Tan[v]/d],x]] /;
 Not[FalseQ[v]] && FunctionOfQ[NonfreeFactors[Tan[v],x],u,x,True] && TryPureTanSubst[ActivateTrig[u],x]]]

3.  ∫((Trig[a+b x])^p)((Trig[c+d x])^q)⋯dx  when (p|q|⋯)∈(SuperPlus[ℤ])

1:  ∫((Trig[a+b x])^p)((Trig[c+d x])^q)dx  when (p|q)∈(SuperPlus[ℤ])

Derivation: Algebraic expansion

Rule: If (p|q)∈(SuperPlus[ℤ]), then

∫((Trig[a+b x])^p)((Trig[c+d x])^q)dx  ⟶  ∫TrigReduce[((Trig[a+b x])^p)((Trig[c+d x])^q)]dx

Program code:

Int[F_[a_.+b_.*x_]^p_.*G_[c_.+d_.*x_]^q_.,x_Symbol] :=
  Int[ExpandTrigReduce[ActivateTrig[F[a+b*x]^p*G[c+d*x]^q],x],x] /;
FreeQ[{a,b,c,d},x] && (EqQ[F,sin] || EqQ[F,cos]) && (EqQ[G,sin] || EqQ[G,cos]) && IGtQ[p,0] && IGtQ[q,0]

2:  ∫((Trig[a+b x])^p)((Trig[c+d x])^q)((Trig[e+f x])^r)dx  when (p|q|r)∈(SuperPlus[ℤ])

Derivation: Algebraic expansion

Rule: If (p|q|r)∈(SuperPlus[ℤ]), then

∫((Trig[a+b x])^p)((Trig[c+d x])^q)((Trig[e+f x])^r)dx  ⟶  ∫TrigReduce[((Trig[a+b x])^p)((Trig[c+d x])^q)((Trig[e+f x])^r)]dx

Program code:

Int[F_[a_.+b_.*x_]^p_.*G_[c_.+d_.*x_]^q_.*H_[e_.+f_.*x_]^r_.,x_Symbol] :=
  Int[ExpandTrigReduce[ActivateTrig[F[a+b*x]^p*G[c+d*x]^q*H[e+f*x]^r],x],x] /;
FreeQ[{a,b,c,d,e,f},x] && (EqQ[F,sin] || EqQ[F,cos]) && (EqQ[G,sin] || EqQ[G,cos]) && (EqQ[H,sin] || EqQ[H,cos]) && IGtQ[p,0] && IGtQ[q,0] && IGtQ[r,0]

4.  ∫F[Sin[a+b x]]Trig[a+b x]dx

1:  ∫F[Sin[a+b x]]Cos[a+b x]dx

Reference: G&R 2.503, CRC 483

Reference: G&R 2.502, CRC 482

Derivation: Integration by substitution

Basis: F[Sin[a+b x]] Cos[a+b x]==(1/b)F[Sin[a+b x]] (∂_x)Sin[a+b x]

Rule:

∫F[Sin[a+b x]]Cos[a+b x]dx  ⟶  (1/b)Subst[∫F[x]dx,x,Sin[a+b x]]

Program code:

Int[u_*F_[c_.*(a_.+b_.*x_)],x_Symbol] :=
  With[{d=FreeFactors[Sin[c*(a+b*x)],x]},
  d/(b*c)*Subst[Int[SubstFor[1,Sin[c*(a+b*x)]/d,u,x],x],x,Sin[c*(a+b*x)]/d] /;
 FunctionOfQ[Sin[c*(a+b*x)]/d,u,x]] /;
FreeQ[{a,b,c},x] && (EqQ[F,Cos] || EqQ[F,cos])

Int[u_*F_[c_.*(a_.+b_.*x_)],x_Symbol] :=
  With[{d=FreeFactors[Cos[c*(a+b*x)],x]},
  -d/(b*c)*Subst[Int[SubstFor[1,Cos[c*(a+b*x)]/d,u,x],x],x,Cos[c*(a+b*x)]/d] /;
 FunctionOfQ[Cos[c*(a+b*x)]/d,u,x]] /;
FreeQ[{a,b,c},x] && (EqQ[F,Sin] || EqQ[F,sin])

Int[u_*Cosh[c_.*(a_.+b_.*x_)],x_Symbol] :=
  With[{d=FreeFactors[Sinh[c*(a+b*x)],x]},
  d/(b*c)*Subst[Int[SubstFor[1,Sinh[c*(a+b*x)]/d,u,x],x],x,Sinh[c*(a+b*x)]/d] /;
 FunctionOfQ[Sinh[c*(a+b*x)]/d,u,x]] /;
FreeQ[{a,b,c},x]

Int[u_*Sinh[c_.*(a_.+b_.*x_)],x_Symbol] :=
  With[{d=FreeFactors[Cosh[c*(a+b*x)],x]},
  d/(b*c)*Subst[Int[SubstFor[1,Cosh[c*(a+b*x)]/d,u,x],x],x,Cosh[c*(a+b*x)]/d] /;
 FunctionOfQ[Cosh[c*(a+b*x)]/d,u,x]] /;
FreeQ[{a,b,c},x]

2:  ∫F[Sin[a+b x]]Cot[a+b x]dx

Reference: G&R 2.503, CRC 483

Reference: G&R 2.502, CRC 482

Derivation: Integration by substitution

Basis: F[Sin[a+b x]] Cot[a+b x]==((F[Sin[a+b x]])/(b Sin[a+b x])) (∂_x)Sin[a+b x]

Rule:

∫F[Sin[a+b x]]Cot[a+b x]dx  ⟶  (1/b)Subst[∫((F[x])/x) dx,x,Sin[a+b x]]

Program code:

Int[u_*F_[c_.*(a_.+b_.*x_)],x_Symbol] :=
  With[{d=FreeFactors[Sin[c*(a+b*x)],x]},
  1/(b*c)*Subst[Int[SubstFor[1/x,Sin[c*(a+b*x)]/d,u,x],x],x,Sin[c*(a+b*x)]/d] /;
 FunctionOfQ[Sin[c*(a+b*x)]/d,u,x]] /;
FreeQ[{a,b,c},x] && (EqQ[F,Cot] || EqQ[F,cot])

Int[u_*F_[c_.*(a_.+b_.*x_)],x_Symbol] :=
  With[{d=FreeFactors[Cos[c*(a+b*x)],x]},
  -1/(b*c)*Subst[Int[SubstFor[1/x,Cos[c*(a+b*x)]/d,u,x],x],x,Cos[c*(a+b*x)]/d] /;
 FunctionOfQ[Cos[c*(a+b*x)]/d,u,x]] /;
FreeQ[{a,b,c},x] && (EqQ[F,Tan] || EqQ[F,tan])

Int[u_*Coth[c_.*(a_.+b_.*x_)],x_Symbol] :=
  With[{d=FreeFactors[Sinh[c*(a+b*x)],x]},
  1/(b*c)*Subst[Int[SubstFor[1/x,Sinh[c*(a+b*x)]/d,u,x],x],x,Sinh[c*(a+b*x)]/d] /;
 FunctionOfQ[Sinh[c*(a+b*x)]/d,u,x]] /;
FreeQ[{a,b,c},x]

Int[u_*Tanh[c_.*(a_.+b_.*x_)],x_Symbol] :=
  With[{d=FreeFactors[Cosh[c*(a+b*x)],x]},
  1/(b*c)*Subst[Int[SubstFor[1/x,Cosh[c*(a+b*x)]/d,u,x],x],x,Cosh[c*(a+b*x)]/d] /;
 FunctionOfQ[Cosh[c*(a+b*x)]/d,u,x]] /;
FreeQ[{a,b,c},x]

5.  ∫F[Sin[a+b x]]((Trig[a+b x])^n)dx

1:  ∫F[Sin[a+b x]]((Cos[a+b x])^n)dx  when ((n-1)/2)∈ℤ

Reference: G&R 2.503, CRC 483

Reference: G&R 2.502, CRC 482

Derivation: Integration by substitution

Basis: If ((n-1)/2)∈ℤ, then F[Sin[a+b x]] ((Cos[a+b x])^n)==(1/b)(((1-((Sin[a+b x])^2)))^((n-1)/2))F[Sin[a+b x]] (∂_x)Sin[a+b x]

Rule: If ((n-1)/2)∈ℤ, then

∫F[Sin[a+b x]]((Cos[a+b x])^n)dx  ⟶  (1/b)Subst[∫(((1-(x^2)))^((n-1)/2))F[x]dx,x,Sin[a+b x]]

Program code:

Int[u_*F_[c_.*(a_.+b_.*x_)]^n_,x_Symbol] :=
  With[{d=FreeFactors[Sin[c*(a+b*x)],x]},
  d/(b*c)*Subst[Int[SubstFor[(1-d^2*x^2)^((n-1)/2),Sin[c*(a+b*x)]/d,u,x],x],x,Sin[c*(a+b*x)]/d] /;
 FunctionOfQ[Sin[c*(a+b*x)]/d,u,x]] /;
FreeQ[{a,b,c},x] && IntegerQ[(n-1)/2] && NonsumQ[u] && (EqQ[F,Cos] || EqQ[F,cos])

Int[u_*F_[c_.*(a_.+b_.*x_)]^n_,x_Symbol] :=
  With[{d=FreeFactors[Sin[c*(a+b*x)],x]},
  d/(b*c)*Subst[Int[SubstFor[(1-d^2*x^2)^((-n-1)/2),Sin[c*(a+b*x)]/d,u,x],x],x,Sin[c*(a+b*x)]/d] /;
 FunctionOfQ[Sin[c*(a+b*x)]/d,u,x]] /;
FreeQ[{a,b,c},x] && IntegerQ[(n-1)/2] && NonsumQ[u] && (EqQ[F,Sec] || EqQ[F,sec])

Int[u_*F_[c_.*(a_.+b_.*x_)]^n_,x_Symbol] :=
  With[{d=FreeFactors[Cos[c*(a+b*x)],x]},
  -d/(b*c)*Subst[Int[SubstFor[(1-d^2*x^2)^((n-1)/2),Cos[c*(a+b*x)]/d,u,x],x],x,Cos[c*(a+b*x)]/d] /;
 FunctionOfQ[Cos[c*(a+b*x)]/d,u,x]] /;
FreeQ[{a,b,c},x] && IntegerQ[(n-1)/2] && NonsumQ[u] && (EqQ[F,Sin] || EqQ[F,sin])

Int[u_*F_[c_.*(a_.+b_.*x_)]^n_,x_Symbol] :=
  With[{d=FreeFactors[Cos[c*(a+b*x)],x]},
  -d/(b*c)*Subst[Int[SubstFor[(1-d^2*x^2)^((-n-1)/2),Cos[c*(a+b*x)]/d,u,x],x],x,Cos[c*(a+b*x)]/d] /;
 FunctionOfQ[Cos[c*(a+b*x)]/d,u,x]] /;
FreeQ[{a,b,c},x] && IntegerQ[(n-1)/2] && NonsumQ[u] && (EqQ[F,Csc] || EqQ[F,csc])

Int[u_*Cosh[c_.*(a_.+b_.*x_)]^n_,x_Symbol] :=
  With[{d=FreeFactors[Sinh[c*(a+b*x)],x]},
  d/(b*c)*Subst[Int[SubstFor[(1+d^2*x^2)^((n-1)/2),Sinh[c*(a+b*x)]/d,u,x],x],x,Sinh[c*(a+b*x)]/d] /;
 FunctionOfQ[Sinh[c*(a+b*x)]/d,u,x]] /;
FreeQ[{a,b,c},x] && IntegerQ[(n-1)/2] && NonsumQ[u]

Int[u_*Sech[c_.*(a_.+b_.*x_)]^n_,x_Symbol] :=
  With[{d=FreeFactors[Sinh[c*(a+b*x)],x]},
  d/(b*c)*Subst[Int[SubstFor[(1+d^2*x^2)^((-n-1)/2),Sinh[c*(a+b*x)]/d,u,x],x],x,Sinh[c*(a+b*x)]/d] /;
 FunctionOfQ[Sinh[c*(a+b*x)]/d,u,x]] /;
FreeQ[{a,b,c},x] && IntegerQ[(n-1)/2] && NonsumQ[u]

Int[u_*Sinh[c_.*(a_.+b_.*x_)]^n_,x_Symbol] :=
  With[{d=FreeFactors[Cosh[c*(a+b*x)],x]},
  d/(b*c)*Subst[Int[SubstFor[(-1+d^2*x^2)^((n-1)/2),Cosh[c*(a+b*x)]/d,u,x],x],x,Cosh[c*(a+b*x)]/d] /;
 FunctionOfQ[Cosh[c*(a+b*x)]/d,u,x]] /;
FreeQ[{a,b,c},x] && IntegerQ[(n-1)/2] && NonsumQ[u]

Int[u_*Csch[c_.*(a_.+b_.*x_)]^n_,x_Symbol] :=
  With[{d=FreeFactors[Cosh[c*(a+b*x)],x]},
  d/(b*c)*Subst[Int[SubstFor[(-1+d^2*x^2)^((-n-1)/2),Cosh[c*(a+b*x)]/d,u,x],x],x,Cosh[c*(a+b*x)]/d] /;
 FunctionOfQ[Cosh[c*(a+b*x)]/d,u,x]] /;
FreeQ[{a,b,c},x] && IntegerQ[(n-1)/2] && NonsumQ[u]

2:  ∫F[Sin[a+b x]]((Cot[a+b x])^n)dx  when ((n-1)/2)∈ℤ

Reference: G&R 2.503, CRC 483

Reference: G&R 2.502, CRC 482

Derivation: Integration by substitution

Basis: If ((n-1)/2)∈ℤ, then F[Sin[a+b x]] ((Cot[a+b x])^n)==(1/b)(((1-((Sin[a+b x])^2)))^((n-1)/2))((F[Sin[a+b x]])/((Sin[a+b x])^n)) (∂_x)Sin[a+b x]

Rule: If ((n-1)/2)∈ℤ, then

∫F[Sin[a+b x]]((Cot[a+b x])^n)dx  ⟶  (1/b)Subst[∫(((((1-(x^2)))^((n-1)/2))F[x])/(x^n)) dx,x,Sin[a+b x]]

Program code:

Int[u_*F_[c_.*(a_.+b_.*x_)]^n_,x_Symbol] :=
  With[{d=FreeFactors[Sin[c*(a+b*x)],x]},
  1/(b*c*d^(n-1))*Subst[Int[SubstFor[(1-d^2*x^2)^((n-1)/2)/x^n,Sin[c*(a+b*x)]/d,u,x],x],x,Sin[c*(a+b*x)]/d] /;
 FunctionOfQ[Sin[c*(a+b*x)]/d,u,x]] /;
FreeQ[{a,b,c},x] && IntegerQ[(n-1)/2] && NonsumQ[u] && (EqQ[F,Cot] || EqQ[F,cot])

Int[u_*F_[c_.*(a_.+b_.*x_)]^n_,x_Symbol] :=
  With[{d=FreeFactors[Cos[c*(a+b*x)],x]},
  -1/(b*c*d^(n-1))*Subst[Int[SubstFor[(1-d^2*x^2)^((n-1)/2)/x^n,Cos[c*(a+b*x)]/d,u,x],x],x,Cos[c*(a+b*x)]/d] /;
 FunctionOfQ[Cos[c*(a+b*x)]/d,u,x]] /;
FreeQ[{a,b,c},x] && IntegerQ[(n-1)/2] && NonsumQ[u] && (EqQ[F,Tan] || EqQ[F,tan])

Int[u_*Coth[c_.*(a_.+b_.*x_)]^n_,x_Symbol] :=
  With[{d=FreeFactors[Sinh[c*(a+b*x)],x]},
  1/(b*c*d^(n-1))*Subst[Int[SubstFor[(1+d^2*x^2)^((n-1)/2)/x^n,Sinh[c*(a+b*x)]/d,u,x],x],x,Sinh[c*(a+b*x)]/d] /;
 FunctionOfQ[Sinh[c*(a+b*x)]/d,u,x]] /;
FreeQ[{a,b,c},x] && IntegerQ[(n-1)/2] && NonsumQ[u]

Int[u_*Tanh[c_.*(a_.+b_.*x_)]^n_,x_Symbol] :=
  With[{d=FreeFactors[Cosh[c*(a+b*x)],x]},
  1/(b*c*d^(n-1))*Subst[Int[SubstFor[(-1+d^2*x^2)^((n-1)/2)/x^n,Cosh[c*(a+b*x)]/d,u,x],x],x,Cosh[c*(a+b*x)]/d] /;
 FunctionOfQ[Cosh[c*(a+b*x)]/d,u,x]] /;
FreeQ[{a,b,c},x] && IntegerQ[(n-1)/2] && NonsumQ[u]

6:  ∫F[Sin[a+b x]](v+d ((Cos[a+b x])^n))dx  when ((n-1)/2)∈ℤ

Derivation: Algebraic expansion

Rule: If ((n-1)/2)∈ℤ, then

∫F[Sin[a+b x]](v+d ((Cos[a+b x])^n))dx  ⟶  ∫v F[Sin[a+b x]]dx+d∫F[Sin[a+b x]]((Cos[a+b x])^n)dx

Program code:

Int[u_*(v_+d_.*F_[c_.*(a_.+b_.*x_)]^n_.),x_Symbol] :=
  With[{e=FreeFactors[Sin[c*(a+b*x)],x]},
  Int[ActivateTrig[u*v],x] + d*Int[ActivateTrig[u]*Cos[c*(a+b*x)]^n,x] /;
 FunctionOfQ[Sin[c*(a+b*x)]/e,u,x]] /;
FreeQ[{a,b,c,d},x] && Not[FreeQ[v,x]] && IntegerQ[(n-1)/2] && NonsumQ[u] && (EqQ[F,Cos] || EqQ[F,cos])

Int[u_*(v_+d_.*F_[c_.*(a_.+b_.*x_)]^n_.),x_Symbol] :=
  With[{e=FreeFactors[Cos[c*(a+b*x)],x]},
  Int[ActivateTrig[u*v],x] + d*Int[ActivateTrig[u]*Sin[c*(a+b*x)]^n,x] /;
 FunctionOfQ[Cos[c*(a+b*x)]/e,u,x]] /;
FreeQ[{a,b,c,d},x] && Not[FreeQ[v,x]] && IntegerQ[(n-1)/2] && NonsumQ[u] && (EqQ[F,Sin] || EqQ[F,sin])

7:  ∫F[Sin[a+b x]]((Cos[a+b x])^n)dx  when ((n-1)/2)∈ℤ

Reference: G&R 2.503, CRC 483

Reference: G&R 2.502, CRC 482

Derivation: Integration by substitution

Basis: If ((n-1)/2)∈ℤ, then F[Sin[a+b x]] ((Cos[a+b x])^n)==(1/b)(((1-((Sin[a+b x])^2)))^((n-1)/2))F[Sin[a+b x]] (∂_x)Sin[a+b x]

Rule: If ((n-1)/2)∈ℤ, then

∫F[Sin[a+b x]]((Cos[a+b x])^n)dx  ⟶  (1/b)Subst[∫(((1-(x^2)))^((n-1)/2))F[x]dx,x,Sin[a+b x]]

Program code:

If[TrueQ[$LoadShowSteps],

Int[u_,x_Symbol] :=
  With[{v=FunctionOfTrig[u,x]},
  ShowStep["","Int[F[Sin[a+b*x]]*Cos[a+b*x],x]","Subst[Int[F[x],x],x,Sin[a+b*x]]/b",Hold[
  With[{d=FreeFactors[Sin[v],x]},
  Dist[d/Coefficient[v,x,1],Subst[Int[SubstFor[1,Sin[v]/d,u/Cos[v],x],x],x,Sin[v]/d],x]]]] /;
 Not[FalseQ[v]] && FunctionOfQ[NonfreeFactors[Sin[v],x],u/Cos[v],x]] /;
SimplifyFlag,

Int[u_,x_Symbol] :=
  With[{v=FunctionOfTrig[u,x]},
  With[{d=FreeFactors[Sin[v],x]},
  Dist[d/Coefficient[v,x,1],Subst[Int[SubstFor[1,Sin[v]/d,u/Cos[v],x],x],x,Sin[v]/d],x]] /;
 Not[FalseQ[v]] && FunctionOfQ[NonfreeFactors[Sin[v],x],u/Cos[v],x]]]

If[TrueQ[$LoadShowSteps],

Int[u_,x_Symbol] :=
  With[{v=FunctionOfTrig[u,x]},
  ShowStep["","Int[F[Cos[a+b*x]]*Sin[a+b*x],x]","-Subst[Int[F[x],x],x,Cos[a+b*x]]/b",Hold[
  With[{d=FreeFactors[Cos[v],x]},
  Dist[-d/Coefficient[v,x,1],Subst[Int[SubstFor[1,Cos[v]/d,u/Sin[v],x],x],x,Cos[v]/d],x]]]] /;
 Not[FalseQ[v]] && FunctionOfQ[NonfreeFactors[Cos[v],x],u/Sin[v],x]] /;
SimplifyFlag,

Int[u_,x_Symbol] :=
  With[{v=FunctionOfTrig[u,x]},
  With[{d=FreeFactors[Cos[v],x]},
  Dist[-d/Coefficient[v,x,1],Subst[Int[SubstFor[1,Cos[v]/d,u/Sin[v],x],x],x,Cos[v]/d],x]] /;
 Not[FalseQ[v]] && FunctionOfQ[NonfreeFactors[Cos[v],x],u/Sin[v],x]]]

8.  ∫u(((a+b ((Trig[c+d x])^2)+c ((Trig[c+d x])^2)))^p)dx

1:  ∫u(((a+b ((Cos[c+d x])^2)+c ((Sin[c+d x])^2)))^p)dx  when b-c==0

Derivation: Algebraic simplification

Basis: If  b-c==0, then b ((Cos[z])^2)+c ((Sin[z])^2)==c

Rule: If b-c==0, then

∫u(((a+b ((Tan[d+e x])^2)+c ((Sec[d+e x])^2)))^p)dx  ⟶  (((a+c))^p)∫u dx

Program code:

Int[u_.*(a_.+b_.*cos[d_.+e_.*x_]^2+c_.*sin[d_.+e_.*x_]^2)^p_.,x_Symbol] :=
  (a+c)^p*Int[ActivateTrig[u],x] /;
FreeQ[{a,b,c,d,e,p},x] && EqQ[b-c,0]

2:  ∫u(((a+b ((Tan[c+d x])^2)+c ((Sec[c+d x])^2)))^p)dx  when b+c==0

Derivation: Algebraic simplification

Basis: If  b+c==0, then b ((Tan[z])^2)+c ((Sec[z])^2)==c

Rule: If b+c==0, then

∫u(((a+b ((Tan[d+e x])^2)+c ((Sec[d+e x])^2)))^p)dx  ⟶  (((a+c))^p)∫u dx

Program code:

Int[u_.*(a_.+b_.*tan[d_.+e_.*x_]^2+c_.*sec[d_.+e_.*x_]^2)^p_.,x_Symbol] :=
  (a+c)^p*Int[ActivateTrig[u],x] /;
FreeQ[{a,b,c,d,e,p},x] && EqQ[b+c,0]

Int[u_.*(a_.+b_.*cot[d_.+e_.*x_]^2+c_.*csc[d_.+e_.*x_]^2)^p_.,x_Symbol] :=
  (a+c)^p*Int[ActivateTrig[u],x] /;
FreeQ[{a,b,c,d,e,p},x] && EqQ[b+c,0]

9.  ∫y'[x]((y[x])^m)dx

1:  ∫((y'[x])/(y[x]))dx

Reference: G&R 2.111.1.2, CRC 27, A&S 3.3.15

Derivation: Integration by substitution and reciprocal rule for integration

Rule:

∫((y'[x])/(y[x]))dx  ⟶  Log[y[x]]

Program code:

Int[u_/y_,x_Symbol] :=
  With[{q=DerivativeDivides[ActivateTrig[y],ActivateTrig[u],x]},
    q*Log[RemoveContent[ActivateTrig[y],x]] /;
 Not[FalseQ[q]]] /;
Not[InertTrigFreeQ[u]]

Int[u_/(y_*w_),x_Symbol] :=
  With[{q=DerivativeDivides[ActivateTrig[y*w],ActivateTrig[u],x]},
    q*Log[RemoveContent[ActivateTrig[y*w],x]] /;
 Not[FalseQ[q]]] /;
Not[InertTrigFreeQ[u]]

2:  ∫y'[x]((y[x])^m)dx  when  m≠-1

Reference: G&R 2.111.1.1, CRC 23, A&S 3.3.14

Derivation: Integration by substitution and power rule for integration

Rule: If  m≠-1, then

∫y'[x] ((y[x])^m)dx  ⟶  (((y[x])^(m+1))/(m+1))

Program code:

Int[u_*y_^m_.,x_Symbol] :=
  With[{q=DerivativeDivides[ActivateTrig[y],ActivateTrig[u],x]},
   q*ActivateTrig[y^(m+1)]/(m+1) /;
 Not[FalseQ[q]]] /;
FreeQ[m,x] && NeQ[m,-1] && Not[InertTrigFreeQ[u]]

Int[u_*y_^m_.*z_^n_.,x_Symbol] :=
  With[{q=DerivativeDivides[ActivateTrig[y*z],ActivateTrig[u*z^(n-m)],x]},
   q*ActivateTrig[y^(m+1)*z^(m+1)]/(m+1) /;
 Not[FalseQ[q]]] /;
FreeQ[{m,n},x] && NeQ[m,-1] && Not[InertTrigFreeQ[u]]

10.  ∫u (((a ((F[c+d x])^p)))^n)dx  when F∈{Sin,Cos,Tan,Cot,Sec,Csc} ∧ n∉ℤ ∧ p∈ℤ

1:  ∫u (((a ((F[c+d x])^p)))^n)dx  when F∈{Sin,Cos,Tan,Cot,Sec,Csc} ∧ n∉ℤ ∧ p∈ℤ

Derivation: Piecewise constant extraction

Basis: (∂_x)((((a ((F[c+d x])^p)))^n)/((F[c+d x])^(n p)))==0

Rule: If  F∈{Sin,Cos,Tan,Cot,Sec,Csc} ∧ n∉ℤ ∧ p∈ℤ, then

∫u (((a ((F[c+d x])^p)))^n)dx  ⟶  ((((a ((F[c+d x])^p)))^n)/((F[c+d x])^(n p)))∫u ((F[c+d x])^(n p))dx

Program code:

Int[u_.*(a_.*F_[c_.+d_.*x_]^p_)^n_,x_Symbol] :=
  With[{v=ActivateTrig[F[c+d*x]]},
  a^IntPart[n]*(v/NonfreeFactors[v,x])^(p*IntPart[n])*(a*v^p)^FracPart[n]/NonfreeFactors[v,x]^(p*FracPart[n])*
    Int[ActivateTrig[u]*NonfreeFactors[v,x]^(n*p),x]] /;
FreeQ[{a,c,d,n,p},x] && InertTrigQ[F] && Not[IntegerQ[n]] && IntegerQ[p]

2:  ∫u (((a (((b F[c+d x]))^p)))^n)dx  when  F∈{Sin,Cos,Tan,Cot,Sec,Csc} ∧ n∉ℤ ∧ p∉ℤ

Derivation: Piecewise constant extraction

Basis: (∂_x)((((a (((b F[c+d x]))^p)))^n)/( (((b F[c+d x]))^(n p))))==0

Rule: If  F∈{Sin,Cos,Tan,Cot,Sec,Csc} ∧ n∉ℤ ∧ p∉ℤ, then

∫u (((a (((b F[c+d x]))^p)))^n)dx  ⟶  (((a^(IntPart[n])) (((a (((b F[c+d x]))^p)))^(FracPart[n])))/( (((b F[c+d x]))^(p FracPart[n]))))∫u (((b F[c+d x]))^(n p))dx

Program code:

Int[u_.*(a_.*(b_.*F_[c_.+d_.*x_])^p_)^n_.,x_Symbol] :=
  With[{v=ActivateTrig[F[c+d*x]]},
  a^IntPart[n]*(a*(b*v)^p)^FracPart[n]/(b*v)^(p*FracPart[n])*Int[ActivateTrig[u]*(b*v)^(n*p),x]] /;
FreeQ[{a,b,c,d,n,p},x] && InertTrigQ[F] && Not[IntegerQ[n]] && Not[IntegerQ[p]]

11:  ∫F[Tan[a+b x]]dx  when F[Tan[a+b x]] is free of inverse functions

Reference: G&R 2.504

Derivation: Integration by substitution

Basis: F[Tan[z]]==((F[Tan[z]])/(1+((Tan[z])^2)))(∂_z)Tan[z]

Rule: If  F[Tan[a+b x]] is free of inverse functions, then

∫F[Tan[a+b x]]dx  ⟶  (1/b)Subst[∫((F[x])/(1+(x^2))) dx,x,Tan[a+b x]]

Program code:

If[TrueQ[$LoadShowSteps],

Int[u_,x_Symbol] :=
  With[{v=FunctionOfTrig[u,x]},
  ShowStep["","Int[F[Tan[a+b*x]],x]","1/b*Subst[Int[F[x]/(1+x^2),x],x,Tan[a+b*x]]",Hold[
  With[{d=FreeFactors[Tan[v],x]},
  Dist[d/Coefficient[v,x,1],Subst[Int[SubstFor[1/(1+d^2*x^2),Tan[v]/d,u,x],x],x,Tan[v]/d],x]]]] /;
 Not[FalseQ[v]] && FunctionOfQ[NonfreeFactors[Tan[v],x],u,x]] /;
SimplifyFlag && InverseFunctionFreeQ[u,x] && 
  Not[MatchQ[u,v_.*(c_.*tan[w_]^n_.*tan[z_]^n_.)^p_. /; FreeQ[{c,p},x] && IntegerQ[n] && LinearQ[w,x] && EqQ[z,2*w]]],

Int[u_,x_Symbol] :=
  With[{v=FunctionOfTrig[u,x]},
  With[{d=FreeFactors[Tan[v],x]},
  Dist[d/Coefficient[v,x,1],Subst[Int[SubstFor[1/(1+d^2*x^2),Tan[v]/d,u,x],x],x,Tan[v]/d],x]] /;
 Not[FalseQ[v]] && FunctionOfQ[NonfreeFactors[Tan[v],x],u,x]] /;
InverseFunctionFreeQ[u,x] && 
  Not[MatchQ[u,v_.*(c_.*tan[w_]^n_.*tan[z_]^n_.)^p_. /; FreeQ[{c,p},x] && IntegerQ[n] && LinearQ[w,x] && EqQ[z,2*w]]]]

12:  ∫u (((c Sin[v]))^m)dx  when v==a+b x ∧ m+(1/2)∈ℤ ∧ u ((Sin[(v/2)])^(2 m)) is a function of  Tan[(v/2)] free of inverse functions

Derivation: Piecewise constant extraction

Basis: If  v==a+b x, then (∂_x)(((((c Sin[v]))^m) (((c Tan[(v/2)]))^m))/((Sin[(v/2)])^(2 m)))==0

Rule: If  v==a+b x ∧ m+(1/2)∈ℤ ∧ u ((Sin[(v/2)])^(2 m)) is a function of  Tan[(v/2)] free of inverse functions, then

∫u (((c Sin[v]))^m)dx  ⟶  (((((c Sin[v]))^m) (((c Tan[(v/2)]))^m))/((Sin[(v/2)])^(2 m))) ∫((u ((Sin[(v/2)])^(2 m)))/(((c Tan[(v/2)]))^m))dx

Program code:

Int[u_*(c_.*sin[v_])^m_,x_Symbol] :=
  With[{w=FunctionOfTrig[u*Sin[v/2]^(2*m)/(c*Tan[v/2])^m,x]},
  (c*Sin[v])^m*(c*Tan[v/2])^m/Sin[v/2]^(2*m)*Int[u*Sin[v/2]^(2*m)/(c*Tan[v/2])^m,x] /;
 Not[FalseQ[w]] && FunctionOfQ[NonfreeFactors[Tan[w],x],u*Sin[v/2]^(2*m)/(c*Tan[v/2])^m,x]] /;
FreeQ[c,x] && LinearQ[v,x] && IntegerQ[m+1/2] && Not[SumQ[u]] && InverseFunctionFreeQ[u,x]

13:  ∫u(((a ((Tan[c+d x])^n)+b ((Sec[c+d x])^n)))^p)dx  when (n|p)∈ℤ

Derivation: Algebraic simplification

Basis: If  n∈ℤ, then a ((Tan[z])^n)+b ((Sec[z])^n)==((Sec[z])^n)(b+a ((Sin[z])^n))

Rule: If (n|p)∈ℤ, then

∫u(((a ((Tan[c+d x])^n)+b ((Sec[c+d x])^n)))^p)dx  ⟶  ∫u ((Sec[c+d x])^(n p))(((b+a ((Sin[c+d x])^n)))^p)dx

Program code:

Int[u_.*(a_.*tan[c_.+d_.*x_]^n_.+b_.*sec[c_.+d_.*x_]^n_.)^p_,x_Symbol] :=
  Int[ActivateTrig[u]*Sec[c+d*x]^(n*p)*(b+a*Sin[c+d*x]^n)^p,x] /;
FreeQ[{a,b,c,d},x] && IntegersQ[n,p]

Int[u_.*(a_.*cot[c_.+d_.*x_]^n_.+b_.*csc[c_.+d_.*x_]^n_.)^p_,x_Symbol] :=
  Int[ActivateTrig[u]*Csc[c+d*x]^(n*p)*(b+a*Cos[c+d*x]^n)^p,x] /;
FreeQ[{a,b,c,d},x] && IntegersQ[n,p]

14.  ∫u(((a ((Trig[c+d x])^p)+b ((Trig[c+d x])^q)+⋯))^n)dx

1:  ∫u(((a ((Trig[c+d x])^p)+b ((Trig[c+d x])^q)))^n)dx  when  n∈ℤ

Derivation: Algebraic simplification

Basis: a (z^p)+b (z^q)==(z^p)(a+b (z^(q-p)))

Rule: If  n∈ℤ, then

∫u(((a ((Trig[c+d x])^p)+b ((Trig[c+d x])^q)))^n)dx  ⟶  ∫u ((Trig[c+d x])^(n p))(((a+b ((Trig[c+d x])^(q-p))))^n)dx

Program code:

Int[u_*(a_*F_[c_.+d_.*x_]^p_.+b_.*F_[c_.+d_.*x_]^q_.)^n_.,x_Symbol] :=
  Int[ActivateTrig[u*F[c+d*x]^(n*p)*(a+b*F[c+d*x]^(q-p))^n],x] /;
FreeQ[{a,b,c,d,p,q},x] && InertTrigQ[F] && IntegerQ[n] && PosQ[q-p]

2:  ∫u(((a ((Trig[d+e x])^p)+b ((Trig[d+e x])^q)+c ((Trig[d+e x])^r)))^n)dx  when  n∈ℤ

Derivation: Algebraic simplification

Basis: a (z^p)+b (z^q)+c (z^r)==(z^p)(a+b (z^(q-p))+c (z^(r-p)))

Rule: If  n∈ℤ, then

∫u(((a ((Trig[d+e x])^p)+b ((Trig[d+e x])^q)+c ((Trig[d+e x])^r)))^n)dx  ⟶  ∫u ((Trig[d+e x])^(n p))(((a+b ((Trig[d+e x])^(q-p))+c ((Trig[d+e x])^(r-p))))^n)dx

Program code:

Int[u_*(a_*F_[d_.+e_.*x_]^p_.+b_.*F_[d_.+e_.*x_]^q_.+c_.*F_[d_.+e_.*x_]^r_.)^n_.,x_Symbol] :=
  Int[ActivateTrig[u*F[d+e*x]^(n*p)*(a+b*F[d+e*x]^(q-p)+c*F[d+e*x]^(r-p))^n],x] /;
FreeQ[{a,b,c,d,e,p,q,r},x] && InertTrigQ[F] && IntegerQ[n] && PosQ[q-p] && PosQ[r-p]

15:  ∫u(((a+b ((Trig[d+e x])^p)+c ((Trig[d+e x])^(-p))))^n)dx  when  n∈ℤ ∧ p<0

Derivation: Algebraic simplification

Basis: a+b (z^p)+c (z^q)==(z^p)(b+a (z^(-p))+c (z^(q-p)))

Rule: If  n∈ℤ ∧ p<0, then

∫u(((a+b ((Trig[d+e x])^p)+c ((Trig[d+e x])^q)))^n)dx  ⟶  ∫u ((Trig[d+e x])^(n p))(((b+a ((Trig[d+e x])^(-p))+c ((Trig[d+e x])^(q-p))))^n)dx

Program code:

Int[u_*(a_+b_.*F_[d_.+e_.*x_]^p_.+c_.*F_[d_.+e_.*x_]^q_.)^n_.,x_Symbol] :=
  Int[ActivateTrig[u*F[d+e*x]^(n*p)*(b+a*F[d+e*x]^(-p)+c*F[d+e*x]^(q-p))^n],x] /;
FreeQ[{a,b,c,d,e,p,q},x] && InertTrigQ[F] && IntegerQ[n] && NegQ[p]

16:  ∫u(((a Cos[c+d x]+b Sin[c+d x]))^n)dx  when  (a^2)+(b^2)==0

Derivation: Algebraic simplification

Basis: If  (a^2)+(b^2)==0, then a Cos[z]+b Sin[z]==a (e^(-((a z)/b)))

Rule: If  (a^2)+(b^2)==0, then

∫u(((a Cos[c+d x]+b Sin[c+d x]))^n)dx  ⟶  ∫u(((a (e^(-((a (c+d x))/b)))))^n)dx

Program code:

Int[u_.*(a_.*cos[c_.+d_.*x_]+b_.*sin[c_.+d_.*x_])^n_.,x_Symbol] :=
  Int[ActivateTrig[u]*(a*E^(-a/b*(c+d*x)))^n,x] /;
FreeQ[{a,b,c,d,n},x] && EqQ[a^2+b^2,0]

17:  ∫udx  when  TrigSimplifyQ[u]

Rule: If  TrigSimplifyQ[u], then

∫udx  ⟶  ∫TrigSimplify[u]dx

Program code:

Int[u_,x_Symbol] :=
  Int[TrigSimplify[u],x] /;
TrigSimplifyQ[u]

18.  ∫u((((v^m)(w^n)⋯))^p)dx  when p∉ℤ

1:  ∫u(((a v))^p)dx  when p∉ℤ

Derivation: Piecewise constant extraction

Basis: (∂_x)((((a F[x]))^p)/((F[x])^p))==0

Rule: If  p∉ℤ, then

∫u(((a v))^p)dx  ⟶  (((a^(IntPart[p])) (((a v))^(FracPart[p])))/(v^(FracPart[p])))∫u (v^p)dx

Program code:

Int[u_.*(a_*v_)^p_,x_Symbol] :=
  With[{uu=ActivateTrig[u],vv=ActivateTrig[v]},
  a^IntPart[p]*(a*vv)^FracPart[p]/(vv^FracPart[p])*Int[uu*vv^p,x]] /;
FreeQ[{a,p},x] && Not[IntegerQ[p]] && Not[InertTrigFreeQ[v]]

2:  ∫u((((v^m)))^p)dx  when p∉ℤ

Derivation: Piecewise constant extraction

Basis: (∂_x)((((((F[x])^m)))^p)/((F[x])^(m p)))==0

Rule: If  p∉ℤ, then

∫u((((v^m)))^p)dx  ⟶  (((((v^m)))^(FracPart[p]))/(v^(m FracPart[p])))∫u (v^(m p))dx

Program code:

Int[u_.*(v_^m_)^p_,x_Symbol] :=
  With[{uu=ActivateTrig[u],vv=ActivateTrig[v]},
  (vv^m)^FracPart[p]/(vv^(m*FracPart[p]))*Int[uu*vv^(m*p),x]] /;
FreeQ[{m,p},x] && Not[IntegerQ[p]] && Not[InertTrigFreeQ[v]]

3:  ∫u((((v^m)(w^n)))^p)dx  when p∉ℤ

Derivation: Piecewise constant extraction

Basis: (∂_x)((((((F[x])^m)((G[x])^n)))^p)/(((F[x])^(m p))((G[x])^(n p))))==0

Rule: If  p∉ℤ, then

∫u((((v^m)(w^n)))^p)dx  ⟶  (((((v^m)(w^n)))^(FracPart[p]))/((v^(m FracPart[p]))(w^(n FracPart[p]))))∫u (v^(m p))(w^(n p))dx

Program code:

Int[u_.*(v_^m_.*w_^n_.)^p_,x_Symbol] :=
  With[{uu=ActivateTrig[u],vv=ActivateTrig[v],ww=ActivateTrig[w]},
  (vv^m*ww^n)^FracPart[p]/(vv^(m*FracPart[p])*ww^(n*FracPart[p]))*Int[uu*vv^(m*p)*ww^(n*p),x]] /;
FreeQ[{m,n,p},x] && Not[IntegerQ[p]] && (Not[InertTrigFreeQ[v]] || Not[InertTrigFreeQ[w]])

19:  ∫udx  when  ExpandTrig[u,x]is a sum

Derivation: Algebraic expansion

Rule: If  ExpandTrig[u,x] is a sum, then

∫udx  ⟶  ∫ExpandTrig[u,x]dx

Program code:

Int[u_,x_Symbol] :=
  With[{v=ExpandTrig[u,x]},
  Int[v,x] /;
 SumQ[v]] /;
Not[InertTrigFreeQ[u]]

20:  ∫F[Sin[a+b x],Cos[a+b x]]dx  when F[Sin[a+b x],Cos[a+b x]] is free of inverse functions and ∫(1/(1+(x^2)))F[((2 x)/(1+(x^2))),((1-(x^2))/(1+(x^2)))] dx  is integrable in closed-form

Reference: G&R 2.501, CRC 484

Derivation: Integration by substitution

Basis: F[Sin[a+b x],Cos[a+b x]]==(2/b) Subst[(1/(1+(x^2)))F[((2 x)/(1+(x^2))),((1-(x^2))/(1+(x^2)))],x,Tan[((a+b x)/2)]](∂_x)Tan[((a+b x)/2)]

Rule: If  F[Sin[a+b x],Cos[a+b x]] is free of inverse functions and ∫(1/(1+(x^2)))F[((2 x)/(1+(x^2))),((1-(x^2))/(1+(x^2)))] dx is integrable in closed-form, then

∫F[Sin[a+b x],Cos[a+b x]]dx  ⟶  (2/b)Subst[∫(1/(1+(x^2)))F[((2 x)/(1+(x^2))),((1-(x^2))/(1+(x^2)))] dx,x,Tan[((a+b x)/2)]]

Program code:

If[TrueQ[$LoadShowSteps],

Int[u_,x_Symbol] :=
  With[{w=Block[{$ShowSteps=False,$StepCounter=Null}, 
			Int[SubstFor[1/(1+FreeFactors[Tan[FunctionOfTrig[u,x]/2],x]^2*x^2),Tan[FunctionOfTrig[u,x]/2]/FreeFactors[Tan[FunctionOfTrig[u,x]/2],x],u,x],x]]},  
  ShowStep["","Int[F[Sin[a+b*x],Cos[a+b*x]],x]","2/b*Subst[Int[1/(1+x^2)*F[2*x/(1+x^2),(1-x^2)/(1+x^2)],x],x,Tan[(a+b*x)/2]]",Hold[
  Module[{v=FunctionOfTrig[u,x],d},
  d=FreeFactors[Tan[v/2],x];
  Dist[2*d/Coefficient[v,x,1],Subst[Int[SubstFor[1/(1+d^2*x^2),Tan[v/2]/d,u,x],x],x,Tan[v/2]/d],x]]]] /;
 CalculusFreeQ[w,x]] /;
SimplifyFlag && InverseFunctionFreeQ[u,x] && Not[FalseQ[FunctionOfTrig[u,x]]],

Int[u_,x_Symbol] :=
  With[{w=Block[{$ShowSteps=False,$StepCounter=Null}, 
			Int[SubstFor[1/(1+FreeFactors[Tan[FunctionOfTrig[u,x]/2],x]^2*x^2),Tan[FunctionOfTrig[u,x]/2]/FreeFactors[Tan[FunctionOfTrig[u,x]/2],x],u,x],x]]},  
  Module[{v=FunctionOfTrig[u,x],d},
  d=FreeFactors[Tan[v/2],x];
  Dist[2*d/Coefficient[v,x,1],Subst[Int[SubstFor[1/(1+d^2*x^2),Tan[v/2]/d,u,x],x],x,Tan[v/2]/d],x]] /;
 CalculusFreeQ[w,x]] /;
InverseFunctionFreeQ[u,x] && Not[FalseQ[FunctionOfTrig[u,x]]]]

(* If[TrueQ[$LoadShowSteps],

Int[u_,x_Symbol] :=
  With[{v=FunctionOfTrig[u,x]},
  ShowStep["","Int[F[Sin[a+b*x],Cos[a+b*x]],x]","2/b*Subst[Int[1/(1+x^2)*F[2*x/(1+x^2),(1-x^2)/(1+x^2)],x],x,Tan[(a+b*x)/2]]",Hold[
  With[{d=FreeFactors[Tan[v/2],x]},
  Dist[2*d/Coefficient[v,x,1],Subst[Int[SubstFor[1/(1+d^2*x^2),Tan[v/2]/d,u,x],x],x,Tan[v/2]/d],x]]]] /;
 Not[FalseQ[v]]] /;
SimplifyFlag && InverseFunctionFreeQ[u,x],

Int[u_,x_Symbol] :=
  With[{v=FunctionOfTrig[u,x]},
  With[{d=FreeFactors[Tan[v/2],x]},
  Dist[2*d/Coefficient[v,x,1],Subst[Int[SubstFor[1/(1+d^2*x^2),Tan[v/2]/d,u,x],x],x,Tan[v/2]/d],x]] /;
 Not[FalseQ[v]]] /;
InverseFunctionFreeQ[u,x]] *)

X:  ∫F[Trig[a+b x]]dx

Note: If integrand involves inert trig functions, must suppress further application of integration rules.

Rule:

∫F[Trig[a+b x]]dx  ⟶  ∫F[Trig[a+b x]]dx

Program code:

Int[u_,x_Symbol] :=
  With[{v=ActivateTrig[u]},
   CannotIntegrate[v,x]] /;
Not[InertTrigFreeQ[u]]