{"id":"https://openalex.org/W2037317228","doi":"https://doi.org/10.1017/s1471068403001662","title":"Offline specialisation in Prolog using a hand-written compiler generator","display_name":"Offline specialisation in Prolog using a hand-written compiler generator","publication_year":2004,"publication_date":"2004-01-01","ids":{"openalex":"https://openalex.org/W2037317228","doi":"https://doi.org/10.1017/s1471068403001662","mag":"2037317228"},"language":"en","primary_location":{"id":"doi:10.1017/s1471068403001662","is_oa":false,"landing_page_url":"https://doi.org/10.1017/s1471068403001662","pdf_url":null,"source":{"id":"https://openalex.org/S59670734","display_name":"Theory and Practice of Logic Programming","issn_l":"1471-0684","issn":["1471-0684","1475-3081"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310311721","host_organization_name":"Cambridge University Press","host_organization_lineage":["https://openalex.org/P4310311721","https://openalex.org/P4310311702"],"host_organization_lineage_names":["Cambridge University Press","University of Cambridge"],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Theory and Practice of Logic Programming","raw_type":"journal-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":true,"oa_status":"green","oa_url":"https://lirias.kuleuven.be/handle/123456789/124896","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5058847017","display_name":"Micha\u00ebl Leuschel","orcid":"https://orcid.org/0000-0002-4595-1518"},"institutions":[{"id":"https://openalex.org/I43439940","display_name":"University of Southampton","ror":"https://ror.org/01ryk1543","country_code":"GB","type":"education","lineage":["https://openalex.org/I43439940"]}],"countries":["GB"],"is_corresponding":true,"raw_author_name":"MICHAEL LEUSCHEL","raw_affiliation_strings":["DSSE, Department of Computer Science, University of Southampton, Highfield SO17 1BJ, UK","DSSE, Department of Computer Science, University of Southampton, Highfield SO17 1BJ, UK#TAB#"],"affiliations":[{"raw_affiliation_string":"DSSE, Department of Computer Science, University of Southampton, Highfield SO17 1BJ, UK","institution_ids":["https://openalex.org/I43439940"]},{"raw_affiliation_string":"DSSE, Department of Computer Science, University of Southampton, Highfield SO17 1BJ, UK#TAB#","institution_ids":["https://openalex.org/I43439940"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5112294253","display_name":"Jesper J\u00f8rgensen","orcid":null},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"JESPER J\u00d8RGENSEN","raw_affiliation_strings":["Department of Mathematics and Physics, Royal Veterinary and Agricultural University, Thorvaldsensvej 40, DK-1871 Frederiksberg C, Denmark","Department of Mathematics and Physics, Royal Veterinary and Agricultural University, Thorvaldsensvej 40, DK-1871 Frederiksberg C, Denmark#TAB#"],"affiliations":[{"raw_affiliation_string":"Department of Mathematics and Physics, Royal Veterinary and Agricultural University, Thorvaldsensvej 40, DK-1871 Frederiksberg C, Denmark","institution_ids":[]},{"raw_affiliation_string":"Department of Mathematics and Physics, Royal Veterinary and Agricultural University, Thorvaldsensvej 40, DK-1871 Frederiksberg C, Denmark#TAB#","institution_ids":[]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5006632551","display_name":"Wim Vanhoof","orcid":"https://orcid.org/0000-0003-3769-6294"},"institutions":[{"id":"https://openalex.org/I99464096","display_name":"KU Leuven","ror":"https://ror.org/05f950310","country_code":"BE","type":"education","lineage":["https://openalex.org/I99464096"]}],"countries":["BE"],"is_corresponding":false,"raw_author_name":"WIM VANHOOF","raw_affiliation_strings":["Department of Computer Science, Katholieke Universiteit Leuven, Celestijnenlaan 200A, B-3001 Heverlee, Belgium","Department of Computer Science, Katholieke Universiteit Leuven, Celestijnenlaan 200A, B\u20103001 Heverlee, Belgium"],"affiliations":[{"raw_affiliation_string":"Department of Computer Science, Katholieke Universiteit Leuven, Celestijnenlaan 200A, B-3001 Heverlee, Belgium","institution_ids":["https://openalex.org/I99464096"]},{"raw_affiliation_string":"Department of Computer Science, Katholieke Universiteit Leuven, Celestijnenlaan 200A, B\u20103001 Heverlee, Belgium","institution_ids":["https://openalex.org/I99464096"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5004343076","display_name":"Maurice Bruynooghe","orcid":"https://orcid.org/0000-0002-6881-1462"},"institutions":[{"id":"https://openalex.org/I99464096","display_name":"KU Leuven","ror":"https://ror.org/05f950310","country_code":"BE","type":"education","lineage":["https://openalex.org/I99464096"]}],"countries":["BE"],"is_corresponding":false,"raw_author_name":"MAURICE BRUYNOOGHE","raw_affiliation_strings":["Department of Computer Science, Katholieke Universiteit Leuven, Celestijnenlaan 200A, B-3001 Heverlee, Belgium","Department of Computer Science, Katholieke Universiteit Leuven, Celestijnenlaan 200A, B\u20103001 Heverlee, Belgium"],"affiliations":[{"raw_affiliation_string":"Department of Computer Science, Katholieke Universiteit Leuven, Celestijnenlaan 200A, B-3001 Heverlee, Belgium","institution_ids":["https://openalex.org/I99464096"]},{"raw_affiliation_string":"Department of Computer Science, Katholieke Universiteit Leuven, Celestijnenlaan 200A, B\u20103001 Heverlee, Belgium","institution_ids":["https://openalex.org/I99464096"]}]}],"institutions":[],"countries_distinct_count":2,"institutions_distinct_count":4,"corresponding_author_ids":["https://openalex.org/A5058847017"],"corresponding_institution_ids":["https://openalex.org/I43439940"],"apc_list":null,"apc_paid":null,"fwci":10.6382,"has_fulltext":false,"cited_by_count":41,"citation_normalized_percentile":{"value":0.98174796,"is_in_top_1_percent":false,"is_in_top_10_percent":true},"cited_by_percentile_year":{"min":89,"max":99},"biblio":{"volume":"4","issue":"1-2","first_page":"139","last_page":"191"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9997000098228455,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9997000098228455,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10142","display_name":"Formal Methods in Verification","score":0.998199999332428,"subfield":{"id":"https://openalex.org/subfields/1703","display_name":"Computational Theory and Mathematics"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10743","display_name":"Software Testing and Debugging Techniques","score":0.9919999837875366,"subfield":{"id":"https://openalex.org/subfields/1712","display_name":"Software"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/partial-evaluation","display_name":"Partial evaluation","score":0.9062148332595825},{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.8790136575698853},{"id":"https://openalex.org/keywords/prolog","display_name":"Prolog","score":0.8529664874076843},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.7371463179588318},{"id":"https://openalex.org/keywords/compiler","display_name":"Compiler","score":0.7189041376113892},{"id":"https://openalex.org/keywords/generator","display_name":"Generator (circuit theory)","score":0.6437103748321533},{"id":"https://openalex.org/keywords/usable","display_name":"USable","score":0.5744786858558655},{"id":"https://openalex.org/keywords/program-transformation","display_name":"Program transformation","score":0.5032703280448914},{"id":"https://openalex.org/keywords/logic-program","display_name":"Logic program","score":0.4920603632926941},{"id":"https://openalex.org/keywords/process","display_name":"Process (computing)","score":0.42519262433052063},{"id":"https://openalex.org/keywords/software-engineering","display_name":"Software engineering","score":0.3261425495147705},{"id":"https://openalex.org/keywords/logic-programming","display_name":"Logic programming","score":0.27988192439079285}],"concepts":[{"id":"https://openalex.org/C195701839","wikidata":"https://www.wikidata.org/wiki/Q4008398","display_name":"Partial evaluation","level":2,"score":0.9062148332595825},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8790136575698853},{"id":"https://openalex.org/C81721847","wikidata":"https://www.wikidata.org/wiki/Q163468","display_name":"Prolog","level":2,"score":0.8529664874076843},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.7371463179588318},{"id":"https://openalex.org/C169590947","wikidata":"https://www.wikidata.org/wiki/Q47506","display_name":"Compiler","level":2,"score":0.7189041376113892},{"id":"https://openalex.org/C2780992000","wikidata":"https://www.wikidata.org/wiki/Q17016113","display_name":"Generator (circuit theory)","level":3,"score":0.6437103748321533},{"id":"https://openalex.org/C2780615836","wikidata":"https://www.wikidata.org/wiki/Q2471869","display_name":"USable","level":2,"score":0.5744786858558655},{"id":"https://openalex.org/C2778361913","wikidata":"https://www.wikidata.org/wiki/Q7248437","display_name":"Program transformation","level":2,"score":0.5032703280448914},{"id":"https://openalex.org/C2987117450","wikidata":"https://www.wikidata.org/wiki/Q275603","display_name":"Logic program","level":3,"score":0.4920603632926941},{"id":"https://openalex.org/C98045186","wikidata":"https://www.wikidata.org/wiki/Q205663","display_name":"Process (computing)","level":2,"score":0.42519262433052063},{"id":"https://openalex.org/C115903868","wikidata":"https://www.wikidata.org/wiki/Q80993","display_name":"Software engineering","level":1,"score":0.3261425495147705},{"id":"https://openalex.org/C128838566","wikidata":"https://www.wikidata.org/wiki/Q275603","display_name":"Logic programming","level":2,"score":0.27988192439079285},{"id":"https://openalex.org/C121332964","wikidata":"https://www.wikidata.org/wiki/Q413","display_name":"Physics","level":0,"score":0.0},{"id":"https://openalex.org/C163258240","wikidata":"https://www.wikidata.org/wiki/Q25342","display_name":"Power (physics)","level":2,"score":0.0},{"id":"https://openalex.org/C136764020","wikidata":"https://www.wikidata.org/wiki/Q466","display_name":"World Wide Web","level":1,"score":0.0},{"id":"https://openalex.org/C62520636","wikidata":"https://www.wikidata.org/wiki/Q944","display_name":"Quantum mechanics","level":1,"score":0.0}],"mesh":[],"locations_count":6,"locations":[{"id":"doi:10.1017/s1471068403001662","is_oa":false,"landing_page_url":"https://doi.org/10.1017/s1471068403001662","pdf_url":null,"source":{"id":"https://openalex.org/S59670734","display_name":"Theory and Practice of Logic Programming","issn_l":"1471-0684","issn":["1471-0684","1475-3081"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310311721","host_organization_name":"Cambridge University Press","host_organization_lineage":["https://openalex.org/P4310311721","https://openalex.org/P4310311702"],"host_organization_lineage_names":["Cambridge University Press","University of Cambridge"],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Theory and Practice of Logic Programming","raw_type":"journal-article"},{"id":"pmh:oai:pure.unamur.be:openaire_cris_publications/e69b015a-d23f-4829-910d-54b028633841","is_oa":false,"landing_page_url":"https://researchportal.unamur.be/en/publications/e69b015a-d23f-4829-910d-54b028633841","pdf_url":null,"source":{"id":"https://openalex.org/S4406922457","display_name":"Repository of the University of Namur","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Leuschel, M, Jorgensen, J, Bruynooghe, M & Vanhoof, W 2004, 'Offline specialisation in Prolog using a hand-written compiler generator', Theory and Practice of Logic Programming, vol. 4, no. 1-2, pp. 139-191. https://doi.org/10.1017/S1471068403001662","raw_type":"info:eu-repo/semantics/publishedVersion"},{"id":"pmh:oai:eprints.soton.ac.uk:256605","is_oa":false,"landing_page_url":null,"pdf_url":null,"source":{"id":"https://openalex.org/S4306401019","display_name":"ePrints Soton (University of Southampton)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I43439940","host_organization_name":"University of Southampton","host_organization_lineage":["https://openalex.org/I43439940"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"acceptedVersion","is_accepted":true,"is_published":false,"raw_source_name":"","raw_type":"Article"},{"id":"pmh:oai:lirias2repo.kuleuven.be:123456789/124896","is_oa":true,"landing_page_url":"https://lirias.kuleuven.be/handle/123456789/124896","pdf_url":null,"source":{"id":"https://openalex.org/S4306401954","display_name":"Lirias (KU Leuven)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I99464096","host_organization_name":"KU Leuven","host_organization_lineage":["https://openalex.org/I99464096"],"host_organization_lineage_names":[],"type":"repository"},"license":"other-oa","license_id":"https://openalex.org/licenses/other-oa","version":"acceptedVersion","is_accepted":true,"is_published":false,"raw_source_name":"Theory and practice of logic programming, vol. 4 (1), Art.No. 1-2, (139-191)","raw_type":"info:eu-repo/semantics/publishedVersion"},{"id":"pmh:oai:CiteSeerX.psu:10.1.1.124.2857","is_oa":false,"landing_page_url":"http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.124.2857","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"http://repository.readscheme.org/ftp/papers/leuschel/dsse-tr-9906.pdf","raw_type":"text"},{"id":"pmh:oai:CiteSeerX.psu:10.1.1.13.6359","is_oa":false,"landing_page_url":"http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.13.6359","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"http://www.cs.kuleuven.ac.be/~dtai/publications/files/38686.ps.gz","raw_type":"text"}],"best_oa_location":{"id":"pmh:oai:lirias2repo.kuleuven.be:123456789/124896","is_oa":true,"landing_page_url":"https://lirias.kuleuven.be/handle/123456789/124896","pdf_url":null,"source":{"id":"https://openalex.org/S4306401954","display_name":"Lirias (KU Leuven)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I99464096","host_organization_name":"KU Leuven","host_organization_lineage":["https://openalex.org/I99464096"],"host_organization_lineage_names":[],"type":"repository"},"license":"other-oa","license_id":"https://openalex.org/licenses/other-oa","version":"acceptedVersion","is_accepted":true,"is_published":false,"raw_source_name":"Theory and practice of logic programming, vol. 4 (1), Art.No. 1-2, (139-191)","raw_type":"info:eu-repo/semantics/publishedVersion"},"sustainable_development_goals":[{"score":0.6700000166893005,"id":"https://metadata.un.org/sdg/4","display_name":"Quality Education"}],"awards":[],"funders":[],"has_content":{"pdf":false,"grobid_xml":false},"content_urls":null,"referenced_works_count":80,"referenced_works":["https://openalex.org/W8663418","https://openalex.org/W137082309","https://openalex.org/W153405243","https://openalex.org/W171747779","https://openalex.org/W1480878783","https://openalex.org/W1481320527","https://openalex.org/W1482061011","https://openalex.org/W1487533857","https://openalex.org/W1488214424","https://openalex.org/W1492471923","https://openalex.org/W1493318828","https://openalex.org/W1500453230","https://openalex.org/W1501453246","https://openalex.org/W1504949952","https://openalex.org/W1515877009","https://openalex.org/W1518267065","https://openalex.org/W1519601538","https://openalex.org/W1522948470","https://openalex.org/W1530237295","https://openalex.org/W1541325276","https://openalex.org/W1541434994","https://openalex.org/W1545308194","https://openalex.org/W1556604985","https://openalex.org/W1559076591","https://openalex.org/W1568484765","https://openalex.org/W1572344684","https://openalex.org/W1596700005","https://openalex.org/W1598890912","https://openalex.org/W1608059426","https://openalex.org/W1624796000","https://openalex.org/W1775494561","https://openalex.org/W1882854904","https://openalex.org/W1910609394","https://openalex.org/W1929307865","https://openalex.org/W1933733268","https://openalex.org/W1975576519","https://openalex.org/W1981032168","https://openalex.org/W1982243747","https://openalex.org/W1985933047","https://openalex.org/W1987962669","https://openalex.org/W1988185893","https://openalex.org/W1991589943","https://openalex.org/W1996081324","https://openalex.org/W1996679397","https://openalex.org/W1997254051","https://openalex.org/W2000782239","https://openalex.org/W2008251703","https://openalex.org/W2016420980","https://openalex.org/W2020024606","https://openalex.org/W2023578426","https://openalex.org/W2028175476","https://openalex.org/W2037035101","https://openalex.org/W2040479609","https://openalex.org/W2048831705","https://openalex.org/W2056410280","https://openalex.org/W2058824372","https://openalex.org/W2058958439","https://openalex.org/W2084099544","https://openalex.org/W2091776887","https://openalex.org/W2105594444","https://openalex.org/W2111443557","https://openalex.org/W2118383426","https://openalex.org/W2121947494","https://openalex.org/W2135124683","https://openalex.org/W2135681149","https://openalex.org/W2137818097","https://openalex.org/W2142436113","https://openalex.org/W2143044990","https://openalex.org/W2149237601","https://openalex.org/W2151897509","https://openalex.org/W2403892066","https://openalex.org/W2521182530","https://openalex.org/W2569672411","https://openalex.org/W2572804059","https://openalex.org/W2786456278","https://openalex.org/W2913352888","https://openalex.org/W4206370914","https://openalex.org/W4206413147","https://openalex.org/W4244716535","https://openalex.org/W4285719527"],"related_works":["https://openalex.org/W2091064840","https://openalex.org/W1577610794","https://openalex.org/W4451720","https://openalex.org/W1526063741","https://openalex.org/W2750649130","https://openalex.org/W2152685301","https://openalex.org/W2167668513","https://openalex.org/W2059554996","https://openalex.org/W1587984401","https://openalex.org/W35302340"],"abstract_inverted_index":{"The":[0,76,194],"so":[1,240,255,262],"called":[2,263],"\u201c":[3],"cogen":[4,37,119],"approach\u201d":[5],"to":[6,42,53,69,83,96,116,207,219,226,242,257,260],"program":[7,150,189],"specialisation,":[8],"writing":[9],"a":[10,15,80,89,108,124,126,145,232,245],"compiler":[11],"generator":[12],"instead":[13,173],"of":[14,26,45,63,128,174,178,248],"specialiser,":[16],"has":[17],"been":[18],"used":[19,115],"with":[20,73,156],"considerable":[21],"success":[22],"in":[23,164,184,231],"partial":[24,49,85,92],"evaluation":[25],"both":[27],"functional":[28],"and":[29,51,87,134,198,251,254],"imperative":[30],"languages.":[31],"This":[32],"paper":[33,77,195],"demonstrates":[34],"that":[35,204],"the":[36,43,61,64,70,97,118,149,160,165,176,179,187,209,212,228],"approach":[38,82],"is":[39,107,114,182,190,205,238],"also":[40,196],"applicable":[41],"specialisation":[44,180],"logic":[46,103],"programs":[47,66],"(called":[48],"deduction)":[50],"leads":[52],"effective":[54],"specialisers.":[55,75],"Moreover,":[56],"using":[57],"good":[58],"binding-time":[59,202],"annotations,":[60],"speed-ups":[62,71],"specialised":[65,146,166,191],"are":[67,215],"comparable":[68],"obtained":[72],"online":[74],"first":[78],"develops":[79],"generic":[81],"offline":[84,91,98],"deduction":[86,93],"then":[88],"specific":[90],"method,":[94],"leading":[95],"system":[99,120,230],"LIX":[100],"for":[101,148,159],"pure":[102],"programs.":[104],"While":[105,168,211],"this":[106,154,169],"usable":[109],"specialiser":[110,147,155],"by":[111],"itself,":[112],"it":[113],"develop":[117],"LOGEN":[121,143,229,237],".":[122],"Given":[123],"program,":[125],"specification":[127],"what":[129],"inputs":[130,162],"will":[131],"be":[132,141,258],"static,":[133],"an":[135,200],"annotation":[136],"specifying":[137],"which":[138],"calls":[139],"should":[140],"unfolded,":[142],"generates":[144],"at":[151],"hand.":[152],"Running":[153],"particular":[157],"values":[158],"static":[161],"results":[163],"program.":[167],"requires":[170],"two":[171],"steps":[172],"one,":[175],"efficiency":[177],"process":[181],"improved":[183],"situations":[185],"where":[186],"same":[188],"multiple":[192],"times.":[193],"presents":[197],"evaluates":[199],"automatic":[201],"analysis":[203],"able":[206,259],"derive":[208],"annotations.":[210],"derived":[213],"annotations":[214],"still":[216],"suboptimal":[217],"compared":[218],"hand-crafted":[220],"ones,":[221],"they":[222],"enable":[223],"non-expert":[224],"users":[225],"use":[227],"fully":[233],"automated":[234],"way.":[235],"Finally,":[236],"extended":[239],"as":[241,256],"directly":[243],"support":[244],"large":[246],"part":[247],"Prolog's":[249],"declarative":[250],"non-declarative":[252],"features":[253],"perform":[261],"mixline":[264],"specialisations.":[265]},"counts_by_year":[{"year":2026,"cited_by_count":1},{"year":2025,"cited_by_count":1},{"year":2023,"cited_by_count":1},{"year":2021,"cited_by_count":1},{"year":2020,"cited_by_count":1},{"year":2019,"cited_by_count":1},{"year":2014,"cited_by_count":2}],"updated_date":"2026-04-05T17:49:38.594831","created_date":"2025-10-10T00:00:00"}
