[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"doc-detail-83538-en":3,"doc-seo-83538-105":30,"detail-sidebar-cat-0-en-105":91},{"code":4,"msg":5,"data":6},0,"success",{"doc_id":7,"user_id":8,"nickname":9,"user_avatar":10,"doc_module":4,"category_id":11,"category_name":12,"doc_title":13,"doc_description":14,"doc_content":15,"file_id":16,"file_url":17,"file_type":18,"file_size":19,"view_count":20,"is_deleted":4,"is_public":21,"is_downloadable":21,"audit_status":21,"page_count":22,"language":23,"language_code":24,"site_id":25,"html_lang":24,"table_of_contents":26,"faqs":27,"seo_title":13,"seo_description":14,"update_tm":28,"read_time":29},83538,962075006959,"Anda","https://ap-avatar.wpscdn.com/avatar/e0002397efbe92a78e?_k=1776741047341049297",8,"Research & Report","Petrify: Petri-net Based Analysis of Concurrency Properties in Java Bytecode","Petrify presents a novel automated verification technique that addresses the expressiveness–scalability trade-off in concurrent program analysis. Petrify encodes the semantics of Java bytecode programs into Petri nets and leverages efficient model checking (e.g., LoLA) for property analysis. Experiments show the Petri-net encoding is both precise for concurrent behavior and succinct, keeping analysis largely insensitive to parameter size. By targeting bytecode, jPetrify supports any Java version and even an imperative subset of Kotlin, unlike tools constrained to older Java releases.","arXiv :2607 .00830v 1 [ cs . SE] 1 Jul 2026  \nPetrify: Petri-net Based Analysis of Concurrency Properties in Java Bytecode  \nAkshatha Shenoy 1 [0009−0004−2439−1656] and Carlo A. Furia 1 [0000−0003−1040−3201]  \nSoftware Institute, USI Università della Svizzera italiana, Lugano, Switzerland  \n[shenoa@usi. ch](shenoa@usi. ch) [bugcounting. net](bugcounting. net)  \nAbstract. The landscape of automated formal verification is populated by techniques that make prominently different trade-offs: some focus on expressiveness and precision, supporting the verification of complex properties; others favorscalability and practicality, so that they are applicable to larger programs using different features. This paper presents Petrify, a novel automated verification technique for concurrency properties that achieves a distinctive trade-off. Petrify encodes the semantics of Java bytecode programs into Petri nets (PNs), which can be analyzed by state-of-the-art model checking tools such as LoLA. As our experiments demonstrate, Petrify’s approach offers an interesting combination of expressiveness and practicality: PNs are a fairly precise encoding of the concurrent behavior of programs; at the same time, Petrify’s PN encoding is succinct, so that its analysis remains quite insensitive to parameter size. Another practical benefit of targeting bytecode is that jPetrify, the prototype tool that implements the Petrify technique, is applicable to programs written in any version of Java and even a subset of Kotlin (another language that compiles to Java bytecode) while other similar tools are limited to older versions of Java. While this paper’s experiments focus on analyzing fundamental properties like deadlock, Petrify’s approach lends itself to be extended to other kinds of concurrency analysis, which we plan to tackle in future work.  \n1 Introduction  \nEvery automated formal program analysis technique has to contend with the expressiveness vs. scalability trade-off. Techniques that favor expressiveness support precisely verifying all sorts of user-defined properties, but may struggle to analyze large programs. In contrast, techniques that target scalability are based on bespoke abstractions that approximate only specific hardcoded properties, but are applicable to realistic-size programs. In the domain of concurrent verification, for example, software model checkers (e.g., Java Pathfinder [10]) favor expressiveness as they support temporal logic specificationsand other kinds of program annotations, and can analyze path conditions precisely. In contrast, custom static analyzers that focus on a single property (e.g., data races for Infer’s RacerD [1] or deadlocks for JaDA [19]) are usually more efficient but cannot verify other kinds of properties and may suffer from imprecision. Another important dimension of practicality for any formal verification tool is language support. Most analysis techniques work at the source-code level, which entails that they may struggle to keep up with the evolution of modern languages. Consider, again, the example of Java: tools like Pathfinder and JaDA were developed for earlier versions of Java, and hence  \ncannot analyze programs that include recently introduced features—even if the features themselves do not affect the concurrent behavior. All the more so, applying a verification technique to work on a (subset of a) different language (even one that is similar to Java) is usually onerous—in terms of both adapting the technique and developing a suitable implementation toolchain.  \nThis paper presents Petrify, a program analysis technique for concurrent Java programs that explores a novel trade-off between expressiveness, scalability, and language support. Petrify relies on two key ideas. First, it encodes the concurrent behavior of a Java program as a Petri net. Thanks to recent advances in their algorithmic verification, PNs have become an appealing abstract model of concurrent computation, which combines a high","cbCaijlnp6utPda2","https://ap.wps.com/l/cbCaijlnp6utPda2","pdf",511419,2,1,26,"English","en",105,"# Introduction\n# An Overview of Petrify","[{\"question\":\"What is Petrify and what trade-off does it target?\",\"answer\":\"Petrify is an automated verification technique for concurrency properties that targets a balance between expressiveness, scalability, and language support.\"},{\"question\":\"How does Petrify model Java programs for verification?\",\"answer\":\"Petrify translates Java bytecode semantics into Petri nets, which are then analyzed using state-of-the-art model checking tools such as LoLA.\"},{\"question\":\"What practical language support does jPetrify provide?\",\"answer\":\"jPetrify can analyze Java programs written in any Java version, and it can also handle programs written in an imperative subset of Kotlin that compiles to Java bytecode.\"}]",1784188695,66,{"code":4,"msg":31,"data":32},"ok",{"site_id":25,"language":24,"slug":33,"title":13,"keywords":34,"description":14,"schema_data":35,"social_meta":86,"head_meta":88,"extra_data":90,"updated_unix":28},"petrify-petri-net-based-analysis-of-concurrency-properties-in-java-bytecode","",{"@graph":36,"@context":85},[37,53,68],{"@type":38,"itemListElement":39},"BreadcrumbList",[40,44,47,50],{"item":41,"name":42,"@type":43,"position":21},"https://docshare.wps.com","Home","ListItem",{"item":45,"name":46,"@type":43,"position":20},"https://docshare.wps.com/document/","Document",{"item":48,"name":12,"@type":43,"position":49},"https://docshare.wps.com/document/research-report/",3,{"item":51,"name":13,"@type":43,"position":52},"https://docshare.wps.com/document/petrify-petri-net-based-analysis-of-concurrency-properties-in-java-bytecode/83538/",4,{"url":51,"name":13,"@type":54,"author":55,"headline":13,"publisher":57,"fileFormat":60,"inLanguage":24,"description":14,"dateModified":61,"datePublished":62,"encodingFormat":60,"isAccessibleForFree":63,"interactionStatistic":64},"DigitalDocument",{"name":9,"@type":56},"Person",{"url":41,"name":58,"@type":59},"DocShare","Organization","application/pdf","2026-07-24","2026-07-16",true,{"@type":65,"interactionType":66,"userInteractionCount":20},"InteractionCounter",{"@type":67},"ViewAction",{"@type":69,"mainEntity":70},"FAQPage",[71,77,81],{"name":72,"@type":73,"acceptedAnswer":74},"What is Petrify and what trade-off does it target?","Question",{"text":75,"@type":76},"Petrify is an automated verification technique for concurrency properties that targets a balance between expressiveness, scalability, and language support.","Answer",{"name":78,"@type":73,"acceptedAnswer":79},"How does Petrify model Java programs for verification?",{"text":80,"@type":76},"Petrify translates Java bytecode semantics into Petri nets, which are then analyzed using state-of-the-art model checking tools such as LoLA.",{"name":82,"@type":73,"acceptedAnswer":83},"What practical language support does jPetrify provide?",{"text":84,"@type":76},"jPetrify can analyze Java programs written in any Java version, and it can also handle programs written in an imperative subset of Kotlin that compiles to Java bytecode.","https://schema.org",{"og:url":51,"og:type":87,"og:title":13,"og:site_name":58,"og:description":14},"article",{"robots":89,"canonical":51},"index,follow",{"doc_id":7,"site_id":25},{"code":4,"msg":5,"data":92},[93,97,101,105,110,115,120,123,128,131,135],{"id":21,"doc_module":4,"doc_module_name":46,"category_name":94,"show_sort_weight":95,"slug":96},"Story & Novel",90,"story-novel",{"id":20,"doc_module":4,"doc_module_name":46,"category_name":98,"show_sort_weight":99,"slug":100},"Literature",80,"literature",{"id":52,"doc_module":4,"doc_module_name":46,"category_name":102,"show_sort_weight":103,"slug":104},"Exam",70,"exam",{"id":106,"doc_module":4,"doc_module_name":46,"category_name":107,"show_sort_weight":108,"slug":109},5,"Comic",60,"comic",{"id":111,"doc_module":4,"doc_module_name":46,"category_name":112,"show_sort_weight":113,"slug":114},6,"Technology",50,"technology",{"id":116,"doc_module":4,"doc_module_name":46,"category_name":117,"show_sort_weight":118,"slug":119},7,"Healthcare",40,"healthcare",{"id":11,"doc_module":4,"doc_module_name":46,"category_name":12,"show_sort_weight":121,"slug":122},30,"research-report",{"id":124,"doc_module":4,"doc_module_name":46,"category_name":125,"show_sort_weight":126,"slug":127},9,"Religion & Spirituality",20,"religion-spirituality",{"id":126,"doc_module":4,"doc_module_name":46,"category_name":129,"show_sort_weight":126,"slug":130},"World Cup","world-cup",{"id":132,"doc_module":4,"doc_module_name":46,"category_name":133,"show_sort_weight":132,"slug":134},10,"Lifestyle","lifestyle",{"id":136,"doc_module":4,"doc_module_name":46,"category_name":137,"show_sort_weight":106,"slug":138},19,"General","general"]