let p_if c p1 p2 = match c, val_of p1, val_of p2 with | (_,Ptrue, Ptrue ) -> cut (cut Ptrue p2) p1 | (_,Pfalse, Pfalse ) -> cut (cut Pfalse p2) p1 | (t,_ , _) -> Pif (t,p1,p2)