alfa-conversie -- redenumesc variabila **din corpul funcției** din beta-redex ce redenumesc -> parametrul formal și toate aparițiile libere ale acestuia în corpul funcției de care ține Pas de reducere = alfa-conversie + beta-reducere -> Secvență de reducere Omega = (λx.(x x) λx.(x x)) x corp A corp = (x x) [A/x] rezultat = (A A) (λx.(x x) λx.(x x)) // dacă am avea nume diferite de variabile (λy.(y y) λx.(x x)) ( y y ) ( λx.(x x) λx.(x x) ) // tot Omega (λx.y (λx.(x x) λx.(x x))) (λx.(λx.x x) z) - reduc beta-redex din exterior (λx.x x) = (λx.x z) z Forma normală este o expresie la care se pot transforma toate expresiile echivalente cu ea. P => Q (FNI) (not P) sau Q (FNC) not (not (P => Q)) (λx.λy.(x y) (λx.x y)) 1 alfa-> (λx.λz.(x z) (λx.x y)) -> λz.(x z) [(λx.x y) / x] = -> λz.((λx.x y) z) (FNF) -> λz.(y z) (FN) 2 -> (λx.λy.(x y) y) alfa-> (λx.λw.(x w) y) λw.(x w) [y / x] λw.(y w) 1. Când se termină -> la FN (nu mai am beta-redecși) Se termină întotdeauna? -> NU 2. DA 3. NU, orice secvență care se termină are același rezultat 4. Reducere stânga-dreapta 5. FN Când alfa-conversie? pentru beta-redex (λx.C A) * ce variabile libere am în A * am variabile cu același nume în C? * dacă da, redenumesc variabilele din C care au același nume cu variabile libere din A, la nume diferite (noi în raport cu expresia λ gloablă) corp ( ((λ (x) (λ (y) y)) (/ 5 0)) 'a) --------------------------- ( (λ (y) y) 'a ) 'a