#WHILE #MAXREG 5 #IMPORT AddSub def Prod out: o0 in: i0, i1 aux: a0 do o0 := 0; loop i1 do a0 := Add(o0,i0)(); o0 := a0 end enddef def Exp out: o0 in: i0, i1 aux: a0, a1 do o0 := succ(0); loop i1 do a0 := Prod(o0,i0)(a1); o0 := a0 end enddef def AbsSub out: o0 in: i0, i1 aux: a0 do o0 := 0; a0 := Sub(i0,i1)(); o0 := IfLet(a0,a0)(); a0 := Sub(i1,i0)(); o0 := IfLet(a0,a0)() enddef //x0 := Exp(x1,x2)(x3,x4) x0 := AbsSub(x1,x2)(x3)