I'm trying to verify triple product rule

$$\left(\frac{\partial x}{\partial y}\right) \left(\frac{\partial y}{\partial z}\right) \left(\frac{\partial z}{\partial x}\right) = -1$$

with the equation:

p*v == r*t

The following is my failed attempt:

p[v_, t_] := r*t/v;
v[p_, t_] := r*t/p;
t[p_, v_] := p*v/r;
Assuming[p*v == r*t, 
 Refine[D[p[v, t], v]*D[v[p, t], t]*D[t[p, v], p]]]

(*-((r t)/(p v))*)

Q1: How to get a result of - 1?

Q2: Is there any simpler way to get the product of this partial derivative?

Q3: Is there any way to get the result directly from the given equation without having to write the expression of each function p[v, t], v[p, t], t[p, v]? Especially when the implicit function cannot write the expression.


3 Answers 3


The following is a automation of the proof here. No need to make use of $p V=R T$.

eq = Dt@{z == z[x, y], y == y[x, z], x == x[y, z]}

\begin{array}{l} dz=dx \frac{\partial z(x,y)}{\partial x}+dy \frac{\partial z(x,y)}{\partial y} \\ dy=dx \frac{\partial y(x,z)}{\partial x}+dz \frac{\partial y(x,z)}{\partial z} \\ dx=dy \frac{\partial x(y,z)}{\partial y}+dz \frac{\partial x(y,z)}{\partial z} \\ \end{array}

mid = DeleteCases[
  Reap[Collect[Subtract @@ # == 0 /. Rule @@ #2, _Dt, Sow[# == 0] &] & @@@ 
     Subsets[eq, {2}]][[-1, 1]], True]

\begin{array}{r} 1-\frac{\partial y(x,z)}{\partial z} \frac{\partial z(x,y)}{\partial y}=0 \\ -\frac{\partial z(x,y)}{\partial x}-\frac{\partial y(x,z)}{\partial x} \frac{\partial z(x,y)}{\partial y}=0 \\ 1-\frac{\partial x(y,z)}{\partial z} \frac{\partial z(x,y)}{\partial x}=0 \\ -\frac{\partial x(y,z)}{\partial y} \frac{\partial z(x,y)}{\partial x}-\frac{\partial z(x,y)}{\partial y}=0 \\ 1-\frac{\partial x(y,z)}{\partial y} \frac{\partial y(x,z)}{\partial x}=0 \\ -\frac{\partial x(y,z)}{\partial z} \frac{\partial y(x,z)}{\partial x}-\frac{\partial y(x,z)}{\partial z}=0 \\ \end{array}

Eliminate[ mid[[2 ;; 3]], Derivative[1, 0][z][x, y]]

$$\frac{\partial x(y,z)}{\partial z} \frac{\partial y(x,z)}{\partial x} \frac{\partial z(x,y)}{\partial y}=-1$$

You can use pdConv to typeset partial derivative.

Still, if you insist, it's possible to make use of $pV=RT$ to deduce the triple product rule. The idea is essentially similar:

Clear[dt]; dt[a___, b_Symbol, c___] := dt[a, ToString@TraditionalForm@b, c]
Format@dt[f_, x_] := TraditionalForm@HoldForm@D[f, x]

sys = 
 Dt[p V == R T, #2, Constants -> {R, #3}]& @@@ NestList[RotateLeft, {p, V, T}, 2]
(* {p + V Dt[p, V, Constants -> {R, T, V}] == 0, 
    p Dt[V, T, Constants -> {p, R, T}] == R, 
    V == R Dt[T, p, Constants -> {p, R, V}]} *)

sysDfreezed = sys /. (h : Dt)[f_, x_, _] :> dt[f, x]

enter image description here

Eliminate[sysDfreezed, {p, V}] // Simplify[#, R > 0] &

enter image description here

It's OK to start from the general $f(p,V,T)=0$, of course. Once again, the idea is essentially similar:

MakeBoxes[Dt[f_, x_, __], fmt_]:= MakeBoxes[TraditionalForm@D[f, x], fmt]

F = f[p, V, T];

generalsys = Dt[F == 0, #2, Constants -> #3] & @@@ 
              NestList[RotateLeft, {p, V, T}, 2]

\begin{array}{r} \frac{\partial f}{\partial p} \frac{\partial p}{\partial V}+\frac{\partial f}{\partial V}=0 \\ \frac{\partial f}{\partial V} \frac{\partial V}{\partial T}+\frac{\partial f}{\partial T}=0 \\ \frac{\partial f}{\partial T} \frac{\partial T}{\partial p}+\frac{\partial f}{\partial p}=0 \\ \end{array}

Eliminate[generalsys, D[F, {{p, V}}]] // Simplify[#, D[F, T] != 0] &

$$ 1+\frac{\partial T}{\partial p} \frac{\partial p}{\partial V} \frac{\partial V}{\partial T}=0 $$

  • $\begingroup$ Thanks a lot. @xzczd $\endgroup$
    – lotus2019
    Feb 19, 2022 at 9:43
  • $\begingroup$ @lotus2019 If you insist on making use of $pV=RT$, check my edit. $\endgroup$
    – xzczd
    Mar 11, 2022 at 12:40
  • $\begingroup$ That's perfect! Thank you! $\endgroup$
    – lotus2019
    Mar 12, 2022 at 0:59

Observe the different colours in the code you provided and the solution below:

pp[v_, t_] := r*t/v;
vv[p_, t_] := r*t/p;
tt[p_, v_] := p*v/r;
expr = D[pp[v, t], v]*D[vv[p, t], t]*D[tt[p, v], p]

and now,

Assuming[r t == p v, Simplify[expr]]


Simplify[expr, Assumptions -> r t == p v]


(D[pp[v, t], v]*D[vv[p, t], t]*D[tt[p, v], p]) /. r t -> p v

or after the computation of the derivatives just set the value for r to be

r = (p v)/t

and then execute


All of the above yield


  • $\begingroup$ Thanks. Is there any way to deduce the final result directly from the equation without having to write the expression of each function pp vv tt? Especially when the implicit function cannot write the expression. $\endgroup$
    – lotus2019
    Feb 18, 2022 at 8:00
  • $\begingroup$ @lotus2019 I am not sure what you mean. You want to get the -1 without computing the derivatives? Is this what you are saying? $\endgroup$
    – user49048
    Feb 18, 2022 at 8:01
  • $\begingroup$ I want to get the -1 without write "pp[v_, t_] := rt/v; vv[p_, t_] := rt/p; tt[p_, v_] := p*v/r;" but write only the equation p * v == r * t. $\endgroup$
    – lotus2019
    Feb 18, 2022 at 8:06
  • $\begingroup$ @lotus2019 I don't think so. If you read carefully the wiki link you provided, you will see that in order to derive the proof you consider $f(x,y,z)=0$. The relation $p v = r t$ is precisely that. Maybe I am wrong, but to be honest I think that the above is the simplest approach to go about it. $\endgroup$
    – user49048
    Feb 18, 2022 at 8:10
Simplify[D[p[v, t], v]*D[v[p, t], t]*D[t[p, v], p],Assumptions -> p*v == r*t]
  • $\begingroup$ Thanks. @Ulrich Neumann $\endgroup$
    – lotus2019
    Feb 19, 2022 at 9:43
  • $\begingroup$ Well, this is already included in kcr's answer, isn't it? $\endgroup$
    – xzczd
    Mar 11, 2022 at 16:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.