publications: - title: "Partial Evaluation for Common Intermediate Language" author: - name: "Andrei M. Chepovsky" link: "https://researchr.org/alias/andrei-m.-chepovsky" - name: "Andrei V. Klimov" link: "http://pat.keldysh.ru/~anklimov/" - name: "Arkady V. Klimov" link: "https://researchr.org/alias/arkady-v.-klimov" - name: "Yuri A. Klimov" link: "http://pat.keldysh.ru/~yura/" - name: "Andrei S. Mishchenko" link: "https://researchr.org/alias/andrei-s.-mishchenko" - name: "Sergei A. Romanenko" link: "http://pat.keldysh.ru/~roman/" - name: "Sergei Yu. Skorobogatov" link: "https://researchr.org/alias/sergei-yu.-skorobogatov" year: "2003" doi: "http://dx.doi.org/10.1007/978-3-540-39866-0_19" abstract: "Partial Evaluation is a well-established method for specialization of programs in functional languages. However, real-world applications demand specialization of object-oriented languages. With the advent of the Microsoft .NET platform with Common Intermediate Language (CIL), to which multiple languages are compiled, various program analysis and transformation techniques, including partial evaluation, can be developed once for a low-level language rather than over and over again to various high-level languages. The CILPE Project aims at developing a practical specializer for CIL programs based on Partial Evaluation with preliminary analysis referred to as Binding Time Analysis (BTA). The CILPE Specializer partially evaluates operations on values and objects determined by BTA as static. Static objects are created, processed and destroyed at specialization time; they may be mutable and can have some fields unknown (dynamic). Arbitrary verifiable CIL code is allowed as input." links: doi: "http://dx.doi.org/10.1007/978-3-540-39866-0_19" tags: - "programming languages" - " object-oriented languages" - "object-oriented programming" - "rule-based" - "program analysis" - "meta programming" - "transformation language" - "functional programming" - "analysis" - "static analysis" - "binding-time" - "compiler" - " mutable objects" - "partial evaluation" - "subject-oriented programming" - " Common Intermediate Language" - "Meta-Environment" - " polyvariant Binding-Time Analysis" - "feature-oriented programming" - "meta-objects" - "transformation" - "program transformation" researchr: "https://researchr.org/publication/ChepovskyKKKMRS03" cites: 0 citedby: 0 pages: "171-177" booktitle: "Perspectives of Systems Informatics, 5th International Andrei Ershov Memorial Conference, PSI 2003, Akademgorodok, Novosibirsk, Russia, July 9-12, 2003, Revised Papers" editor: - name: "Manfred Broy" link: "https://researchr.org/alias/manfred-broy" - name: "Alexandre V. Zamulin" link: "https://researchr.org/alias/alexandre-v.-zamulin" volume: "2890" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "3-540-20813-5" kind: "inproceedings" key: "ChepovskyKKKMRS03" - title: "Proving the Equivalence of Higher-Order Terms by Means of Supercompilation" author: - name: "Ilya Klyuchnikov" link: "http://pat.keldysh.ru/~ilya/" - name: "Sergei A. Romanenko" link: "http://pat.keldysh.ru/~roman/" year: "2009" doi: "http://dx.doi.org/10.1007/978-3-642-11486-1_17" abstract: "One of the applications of supercompilation is proving properties of programs. We focus in this paper on a specific task: proving term equivalence for a higher-order lazy functional language. The “classical” way to prove equivalence of two terms t1 and t2 is to write an equality function equals and to simplify the term (equals t1 t2). However, this works only when certain conditions are met. The paper presents another approach to proving term equivalence by means of supercompilation. In this approach we supercompile both terms and compare supercompiled terms syntactically. Some applications of the technique are discussed. In particular, one of these applications may lead to the development of a more powerful “higher-level” supercompiler. " links: doi: "http://dx.doi.org/10.1007/978-3-642-11486-1_17" tags: - "laziness" - "programming languages" - "functional programming" - "systematic-approach" - "domain-specific language" researchr: "https://researchr.org/publication/KlyuchnikovR09" cites: 0 citedby: 0 pages: "193-205" booktitle: "Perspectives of Systems Informatics, 7th International Andrei Ershov Memorial Conference, PSI 2009, Novosibirsk, Russia, June 15-19, 2009. Revised Papers" editor: - name: "Amir Pnueli" link: "https://researchr.org/alias/amir-pnueli" - name: "Irina Virbitskaite" link: "https://researchr.org/alias/irina-virbitskaite" - name: "Andrei Voronkov" link: "https://researchr.org/alias/andrei-voronkov" volume: "5947" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-642-11485-4" kind: "inproceedings" key: "KlyuchnikovR09" - title: "Arity Raiser and its Use in Program Specialization" author: - name: "Sergei A. Romanenko" link: "http://pat.keldysh.ru/~roman/" year: "1990" doi: "http://dx.doi.org/10.1007/3-540-52592-0_73" abstract: "Experiments on generating compilers by specializing specializers with respect to interpreters have shown that the compilers thus obtained have a natural structure only if the specializer does variable splitting. Variable splitting can result in a residual program using several variables to represent the values of a single variable of the original program. In the case of functional programming variable splitting is done by raising the arities of functions. The paper describes the structure and principles of operation of an arity raiser dealing with programs in a subset of pure Lisp." links: doi: "http://dx.doi.org/10.1007/3-540-52592-0_73" tags: - "interpreter" - "functional programming" - "principles" - "compiler" - "programming" researchr: "https://researchr.org/publication/Romanenko90" cites: 0 citedby: 0 pages: "341-360" booktitle: "ESOP 90, 3rd European Symposium on Programming, Copenhagen, Denmark, May 15-18, 1990, Proceedings" editor: - name: "Neil D. Jones" link: "http://www.diku.dk/hjemmesider/ansatte/neil/" volume: "432" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "3-540-52592-0" kind: "inproceedings" key: "Romanenko90"