GEN_BETA_CONV : conv
GEN_BETA_CONV "(\(x,y). t) p" = t[(FST p)/x, (SND p)/y]
#GEN_BETA_CONV "(\(x,y). x + y) (1,2)";; |- (\(x,y). x + y)(1,2) = 1 + 2whereas in the following, the operand of the beta-redex is not a pair, so FST and SND are introduced:
#GEN_BETA_CONV "(\(x,y). x + y) numpair";; |- (\(x,y). x + y)numpair = (FST numpair) + (SND numpair)The introduction of FST and SND will be done more than once as necessary:
#GEN_BETA_CONV "(\(w,x,y,z). w + x + y + z) (1,triple)";; |- (\(w,x,y,z). w + (x + (y + z)))(1,triple) = 1 + ((FST triple) + ((FST(SND triple)) + (SND(SND triple))))