Skip to content

Instantly share code, notes, and snippets.

@Tarmean
Created May 7, 2019 14:00
Show Gist options
  • Select an option

  • Save Tarmean/4f3b550184063675479e1edd68b026e9 to your computer and use it in GitHub Desktop.

Select an option

Save Tarmean/4f3b550184063675479e1edd68b026e9 to your computer and use it in GitHub Desktop.
betaC(L, R) :- var(L), !, L=R.
betaC(app(X, Y), R) :- !, betaC(X, XX), betaC(Y, YY), app(XX,YY,R).
/* for head normal form: betaC(lam(X, Y), R) :- !, R = lam(X, Y).*/
betaC(lam(X, Y), R) :- !, betaC(Y, YY), R = lam(X, YY).
betaC(L, R) :- L =.. [H|A], maplist(betaC, A, AA), R =.. [H|AA].
app(I, Y, R) :- nonvar(I), I = lam(X, F), !, alphaConvert(Y, X), betaC(F, R).
app(X, Y, app(X,Y)).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment