-- 0^x ==> 0
reduceExp (E (S [P [(I i)]])   (P [(I j)]))
  | j >= 0                                  = I (i ^ j)
reduceExp (E (S [P [(I i)]])   (P [(I j)]))
  | j >= 0                                  = I (i ^ j)
reduceExp (E (S [P [(I i)]])   (P [(I j)]))
  | j >= 0                                  = I (i ^ j)