{"id":2354,"date":"2018-04-17T09:24:16","date_gmt":"2018-04-17T08:24:16","guid":{"rendered":"https:\/\/www.prover.com\/?p=2354"},"modified":"2024-06-20T10:34:02","modified_gmt":"2024-06-20T09:34:02","slug":"performance-issues-formal-vertification","status":"publish","type":"post","link":"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/","title":{"rendered":"Performance issues with formal verification"},"content":{"rendered":"<p>We&#8217;ve all been there, waiting for the theorem prover to answer. Getting up for a cup of coffee, bugging a colleague&#8230; still no answer. This can be standard behaviour when doing formal verification. The requirements are difficult to prove, the system manages to escape into some dark corner not easily approached by the theorem prover. If things are really bad, then the waiting might continue for hours, days, even weeks!<\/p>\n<h3>More is not better<\/h3>\n<p>The common remedy for this condition is to get more computers, more powerful computers, more memory, parallel computers, more, more&#8230; more usually helps to solve the current situation. But soon another larger system comes along and the condition returns. What I am saying is that, usually, perfomance issues when doing formal verification are a symptom of a more serious disease. And trying to cure it with more computer power is like treating cancer with stronger painkillers; it only addresses the symptom, not the cause.<\/p>\n<h3>System disharmony<\/h3>\n<p>In my experience, the cause of performance issues when doing formal verification is not lack of computer power. It is rather an indication that the requirements and the system verified are not in harmony. With this, I mean that the system might satisfy the requirements, but not in an obvious way. If the requirements are satisfied, then they are done so in some roundabout, tricky way, not by some straightforward checks, making them hard to prove.<\/p>\n<p>The root cause of this disharmony is usually that the system was not developed for verification, causing the fulfillment of the requirements to be addressed late in the development process. The obvious cure is prophylax. Ideally, the requirements should be available at the beginning of the development of the system. Then the developers can design the system so that it satisfies the requirements in an obvious way. This will make the requirements easy to prove and all performance issues go away. Furthermore, formal verification should be introduced as early as possible in the process so the developers have a chance to confirm that they are on the right track.<\/p>\n<p>In case you are wondering, <a href=\"https:\/\/www.prover.com\/software-solutions-rail-control\/prover-trident\/\">this is how development is done in the Prover Trident process.<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>We&#8217;ve all been there, waiting for the theorem prover to answer. Getting up for a cup of coffee, bugging a  [&#8230;]<\/p>\n","protected":false},"author":14,"featured_media":14931,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"content-type":"","inline_featured_image":false,"footnotes":""},"categories":[152],"tags":[72,88],"class_list":["post-2354","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-formal-methods","tag-formal-methods","tag-software-development"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Performance issues with formal verification - Prover - Engineering a Safer World<\/title>\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\/formal-methods\/performance-issues-formal-vertification\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Performance issues with formal verification - Prover - Engineering a Safer World\" \/>\n<meta property=\"og:description\" content=\"We&#8217;ve all been there, waiting for the theorem prover to answer. Getting up for a cup of coffee, bugging a [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/\" \/>\n<meta property=\"og:site_name\" content=\"Prover - Engineering a Safer World\" \/>\n<meta property=\"article:published_time\" content=\"2018-04-17T08:24:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-06-20T09:34:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.prover.com\/wp-content\/uploads\/2023\/04\/Prover-logo-blue.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Daniel Fredholm\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Daniel Fredholm\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/\"},\"author\":{\"name\":\"Daniel Fredholm\",\"@id\":\"https:\/\/prover.com\/#\/schema\/person\/ce3795414353e49a88ff8a88e4cc6e9f\"},\"headline\":\"Performance issues with formal verification\",\"datePublished\":\"2018-04-17T08:24:16+00:00\",\"dateModified\":\"2024-06-20T09:34:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/\"},\"wordCount\":367,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/prover.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.prover.com\/wp-content\/uploads\/2023\/04\/Prover-logo-blue.webp\",\"keywords\":[\"Formal Methods\",\"Software Development\"],\"articleSection\":[\"Formal methods\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/\",\"url\":\"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/\",\"name\":\"Performance issues with formal verification - Prover - Engineering a Safer World\",\"isPartOf\":{\"@id\":\"https:\/\/prover.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.prover.com\/wp-content\/uploads\/2023\/04\/Prover-logo-blue.webp\",\"datePublished\":\"2018-04-17T08:24:16+00:00\",\"dateModified\":\"2024-06-20T09:34:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/#primaryimage\",\"url\":\"https:\/\/www.prover.com\/wp-content\/uploads\/2023\/04\/Prover-logo-blue.webp\",\"contentUrl\":\"https:\/\/www.prover.com\/wp-content\/uploads\/2023\/04\/Prover-logo-blue.webp\",\"width\":1200,\"height\":675,\"caption\":\"Prover\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.prover.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Formal methods\",\"item\":\"https:\/\/www.prover.com\/categories\/formal-methods\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Performance issues with formal verification\"}]},{\"@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\/ce3795414353e49a88ff8a88e4cc6e9f\",\"name\":\"Daniel Fredholm\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/136bce2d66e453ed9537a3c5e4043e39183a1eeafec92f1e9987b0c359a806f3?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/136bce2d66e453ed9537a3c5e4043e39183a1eeafec92f1e9987b0c359a806f3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/136bce2d66e453ed9537a3c5e4043e39183a1eeafec92f1e9987b0c359a806f3?s=96&d=mm&r=g\",\"caption\":\"Daniel Fredholm\"},\"url\":\"https:\/\/www.prover.com\/author\/daniel-fredholm\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Performance issues with formal verification - Prover - Engineering a Safer World","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\/formal-methods\/performance-issues-formal-vertification\/","og_locale":"en_US","og_type":"article","og_title":"Performance issues with formal verification - Prover - Engineering a Safer World","og_description":"We&#8217;ve all been there, waiting for the theorem prover to answer. Getting up for a cup of coffee, bugging a [...]","og_url":"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/","og_site_name":"Prover - Engineering a Safer World","article_published_time":"2018-04-17T08:24:16+00:00","article_modified_time":"2024-06-20T09:34:02+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.prover.com\/wp-content\/uploads\/2023\/04\/Prover-logo-blue.webp","type":"image\/webp"}],"author":"Daniel Fredholm","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Daniel Fredholm","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/#article","isPartOf":{"@id":"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/"},"author":{"name":"Daniel Fredholm","@id":"https:\/\/prover.com\/#\/schema\/person\/ce3795414353e49a88ff8a88e4cc6e9f"},"headline":"Performance issues with formal verification","datePublished":"2018-04-17T08:24:16+00:00","dateModified":"2024-06-20T09:34:02+00:00","mainEntityOfPage":{"@id":"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/"},"wordCount":367,"commentCount":0,"publisher":{"@id":"https:\/\/prover.com\/#organization"},"image":{"@id":"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/#primaryimage"},"thumbnailUrl":"https:\/\/www.prover.com\/wp-content\/uploads\/2023\/04\/Prover-logo-blue.webp","keywords":["Formal Methods","Software Development"],"articleSection":["Formal methods"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/","url":"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/","name":"Performance issues with formal verification - Prover - Engineering a Safer World","isPartOf":{"@id":"https:\/\/prover.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/#primaryimage"},"image":{"@id":"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/#primaryimage"},"thumbnailUrl":"https:\/\/www.prover.com\/wp-content\/uploads\/2023\/04\/Prover-logo-blue.webp","datePublished":"2018-04-17T08:24:16+00:00","dateModified":"2024-06-20T09:34:02+00:00","breadcrumb":{"@id":"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/#primaryimage","url":"https:\/\/www.prover.com\/wp-content\/uploads\/2023\/04\/Prover-logo-blue.webp","contentUrl":"https:\/\/www.prover.com\/wp-content\/uploads\/2023\/04\/Prover-logo-blue.webp","width":1200,"height":675,"caption":"Prover"},{"@type":"BreadcrumbList","@id":"https:\/\/www.prover.com\/formal-methods\/performance-issues-formal-vertification\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.prover.com\/"},{"@type":"ListItem","position":2,"name":"Formal methods","item":"https:\/\/www.prover.com\/categories\/formal-methods\/"},{"@type":"ListItem","position":3,"name":"Performance issues with formal verification"}]},{"@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\/ce3795414353e49a88ff8a88e4cc6e9f","name":"Daniel Fredholm","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/136bce2d66e453ed9537a3c5e4043e39183a1eeafec92f1e9987b0c359a806f3?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/136bce2d66e453ed9537a3c5e4043e39183a1eeafec92f1e9987b0c359a806f3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/136bce2d66e453ed9537a3c5e4043e39183a1eeafec92f1e9987b0c359a806f3?s=96&d=mm&r=g","caption":"Daniel Fredholm"},"url":"https:\/\/www.prover.com\/author\/daniel-fredholm\/"}]}},"_links":{"self":[{"href":"https:\/\/www.prover.com\/wp-json\/wp\/v2\/posts\/2354","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\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/www.prover.com\/wp-json\/wp\/v2\/comments?post=2354"}],"version-history":[{"count":1,"href":"https:\/\/www.prover.com\/wp-json\/wp\/v2\/posts\/2354\/revisions"}],"predecessor-version":[{"id":6546,"href":"https:\/\/www.prover.com\/wp-json\/wp\/v2\/posts\/2354\/revisions\/6546"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.prover.com\/wp-json\/wp\/v2\/media\/14931"}],"wp:attachment":[{"href":"https:\/\/www.prover.com\/wp-json\/wp\/v2\/media?parent=2354"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.prover.com\/wp-json\/wp\/v2\/categories?post=2354"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.prover.com\/wp-json\/wp\/v2\/tags?post=2354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}