private boolean mpChecker(LinkedList<String>left,LinkedList<String>middle, LinkedList<String>consequent)
	{
		/*
		 * assume (a=>b)
		 * assume ((a=>b)=>(b=>c))
		 * mp 1 2 (b=>c)
		 * 
		 * */
		
		LinkedList<String> fullExpression;
		LinkedList<String> predicate;


		if (left.size() > middle.size())
		{
			fullExpression = left;
			predicate = middle;
		}
		else
		{
			fullExpression = middle;
			predicate = left;
		}

		//System.out.println(fullExpression.toArray().toString());
		//System.out.println(predicate.toArray().toString());

		if (fullExpression.pop().equals("=>"))
		{
			String fullBuff = "";

			//check predicate matches left side of full expression
			for(int i=0; i < predicate.size();i++)
			{
				try
				{
					fullBuff = fullExpression.pop();
					assert predicate.pop().equals(fullBuff);
				}
				catch (Exception e)
				{
					return false;
				}
			}

			//check consequent matches right side of full expression
			for(int i=0; i < consequent.size();i++)
			{
				try
				{
					fullBuff = fullExpression.pop();
					assert consequent.pop().equals(fullBuff);
				}
				catch (Exception e)
				{
					return false;
				}
			}

			try
			{
				assert fullExpression.size()==0;
				return true;
			}
			catch (Exception e)
			{
				return false;
			}
			
		}
		return false;
		
	}