# An Example: Defining Your Own Integration Function

Now that we have introduced the basic features of patterns in the Wolfram Language, we can use them to give a more or less complete example. We will show how you could define your own simple integration function in the Wolfram Language.

From a mathematical point of view, the integration function is defined by a sequence of mathematical relations. By setting up transformation rules for patterns, you can implement these mathematical relations quite directly in the Wolfram Language.

 mathematical form Wolfram Language definition integrate[y_+z_,x_]:=integrate[y,x]+integrate[z,x] ( independent of ) integrate[c_y_,x_]:=c integrate[y,x]/;FreeQ[c,x] integrate[c_,x_]:=cx/;FreeQ[c,x] , integrate[x_^n_.,x_]:=x^(n+1)/(n+1)/;FreeQ[n,x]&&n!=-1 integrate[1/(a_.x_+b_.),x_]:=Log[ax+b]/a/;FreeQ[{a,b},x] integrate[Exp[a_.x_+b_.],x_]:=Exp[ax+b]/a/;FreeQ[{a,b},x]

Definitions for an integration function.

This implements the linearity relation for integrals: .
 In[1]:=
The associativity of Plus makes the linearity relation work with any number of terms in the sum.
 In[2]:=
 Out[2]=
This makes integrate pull out factors that are independent of the integration variable x.
 In[3]:=
The Wolfram Language tests each term in each product to see whether it satisfies the FreeQ condition, and so can be pulled out.
 In[4]:=
 Out[4]=
This gives the integral of a constant.
 In[5]:=
Now the constant term in the sum can be integrated.
 In[6]:=
 Out[6]=
This gives the standard formula for the integral of . By using the pattern x_^n_., rather than x_^n_, we include the case of .
 In[7]:=
Now this integral can be done completely.
 In[8]:=
 Out[8]=
Of course, the builtin integration function Integrate (with a capital I) could have done the integral anyway.
 In[9]:=
 Out[9]=
Here is the rule for integrating the reciprocal of a linear function. The pattern a_.x_+b_. stands for any linear function of x.
 In[10]:=
Here both a and b take on their default values.
 In[11]:=
 Out[11]=
Here is a more complicated case. The symbol a now matches 2p.
 In[12]:=
 Out[12]=
You can go on and add many more rules for integration. Here is a rule for integrating exponentials.
 In[13]:=