PBETA_CONV : conv
|- (\p.t)q = t[q/p]
- PBETA_CONV (Term `((\((a:'a,b:'a),(c:'a,d:'a)). f a b c d) ((w,x),(y,z))):'a`); > val it = |- (\((a,b),c,d). f a b c d) ((w,x),y,z) = f w x y z : thm
PBETA_CONV does not require the structure of the argument and the bound pair to match.
- PBETA_CONV (Term `((\((a:'a,b:'a),(c:'a,d:'a)). f a b c d) ((w,x),yz)):'a`); > val it = |- (\((a,b),c,d). f a b c d) ((w,x),yz) = f w x (FST yz) (SND yz) : thm
PBETA_CONV regards component pairs of the bound pair as variables in their own right and preserves structure accordingly:
- PBETA_CONV (Term `((\((a:'a,b:'a),(c:'a,d:'a)). f (a,b) (c,d)) (wx,(y,z))):'a`); > val it = |- (\((a,b),c,d). f (a,b) (c,d)) (wx,y,z) = f wx (y,z) : thm