public void testShow() {
		boolean thrown = false;
		Proof test = new Proof (null);
		try { //Proof must start with show.
			test.extendProof("assume d");
		} catch (IllegalInferenceException e) {
		} catch (IllegalLineException e) {
			assertEquals(e.getMessage(),"Must start proof with show.");
			thrown= true;
		}
		assertTrue(thrown);		
		thrown = false;
		try { //Wrong number of items.
			test.extendProof("show");
		} catch (IllegalInferenceException e) {
		} catch (IllegalLineException e) {
			assertEquals(e.getMessage(),"Wrong number of things.");
			thrown= true;
		}
		assertTrue(thrown);
		thrown=false;
		try { //Wrong number of items.
			test.extendProof("show");
		} catch (IllegalInferenceException e) {
		} catch (IllegalLineException e) {
			assertEquals(e.getMessage(),"Wrong number of things.");
			thrown= true;
		}
		assertTrue(thrown);

		thrown = false;
		test = new Proof(null);
		try {
			test.extendProof("show (p=>((p=>q)=>q))");
			test.extendProof("assume p");
			test.extendProof("show ((p=>q)=>q)");
			test.extendProof("assume (p=>q)");
			test.extendProof("show q");
			test.extendProof("mp 2 3.1 q");
			//Line 3.2 is show q.
			//Legal to refer to a show step. 
			test.extendProof("ic 3.2 ((p=>q)=>q)");
		} catch (IllegalLineException e) {
			thrown = true;
		} catch (IllegalInferenceException e) {
			thrown = true;
		}
		assertFalse(thrown);
	}