Slides for 4xxx.
[libguestfs-talks.git] / 2020-frama-c / 4000-range-is-empty-again.html
diff --git a/2020-frama-c/4000-range-is-empty-again.html b/2020-frama-c/4000-range-is-empty-again.html
new file mode 100644 (file)
index 0000000..74e52f8
--- /dev/null
@@ -0,0 +1,30 @@
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<link rel="stylesheet" href="style.css" type="text/css"/>
+<script src="code.js" type="text/javascript"></script>
+
+<h1>Back to range_is_empty()</h1>
+
+<pre class="code">
+  <span class="comment">/*@
+    predicate valid_range(struct Range range) =
+      range.lob <= range.upb + 1;
+    predicate empty_range(struct Range range) =
+      range.lob == range.upb + 1;
+  */</span>
+
+  /* Is range empty? */
+  <span class="comment">/*@
+    requires \valid_read(range);
+    requires valid_range(*range);
+    assigns \nothing;
+    ensures \result <==> empty_range(*range);
+   */</span>
+  static inline bool range_is_empty(const Range *range)
+  {
+      return range->lob > range->upb;
+  }
+</pre>
+
+<pre>
+  $ frama-c -wp -wp-rte snippets/range_is_empty.c
+</pre>