<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://mw.hh.se/wg211/index.php?action=history&amp;feed=atom&amp;title=WG211%2FM18Igarashi</id>
	<title>WG211/M18Igarashi - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://mw.hh.se/wg211/index.php?action=history&amp;feed=atom&amp;title=WG211%2FM18Igarashi"/>
	<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M18Igarashi&amp;action=history"/>
	<updated>2026-04-05T23:02:55Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M18Igarashi&amp;diff=1820&amp;oldid=prev</id>
		<title>Igarashi: Created page with &quot;Loop fusion—a program transformation to merge multiple consecutive loops into a single one—has been studied mainly for compiler optimization. In this paper, we propose a n...&quot;</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M18Igarashi&amp;diff=1820&amp;oldid=prev"/>
		<updated>2018-05-21T00:39:48Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Loop fusion—a program transformation to merge multiple consecutive loops into a single one—has been studied mainly for compiler optimization. In this paper, we propose a n...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Loop fusion—a program transformation to merge multiple&lt;br /&gt;
consecutive loops into a single one—has been studied mainly&lt;br /&gt;
for compiler optimization. In this paper, we propose a new&lt;br /&gt;
loop fusion strategy, which can fuse any loops—even loops&lt;br /&gt;
with data dependence—and show that it is useful for program&lt;br /&gt;
verification because it can simplify loop invariants.&lt;br /&gt;
&lt;br /&gt;
The crux of our loop fusion is the following observation: if&lt;br /&gt;
the state after the first loop were known, the two loop bodies&lt;br /&gt;
could be computed at the same time without suffering from&lt;br /&gt;
data dependence by renaming program variables. Our loop&lt;br /&gt;
fusion produces a program that guesses the unknown state&lt;br /&gt;
after the first loop nondeterministically, executes the fused&lt;br /&gt;
loop where variables are renamed, compares the guessed&lt;br /&gt;
state and the state actually computed by the fused loop,&lt;br /&gt;
and, if they do not match, diverges. The last two steps of&lt;br /&gt;
comparison and divergence are crucial to preserve partial&lt;br /&gt;
correctness. We call our approach “guess-and-assume” be-&lt;br /&gt;
cause, in addition to the first step to guess, the last two steps&lt;br /&gt;
can be expressed by the pseudo-instruction assume, used in&lt;br /&gt;
program verification.&lt;br /&gt;
&lt;br /&gt;
We formalize our loop fusion for a simple imperative lan-&lt;br /&gt;
guage and prove that it preserves partial correctness. We&lt;br /&gt;
further extend the “guess-and-assume” technique to revers-&lt;br /&gt;
ing loop execution, which is useful to verify a certain type of&lt;br /&gt;
consecutive loops. Finally, we confirm by experiments that&lt;br /&gt;
our transformation techniques are indeed effective for state-&lt;br /&gt;
of-the-art model checkers to verify a few small programs&lt;br /&gt;
that they could not.&lt;/div&gt;</summary>
		<author><name>Igarashi</name></author>
	</entry>
</feed>