{"id":12077,"date":"2023-03-28T15:46:49","date_gmt":"2023-03-28T14:46:49","guid":{"rendered":"https:\/\/stage.prover.com\/?p=12077"},"modified":"2025-01-13T14:43:21","modified_gmt":"2025-01-13T13:43:21","slug":"psl-now-supports-shll","status":"publish","type":"post","link":"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/","title":{"rendered":"PSL now supports sHLL"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">PSL 5 with sHLL support has been released! <\/span>PSL is Prover\u2019s model-checker that allows to verify designs according to safety properties and environment constraints. It natively takes HLL designs as inputs. But here is the novelty!<\/p>\n<p>With this new version of PSL, it is now possible to directly load sHLL models without an external translation phase. Potential error messages are displayed with direct reference to the sHLL file. This sHLL model can be mixed with any HLL sections such as constraints, proof obligations or lemmas.<\/p>\n<p>sHLL is Prover\u2019s imperative extension over HLL. It can be used as an intermediate step when translating designs from imperative languages (such as C or Ada) but can also be used as an input language for the formalization of imperative-style specifications. sHLL simply encapsulates HLL expressions as assignments in a setting that also defines:<\/p>\n<p><span style=\"font-weight: 400;\">&#8211; a set of <\/span><span style=\"text-decoration: underline;\">global<\/span> <span style=\"font-weight: 400;\">variables that could be assigned at various levels.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">&#8211;<\/span> <span style=\"text-decoration: underline;\">procedures<\/span><span style=\"font-weight: 400;\">, that may modify some global variables, and that provides a finite while loop construction.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">&#8211;<\/span> <span style=\"text-decoration: underline;\">statements<\/span> <span style=\"font-weight: 400;\">that define a call order of these procedures.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This structure is then embedded in the natural temporal loop beneath the HLL execution model.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Consider the following HLL loop, where an array state variable <\/span><span style=\"font-weight: 400; color: #3366ff;\">state<\/span> <span style=\"font-weight: 400;\">is defined recursively by a global variable <\/span><span style=\"font-weight: 400; color: #3366ff;\">global<\/span><span style=\"font-weight: 400;\">:<\/span><\/p>\n<pre><span style=\"font-weight: 400; color: #3366ff;\">Inputs:<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">int in1;<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">Declarations:<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">int^(3) state;<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">Definitions:<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">I(state[a]) := 0;<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">X(state[a]) := global[a];<\/span><\/pre>\n<p><span style=\"font-weight: 400;\">The following sHLL model defines how global is successively modified at each step by calls to <\/span><span style=\"font-weight: 400; color: #3366ff;\">procedure1 <\/span><span style=\"font-weight: 400;\">(which iterates over the array and adds the current input value <\/span><span style=\"font-weight: 400; color: #3366ff;\">in1 <\/span><span style=\"font-weight: 400;\">to each cell of the array), and <\/span><span style=\"font-weight: 400; color: #3366ff;\">procedure2 <\/span><span style=\"font-weight: 400;\">(which multiplies the resulting cell with the value of its index):<\/span><\/p>\n<pre><span style=\"font-weight: 400; color: #3366ff;\">Globals:<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">int^(3) global;<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">Procedures:<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">procedure1(int in1; int^(3) global) {<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\"> \u00a0\u00a0\u00a0int idx;<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\"> \u00a0\u00a0\u00a0idx:= 0;<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\"> \u00a0\u00a0\u00a0while (idx &lt;= 2)[3] {<\/span>\r\n<span style=\"color: #3366ff;\"><span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400;\">global[idx] := global[idx] + in1;<\/span><\/span>\r\n<span style=\"color: #3366ff;\"><span style=\"font-weight: 400;\"> \u00a0\u00a0<\/span> <span style=\"font-weight: 400;\">idx := idx + 1;<\/span><\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\"> \u00a0\u00a0\u00a0}<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">}<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">procedure2(; int^(3) global) {<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\"> \u00a0\u00a0\u00a0int idx;<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\"> \u00a0\u00a0\u00a0idx:= 0;<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\"> \u00a0\u00a0\u00a0while (idx &lt;= 2)[3] {<\/span>\r\n<span style=\"color: #3366ff;\"><span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400;\">global[idx] := global[idx] * idx;<\/span><\/span>\r\n<span style=\"color: #3366ff;\"><span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400;\">idx := idx + 1;<\/span><\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\"> \u00a0\u00a0\u00a0}<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">}<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">Statements:<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">global:=state;<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">procedure1(in1; global);<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">procedure2(;global);\r\n\r\n<\/span><\/pre>\n<div class=\"table-1\">\n<p><span style=\"font-weight: 400;\">The behavior of this combined model leads to the values below:<\/span><\/p>\n<\/div>\n<div class=\"table-1\">\n<table style=\"height: 253px;\" width=\"732\">\n<thead>\n<tr>\n<th align=\"left\">Step<\/th>\n<th align=\"left\">Init<\/th>\n<th align=\"left\">1<\/th>\n<th align=\"left\">2<\/th>\n<th align=\"left\">3<\/th>\n<th align=\"left\">4<\/th>\n<th align=\"left\">5<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td align=\"left\"><span style=\"color: #3366ff;\">in1<\/span><\/td>\n<td align=\"left\">2<\/td>\n<td align=\"left\">1<\/td>\n<td align=\"left\">5<\/td>\n<td align=\"left\">-2<\/td>\n<td align=\"left\">-1<\/td>\n<td align=\"left\">2<\/td>\n<\/tr>\n<tr>\n<td align=\"left\"><span style=\"color: #3366ff;\">global<\/span><\/td>\n<td align=\"left\">[0,2,4]<\/td>\n<td align=\"left\"><span style=\"font-weight: 400;\">[0,3,10]<\/span><\/td>\n<td align=\"left\"><span style=\"font-weight: 400;\">[0,8,30]<\/span><\/td>\n<td align=\"left\"><span style=\"font-weight: 400;\">[0,6,56]<\/span><\/td>\n<td align=\"left\"><span style=\"font-weight: 400;\">[0,5,110]<\/span><\/td>\n<td align=\"left\"><span style=\"font-weight: 400;\">[0,7,224]<\/span><\/td>\n<\/tr>\n<tr>\n<td align=\"left\"><span style=\"color: #3366ff;\">state<\/span><\/td>\n<td align=\"left\"><span style=\"font-weight: 400;\">[0,0,0]<\/span><\/td>\n<td align=\"left\"><span style=\"font-weight: 400;\">[0,2,4]<\/span><\/td>\n<td align=\"left\"><span style=\"font-weight: 400;\">[0,3,10]<\/span><\/td>\n<td align=\"left\"><span style=\"font-weight: 400;\">[0,8,30]<\/span><\/td>\n<td align=\"left\"><span style=\"font-weight: 400;\">[0,6,56]<\/span><\/td>\n<td align=\"left\"><span style=\"font-weight: 400;\">[0,5,110]<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">At every cycle, <\/span><span style=\"font-weight: 400; color: #3366ff;\">in1<\/span> <span style=\"font-weight: 400;\">is randomly assigned to an integer value; <\/span><span style=\"font-weight: 400; color: #3366ff;\">global<\/span> <span style=\"font-weight: 400;\">is evaluated by first applying the expression in <\/span><span style=\"font-weight: 400; color: #3366ff;\">procedure1<\/span><span style=\"font-weight: 400;\">, then <\/span><span style=\"font-weight: 400; color: #3366ff;\">procedure2<\/span><span style=\"font-weight: 400;\">; <\/span><span style=\"font-weight: 400; color: #3366ff;\">global <\/span><span style=\"font-weight: 400;\">is eventually passed to <\/span><span style=\"font-weight: 400; color: #99ccff;\"><span style=\"color: #3366ff;\">state<\/span> <\/span><span style=\"font-weight: 400;\">to store the value at the end of an HLL cycle.\u00a0\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This clear separation between the pure dataflow style of HLL and the imperative style of sHLL allows to lower the distance when dealing with high-level pieces of code. For instance, when an algorithm has been specified in C, Ada, or even in a state-based specification language like B, using sHLL is a more natural candidate both for modeling this algorithm and for checking properties. You might, for example, want to check that the following property holds:<\/span><\/p>\n<pre><span style=\"font-weight: 400; color: #3366ff;\">Proof Obligations:<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">ALL i:[0,2] (global[i] &gt;=i);<\/span>\r\n<\/pre>\n<p><span style=\"font-weight: 400;\">This proof obligation is obviously false, and when loading this model files in PSL, a counterexample can be explored using the tool Why for sHLL structures:<\/span><\/p>\n<pre><span style=\"font-weight: 400; color: #3366ff;\">psl -shll model.shll -hll model.hll -intSize 16 -ind -why<\/span><\/pre>\n<pre><span style=\"font-weight: 400; color: #3366ff;\">[depth 0]&gt;<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">$0: ALL i:[0,2] (global[i] &gt;= i) is [f]<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">because:<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">$1: global[0] &gt;= 0 is [t]<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">$2*: global[1] &gt;= 1 is [f]<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">$3: global[2] &gt;= 2 is [f]<\/span><\/pre>\n<pre><span style=\"font-weight: 400; color: #3366ff;\">[depth 0]&gt;<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">$4: global[1] is [-32767]<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">because:<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">procedure2(; global);<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">and:<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">$6*: global[1] is [-32767]<\/span><\/pre>\n<pre><span style=\"font-weight: 400; color: #3366ff;\">[model.shll:26][depth 0]&gt;<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">$6: global[1] is [-32767]<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">because:<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">global[idx] := global[idx] * idx;<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">and:<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">$7: idx is [1]<\/span>\r\n<span style=\"font-weight: 400; color: #3366ff;\">$8*: global[idx] * idx is [-32767]<\/span><\/pre>\n<pre><\/pre>\n<p><span style=\"font-weight: 400;\">Debugging is available at the sHLL level, allowing for backward search into root causes of this falsifiable proof obligation using the identifiers at the sHLL level, and pointing to part of the code relevant for the current state of the debugger. It is hence much easier to understand what is wrong and corrections made in the source code can be directly fed to PSL for another run until the proof obligation becomes valid.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This step forward in the direction of handling imperative programs with PSL will be followed by many other steps to keep improving the debugger, and the support for error localization in Prover Studio. See our previous <span style=\"text-decoration: underline;\"><a href=\"https:\/\/www.prover.com\/hll\/prover-studio-now-supports-hll\/\">blog post about that here<\/a><\/span><\/span><a href=\"https:\/\/www.prover.com\/hll\/prover-studio-now-supports-hll\/\"><span style=\"font-weight: 400;\">.<\/span><\/a><span style=\"font-weight: 400;\"> We are eagerly waiting for your feedback to contribute to this new feature and its integration with other Prover tools. \u00a0<\/span><\/p>\n<pre><span style=\"font-weight: 400; color: #3366ff;\">\u00a0<\/span><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>PSL 5 with sHLL support has been released! PSL is Prover\u2019s model-checker that allows to verify designs according to safety  [&#8230;]<\/p>\n","protected":false},"author":24,"featured_media":14536,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"content-type":"","inline_featured_image":false,"footnotes":""},"categories":[159],"tags":[],"class_list":["post-12077","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-company-news"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>PSL now supports sHLL - Prover - Engineering a Safer World<\/title>\n<meta name=\"description\" content=\"PSL is Prover\u2019s model-checker that allows to verify designs according to safety properties and environment constraints. Read more!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PSL now supports sHLL - Prover - Engineering a Safer World\" \/>\n<meta property=\"og:description\" content=\"PSL is Prover\u2019s model-checker that allows to verify designs according to safety properties and environment constraints. Read more!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/\" \/>\n<meta property=\"og:site_name\" content=\"Prover - Engineering a Safer World\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-28T14:46:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-01-13T13:43:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.prover.com\/wp-content\/uploads\/2023\/03\/PSL-now-supports-sHLL.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1199\" \/>\n\t<meta property=\"og:image:height\" content=\"678\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Benjamin Blanc\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Benjamin Blanc\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/\"},\"author\":{\"name\":\"Benjamin Blanc\",\"@id\":\"https:\/\/prover.com\/#\/schema\/person\/906432c447a6960d1986be18f2aee0b7\"},\"headline\":\"PSL now supports sHLL\",\"datePublished\":\"2023-03-28T14:46:49+00:00\",\"dateModified\":\"2025-01-13T13:43:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/\"},\"wordCount\":560,\"publisher\":{\"@id\":\"https:\/\/prover.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.prover.com\/wp-content\/uploads\/2023\/03\/PSL-now-supports-sHLL.jpg\",\"articleSection\":[\"Company news\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/\",\"url\":\"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/\",\"name\":\"PSL now supports sHLL - Prover - Engineering a Safer World\",\"isPartOf\":{\"@id\":\"https:\/\/prover.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.prover.com\/wp-content\/uploads\/2023\/03\/PSL-now-supports-sHLL.jpg\",\"datePublished\":\"2023-03-28T14:46:49+00:00\",\"dateModified\":\"2025-01-13T13:43:21+00:00\",\"description\":\"PSL is Prover\u2019s model-checker that allows to verify designs according to safety properties and environment constraints. Read more!\",\"breadcrumb\":{\"@id\":\"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/#primaryimage\",\"url\":\"https:\/\/www.prover.com\/wp-content\/uploads\/2023\/03\/PSL-now-supports-sHLL.jpg\",\"contentUrl\":\"https:\/\/www.prover.com\/wp-content\/uploads\/2023\/03\/PSL-now-supports-sHLL.jpg\",\"width\":1199,\"height\":678,\"caption\":\"PSL now supports sHLL\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.prover.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Company news\",\"item\":\"https:\/\/www.prover.com\/categories\/company-news\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"PSL now supports sHLL\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/prover.com\/#website\",\"url\":\"https:\/\/prover.com\/\",\"name\":\"Prover - Engineering a Safer World\",\"description\":\"Interlocking Design Automation to meet demand for complex digital train control\",\"publisher\":{\"@id\":\"https:\/\/prover.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/prover.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/prover.com\/#organization\",\"name\":\"Prover - Engineering a Safer World\",\"url\":\"https:\/\/prover.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prover.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.prover.com\/wp-content\/uploads\/2023\/01\/prover-logo.svg\",\"contentUrl\":\"https:\/\/www.prover.com\/wp-content\/uploads\/2023\/01\/prover-logo.svg\",\"width\":222,\"height\":22,\"caption\":\"Prover - Engineering a Safer World\"},\"image\":{\"@id\":\"https:\/\/prover.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/prover.com\/#\/schema\/person\/906432c447a6960d1986be18f2aee0b7\",\"name\":\"Benjamin Blanc\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/3ffe1b618fcfd8a15cc7b645244be165271cfe93c9daf2a9c08583709684bb38?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3ffe1b618fcfd8a15cc7b645244be165271cfe93c9daf2a9c08583709684bb38?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3ffe1b618fcfd8a15cc7b645244be165271cfe93c9daf2a9c08583709684bb38?s=96&d=mm&r=g\",\"caption\":\"Benjamin Blanc\"},\"url\":\"https:\/\/www.prover.com\/author\/benjamin-blanc\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PSL now supports sHLL - Prover - Engineering a Safer World","description":"PSL is Prover\u2019s model-checker that allows to verify designs according to safety properties and environment constraints. Read more!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/","og_locale":"en_US","og_type":"article","og_title":"PSL now supports sHLL - Prover - Engineering a Safer World","og_description":"PSL is Prover\u2019s model-checker that allows to verify designs according to safety properties and environment constraints. Read more!","og_url":"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/","og_site_name":"Prover - Engineering a Safer World","article_published_time":"2023-03-28T14:46:49+00:00","article_modified_time":"2025-01-13T13:43:21+00:00","og_image":[{"width":1199,"height":678,"url":"https:\/\/www.prover.com\/wp-content\/uploads\/2023\/03\/PSL-now-supports-sHLL.jpg","type":"image\/jpeg"}],"author":"Benjamin Blanc","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Benjamin Blanc","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/#article","isPartOf":{"@id":"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/"},"author":{"name":"Benjamin Blanc","@id":"https:\/\/prover.com\/#\/schema\/person\/906432c447a6960d1986be18f2aee0b7"},"headline":"PSL now supports sHLL","datePublished":"2023-03-28T14:46:49+00:00","dateModified":"2025-01-13T13:43:21+00:00","mainEntityOfPage":{"@id":"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/"},"wordCount":560,"publisher":{"@id":"https:\/\/prover.com\/#organization"},"image":{"@id":"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/#primaryimage"},"thumbnailUrl":"https:\/\/www.prover.com\/wp-content\/uploads\/2023\/03\/PSL-now-supports-sHLL.jpg","articleSection":["Company news"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/","url":"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/","name":"PSL now supports sHLL - Prover - Engineering a Safer World","isPartOf":{"@id":"https:\/\/prover.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/#primaryimage"},"image":{"@id":"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/#primaryimage"},"thumbnailUrl":"https:\/\/www.prover.com\/wp-content\/uploads\/2023\/03\/PSL-now-supports-sHLL.jpg","datePublished":"2023-03-28T14:46:49+00:00","dateModified":"2025-01-13T13:43:21+00:00","description":"PSL is Prover\u2019s model-checker that allows to verify designs according to safety properties and environment constraints. Read more!","breadcrumb":{"@id":"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/#primaryimage","url":"https:\/\/www.prover.com\/wp-content\/uploads\/2023\/03\/PSL-now-supports-sHLL.jpg","contentUrl":"https:\/\/www.prover.com\/wp-content\/uploads\/2023\/03\/PSL-now-supports-sHLL.jpg","width":1199,"height":678,"caption":"PSL now supports sHLL"},{"@type":"BreadcrumbList","@id":"https:\/\/www.prover.com\/company-news\/psl-now-supports-shll\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.prover.com\/"},{"@type":"ListItem","position":2,"name":"Company news","item":"https:\/\/www.prover.com\/categories\/company-news\/"},{"@type":"ListItem","position":3,"name":"PSL now supports sHLL"}]},{"@type":"WebSite","@id":"https:\/\/prover.com\/#website","url":"https:\/\/prover.com\/","name":"Prover - Engineering a Safer World","description":"Interlocking Design Automation to meet demand for complex digital train control","publisher":{"@id":"https:\/\/prover.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/prover.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/prover.com\/#organization","name":"Prover - Engineering a Safer World","url":"https:\/\/prover.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prover.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.prover.com\/wp-content\/uploads\/2023\/01\/prover-logo.svg","contentUrl":"https:\/\/www.prover.com\/wp-content\/uploads\/2023\/01\/prover-logo.svg","width":222,"height":22,"caption":"Prover - Engineering a Safer World"},"image":{"@id":"https:\/\/prover.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/prover.com\/#\/schema\/person\/906432c447a6960d1986be18f2aee0b7","name":"Benjamin Blanc","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/3ffe1b618fcfd8a15cc7b645244be165271cfe93c9daf2a9c08583709684bb38?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/3ffe1b618fcfd8a15cc7b645244be165271cfe93c9daf2a9c08583709684bb38?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3ffe1b618fcfd8a15cc7b645244be165271cfe93c9daf2a9c08583709684bb38?s=96&d=mm&r=g","caption":"Benjamin Blanc"},"url":"https:\/\/www.prover.com\/author\/benjamin-blanc\/"}]}},"_links":{"self":[{"href":"https:\/\/www.prover.com\/wp-json\/wp\/v2\/posts\/12077","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.prover.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.prover.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.prover.com\/wp-json\/wp\/v2\/users\/24"}],"replies":[{"embeddable":true,"href":"https:\/\/www.prover.com\/wp-json\/wp\/v2\/comments?post=12077"}],"version-history":[{"count":6,"href":"https:\/\/www.prover.com\/wp-json\/wp\/v2\/posts\/12077\/revisions"}],"predecessor-version":[{"id":12085,"href":"https:\/\/www.prover.com\/wp-json\/wp\/v2\/posts\/12077\/revisions\/12085"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.prover.com\/wp-json\/wp\/v2\/media\/14536"}],"wp:attachment":[{"href":"https:\/\/www.prover.com\/wp-json\/wp\/v2\/media?parent=12077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.prover.com\/wp-json\/wp\/v2\/categories?post=12077"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.prover.com\/wp-json\/wp\/v2\/tags?post=12077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}