1 \documentclass{article
}
4 \newcommand{\U}{\,
\mbox{\sf{U
}}\,
}
5 \newcommand{\A}{\mbox{\sf{A
}}}
6 \newcommand{\E}{\mbox{\sf{E
}}}
7 \newcommand{\AX}{\mbox{\sf{AX
}}}
8 \newcommand{\EX}{\mbox{\sf{EX
}}}
9 \newcommand{\AF}{\mbox{\sf{AF
}}}
10 \newcommand{\EF}{\mbox{\sf{EF
}}}
11 \newcommand{\AG}{\mbox{\sf{AG
}}}
12 \newcommand{\EG}{\mbox{\sf{EG
}}}
14 \newcommand{\mita}[1]{\mbox{\it{{#1}}}}
15 \newcommand{\mtt}[1]{\mbox{\tt{{#1}}}}
16 \newcommand{\msf}[1]{\mbox{\sf{{#1}}}}
17 \newcommand{\mrm}[1]{\mbox{\rm{{#1}}}}
18 \newcommand{\mth}[1]{\(
{#1}\)
}
20 \newcommand{\ttlb}{\mbox{\tt \char'
173}}
21 \newcommand{\ttrb}{\mbox{\tt \char'
175}}
25 \begin{quote
}\begin{verbatim
}
35 \end{verbatim
}\end{quote
}
38 \mita{\sf{let
}} \,
\mita{l9
} =
\mita{f();
} \,
\mita{\sf{in
}} \,
\mita{l9
} \wedge (
\AX(
\mita{\sf{let
}} \,
\mita{l0
} =
\mita{g();
} \,
\mita{\sf{in
}} \,
\A[\neg (
\mita{l0
} \vee \mita{l9
})
\U (
\mita{\sf{let
}} \,
\mita{l7
} =
\msf{After
}\\
\mbox{} \vee \msf{ErrorExit
} \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l10
} = (
\mita{\sf{let
}} \,
\mita{l5
} =
\mita{h();
} \,
\mita{\sf{in
}} \,
\A[\neg (
\mita{l5
} \vee \mita{l0
})
\U (
\mita{l5
} \vee \mita{l7
})
]
40 ) \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l3
} =
\mita{l0
}\\
\mbox{} \wedge (
\AX\mita{l10
}) \,
\mita{\sf{in
}} \,
\mita{l3
} \vee ((
\neg \mita{l3
})
\wedge \mita{l10
})
49 \begin{quote
}\begin{verbatim
}
94 \end{verbatim
}\end{quote
}
97 (
\exists \mita{foo
} .
\mita{foo(...)
})
\wedge (
\AX(
\exists \mita{p0
} . (
\mita{\sf{let
}} \,
\mita{l17
} =
\msf{Paren
}(p0) \,
\mita{\sf{in
}} \,
\mita{{\ttlb}
98 } \wedge \mita{l17
} \wedge (
\AX(
\mita{\sf{let
}} \,
\mita{l32
} =
\AX(
\mita{\sf{let
}} \,
\mita{l2
} =
\AX(
\mita{\sf{let
}} \,
\mita{l12
} =
\AX(
\mita{
99 {\ttrb}}\\
\mbox{} \wedge \mita{l17
}) \,
\mita{\sf{in
}} \, ((
\exists \mita{v0
} .
\mita{-f-(-
3-)-;
100 \mth{>
}\mth{>
}\mth{>
} f(
3,
3);
}_
{\mita{v0
}})
\wedge \mita{l12
})
\vee ((
\exists \mita{v0
} .
\mita{-f-(-
4-)-;
101 \mth{>
}\mth{>
}\mth{>
} f(
4,
4);
}_
{\mita{v0
}})\\
\mbox{} \wedge \mita{l12
})
102 ) \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l7
} =
\exists \mita{X
} .
\exists \mita{v0
} .
\mita{-f-(-
3-, -X-)-;
103 \mth{>
}\mth{>
}\mth{>
} f(
3,
3, X);
}_
{\mita{v0
}} \,
\mita{\sf{in
}} \, (
\mita{l7
}\\
\mbox{} \wedge \mita{l2
})
\vee (
\mita{\sf{let
}} \,
\mita{l21
} =
\neg \mita{l7
} \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l6
} =
\exists \mita{Y
} .
\exists \mita{v0
} .
\mita{-f-(-Y-, -
4-)-;
104 \mth{>
}\mth{>
}\mth{>
} f(Y,
4,
4);
}_
{\mita{v0
}}\\
\mbox{} \,
\mita{\sf{in
}} \, (
\mita{l21
} \wedge \mita{l6
} \wedge \mita{l2
})
\vee ((
\neg \mita{l6
})
\wedge \mita{l21
} \wedge (
\exists \mita{Z
} .
\exists \mita{v0
} .
\mita{-Z-;
105 \mth{>
}\mth{>
}\mth{>
} g(Z);
}_
{\mita{v0
}})
\wedge \mita{l2
})
109 ) \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l8
} =
\exists \mita{E
}\\
\mbox{} .
\exists \mita{v0
} .
\mita{-f-(-
3-, -E-)-;
110 \mth{>
}\mth{>
}\mth{>
} f(
3,
3, E);
}_
{\mita{v0
}} \,
\mita{\sf{in
}} \, (
\mita{l8
} \wedge \mita{l32
})
\vee (
\mita{\sf{let
}} \,
\mita{l19
} =
\neg \mita{l8
}\\
\mbox{} \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l4
} =
\exists \mita{E
} .
\exists \mita{v0
} .
\mita{-f-(-E-, -
4-)-;
111 \mth{>
}\mth{>
}\mth{>
} f(E,
4,
4);
}_
{\mita{v0
}} \,
\mita{\sf{in
}} \, (
\mita{l19
} \wedge \mita{l4
}\\
\mbox{} \wedge \mita{l32
})
\vee ((
\neg \mita{l4
})
\wedge \mita{l19
} \wedge (
\exists \mita{E
} .
\exists \mita{v0
} .
\mita{-E-;
112 \mth{>
}\mth{>
}\mth{>
} g(E);
}_
{\mita{v0
}})
\wedge \mita{l32
})
120 \begin{quote
}\begin{verbatim
}
130 \end{verbatim
}\end{quote
}
133 \exists \mita{hostptr
} . ((
\exists \mita{buffer
} .
\exists \mita{v0
} .
\mita{p(
135 char buffer)
}_
{\mita{v0
}})\\
\mbox{} \wedge (
\AX(
\exists \mita{p0
} . (
\mita{\sf{let
}} \,
\mita{l0
} =
\msf{Paren
}(p0) \,
\mita{\sf{in
}} \,
\mita{{\ttlb}
136 } \wedge \mita{l0
} \wedge (
\AX((
\exists \mita{v0
} .
\mita{-int -hostptr-;
}_
{\mita{v0
}})\\
\mbox{} \wedge (
\AX(
\mita{
137 {\ttrb}} \wedge \mita{l0
}))))
141 \begin{quote
}\begin{verbatim
}
147 -... WHEN != -h-(-X-)
149 \end{verbatim
}\end{quote
}
152 \exists \mita{X
} . (
\mita{\sf{let
}} \,
\mita{l1
} =
\mita{f(X);
} \,
\mita{\sf{in
}} \,
\mita{l1
} \wedge (
\AX(
\mita{\sf{let
}} \,
\mita{l0
} =
\exists \mita{Y
} .
\mita{g(Y);
} \,
\mita{\sf{in
}} \,
\A[((
\exists \mita{v0
} .
\mita{-
\_S0}_
{\mita{v0
}})
\wedge (
\neg (
\exists \mita{v0
}\\
\mbox{} .
\mita{-h-(-X-)
}_
{\mita{v0
}}))
\wedge (
\neg (
\mita{l0
} \vee \mita{l1
})))
\U (
\mita{l0
} \vee \msf{After
} \vee \msf{ErrorExit
})
]
158 \begin{quote
}\begin{verbatim
}
166 \end{verbatim
}\end{quote
}
169 \mita{\sf{let
}} \,
\mita{l1
} =
\exists \mita{X
} .
\mita{f(X);
} \,
\mita{\sf{in
}} \,
\mita{l1
} \wedge (
\AX(
\mita{\sf{let
}} \,
\mita{l2
} =
\exists \mita{Y
} .
\mita{g(Y);
} \,
\mita{\sf{in
}} \,
\A[((
\exists \mita{v0
} .
\mita{-
\_S0}_
{\mita{v0
}})
\wedge (
\neg (
\mita{l2
}\\
\mbox{} \vee \mita{l1
})))
\U (
\mita{l2
} \vee \msf{After
} \vee \msf{ErrorExit
})
]
175 \begin{quote
}\begin{verbatim
}
186 \end{verbatim
}\end{quote
}
189 \exists \mita{X
} . (
\mita{f(X);
} \wedge (
\AX(
\exists \mita{Y
} . (
\mita{g(Y);
} \wedge (
\AX(
\mita{h(X);
} \wedge (
\AX(
\mita{f(Y);
} \wedge (
\AX(
\mita{g(X);
} \wedge (
\AX(
\mita{h(Y);
}))))))))))))
192 \begin{quote
}\begin{verbatim
}
201 \end{verbatim
}\end{quote
}
204 \exists \mita{X
} . (
\mita{\sf{let
}} \,
\mita{l0
} =
\mita{f(X);
} \,
\mita{\sf{in
}} \,
\mita{l0
} \wedge (
\AX(
\mita{\sf{let
}} \,
\mita{l1
} =
\mita{g(X);
} \,
\mita{\sf{in
}} \,
\A[\neg (
\mita{l1
} \vee \mita{l0
})
\U ((
\mita{l1
} \wedge (
\AX(
\mita{h(X);
})))\\
\mbox{} \vee \msf{After
} \vee \msf{ErrorExit
})
]
210 \begin{quote
}\begin{verbatim
}
221 \end{verbatim
}\end{quote
}
224 \exists \mita{X
} . (
\mita{\sf{let
}} \,
\mita{l0
} =
\msf{FalseBranch
} \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l1
} =
\msf{After
} \,
\mita{\sf{in
}} \,
\mita{if (X)
} \wedge (
\AX(
\mita{\sf{let
}} \,
\mita{l15
} =
\AX(
\exists \mita{p0
}\\
\mbox{} . (
\mita{\sf{let
}} \,
\mita{l7
} =
\msf{Paren
}(p0) \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l14
} =
\mita{{\ttlb}
225 } \wedge \mita{l7
} \,
\mita{\sf{in
}} \,
\mita{l14
} \wedge (
\AX(
\mita{\sf{let
}} \,
\mita{l13
} =
\mita{
226 {\ttrb}} \wedge \mita{l7
}\\
\mbox{} \,
\mita{\sf{in
}} \,
\A[\neg (
\mita{l13
} \vee \mita{l14
})
\U (
\mita{l13
} \vee \mita{l1
} \vee \msf{ErrorExit
})
]
230 )) \,
\mita{\sf{in
}} \, (
\msf{TrueBranch
} \wedge \mita{l15
})
\vee (
\mita{l0
}\\
\mbox{} \wedge \mita{l15
})
\vee (
\mita{l1
} \wedge (
\AX(
\mita{f(X);
})))
231 ))
\wedge (
\EX\mita{l0
})
\wedge (
\EX\mita{l1
})
236 \begin{quote
}\begin{verbatim
}
245 \end{verbatim
}\end{quote
}
248 \exists \mita{X
} . (
\mita{\sf{let
}} \,
\mita{l0
} =
\msf{After
} \,
\mita{\sf{in
}} \,
\mita{if (X)
} \wedge (
\AX((
\msf{TrueBranch
} \wedge (
\AX(
\exists \mita{p0
} . (
\mita{\sf{let
}} \,
\mita{l2
} =
\msf{Paren
}(p0)\\
\mbox{} \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l4
} =
\mita{{\ttlb}
249 } \wedge \mita{l2
} \,
\mita{\sf{in
}} \,
\mita{l4
} \wedge (
\AX(
\mita{\sf{let
}} \,
\mita{l3
} =
\mita{
250 {\ttrb}} \wedge \mita{l2
} \,
\mita{\sf{in
}} \,
\A[\neg (
\mita{l3
} \vee \mita{l4
})
\U (
\mita{l3
} \vee \mita{l0
}\\
\mbox{} \vee \msf{ErrorExit
})
]
254 ))))
\vee \msf{FallThrough
} \vee (
\mita{l0
} \wedge (
\AX(
\mita{f(X);
})))))
\wedge (
\EX\mita{l0
})
258 \begin{quote
}\begin{verbatim
}
267 \end{verbatim
}\end{quote
}
270 \exists \mita{X
} . (
\mita{while (X)
} \wedge (
\mita{\sf{let
}} \,
\mita{l0
} =
\msf{After
} \,
\mita{\sf{in
}} \, (
\AX((
\msf{TrueBranch
} \rightarrow (
\AX(
\exists \mita{p0
} . (
\mita{\sf{let
}} \,
\mita{l3
} =
\msf{Paren
}(p0)\\
\mbox{} \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l5
} =
\mita{{\ttlb}
271 } \wedge \mita{l3
} \,
\mita{\sf{in
}} \,
\mita{l5
} \wedge (
\AX(
\mita{\sf{let
}} \,
\mita{l4
} =
\mita{
272 {\ttrb}} \wedge \mita{l3
} \,
\mita{\sf{in
}} \,
\A[\neg (
\mita{l4
} \vee \mita{l5
})
\U (
\mita{l4
} \vee \mita{l0
}\\
\mbox{} \vee \msf{ErrorExit
})
]
276 ))))
\wedge (
\mita{l0
} \rightarrow (
\AX(
\mita{f(X);
})))))
\wedge (
\EX\mita{l0
})
280 \begin{quote
}\begin{verbatim
}
288 \end{verbatim
}\end{quote
}
291 (
\exists \mita{X
} .
\mita{while (X)
})
\wedge (
\AX(
\msf{TrueBranch
} \rightarrow (
\AX(
\exists \mita{p0
} . (
\mita{\sf{let
}} \,
\mita{l1
} =
\msf{Paren
}(p0) \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l4
} =
\mita{{\ttlb}
292 }\\
\mbox{} \wedge \mita{l1
} \,
\mita{\sf{in
}} \,
\mita{l4
} \wedge (
\AX(
\mita{\sf{let
}} \,
\mita{l3
} =
\mita{
293 {\ttrb}} \wedge \mita{l1
} \,
\mita{\sf{in
}} \,
\A[\neg (
\mita{l3
} \vee \mita{l4
})
\U (
\mita{l3
} \vee \msf{After
} \vee \msf{ErrorExit
})
]
300 \begin{quote
}\begin{verbatim
}
310 \end{verbatim
}\end{quote
}
313 \exists \mita{p0
} . (
\mita{\sf{let
}} \,
\mita{l6
} =
\msf{Paren
}(p0) \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l9
} =
\mita{{\ttlb}
314 } \wedge \mita{l6
} \,
\mita{\sf{in
}} \,
\mita{l9
} \wedge (
\AX(
\exists \mita{Y
} . (
\mita{\sf{let
}} \,
\mita{l3
} =
\exists \mita{X
} .
\mita{f(X);
}\\
\mbox{} \,
\mita{\sf{in
}} \,
\A[((
\neg \mita{g(Y)
})
\wedge (
\neg (
\mita{l3
} \vee \mita{l9
})))
\U (
\mita{\sf{let
}} \,
\mita{l5
} =
\msf{After
} \vee \msf{ErrorExit
} \,
\mita{\sf{in
}} \, (
\mita{l3
} \wedge (
\AX(
\mita{\sf{let
}} \,
\mita{l8
} =
\mita{
315 {\ttrb}}\\
\mbox{} \wedge \mita{l6
} \,
\mita{\sf{in
}} \,
\A[((
\neg \mita{h(Y)
})
\wedge (
\neg (
\mita{l8
} \vee \mita{l3
})))
\U (
\mita{l8
} \vee \mita{l5
})
]
325 \begin{quote
}\begin{verbatim
}
335 \end{verbatim
}\end{quote
}
338 \exists \mita{X
} . (
\mita{\sf{let
}} \,
\mita{l0
} =
\mita{f(X);
} \,
\mita{\sf{in
}} \,
\mita{l0
} \wedge (
\AX\A[\neg ((
\exists \mita{Y
} .
\mita{-g-(-Y-)-;
339 \mth{>
}\mth{>
}\mth{>
} h(X, Y);
})
\vee \mita{l0
})\\
\mbox{} \U ((
\exists \mita{Y
} .
\exists \mita{v0
} .
\mita{-g-(-Y-)-;
340 \mth{>
}\mth{>
}\mth{>
} h(X, Y);
}_
{\mita{v0
}})
\vee \msf{After
} \vee \msf{ErrorExit
})
]
345 \begin{quote
}\begin{verbatim
}
356 \end{verbatim
}\end{quote
}
359 \exists \mita{Z
} . ((
\exists \mita{X
} .
\exists \mita{v0
} .
\mita{-f-(-X-)-;
360 \mth{>
}\mth{>
}\mth{>
} f(Z);
}_
{\mita{v0
}})
\wedge (
\AX(
\mita{\sf{let
}} \,
\mita{l0
} =
\exists \mita{Y
} .
\mita{g(Y);
} \,
\mita{\sf{in
}} \,
\A[((
\exists \mita{v0
}\\
\mbox{} .
\mita{-
\_S0}_
{\mita{v0
}})
\wedge (
\neg (
\mita{l0
} \vee (
\exists \mita{X
} .
\mita{-f-(-X-)-;
361 \mth{>
}\mth{>
}\mth{>
} f(Z);
}))))
\U ((
\mita{l0
} \wedge (
\AX(
\mita{h(Z);
})))\\
\mbox{} \vee \msf{After
} \vee \msf{ErrorExit
})
]
366 \begin{quote
}\begin{verbatim
}
377 \end{verbatim
}\end{quote
}
380 \exists \mita{Z
} . ((
\exists \mita{X
} .
\exists \mita{v0
} .
\mita{-f-(-X-)-;
381 \mth{>
}\mth{>
}\mth{>
} f(Z);
}_
{\mita{v0
}})
\wedge (
\AX(
\mita{\sf{let
}} \,
\mita{l0
} =
\exists \mita{Y
} .
\mita{g(Y);
} \,
\mita{\sf{in
}} \,
\A[\neg (
\mita{l0
}\\
\mbox{} \vee (
\exists \mita{X
} .
\mita{-f-(-X-)-;
382 \mth{>
}\mth{>
}\mth{>
} f(Z);
}))
\U ((
\mita{l0
} \wedge (
\AX(
\mita{h(Z);
})))
\vee \msf{After
} \vee \msf{ErrorExit
})
]
387 \begin{quote
}\begin{verbatim
}
396 \end{verbatim
}\end{quote
}
399 \mita{\sf{let
}} \,
\mita{l1
} =
\exists \mita{X
} .
\mita{f(X);
} \,
\mita{\sf{in
}} \,
\mita{l1
} \wedge (
\AX(
\mita{\sf{let
}} \,
\mita{l2
} =
\exists \mita{Y
} .
\mita{g(Y);
} \,
\mita{\sf{in
}} \,
\A[\neg (
\mita{l2
} \vee \mita{l1
})
\U ((
\mita{l2
} \wedge (
\AX(
\exists \mita{Z
}\\
\mbox{} .
\mita{h(Z);
})))
\vee \msf{After
} \vee \msf{ErrorExit
})
]
405 \begin{quote
}\begin{verbatim
}
414 \end{verbatim
}\end{quote
}
417 \mita{\sf{let
}} \,
\mita{l1
} =
\exists \mita{X
} .
\mita{f(X);
} \,
\mita{\sf{in
}} \,
\mita{l1
} \wedge (
\AX(
\exists \mita{Z
} . (
\mita{\sf{let
}} \,
\mita{l2
} =
\exists \mita{Y
} .
\mita{g(Y);
} \,
\mita{\sf{in
}} \,
\A[((
\neg \mita{h(Z)
})
\wedge (
\neg (
\mita{l2
} \vee \mita{l1
})))\\
\mbox{} \U ((
\mita{l2
} \wedge (
\AX(
\mita{h(Z);
})))
\vee \msf{After
} \vee \msf{ErrorExit
})
]
423 \begin{quote
}\begin{verbatim
}
432 \end{verbatim
}\end{quote
}
435 \mita{\sf{let
}} \,
\mita{l1
} =
\exists \mita{X
} .
\mita{f(X);
} \,
\mita{\sf{in
}} \,
\mita{l1
} \wedge (
\AX(
\mita{\sf{let
}} \,
\mita{l2
} =
\exists \mita{Y
} .
\mita{g(Y);
} \,
\mita{\sf{in
}} \,
\A[((
\neg (
\exists \mita{Q
} .
\mita{h(Q)
}))
\wedge (
\neg (
\mita{l2
}\\
\mbox{} \vee \mita{l1
})))
\U ((
\mita{l2
} \wedge (
\AX(
\exists \mita{Z
} .
\mita{h(Z);
})))
\vee \msf{After
} \vee \msf{ErrorExit
})
]
441 \begin{quote
}\begin{verbatim
}
452 \end{verbatim
}\end{quote
}
455 \exists \mita{X
} . (
\mita{\sf{let
}} \,
\mita{l0
} =
\msf{FalseBranch
} \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l1
} =
\msf{After
} \,
\mita{\sf{in
}} \,
\mita{if (X)
} \wedge (
\AX(
\mita{\sf{let
}} \,
\mita{l2
} =
\msf{Paren
}(p0)\\
\mbox{} \,
\mita{\sf{in
}} \, (
\msf{TrueBranch
} \wedge (
\AX(
\exists \mita{p0
} . (
\mita{\sf{let
}} \,
\mita{l6
} =
\mita{{\ttlb}
456 } \wedge \mita{l2
} \,
\mita{\sf{in
}} \,
\mita{l6
} \wedge (
\AX(
\mita{\sf{let
}} \,
\mita{l5
} =
\mita{
457 {\ttrb}} \wedge \mita{l2
} \,
\mita{\sf{in
}} \,
\A[\neg (
\mita{l5
}\\
\mbox{} \vee \mita{l6
})
\U (
\mita{l5
} \vee \mita{l1
} \vee \msf{ErrorExit
})
]
460 ))))
\vee (
\mita{l0
} \wedge (
\AX(
\exists \mita{p0
} . (
\mita{{\ttlb}
461 } \wedge \mita{l2
} \wedge (
\AX(
\mita{g(X);
} \wedge (
\AX(
\mita{
462 {\ttrb}}\\
\mbox{} \wedge \mita{l2
}))))))))
\vee (
\mita{l1
} \wedge (
\AX(
\exists \mita{Z
} .
\mita{h(Z);
})))
463 ))
\wedge (
\EX\mita{l0
})
\wedge (
\EX\mita{l1
})
468 \begin{quote
}\begin{verbatim
}
481 \end{verbatim
}\end{quote
}
484 \AG(
\mita{\sf{let
}} \,
\mita{l2
} =
\exists \mita{Y
} .
\exists \mita{X
} .
\mita{
489 )
} \,
\mita{\sf{in
}} \,
\mita{l2
} \vee (
\neg \mita{l2
})
493 \begin{quote
}\begin{verbatim
}
507 \end{verbatim
}\end{quote
}
510 \exists \mita{X
} . (
\mita{\sf{let
}} \,
\mita{l1
} =
\mita{r(X);
} \,
\mita{\sf{in
}} \,
\A[((
\neg \mita{l1
})
\wedge (
\mita{\sf{let
}} \,
\mita{l0
} =
\exists \mita{Y
} .
\mita{
515 )
} \,
\mita{\sf{in
}} \,
\mita{l0
} \vee (
\neg \mita{l0
})\\
\mbox{}
516 ))
\U (
\mita{l1
} \vee \msf{After
} \vee \msf{ErrorExit
})
]
521 \begin{quote
}\begin{verbatim
}
532 \end{verbatim
}\end{quote
}
535 \exists \mita{Y
} .
\exists \mita{X
} .
\mita{
543 \begin{quote
}\begin{verbatim
}
551 \end{verbatim
}\end{quote
}
554 \exists \mita{Y
} . (
\mita{m(Y);
} \wedge (
\AX(
\mita{\sf{let
}} \,
\mita{l0
} =
\mita{g(Y);
} \,
\mita{\sf{in
}} \, ((
\exists \mita{X
} .
\mita{h(X);
})
\wedge (
\AX\mita{l0
}))
\vee \mita{l0
}
558 \begin{quote
}\begin{verbatim
}
563 sht/*struct Scsi_Host_Template */.proc_info = proc_info_func;
564 \end{verbatim
}\end{quote
}
567 \exists \mita{proc
\_info\_func} .
\exists \mita{sht
} .
\mita{sht/*struct Scsi
\_Host\_Template */.proc
\_info = proc
\_info\_func;
}
570 \begin{quote
}\begin{verbatim
}
575 proc_info_func(char *buffer, char **start, off_t offset, int length,
576 int hostno, int inout)
{
578 struct Scsi_Host *hostptr;
580 hostptr = scsi_host_hn_get(hostno);
582 ?if (hostptr == NULL) ?
{
586 ?scsi_host_put(hostptr);
589 \end{verbatim
}\end{quote
}
592 \exists \mita{hostno
} . ((
\exists \mita{buffer
} .
\exists \mita{start
} .
\exists \mita{offset
} .
\exists \mita{length
} .
\exists \mita{inout
} .
\mita{proc
\_info\_func(char *buffer, char **start, off
\_t offset, int length,
593 int hostno, int inout)
})\\
\mbox{} \wedge (
\AX(
\exists \mita{p1
} . (
\mita{\sf{let
}} \,
\mita{l33
} =
\msf{Paren
}(p1) \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l5
} =
\mita{{\ttlb}
594 } \wedge \mita{l33
} \,
\mita{\sf{in
}} \,
\mita{l5
} \wedge (
\AX(
\mita{\sf{let
}} \,
\mita{l53
} =
\mita{struct Scsi
\_Host *hostptr;
}\\
\mbox{} \,
\mita{\sf{in
}} \,
\A[\neg ((
\exists \mita{hostptr
} .
\mita{l53
})
\vee \mita{l5
})
\U (
\mita{\sf{let
}} \,
\mita{l1
} =
\msf{After
} \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l6
} =
\mita{l1
} \vee \msf{ErrorExit
}\\
\mbox{} \,
\mita{\sf{in
}} \, (
\exists \mita{hostptr
} . (
\mita{l53
} \wedge (
\AX(
\mita{\sf{let
}} \,
\mita{l30
} =
\mita{hostptr = scsi
\_host\_hn\_get(hostno);
}\\
\mbox{} \,
\mita{\sf{in
}} \,
\A[\neg (
\mita{l30
} \vee \mita{l53
})
\U ((
\mita{l30
} \wedge (
\AX(
\mita{\sf{let
}} \,
\mita{l32
} =
\msf{Paren
}(p0) \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l50
} =
\mita{
595 {\ttrb}} \wedge \mita{l32
}\\
\mbox{} \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l14
} =
\mita{l50
} \vee \mita{l6
} \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l2
} =
\msf{FallThrough
} \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l29
} =
\mita{l2
} \vee \mita{l1
} \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l51
} =
\mita{{\ttlb}
596 }\\
\mbox{} \wedge \mita{l32
} \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l0
} =
\msf{TrueBranch
} \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l52
} =
\mita{if (hostptr == NULL)
} \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l20
} =
\mita{l52
}\\
\mbox{} \wedge (
\AX((
\mita{l0
} \wedge (
\AX(
\exists \mita{p0
} . (
\mita{l51
} \wedge (
\AX\AF\mita{l14
})))))
\vee \mita{l29
})) \,
\mita{\sf{in
}} \,
\A[\neg (
\mita{l20
} \vee \mita{l30
})
\U ((
\mita{\sf{let
}} \,
\mita{l8
} =
\mita{scsi
\_host\_put(hostptr);
}\\
\mbox{} \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l11
} =
\A[\neg \mita{l8
} \U \mita{l6
}]
597 \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l25
} =
\mita{l8
} \wedge (
\AX\mita{l11
}) \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l39
} =
\neg \mita{l25
} \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l13
} = (
\mita{\sf{let
}} \,
\mita{l48
} = (
\mita{\sf{let
}} \,
\mita{l4
} =
\mita{
598 {\ttrb}}\\
\mbox{} \wedge \mita{l33
} \,
\mita{\sf{in
}} \,
\A[\neg (
\mita{l4
} \vee \mita{l8
})
\U (
\mita{l4
} \vee \mita{l6
})
]
600 ) \,
\mita{\sf{in
}} \, (
\mita{l8
} \wedge (
\AX\mita{l48
}))
\vee (
\mita{l39
} \wedge \mita{l48
})
601 )
\vee \mita{l6
} \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l36
} =
\neg (
\mita{l8
}\\
\mbox{} \vee \mita{l20
}) \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l34
} =
\mita{l0
} \wedge (
\AX(
\exists \mita{p0
} . (
\mita{l51
} \wedge (
\AX\A[\neg (
\mita{l50
} \vee \mita{l51
})
\U \mita{l14
}]
602 )))) \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l16
} =
\EX\mita{l1
}\\
\mbox{} \,
\mita{\sf{in
}} \, (
\mita{l52
} \wedge (
\AX(
\mita{l34
} \vee \mita{l2
} \vee (
\mita{l1
} \wedge (
\AX\A[\mita{l36
} \U \mita{l13
}]
603 ))))
\wedge \mita{l16
})
\vee ((
\neg (
\mita{l52
} \wedge (
\AX(
\mita{l34
}\\
\mbox{} \vee \mita{l2
} \vee (
\mita{l1
} \wedge (
\AX\A[\mita{l36
} \U (
\mita{l25
} \vee (
\mita{l39
} \wedge \mita{l11
})
\vee \mita{l6
})
]
604 ))))
\wedge \mita{l16
}))
\wedge (
\A[\neg (
\mita{l8
} \vee (
\mita{l52
} \wedge (
\AX(
\mita{l34
}\\
\mbox{} \vee \mita{l29
}))))
\U \mita{l13
}]
634 \begin{quote
}\begin{verbatim
}
639 proc_info_func(...)
{
649 \end{verbatim
}\end{quote
}
652 \mita{proc
\_info\_func(...)
} \wedge (
\AX(
\exists \mita{p0
} . (
\mita{\sf{let
}} \,
\mita{l3
} =
\msf{Paren
}(p0) \,
\mita{\sf{in
}} \, (
\mita{\sf{let
}} \,
\mita{l6
} =
\mita{{\ttlb}
653 } \wedge \mita{l3
}\\
\mbox{} \,
\mita{\sf{in
}} \,
\mita{l6
} \wedge (
\AX(
\mita{\sf{let
}} \,
\mita{l5
} =
\mita{
654 {\ttrb}} \wedge \mita{l3
} \,
\mita{\sf{in
}} \,
\A[((
\neg (
\mita{l5
} \vee \mita{l6
}))
\wedge (
\mita{\sf{let
}} \,
\mita{l2
} =
\exists \mita{E
} .
\mita{
656 E-
\mth{>
}host
\_no == hostno
659 )
}\\
\mbox{} \,
\mita{\sf{in
}} \,
\mita{l2
} \vee (
\neg \mita{l2
})
660 ))
\U (
\mita{l5
} \vee \msf{After
} \vee \msf{ErrorExit
})
]