merged; also, implies_triple should be less unsound :P