uthThm :: Theorem ()
truthThm =
  let step1 = inst2 u (truth ()) axiom1
      step2 = inst3 u (truth ()) u axiom2
      step3 = mp step2 step1
      step4 = inst2 u u axiom1
  in mp step3 step4

-- | discharge P 
truthThm :: Theorem ()
truthThm =
  let step1 = inst2 u (truth ()) axiom1
      step2 = inst3 u (truth ()) u axiom2
      step3 = mp step2 step1
      step4 = inst2 u u axiom1
  in mp step3 step4
truthThm =
  let step1 = inst2 u (truth ()) axiom1
      step2 = inst3 u (truth ()) u axiom2
      step3 = mp step2 step1
      step4 = inst2 u u axiom1
  in mp step3 step4