jagomart
digital resources
picture1_Chlipala Slides


 151x       Filetype PDF       File size 0.29 MB       Source: www.cis.upenn.edu


File: Chlipala Slides
engineering a verified functional language compiler adam chlipala harvard university wmm 2009 the poplmark adt induction inversion substitution compiling a functional language conversion to continuation passing style f x p ...

icon picture PDF Filetype PDF | Posted on 02 Feb 2023 | 2 years ago
Partial capture of text on file.
           Engineering a Verified 
            Functional Language 
                          Compiler
                              Adam Chlipala
                             Harvard University
                               WMM 2009
                                     
               The POPLmark ADT
     ● Induction
     ● Inversion
     ● Substitution
                               
       Compiling a Functional Language
     Conversion to Continuation-Passing Style
            f, x           λp. let f = fst(p) in
                               let k = snd(p) in
                               let F = λp'. let x = fst(p') in
      λf. λx. f x                           let k' = snd(p') in
                                            let p'' = (x, k') in
                                            f(p'') in
                               k(F)
                                               p, f, k, p', x, k'
     Common Subexpression Elimination
      let x = fst(a) in
      let y = snd(a) in               let y = snd(a) in
      let z = (y, x) in
      let u = fst(z) in
      let p = (u, k') in              let p = (y, k') in
                                       
      k(p)        a, k, k', x,        k(p)
                   y, z, u, p                        a, k, k', y, p
                   Concrete Binding
                                       Need to choose a 
                                       fresh name for each 
                                        new variable....
                        λp. let f = fst(p) in
                            let k = snd(p) in
                            let F = λp'. let x = fst(p') in
     λf. λx. f x                         let k' = snd(p') in
                                         let p'' = (x, k') in
                                         f(p'') in
                            k(F)
      Every theorem must take premises characterizing which variables are free in 
      which terms.
      Every translation must compute with these free variable sets to come up with 
      “fresh” names.
                                   
      Nominal logic doesn't seem to help much here.
The words contained in this file might help you see if this file matches what you are looking for:

...Engineering a verified functional language compiler adam chlipala harvard university wmm the poplmark adt induction inversion substitution compiling conversion to continuation passing style f x p let fst in k snd common subexpression elimination y z u concrete binding need choose fresh name for each new variable every theorem must take premises characterizing which variables are free terms translation compute with these sets come up names nominal logic doesn t seem help much here...

no reviews yet
Please Login to review.