Go2Pins: a framework for the LTL verification of Go programs (extended version)
We introduce Go2Pins, a tool that takes a program written in Go and links it with two model checkers: LTSMin (Kant et al. Ltsmin: high-performance language-independent model checking. In: TACAS’15, pp. 692–707, 2015) and Spot (Duret-Lutz et al. Spot 2.0-a framework for LTL and ω automata manipulatio...
Uloženo v:
| Vydáno v: | International journal on software tools for technology transfer Ročník 25; číslo 1; s. 77 - 94 |
|---|---|
| Hlavní autoři: | , , , |
| Médium: | Journal Article |
| Jazyk: | angličtina |
| Vydáno: |
Berlin/Heidelberg
Springer Berlin Heidelberg
01.02.2023
Springer Nature B.V |
| Témata: | |
| ISSN: | 1433-2779, 1433-2787 |
| On-line přístup: | Získat plný text |
| Tagy: |
Přidat tag
Žádné tagy, Buďte první, kdo vytvoří štítek k tomuto záznamu!
|
| Abstract | We introduce Go2Pins, a tool that takes a program written in Go and links it with two model checkers: LTSMin (Kant et al. Ltsmin: high-performance language-independent model checking. In: TACAS’15, pp. 692–707, 2015) and Spot (Duret-Lutz et al. Spot 2.0-a framework for LTL and
ω
automata manipulation. In: ATVA’16, vol. 9938 of LNCS, pp. 1294, 122–129, 2016) . Go2Pins is an effort to promote the integration of both formal verification and testing inside industrial-size projects. With this goal in mind, we introduce
black-box transitions
, an efficient and scalable technique for handling the Go runtime. This approach, inspired by hardware verification techniques, allows easy, automatic and efficient abstractions. Go2Pins also handles basic concurrent programs through the use of a dedicated scheduler. Moreover, in order to efficiently handle recursive programs, we introduce PSL
R
E
C
, a formalism that augments PSL without changing the complexity of the underlying verification process. In this paper we demonstrate the usage of Go2Pins over benchmarks inspired by industrial problems and a set of LTL formulae. Even if Go2Pins is still at the early stages of development, our results are promising and show the benefits of using black-box transitions. This paper also shows how Go2Pins is able to work efficiently on two bugs coming from industrial problems Kubernetes and Trillian. |
|---|---|
| AbstractList | We introduce Go2Pins, a tool that takes a program written in Go and links it with two model checkers: LTSMin (Kant et al. Ltsmin: high-performance language-independent model checking. In: TACAS’15, pp. 692–707, 2015) and Spot (Duret-Lutz et al. Spot 2.0-a framework for LTL and
ω
automata manipulation. In: ATVA’16, vol. 9938 of LNCS, pp. 1294, 122–129, 2016) . Go2Pins is an effort to promote the integration of both formal verification and testing inside industrial-size projects. With this goal in mind, we introduce
black-box transitions
, an efficient and scalable technique for handling the Go runtime. This approach, inspired by hardware verification techniques, allows easy, automatic and efficient abstractions. Go2Pins also handles basic concurrent programs through the use of a dedicated scheduler. Moreover, in order to efficiently handle recursive programs, we introduce PSL
R
E
C
, a formalism that augments PSL without changing the complexity of the underlying verification process. In this paper we demonstrate the usage of Go2Pins over benchmarks inspired by industrial problems and a set of LTL formulae. Even if Go2Pins is still at the early stages of development, our results are promising and show the benefits of using black-box transitions. This paper also shows how Go2Pins is able to work efficiently on two bugs coming from industrial problems Kubernetes and Trillian. We introduce Go2Pins, a tool that takes a program written in Go and links it with two model checkers: LTSMin (Kant et al. Ltsmin: high-performance language-independent model checking. In: TACAS’15, pp. 692–707, 2015) and Spot (Duret-Lutz et al. Spot 2.0-a framework for LTL and ω automata manipulation. In: ATVA’16, vol. 9938 of LNCS, pp. 1294, 122–129, 2016) . Go2Pins is an effort to promote the integration of both formal verification and testing inside industrial-size projects. With this goal in mind, we introduce black-box transitions, an efficient and scalable technique for handling the Go runtime. This approach, inspired by hardware verification techniques, allows easy, automatic and efficient abstractions. Go2Pins also handles basic concurrent programs through the use of a dedicated scheduler. Moreover, in order to efficiently handle recursive programs, we introduce PSLREC, a formalism that augments PSL without changing the complexity of the underlying verification process. In this paper we demonstrate the usage of Go2Pins over benchmarks inspired by industrial problems and a set of LTL formulae. Even if Go2Pins is still at the early stages of development, our results are promising and show the benefits of using black-box transitions. This paper also shows how Go2Pins is able to work efficiently on two bugs coming from industrial problems Kubernetes and Trillian. |
| Author | Moreau, Hugo Renault, Etienne Kirszenberg, Alexandre Martin, Antoine |
| Author_xml | – sequence: 1 givenname: Alexandre surname: Kirszenberg fullname: Kirszenberg, Alexandre organization: EPITA Research Laboratory (LRE) – sequence: 2 givenname: Antoine orcidid: 0000-0002-3263-7669 surname: Martin fullname: Martin, Antoine organization: EPITA Research Laboratory (LRE) – sequence: 3 givenname: Hugo surname: Moreau fullname: Moreau, Hugo organization: EPITA Research Laboratory (LRE) – sequence: 4 givenname: Etienne orcidid: 0000-0001-9013-4413 surname: Renault fullname: Renault, Etienne email: etienne.renault@epita.fr organization: EPITA Research Laboratory (LRE) |
| BookMark | eNp9kMtOAjEUhhuDiYC-gKsmbnRR7YVpp-4MUTSZBBe4bjqdFgdhiu0g-vYWxmjigk1PF993Lv8A9BrfWADOCb4mGIubmF4sEaYUYcwlRdsj0CcjxhAVuej9_oU8AYMYFxgTwYXsg-nE0-e6ibdQQxf0ym59eIPOB9i-WljMCvhhQ-1qo9vaN9A7OPFwHfw8sRFe2s_WNpWtdlRMwNUpOHZ6Ge3ZTx2Cl4f72fgRFdPJ0_iuQIZJ0SLHuGPC5li4SpYjpjXnuMxJxWnJSmmso4Y4V1a00lmmdekkZ1mOZcZzUzLDhuCi65t2ed_Y2KqF34QmjVTp4pHAAhOaqLyjTPAxBuuUqdv9JW3Q9VIRrHbxqS4-leJT-_jUNqn0n7oO9UqHr8MS66SY4GZuw99WB6xv2WyE6A |
| CitedBy_id | crossref_primary_10_1007_s10009_023_00698_y |
| Cites_doi | 10.1109/SANER.2019.8668036 10.1007/978-3-030-50029-0_9 10.1007/3-540-58179-0_69 10.1023/A:1022920129859 10.1007/3-540-53863-1_36 10.1007/978-3-319-49052-6_2 10.4204/EPTCS.314.4 10.1007/s10009-014-0363-9 10.1145/361227.361234 10.1007/BFb0016204 10.1145/3093333.3009847 10.1145/3180155.3180157 10.1007/978-3-662-46681-0_61 10.1007/978-3-030-84629-9_8 10.1007/s10009-019-00519-1 10.1007/978-3-319-23404-5_6 10.1145/3297858.3304069 10.1145/2635868.2635922 10.1007/978-3-319-77935-5_20 10.1145/93385.93442 10.1007/978-3-319-46520-3_8 10.1109/ASE51524.2021.9678571 10.1007/978-3-642-33386-6_22 10.1145/2892208.2892232 10.1109/CGO51591.2021.9370317 |
| ContentType | Journal Article |
| Copyright | The Author(s), under exclusive licence to Springer-Verlag GmbH Germany, part of Springer Nature 2023. Springer Nature or its licensor (e.g. a society or other partner) holds exclusive rights to this article under a publishing agreement with the author(s) or other rightsholder(s); author self-archiving of the accepted manuscript version of this article is solely governed by the terms of such publishing agreement and applicable law. |
| Copyright_xml | – notice: The Author(s), under exclusive licence to Springer-Verlag GmbH Germany, part of Springer Nature 2023. Springer Nature or its licensor (e.g. a society or other partner) holds exclusive rights to this article under a publishing agreement with the author(s) or other rightsholder(s); author self-archiving of the accepted manuscript version of this article is solely governed by the terms of such publishing agreement and applicable law. |
| DBID | AAYXX CITATION 3V. 7SC 7XB 8AL 8AO 8FD 8FE 8FG 8FK 8G5 ABJCF ABUWG AFKRA ARAPS AZQEC BENPR BGLVJ CCPQU DWQXO GNUQQ GUQSH HCIFZ JQ2 K7- L6V L7M L~C L~D M0N M2O M7S MBDVC P5Z P62 PADUT PHGZM PHGZT PKEHL PQEST PQGLB PQQKQ PQUKI PRINS PTHSS Q9U |
| DOI | 10.1007/s10009-022-00692-w |
| DatabaseName | CrossRef ProQuest Central (Corporate) Computer and Information Systems Abstracts ProQuest Central (purchase pre-March 2016) Computing Database (Alumni Edition) ProQuest Pharma Collection Technology Research Database ProQuest SciTech Collection ProQuest Technology Collection ProQuest Central (Alumni) (purchase pre-March 2016) Research Library (Alumni Edition) Materials Science & Engineering Collection ProQuest Central (Alumni) ProQuest Central UK/Ireland Advanced Technologies & Computer Science Collection ProQuest Central Essentials ProQuest Central Technology collection ProQuest One Community College ProQuest Central ProQuest Central Student Research Library Prep SciTech Premium Collection ProQuest Computer Science Collection Computer Science Database ProQuest Engineering Collection Advanced Technologies Database with Aerospace Computer and Information Systems Abstracts Academic Computer and Information Systems Abstracts Professional Computing Database Research Library Engineering Database (subscription) Research Library (Corporate) Advanced Technologies & Aerospace Database ProQuest Advanced Technologies & Aerospace Collection Research Library China ProQuest Central Premium ProQuest One Academic (New) ProQuest One Academic Middle East (New) ProQuest One Academic Eastern Edition (DO NOT USE) ProQuest One Applied & Life Sciences ProQuest One Academic (retired) ProQuest One Academic UKI Edition ProQuest Central China Engineering collection ProQuest Central Basic |
| DatabaseTitle | CrossRef Research Library Prep Computer Science Database ProQuest Central Student Technology Collection Technology Research Database Computer and Information Systems Abstracts – Academic ProQuest One Academic Middle East (New) ProQuest Advanced Technologies & Aerospace Collection ProQuest Central Essentials ProQuest Computer Science Collection Computer and Information Systems Abstracts ProQuest Central (Alumni Edition) SciTech Premium Collection ProQuest One Community College Research Library (Alumni Edition) ProQuest Pharma Collection ProQuest Central China ProQuest Central ProQuest One Applied & Life Sciences ProQuest Engineering Collection ProQuest Central Korea ProQuest Research Library Research Library China ProQuest Central (New) Advanced Technologies Database with Aerospace Engineering Collection Advanced Technologies & Aerospace Collection ProQuest Computing Engineering Database ProQuest Central Basic ProQuest Computing (Alumni Edition) ProQuest One Academic Eastern Edition ProQuest Technology Collection ProQuest SciTech Collection Computer and Information Systems Abstracts Professional Advanced Technologies & Aerospace Database ProQuest One Academic UKI Edition Materials Science & Engineering Collection ProQuest One Academic ProQuest One Academic (New) ProQuest Central (Alumni) |
| DatabaseTitleList | Research Library Prep |
| Database_xml | – sequence: 1 dbid: BENPR name: ProQuest Central url: https://www.proquest.com/central sourceTypes: Aggregation Database |
| DeliveryMethod | fulltext_linktorsrc |
| Discipline | Computer Science |
| EISSN | 1433-2787 |
| EndPage | 94 |
| ExternalDocumentID | 10_1007_s10009_022_00692_w |
| GroupedDBID | -59 -5G -BR -EM -Y2 -~C .4S .86 .DC .VR 06D 0R~ 0VY 1N0 1SB 203 29J 2J2 2JN 2JY 2KG 2KM 2LR 2P1 2VQ 2~H 30V 3V. 4.4 406 408 409 40D 40E 5GY 5VS 67Z 6NX 8AO 8FE 8FG 8FW 8G5 8TC 95- 95. 95~ 96X AAAVM AABHQ AACDK AAHNG AAIAL AAJBT AAJKR AANZL AARHV AARTL AASML AATNV AATVU AAUYE AAWCG AAYIU AAYQN AAYTO AAYZH ABAKF ABBBX ABBXA ABDZT ABECU ABFTD ABFTV ABHLI ABHQN ABJCF ABJNI ABJOX ABKCH ABKTR ABMNI ABMQK ABNWP ABQBU ABQSL ABSXP ABTEG ABTHY ABTKH ABTMW ABULA ABUWG ABWNU ABXPI ACAOD ACBXY ACDTI ACGFS ACHSB ACHXU ACIWK ACKNC ACMDZ ACMLO ACOKC ACOMO ACPIV ACSNA ACZOJ ADHHG ADHIR ADINQ ADKNI ADKPE ADRFC ADTPH ADURQ ADYFF ADZKW AEBTG AEFQL AEGAL AEGNC AEJHL AEJRE AEKMD AEMSY AEOHA AEPYU AESKC AETLH AEVLU AEXYK AFBBN AFGCZ AFKRA AFLOW AFQWF AFWTZ AFZKB AGAYW AGDGC AGGDS AGJBK AGMZJ AGQEE AGQMX AGRTI AGWIL AGWZB AGYKE AHAVH AHBYD AHKAY AHSBF AHYZX AIAKS AIGIU AIIXL AILAN AITGF AJBLW AJRNO AJZVZ ALMA_UNASSIGNED_HOLDINGS ALWAN AMKLP AMXSW AMYLF AMYQR AOCGG ARAPS ARCSS ARMRJ ASPBG AVWKF AXYYD AYJHY AZFZN AZQEC B-. BA0 BDATZ BENPR BGLVJ BGNMA BPHCQ BSONS CAG CCPQU COF CS3 CSCUP DDRTE DL5 DNIVK DPUIP DU5 DWQXO EBLON EBS EDO EIOEI EJD ESBYG FEDTE FERAY FFXSO FIGPU FINBP FNLPD FRRFC FSGXE FWDCC GGCAI GGRSB GJIRD GNUQQ GNWQR GQ6 GQ7 GQ8 GUQSH GXS H13 HCIFZ HF~ HG5 HG6 HMJXF HQYDN HRMNR HVGLF HZ~ I-F I09 IHE IJ- IKXTQ ITM IWAJR IXC IZIGR IZQ I~X I~Z J-C J0Z JBSCW JCJTX JZLTJ K6V K7- KDC KOV L6V LAS LLZTM M0N M2O M4Y M7S MA- MK~ ML~ N2Q NB0 NPVJJ NQJWS NU0 O9- O93 O9J OAM P62 P9O PADUT PF0 PQQKQ PROAC PT4 PT5 PTHSS Q2X QOS R89 R9I RIG RNI ROL RPX RSV RZK S16 S1Z S27 S3B SAP SCO SDH SHX SISQX SJYHP SNE SNPRN SNX SOHCF SOJ SPISZ SRMVM SSLCW STPWE SZN T13 TSG TSK TSV TUC TUS U2A UG4 UOJIU UTJUX UZXMN VC2 VFIZW W23 W48 WK8 YLTOR Z45 Z7R Z7X Z7Z Z83 Z88 ZMTXR AAPKM AAYXX ABBRH ABDBE ABFSG ABRTQ ACSTC ADHKG AEZWR AFDZB AFFHD AFHIU AFOHR AGQPQ AHPBZ AHWEU AIXLP ATHPR AYFIA CITATION PHGZM PHGZT PQGLB 7SC 7XB 8AL 8FD 8FK JQ2 L7M L~C L~D MBDVC PKEHL PQEST PQUKI PRINS Q9U |
| ID | FETCH-LOGICAL-c397t-f36f37e807fd9b43aa660b81d62b3b9cef2c1ffbd2da55aabf9635809568cb3c3 |
| IEDL.DBID | M7S |
| ISICitedReferencesCount | 2 |
| ISICitedReferencesURI | http://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=Summon&SrcAuth=ProQuest&DestLinkType=CitingArticles&DestApp=WOS_CPL&KeyUT=000912379900001&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D |
| ISSN | 1433-2779 |
| IngestDate | Wed Nov 05 00:49:00 EST 2025 Tue Nov 18 22:05:38 EST 2025 Sat Nov 29 03:07:49 EST 2025 Fri Feb 21 02:45:40 EST 2025 |
| IsDoiOpenAccess | false |
| IsOpenAccess | true |
| IsPeerReviewed | true |
| IsScholarly | true |
| Issue | 1 |
| Keywords | Abstractions PSL Golang model-checking |
| Language | English |
| LinkModel | DirectLink |
| MergedId | FETCHMERGED-LOGICAL-c397t-f36f37e807fd9b43aa660b81d62b3b9cef2c1ffbd2da55aabf9635809568cb3c3 |
| Notes | ObjectType-Article-1 SourceType-Scholarly Journals-1 ObjectType-Feature-2 content type line 14 |
| ORCID | 0000-0002-3263-7669 0000-0001-9013-4413 |
| OpenAccessLink | https://hal.science/hal-04580383 |
| PQID | 2784707012 |
| PQPubID | 46652 |
| PageCount | 18 |
| ParticipantIDs | proquest_journals_2784707012 crossref_citationtrail_10_1007_s10009_022_00692_w crossref_primary_10_1007_s10009_022_00692_w springer_journals_10_1007_s10009_022_00692_w |
| PublicationCentury | 2000 |
| PublicationDate | 2023-02-01 |
| PublicationDateYYYYMMDD | 2023-02-01 |
| PublicationDate_xml | – month: 02 year: 2023 text: 2023-02-01 day: 01 |
| PublicationDecade | 2020 |
| PublicationPlace | Berlin/Heidelberg |
| PublicationPlace_xml | – name: Berlin/Heidelberg – name: Heidelberg |
| PublicationTitle | International journal on software tools for technology transfer |
| PublicationTitleAbbrev | Int J Softw Tools Technol Transfer |
| PublicationYear | 2023 |
| Publisher | Springer Berlin Heidelberg Springer Nature B.V |
| Publisher_xml | – name: Springer Berlin Heidelberg – name: Springer Nature B.V |
| References | Godefroid, P.: Between testing and verification: Dynamic software model checking. In DSSE’16 45, pp. 99–116 (2016) Liu, Z., Zhu, S., Qin, B., Chen, H., Song, L.: Automatically detecting and fixing concurrency bugs in go software systems. In: International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS) 11, pp. 2227–2240 (2016) Holzmann, G.J.: The Spin Model Checker: Primer and Reference Manual. Addison-Wesley (2003) Dilley,N., Lange, J.: Automated verification of go programs via bounded model checking. In 2021 36th IEEE/ACM International Conference on Automated Software Engineering (ASE), pp. 1016–1027, (2021) Ray, B., Posnett, D., Filkov, V., Devanbu, P.: A large scale study of programming languages and code quality in github. In SIGSOFT’14, pp. 155–165, (2014) Lange,J., Ng, N., Toninho, B., Yoshida, N.: A static verification framework for message passing in Go using behavioural Types. In CSE’18, pp. 1137–1148. ACM, (2018) Berthomieu, B., Le Botlan, D., Dal Zilio, S.: Counting Petri net markings from reduction equations. Int. J. Softw. Tools Technol. Transf. (2019) Dilley, N., Lange, J.: An empirical study of messaging passing concurrency in go projects. In 2019 IEEE 26th International Conference on Software Analysis, Evolution and Reengineering (SANER’19), pp. 377–387, (2019) HoareCARCommunicating Sequential Processes1985USAPrentice-Hall Inc0637.68007 Kant, G., Laarman, A., Meijer, J., van de Pol, J., Blom, S., van Dijk, T.: Ltsmin: high-performance language-independent model checking. In TACAS’15, pp. 692–707, April (2015) Tu, T., Liu, X., Song, L., Zhang, Y.: Understanding real-world concurrency bugs in go. In ASPLOS’19, pp. 865–878, (2019) GitHub repository. Java2Go: Convert Java code to something like Go. https://github.com/dglo/java2go, (2020) Eisner, C., Fisman, D.: A Practical Introduction to PSL. Springer, Series on Integrated Circuits and Systems (2006) Manna, Z., Pnueli, A.: A hierarchy of temporal properties. In PODC’90, pp. 377–410, (1990) ACM Berthelot, G.: Checking properties of nets using transformation. In Applications and Theory in Petri Nets, vol. 222 of LNCS, pp. 19–40. Springer, (1985) Zhong,C., Zhao, Q., Liu, X.: Bingo: Pinpointing concurrency bugs in go via binary analysis, (2022) GitHub repository. Transpiling fortran code to golang code. https://github.com/Konstantin8105/f4go, (2020) Baranova, Z., Barnat, J., Kejstova, K., Kucera, T., Lauko, H., Mrazek, J., Rockai, P., Still, V.: Model checking of C and C++ with DIVINE 4. In ATVA’17, vol. 10482 of LNCS, pp. 201–207. Springer, (2017) Duret-Lutz, A., Lewkowicz, A., Fauchille, A., Michaud, T., Renault, E., Xu, L.: Spot 2.0 — a framework for LTL and ω\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$$\omega $$\end{document}-automata manipulation. In ATVA’16, vol. 9938 of LNCS, pp. 122–129. Springer, Oct. (2016) Peled, D.: Combining partial order reductions with on-the-fly model-checking. In CAV’94, vol. 818 of LNCS, pp. 377–390. Springer, (1994) Evangelista, S., Laarman, A., Petrucci, L., van de Pol, J.: Improved multi-core nested depth-first search. In ATVA’12, vol. 7561 of LNCS, pp. 269–283. Springer, (2012) GitHub repository. Trillian preload bug. https://github.com/kubernetes/kubernetes/blob/d70ee902fddc682863a3cc4f0d8eac0223ebf70b/test/e2e/storage/vsphere/nodemapper.go#L62 Valmari, A.: Stubborn sets for reduced state space generation. In ICATPN’91, vol. 618 of LNCS, pp. 491–515, (1991) Springer Kirszenberg,A., Martin, A., Moreau, H., Renault, E.: Go2Pins: a framework for the LTL verification of Go programs. In SPIN’21, vol. 12864 of LNCS, pp. 140–156, May (2021) Springer Laarman,A.: Stubborn transaction reduction. In NFM, vol. 10811 of LNCS, pp. 280–298. Springer, (2018) Bloemen, V., van de Pol, J.: Multi-core scc-based ltl model checking. In HVC’16, vol. 10028 of LNCS, pp. 18–33. Springer, Nov. (2016) Yuan, T., Li, G., Lu, J., Liu, C., Li, L., Xue, J.: Gobench: A benchmark suite of real-world go concurrency bugs. In 2021 IEEE/ACM International Symposium on Code Generation and Optimization (CGO), pp. 187–199, (2021) DilleyNLangeJBounded verification of message-passing concurrency in go using promela and spinElectr. Proc. Theor. Comput. Sci.2020314344510.4204/EPTCS.314.4 Ng, N., Yoshida, N.: Static deadlock detection for concurrent go by global session graph synthesis. In CCC’16, pp. 174–184. ACM, (2016) RERS challenge. Rigorous examination of reactive systems (RERS). http://rers-challenge.org/2019/, (2019) Dekker, J., Vaandrager, F., Smetsers, R.: Generating a google go framework from an uppaal model. Master’s thesis. Radboud University (2014) Griesemer,R., Pike, R., Thompson, K., Taylor, I., Cox, R., Kim, J., Langley, A.: Hey! ho! let’s go! https://opensource.googleblog.com/2009/11/hey-ho-lets-go.html, (2009) Laarman, A., Pater, E., van de Pol, J., Hansen, H.: Guard-based partial-order reduction. Int. J. Softw. Tools Technol. Transf. 1–22, (2014) GitHub repository. C2Go: Migrate from C to Go. https://godoc.org/rsc.io/c2go, (2020) Zaks, A., Joshi, R.: Verifying Multi-threaded C Programs with SPIN. In SPIN’08, pp. 94–107, (2008) GitHub repository. Go Compiler. https://github.com/golang/go/blob/04fb929a5b7991ed0945d05ab8015c1721958d82/src/go/types/stmt.go#L67-L69 Blahoudek, F., Duret-Lutz, A., Rujbr, V., Strejček, J.: On refinement of Büchi automata for explicit model checking. In SPIN’15, vol. 9232 of LNCS, pp. 66–83. Springer, Aug. (2015) LiptonRJReduction: a method of proving properties of parallel programsCommun. ACM1975181271772140076910.1145/361227.3612340316.68015 GitHub repository. C4Go: Transpiling C code to Go code. https://github.com/Konstantin8105/c4go, (2020) GitHub repository. Kubernetes generate node map bug. https://github.com/kubernetes/kubernetes/blob/d70ee902fddc682863a3cc4f0d8eac0223ebf70b/test/e2e/storage/vsphere/nodemapper.godd#L62 GitHub repository. Grumpy: Go running Python. https://github.com/google/grumpy, (2020) Visser, W., Havelund, K., Brat, G., Park, S., Lerda, F.: Model Checking Programs. In ASE’03 10, pp. 203–232 (2018) Giunti, M.: Gopi: Compiling linear and static channels in go. In Coordination Models and Languages, pp. 137–152, (2020) Springer Lange,J., Ng, N., Toninho, B., Yoshida, N.: Fencing off Go: Liveness and Safety for Channel-based Programming. In POPL’17, pp. 748–761. ACM, (2017) 692_CR29 692_CR28 692_CR27 692_CR26 692_CR25 692_CR23 692_CR11 692_CR33 692_CR10 692_CR31 692_CR30 N Dilley (692_CR8) 2020; 314 CAR Hoare (692_CR24) 1985 RJ Lipton (692_CR32) 1975; 18 692_CR19 692_CR18 692_CR17 692_CR39 692_CR16 692_CR38 692_CR15 692_CR37 692_CR14 692_CR36 692_CR13 692_CR35 692_CR12 692_CR34 692_CR22 692_CR44 692_CR21 692_CR43 692_CR2 692_CR20 692_CR42 692_CR1 692_CR41 692_CR4 692_CR40 692_CR3 692_CR6 692_CR5 692_CR7 692_CR9 |
| References_xml | – reference: Blahoudek, F., Duret-Lutz, A., Rujbr, V., Strejček, J.: On refinement of Büchi automata for explicit model checking. In SPIN’15, vol. 9232 of LNCS, pp. 66–83. Springer, Aug. (2015) – reference: Yuan, T., Li, G., Lu, J., Liu, C., Li, L., Xue, J.: Gobench: A benchmark suite of real-world go concurrency bugs. In 2021 IEEE/ACM International Symposium on Code Generation and Optimization (CGO), pp. 187–199, (2021) – reference: GitHub repository. Trillian preload bug. https://github.com/kubernetes/kubernetes/blob/d70ee902fddc682863a3cc4f0d8eac0223ebf70b/test/e2e/storage/vsphere/nodemapper.go#L62 – reference: GitHub repository. Go Compiler. https://github.com/golang/go/blob/04fb929a5b7991ed0945d05ab8015c1721958d82/src/go/types/stmt.go#L67-L69 – reference: Evangelista, S., Laarman, A., Petrucci, L., van de Pol, J.: Improved multi-core nested depth-first search. In ATVA’12, vol. 7561 of LNCS, pp. 269–283. Springer, (2012) – reference: GitHub repository. C4Go: Transpiling C code to Go code. https://github.com/Konstantin8105/c4go, (2020) – reference: Dilley, N., Lange, J.: An empirical study of messaging passing concurrency in go projects. In 2019 IEEE 26th International Conference on Software Analysis, Evolution and Reengineering (SANER’19), pp. 377–387, (2019) – reference: Liu, Z., Zhu, S., Qin, B., Chen, H., Song, L.: Automatically detecting and fixing concurrency bugs in go software systems. In: International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS) 11, pp. 2227–2240 (2016) – reference: Baranova, Z., Barnat, J., Kejstova, K., Kucera, T., Lauko, H., Mrazek, J., Rockai, P., Still, V.: Model checking of C and C++ with DIVINE 4. In ATVA’17, vol. 10482 of LNCS, pp. 201–207. Springer, (2017) – reference: Eisner, C., Fisman, D.: A Practical Introduction to PSL. Springer, Series on Integrated Circuits and Systems (2006) – reference: Visser, W., Havelund, K., Brat, G., Park, S., Lerda, F.: Model Checking Programs. In ASE’03 10, pp. 203–232 (2018) – reference: RERS challenge. Rigorous examination of reactive systems (RERS). http://rers-challenge.org/2019/, (2019) – reference: GitHub repository. Transpiling fortran code to golang code. https://github.com/Konstantin8105/f4go, (2020) – reference: Kirszenberg,A., Martin, A., Moreau, H., Renault, E.: Go2Pins: a framework for the LTL verification of Go programs. In SPIN’21, vol. 12864 of LNCS, pp. 140–156, May (2021) Springer – reference: Holzmann, G.J.: The Spin Model Checker: Primer and Reference Manual. Addison-Wesley (2003) – reference: Tu, T., Liu, X., Song, L., Zhang, Y.: Understanding real-world concurrency bugs in go. In ASPLOS’19, pp. 865–878, (2019) – reference: Zhong,C., Zhao, Q., Liu, X.: Bingo: Pinpointing concurrency bugs in go via binary analysis, (2022) – reference: Berthelot, G.: Checking properties of nets using transformation. In Applications and Theory in Petri Nets, vol. 222 of LNCS, pp. 19–40. Springer, (1985) – reference: Berthomieu, B., Le Botlan, D., Dal Zilio, S.: Counting Petri net markings from reduction equations. Int. J. Softw. Tools Technol. Transf. (2019) – reference: GitHub repository. Kubernetes generate node map bug. https://github.com/kubernetes/kubernetes/blob/d70ee902fddc682863a3cc4f0d8eac0223ebf70b/test/e2e/storage/vsphere/nodemapper.godd#L62 – reference: GitHub repository. Grumpy: Go running Python. https://github.com/google/grumpy, (2020) – reference: Ng, N., Yoshida, N.: Static deadlock detection for concurrent go by global session graph synthesis. In CCC’16, pp. 174–184. ACM, (2016) – reference: GitHub repository. C2Go: Migrate from C to Go. https://godoc.org/rsc.io/c2go, (2020) – reference: LiptonRJReduction: a method of proving properties of parallel programsCommun. ACM1975181271772140076910.1145/361227.3612340316.68015 – reference: Zaks, A., Joshi, R.: Verifying Multi-threaded C Programs with SPIN. In SPIN’08, pp. 94–107, (2008) – reference: Dekker, J., Vaandrager, F., Smetsers, R.: Generating a google go framework from an uppaal model. Master’s thesis. Radboud University (2014) – reference: DilleyNLangeJBounded verification of message-passing concurrency in go using promela and spinElectr. Proc. Theor. Comput. Sci.2020314344510.4204/EPTCS.314.4 – reference: HoareCARCommunicating Sequential Processes1985USAPrentice-Hall Inc0637.68007 – reference: Duret-Lutz, A., Lewkowicz, A., Fauchille, A., Michaud, T., Renault, E., Xu, L.: Spot 2.0 — a framework for LTL and ω\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$$\omega $$\end{document}-automata manipulation. In ATVA’16, vol. 9938 of LNCS, pp. 122–129. Springer, Oct. (2016) – reference: Peled, D.: Combining partial order reductions with on-the-fly model-checking. In CAV’94, vol. 818 of LNCS, pp. 377–390. Springer, (1994) – reference: Laarman, A., Pater, E., van de Pol, J., Hansen, H.: Guard-based partial-order reduction. Int. J. Softw. Tools Technol. Transf. 1–22, (2014) – reference: Kant, G., Laarman, A., Meijer, J., van de Pol, J., Blom, S., van Dijk, T.: Ltsmin: high-performance language-independent model checking. In TACAS’15, pp. 692–707, April (2015) – reference: Laarman,A.: Stubborn transaction reduction. In NFM, vol. 10811 of LNCS, pp. 280–298. Springer, (2018) – reference: Lange,J., Ng, N., Toninho, B., Yoshida, N.: Fencing off Go: Liveness and Safety for Channel-based Programming. In POPL’17, pp. 748–761. ACM, (2017) – reference: Griesemer,R., Pike, R., Thompson, K., Taylor, I., Cox, R., Kim, J., Langley, A.: Hey! ho! let’s go! https://opensource.googleblog.com/2009/11/hey-ho-lets-go.html, (2009) – reference: Lange,J., Ng, N., Toninho, B., Yoshida, N.: A static verification framework for message passing in Go using behavioural Types. In CSE’18, pp. 1137–1148. ACM, (2018) – reference: Dilley,N., Lange, J.: Automated verification of go programs via bounded model checking. In 2021 36th IEEE/ACM International Conference on Automated Software Engineering (ASE), pp. 1016–1027, (2021) – reference: Ray, B., Posnett, D., Filkov, V., Devanbu, P.: A large scale study of programming languages and code quality in github. In SIGSOFT’14, pp. 155–165, (2014) – reference: Manna, Z., Pnueli, A.: A hierarchy of temporal properties. In PODC’90, pp. 377–410, (1990) ACM – reference: Godefroid, P.: Between testing and verification: Dynamic software model checking. In DSSE’16 45, pp. 99–116 (2016) – reference: Giunti, M.: Gopi: Compiling linear and static channels in go. In Coordination Models and Languages, pp. 137–152, (2020) Springer – reference: Bloemen, V., van de Pol, J.: Multi-core scc-based ltl model checking. In HVC’16, vol. 10028 of LNCS, pp. 18–33. Springer, Nov. (2016) – reference: Valmari, A.: Stubborn sets for reduced state space generation. In ICATPN’91, vol. 618 of LNCS, pp. 491–515, (1991) Springer – reference: GitHub repository. Java2Go: Convert Java code to something like Go. https://github.com/dglo/java2go, (2020) – ident: 692_CR7 doi: 10.1109/SANER.2019.8668036 – ident: 692_CR21 doi: 10.1007/978-3-030-50029-0_9 – ident: 692_CR17 – ident: 692_CR15 – ident: 692_CR13 – ident: 692_CR36 doi: 10.1007/3-540-58179-0_69 – ident: 692_CR11 – ident: 692_CR41 doi: 10.1023/A:1022920129859 – ident: 692_CR40 doi: 10.1007/3-540-53863-1_36 – ident: 692_CR5 doi: 10.1007/978-3-319-49052-6_2 – ident: 692_CR19 – volume: 314 start-page: 34 year: 2020 ident: 692_CR8 publication-title: Electr. Proc. Theor. Comput. Sci. doi: 10.4204/EPTCS.314.4 – ident: 692_CR38 – ident: 692_CR29 doi: 10.1007/s10009-014-0363-9 – volume: 18 start-page: 717 issue: 12 year: 1975 ident: 692_CR32 publication-title: Commun. ACM doi: 10.1145/361227.361234 – ident: 692_CR2 doi: 10.1007/BFb0016204 – ident: 692_CR30 doi: 10.1145/3093333.3009847 – ident: 692_CR31 doi: 10.1145/3180155.3180157 – ident: 692_CR23 – ident: 692_CR25 – ident: 692_CR26 doi: 10.1007/978-3-662-46681-0_61 – ident: 692_CR44 – ident: 692_CR27 doi: 10.1007/978-3-030-84629-9_8 – ident: 692_CR6 – ident: 692_CR14 – ident: 692_CR16 – ident: 692_CR20 – ident: 692_CR3 doi: 10.1007/s10009-019-00519-1 – ident: 692_CR4 doi: 10.1007/978-3-319-23404-5_6 – ident: 692_CR33 – ident: 692_CR18 – ident: 692_CR39 doi: 10.1145/3297858.3304069 – ident: 692_CR37 doi: 10.1145/2635868.2635922 – ident: 692_CR28 doi: 10.1007/978-3-319-77935-5_20 – ident: 692_CR34 doi: 10.1145/93385.93442 – ident: 692_CR10 doi: 10.1007/978-3-319-46520-3_8 – volume-title: Communicating Sequential Processes year: 1985 ident: 692_CR24 – ident: 692_CR9 doi: 10.1109/ASE51524.2021.9678571 – ident: 692_CR22 – ident: 692_CR12 doi: 10.1007/978-3-642-33386-6_22 – ident: 692_CR35 doi: 10.1145/2892208.2892232 – ident: 692_CR1 – ident: 692_CR43 – ident: 692_CR42 doi: 10.1109/CGO51591.2021.9370317 |
| SSID | ssj0017679 |
| Score | 2.3192296 |
| Snippet | We introduce Go2Pins, a tool that takes a program written in Go and links it with two model checkers: LTSMin (Kant et al. Ltsmin: high-performance... |
| SourceID | proquest crossref springer |
| SourceType | Aggregation Database Enrichment Source Index Database Publisher |
| StartPage | 77 |
| SubjectTerms | Black boxes Boxes Computer Science Handles Interfaces Programming languages Reflexivity Software Engineering Software Engineering/Programming and Operating Systems Theory of Computation Verification |
| SummonAdditionalLinks | – databaseName: SpringerLINK Contemporary 1997-Present dbid: RSV link: http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwnV3PS8MwFA46PXhx_sTplBw8KBrYkrZpvYm4eRhz6JTdSpImMJBW1rn9-yZpsqmooOemIbyXvPflvZf3AXDKM6atXiKRuU0jQ7yNOI8JCoKQ8Ihos0yEJZug_X48GiUD9yis9NXuPiVpLfWHx242kK8vT6a9LkbzVbCm3V1sCBseHp8XuQMa2Q57GggQhClN3FOZ7-f47I6WGPNLWtR6m079f-vcApsOXcLrajtsgxWZ74C6Z26A7iDvgvtugQfjvLyCDCpfngU1foUaD8LesAf1DjdFRFZvsFCwW0BXylXCMx85h7Mq2na-B546t8ObO-SoFZDQAGSKFIkUoTJuUZUlPCCMRVGLa-waYU54IqTCoq0Uz3DGwpAxrvRBDWPTtTAWnAiyD2p5kcsDAJMQh5ImlIhMe0Qu40goxvRM-iokcRA2QNtLOBWu77ihv3hJlx2TjcRSLbHUSiydN8DF4p_XquvGr6ObXnGpO4FlahKqVNuzNm6AS6-o5eefZzv82_AjsGEY6KtC7iaoTSdv8hisi9l0XE5O7M58B7DN3I4 priority: 102 providerName: Springer Nature |
| Title | Go2Pins: a framework for the LTL verification of Go programs (extended version) |
| URI | https://link.springer.com/article/10.1007/s10009-022-00692-w https://www.proquest.com/docview/2784707012 |
| Volume | 25 |
| WOSCitedRecordID | wos000912379900001&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D |
| hasFullText | 1 |
| inHoldings | 1 |
| isFullTextHit | |
| isPrint | |
| journalDatabaseRights | – providerCode: PRVPQU databaseName: Advanced Technologies & Aerospace Database customDbUrl: eissn: 1433-2787 dateEnd: 20241213 omitProxy: false ssIdentifier: ssj0017679 issn: 1433-2779 databaseCode: P5Z dateStart: 20190101 isFulltext: true titleUrlDefault: https://search.proquest.com/hightechjournals providerName: ProQuest – providerCode: PRVPQU databaseName: Computer Science Database customDbUrl: eissn: 1433-2787 dateEnd: 20241213 omitProxy: false ssIdentifier: ssj0017679 issn: 1433-2779 databaseCode: K7- dateStart: 20190101 isFulltext: true titleUrlDefault: http://search.proquest.com/compscijour providerName: ProQuest – providerCode: PRVPQU databaseName: Engineering Database (subscription) customDbUrl: eissn: 1433-2787 dateEnd: 20241213 omitProxy: false ssIdentifier: ssj0017679 issn: 1433-2779 databaseCode: M7S dateStart: 20190101 isFulltext: true titleUrlDefault: http://search.proquest.com providerName: ProQuest – providerCode: PRVPQU databaseName: ProQuest Central customDbUrl: eissn: 1433-2787 dateEnd: 20241213 omitProxy: false ssIdentifier: ssj0017679 issn: 1433-2779 databaseCode: BENPR dateStart: 20190101 isFulltext: true titleUrlDefault: https://www.proquest.com/central providerName: ProQuest – providerCode: PRVPQU databaseName: Research Library customDbUrl: eissn: 1433-2787 dateEnd: 20241213 omitProxy: false ssIdentifier: ssj0017679 issn: 1433-2779 databaseCode: M2O dateStart: 20190101 isFulltext: true titleUrlDefault: https://search.proquest.com/pqrl providerName: ProQuest – providerCode: PRVAVX databaseName: SpringerLINK Contemporary 1997-Present customDbUrl: eissn: 1433-2787 dateEnd: 99991231 omitProxy: false ssIdentifier: ssj0017679 issn: 1433-2779 databaseCode: RSV dateStart: 19971201 isFulltext: true titleUrlDefault: https://link.springer.com/search?facet-content-type=%22Journal%22 providerName: Springer Nature |
| link | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwpV1LS8QwEB509eDF9YnrY8nBg6JBN9k2rRdR8QHquvhCvJQkTWBBtmpX_ftOsqmLgl685NI2lM5k8mVm-n0A6yqXGPVSQ91pmjrhbapUwmm7HXEVcwzLXHuxCdHpJA8PaTck3MrQVlnFRB-o80K7HPmOK5AJ9M8W239-oU41ylVXg4TGOEw4loSWb927-aoiiNhz7SEk4JQJkYafZsKvc74sgEcxR9bL6Mf3jWmENn8USP2-c1L_7xvPwHRAnORg6CKzMGb6c1Cv1BxIWNzzcHVasG6vX-4RSWzVskUQ0xLEiOTi9oKg17vGIm9LUlhyWpDQ3lWSjSqbTt6HGbjNBbg7Ob49OqNBboFqBCUDanlsuTDJrrB5qtpcyjjeVYhnY6a4SrWxTLesVTnLZRRJqSwu3ihxTIaJVlzzRaj1i75ZApJGLDIiFVznuEsqk8TaSokz4fHIsHbUgFb1rTMduMidJMZTNmJRdvbJ0D6Zt0_20YCtr2eeh0wcf969WhklC6uyzEYWacB2ZdbR5d9nW_57thWYcir0w2buVagNXt_MGkzq90GvfG3CxOFxp3vdhPFzQXG8ZFdN76c4dqNHHK9v7j8BHqLrUw |
| linkProvider | ProQuest |
| linkToHtml | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMw1V3fb9MwED6VggQvDDYQ3Qb4gUmgYbHaSZxMmhCC9YdaSh86qW_BdmxpEmq6pazaP8XfyDmJW4G0vvVhz0lOSvLd-Tvf-T6AdyqTGPUSQ102TZ3wNlUq5jQIQq4ijmGZ61JsQoxG8XSajBvwx5-FcW2VPiaWgTrLtdsj_-QKZALx2Waf51fUqUa56qqX0KhgMTC3S0zZirP-N_y_R4x1zidfe7RWFaAa194FtTyyXJj4RNgsUQGXMopOFNK2iCmuEm0s021rVcYyGYZSKosYDWM3sC_WimuOdh_Aw4DHwvnVQNBV1UJE5Ww_pCCcMiGS-pBOfVSvLENg6ueGAzO6_HchXLPb_wqy5TrX2blvX-gZPK0ZNflSucBzaJjZLux4tQpSB689-NHN2fhyVpwSSaxvSSPI2QlyYDKcDAl6tWucKrFKcku6Oanb1wry3lcLyE21w_jhBVxs5bVeQnOWz8wrIEnIQiMSwXWGLECZONJWSrSE6Z9hQdiCtv-3qa5nrTvJj1_pekq0w0OKeEhLPKTLFhyvnplXk0Y23n3oQZDWUadI1whowUcPo_Xlu63tb7b2Fh73Jt-H6bA_GhzAE4Y8r2pcP4Tm4vq3eQ2P9M3isrh-U_oDgZ_bhtdfKkBFPA |
| linkToPdf | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMw1V1Ra9swED66doy9LG230mxdp4cWNjaRRIotezBGaZs0NGR56CDsxZVkCQoj7uosYX-tv64nW2roYH3Lw55tH8j6dPpO9-kO4EDlEr1eaqiLpqlrvE2VSjjtdiOuYo5umeuq2YQYjZLJJB2vwW24C-NklcEnVo46L7Q7I2-5BJlAfHZYy3pZxPik9_X6F3UdpFymNbTTqCFybv4sMHwrvwxOcK4PGeudXhyfUd9hgGrch2fU8thyYZK2sHmqulzKOG4rpHAxU1yl2limO9aqnOUyiqRUFvEaJa54X6IV1xztPoENgTGmkxOOox_3GQwRV3X-kI5wyoRI_YUdf22vSklgGOgKBTO6eLgpLpnuX8nZas_rNf7nv7UJLzzTJkf10tiCNTPdhkboYkG8U3sJ3_oFG19Ny89EEhukagS5PEFuTIYXQ4Kr3QmqKgyTwpJ-QbysrSTvQxaBzOuTxw-v4PtKhrUD69NianaBpBGLjEgF1zmyA2WSWFsp0RKGhYZ1oyZ0wjxn2tdgd61AfmbL6tEOGxliI6uwkS2a8PH-m-u6Asmjb-8FQGTeG5XZEg1N-BQgtXz8b2uvH7f2Dp4hqrLhYHT-Bp4zpH-1nn0P1mc3v81beKrns6vyZr9aGgQuV42uO8U-TmA |
| openUrl | ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Go2Pins%3A+a+framework+for+the+LTL+verification+of+Go+programs+%28extended+version%29&rft.jtitle=International+journal+on+software+tools+for+technology+transfer&rft.au=Kirszenberg%2C+Alexandre&rft.au=Martin%2C+Antoine&rft.au=Moreau%2C+Hugo&rft.au=Renault%2C+Etienne&rft.date=2023-02-01&rft.pub=Springer+Nature+B.V&rft.issn=1433-2779&rft.eissn=1433-2787&rft.volume=25&rft.issue=1&rft.spage=77&rft.epage=94&rft_id=info:doi/10.1007%2Fs10009-022-00692-w&rft.externalDBID=HAS_PDF_LINK |
| thumbnail_l | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=1433-2779&client=summon |
| thumbnail_m | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=1433-2779&client=summon |
| thumbnail_s | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=1433-2779&client=summon |