Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Iris
Iris
Commits
511f26a4
Commit
511f26a4
authored
Jan 31, 2016
by
Ralf Jung
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add Dave's proof macros
parent
2c1c1ab8
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
289 additions
and
369 deletions
+289
-369
docs/iris/locallabel.sty
docs/iris/locallabel.sty
+1
-0
docs/iris/model.tex
docs/iris/model.tex
+36
-36
docs/iris/pfsteps.sty
docs/iris/pfsteps.sty
+0
-1
docs/iris/pftools.sty
docs/iris/pftools.sty
+1
-0
docs/locallabel.sty
docs/locallabel.sty
+118
-0
docs/pfsteps.sty
docs/pfsteps.sty
+0
-279
docs/pftools.sty
docs/pftools.sty
+130
-0
docs/setup.tex
docs/setup.tex
+3
-53
No files found.
docs/iris/locallabel.sty
0 → 120000
View file @
511f26a4
../locallabel.sty
\ No newline at end of file
docs/iris/model.tex
View file @
511f26a4
...
@@ -82,7 +82,7 @@ action on morphisms).
...
@@ -82,7 +82,7 @@ action on morphisms).
\begin
{
array
}
[
t
]
{
rcl
}
\begin
{
array
}
[
t
]
{
rcl
}
% \protStatus &::=& \enabled \ALT \disabled \\[0.4em]
% \protStatus &::=& \enabled \ALT \disabled \\[0.4em]
\textdom
{
Res
}
&
\eqdef
&
\textdom
{
Res
}
&
\eqdef
&
\{\,
\r
e
s
=
(
\pres
,
\ghostRes
)
\mid
\{\,
\rs
=
(
\pres
,
\ghostRes
)
\mid
\pres
\in
\textdom
{
State
}
\uplus
\{\munit\}
\land
\ghostRes
\in
\mcarp
{
\monoid
}
\,\}
\\
[
0
.
5
em
]
\pres
\in
\textdom
{
State
}
\uplus
\{\munit\}
\land
\ghostRes
\in
\mcarp
{
\monoid
}
\,\}
\\
[
0
.
5
em
]
(
\pres
,
\ghostRes
)
\rsplit
(
\pres
,
\ghostRes
)
\rsplit
(
\pres
',
\ghostRes
'
)
&
\eqdef
&
(
\pres
',
\ghostRes
'
)
&
\eqdef
&
...
@@ -92,17 +92,17 @@ action on morphisms).
...
@@ -92,17 +92,17 @@ action on morphisms).
\end
{
cases
}
\end
{
cases
}
\\
[
0
.
5
em
]
\\
[
0
.
5
em
]
%
%
\r
e
s
\leq
\r
e
s
'
&
\eqdef
&
\rs
\leq
\rs
'
&
\eqdef
&
\Exists
\r
e
s
''.
\r
e
s
'
=
\r
e
s
\rsplit
\r
e
s
''
\\
[
1
em
]
\Exists
\rs
''.
\rs
'
=
\rs
\rsplit
\rs
''
\\
[
1
em
]
%
%
\UPred
(
\textdom
{
Res
}
)
&
\eqdef
&
\UPred
(
\textdom
{
Res
}
)
&
\eqdef
&
\{\,
p
\subseteq
\mathbb
{
N
}
\times
\textdom
{
Res
}
\mid
\{\,
p
\subseteq
\mathbb
{
N
}
\times
\textdom
{
Res
}
\mid
\All
(
k,
\r
e
s
)
\in
p.
\All
(
k,
\rs
)
\in
p.
\All
j
\leq
k.
\All
j
\leq
k.
\All
\r
e
s
'
\geq
\r
e
s
.
\All
\rs
'
\geq
\rs
.
(
j,
\r
e
s
'
)
\in
p
\,\}\\
[
0
.
5
em
]
(
j,
\rs
'
)
\in
p
\,\}\\
[
0
.
5
em
]
\restr
{
p
}{
k
}
&
\eqdef
&
\restr
{
p
}{
k
}
&
\eqdef
&
\{\,
(
j,
\r
e
s
)
\in
p
\mid
j < k
\,\}\\
[
0
.
5
em
]
\{\,
(
j,
\rs
)
\in
p
\mid
j < k
\,\}\\
[
0
.
5
em
]
p
\nequiv
{
n
}
q
&
\eqdef
&
\restr
{
p
}{
n
}
=
\restr
{
q
}{
n
}
\\
[
1
em
]
p
\nequiv
{
n
}
q
&
\eqdef
&
\restr
{
p
}{
n
}
=
\restr
{
q
}{
n
}
\\
[
1
em
]
%
%
\textdom
{
PreProp
}
&
\cong
&
\textdom
{
PreProp
}
&
\cong
&
...
@@ -187,7 +187,7 @@ $\rho\nequiv{n} \rho' \iff n=0 \lor \bigl(\dom(\rho)=\dom(\rho') \land
...
@@ -187,7 +187,7 @@ $\rho\nequiv{n} \rho' \iff n=0 \lor \bigl(\dom(\rho)=\dom(\rho') \land
%\typedsection{Validity}{valid : \pset{\textdom{Prop}} \in Sets}
%\typedsection{Validity}{valid : \pset{\textdom{Prop}} \in Sets}
%
%
%\begin{align*}
%\begin{align*}
%valid(p) &\iff \All n \in \mathbb{N}. \All \r
e
s \in \textdom{Res}. \All W \in \textdom{World}. (n, \r
e
s) \in p(W)
%valid(p) &\iff \All n \in \mathbb{N}. \All \rs \in \textdom{Res}. \All W \in \textdom{World}. (n, \rs) \in p(W)
%\end{align*}
%\end{align*}
\typedsection
{
Later modality
}{
\later
:
\textdom
{
Prop
}
\to
\textdom
{
Prop
}
\in
{
\cal
U
}}
\typedsection
{
Later modality
}{
\later
:
\textdom
{
Prop
}
\to
\textdom
{
Prop
}
\in
{
\cal
U
}}
...
@@ -213,7 +213,7 @@ $\rho\nequiv{n} \rho' \iff n=0 \lor \bigl(\dom(\rho)=\dom(\rho') \land
...
@@ -213,7 +213,7 @@ $\rho\nequiv{n} \rho' \iff n=0 \lor \bigl(\dom(\rho)=\dom(\rho') \land
%\begin{align*}
%\begin{align*}
%&\forall p, q \in \textdom{Prop}.~\\
%&\forall p, q \in \textdom{Prop}.~\\
%&\qquad
%&\qquad
% (\forall n \in \mathbb{N}.~\forall \r
e
s \in \textdom{Res}.~\forall W \in \textdom{World}.~(n, \r
e
s) \in p(W) \Rightarrow (n, \r
e
s) \in q(W)) \Leftrightarrow~valid(\always{(p \Rightarrow q)})
% (\forall n \in \mathbb{N}.~\forall \rs \in \textdom{Res}.~\forall W \in \textdom{World}.~(n, \rs) \in p(W) \Rightarrow (n, \rs) \in q(W)) \Leftrightarrow~valid(\always{(p \Rightarrow q)})
%\end{align*}
%\end{align*}
%\end{lem}
%\end{lem}
...
@@ -232,11 +232,11 @@ $\rho\nequiv{n} \rho' \iff n=0 \lor \bigl(\dom(\rho)=\dom(\rho') \land
...
@@ -232,11 +232,11 @@ $\rho\nequiv{n} \rho' \iff n=0 \lor \bigl(\dom(\rho)=\dom(\rho') \land
\textdom
{
World
}
\to
\psetdown
{
\mathbb
{
N
}}
\in
{
\cal
U
}}
\textdom
{
World
}
\to
\psetdown
{
\mathbb
{
N
}}
\in
{
\cal
U
}}
\ralf
{
Make this Dave-compatible: Explicitly compose all the things in
$
s
$}
\ralf
{
Make this Dave-compatible: Explicitly compose all the things in
$
s
$}
\begin{align*}
\begin{align*}
\fullSat
{
\state
}{
\mask
}{
\r
e
s
}{
W
}
&
=
\fullSat
{
\state
}{
\mask
}{
\rs
}{
W
}
&
=
\begin{aligned}
[t]
\begin{aligned}
[t]
\{\,
n + 1
\in
\mathbb
{
N
}
\mid
&
\Exists
\r
e
sB
:
\mathbb
{
N
}
\fpfn
\textdom
{
Res
}
. (
\r
e
s
\rsplit
\r
e
sB
).
\pres
=
\state
\land
{}
\\
\{\,
n + 1
\in
\mathbb
{
N
}
\mid
&
\Exists
\rsB
:
\mathbb
{
N
}
\fpfn
\textdom
{
Res
}
. (
\rs
\rsplit
\rsB
).
\pres
=
\state
\land
{}
\\
&
\quad
\All
\iota
\in
\dom
(W).
\iota
\in
\dom
(W)
\leftrightarrow
\iota
\in
\dom
(
\r
e
sB
)
\land
{}
\\
&
\quad
\All
\iota
\in
\dom
(W).
\iota
\in
\dom
(W)
\leftrightarrow
\iota
\in
\dom
(
\rsB
)
\land
{}
\\
&
\quad\quad
\iota
\in
\mask
\ra
(n,
\r
e
sB
(
\iota
))
\in
\wIso
^{
-1
}
(W(
\iota
))(W)
\,\}
\cup
\{
0
\}
&
\quad\quad
\iota
\in
\mask
\ra
(n,
\rsB
(
\iota
))
\in
\wIso
^{
-1
}
(W(
\iota
))(W)
\,\}
\cup
\{
0
\}
\end{aligned}
\end{aligned}
\end{align*}
\end{align*}
\begin{lem}
\label
{
lem:fullsat-nonexpansive
}
\begin{lem}
\label
{
lem:fullsat-nonexpansive
}
...
@@ -248,9 +248,9 @@ $\rho\nequiv{n} \rho' \iff n=0 \lor \bigl(\dom(\rho)=\dom(\rho') \land
...
@@ -248,9 +248,9 @@ $\rho\nequiv{n} \rho' \iff n=0 \lor \bigl(\dom(\rho)=\dom(\rho') \land
\MoveEqLeft
\MoveEqLeft
\All
\state
\in
\Delta
(
\textdom
{
State
}
).
\All
\state
\in
\Delta
(
\textdom
{
State
}
).
\All
\mask
_
1,
\mask
_
2
\in
\Delta
(
\pset
{
\mathbb
{
N
}}
).
\All
\mask
_
1,
\mask
_
2
\in
\Delta
(
\pset
{
\mathbb
{
N
}}
).
\All
\r
e
s
,
\r
e
sB
\in
\Delta
(
\textdom
{
Res
}
).
\All
\rs
,
\rsB
\in
\Delta
(
\textdom
{
Res
}
).
\All
W
\in
\textdom
{
World
}
.
\\
&
\All
W
\in
\textdom
{
World
}
.
\\
&
\mask
_
1
\subseteq
\mask
_
2
\implies
(
\fullSat
{
\state
}{
\mask
_
2
}{
\r
e
s
}{
W
}
)
\subseteq
(
\fullSat
{
\state
}{
\mask
_
1
}{
\r
e
s
}{
W
}
)
\mask
_
1
\subseteq
\mask
_
2
\implies
(
\fullSat
{
\state
}{
\mask
_
2
}{
\rs
}{
W
}
)
\subseteq
(
\fullSat
{
\state
}{
\mask
_
1
}{
\rs
}{
W
}
)
\end{align*}
\end{align*}
\end{lem}
\end{lem}
...
@@ -293,11 +293,11 @@ $\rho\nequiv{n} \rho' \iff n=0 \lor \bigl(\dom(\rho)=\dom(\rho') \land
...
@@ -293,11 +293,11 @@ $\rho\nequiv{n} \rho' \iff n=0 \lor \bigl(\dom(\rho)=\dom(\rho') \land
\begin{align*}
\begin{align*}
\mathit
{
vs
}_{
\mask
_
1
}^{
\mask
_
2
}
(q)
&
=
\Lam
W.
\mathit
{
vs
}_{
\mask
_
1
}^{
\mask
_
2
}
(q)
&
=
\Lam
W.
\begin{aligned}
[t]
\begin{aligned}
[t]
\{\,
(n,
\r
e
s
)
&
\mid
\All
W
_
F
\geq
W.
\All
\r
e
s
_
F,
\mask
_
F,
\state
.
\All
k
\leq
n.
\\
\{\,
(n,
\rs
)
&
\mid
\All
W
_
F
\geq
W.
\All
\rs
_
F,
\mask
_
F,
\state
.
\All
k
\leq
n.
\\
&
\qquad
&
\qquad
k
\in
(
\fullSat
{
\state
}{
\mask
_
1
\cup
\mask
_
F
}{
\r
e
s
\rsplit
\r
e
s
_
F
}{
W
_
F
}
)
\land
k > 0
\land
\mask
_
F
\sep
(
\mask
_
1
\cup
\mask
_
2)
\implies
{}
\\
k
\in
(
\fullSat
{
\state
}{
\mask
_
1
\cup
\mask
_
F
}{
\rs
\rsplit
\rs
_
F
}{
W
_
F
}
)
\land
k > 0
\land
\mask
_
F
\sep
(
\mask
_
1
\cup
\mask
_
2)
\implies
{}
\\
&
\qquad
&
\qquad
\Exists
W'
\geq
W
_
F.
\Exists
\r
e
s
'. k
\in
(
\fullSat
{
\state
}{
\mask
_
2
\cup
\mask
_
F
}{
\r
e
s
'
\rsplit
\r
e
s
_
F
}{
W'
}
)
\land
(k,
\r
e
s
')
\in
q(W')
\Exists
W'
\geq
W
_
F.
\Exists
\rs
'. k
\in
(
\fullSat
{
\state
}{
\mask
_
2
\cup
\mask
_
F
}{
\rs
'
\rsplit
\rs
_
F
}{
W'
}
)
\land
(k,
\rs
')
\in
q(W')
\,\}
\,\}
\end{aligned}
\end{aligned}
\end{align*}
\end{align*}
...
@@ -338,10 +338,10 @@ $\rho\nequiv{n} \rho' \iff n=0 \lor \bigl(\dom(\rho)=\dom(\rho') \land
...
@@ -338,10 +338,10 @@ $\rho\nequiv{n} \rho' \iff n=0 \lor \bigl(\dom(\rho)=\dom(\rho') \land
% \All \iota \in \mathbb{N}.
% \All \iota \in \mathbb{N}.
% \All p \in \textdom{Prop}.
% \All p \in \textdom{Prop}.
% \All W \in \textdom{World}.
% \All W \in \textdom{World}.
% \All \r
e
s \in \textdom{Res}.
% \All \rs \in \textdom{Res}.
% \All n \in \mathbb{N}. \\
% \All n \in \mathbb{N}. \\
%&
%&
% (n, \r
e
s) \in inv(\iota, p)(W) \implies (n, \r
e
s) \in vs_{\{ \iota \}}^{\emptyset}(\later p)(W)
% (n, \rs) \in inv(\iota, p)(W) \implies (n, \rs) \in vs_{\{ \iota \}}^{\emptyset}(\later p)(W)
%\end{align*}
%\end{align*}
%\end{lem}
%\end{lem}
...
@@ -352,10 +352,10 @@ $\rho\nequiv{n} \rho' \iff n=0 \lor \bigl(\dom(\rho)=\dom(\rho') \land
...
@@ -352,10 +352,10 @@ $\rho\nequiv{n} \rho' \iff n=0 \lor \bigl(\dom(\rho)=\dom(\rho') \land
% \forall \iota \in \mathbb{N}.~
% \forall \iota \in \mathbb{N}.~
% \forall p \in \textdom{Prop}.~
% \forall p \in \textdom{Prop}.~
% \forall W \in \textdom{World}.~
% \forall W \in \textdom{World}.~
% \forall \r
e
s \in \textdom{Res}.~
% \forall \rs \in \textdom{Res}.~
% \forall n \in \mathbb{N}.~\\
% \forall n \in \mathbb{N}.~\\
%&\qquad
%&\qquad
% (n, \r
e
s) \in (inv(\iota, p) * \later p)(W) \Rightarrow (n, \r
e
s) \in vs^{\{ \iota \}}_{\emptyset}(\top)(W)
% (n, \rs) \in (inv(\iota, p) * \later p)(W) \Rightarrow (n, \rs) \in vs^{\{ \iota \}}_{\emptyset}(\top)(W)
%\end{align*}
%\end{align*}
%\end{lem}
%\end{lem}
...
@@ -392,22 +392,22 @@ $\rho\nequiv{n} \rho' \iff n=0 \lor \bigl(\dom(\rho)=\dom(\rho') \land
...
@@ -392,22 +392,22 @@ $\rho\nequiv{n} \rho' \iff n=0 \lor \bigl(\dom(\rho)=\dom(\rho') \land
\begin{align*}
\begin{align*}
\mathit
{
wp
}_
\mask
(
\expr
, q)
&
\eqdef
\Lam
W.
\mathit
{
wp
}_
\mask
(
\expr
, q)
&
\eqdef
\Lam
W.
\begin{aligned}
[t]
\begin{aligned}
[t]
\{\,
(n,
\r
e
s
)
&
\mid
\All
W
_
F
\geq
W; k
\leq
n;
\r
e
s
_
F;
\state
;
\mask
_
F
\sep
\mask
. k > 0
\land
k
\in
(
\fullSat
{
\state
}{
\mask
\cup
\mask
_
F
}{
\r
e
s
\rsplit
\r
e
s
_
F
}{
W
_
F
}
)
\implies
{}
\\
\{\,
(n,
\rs
)
&
\mid
\All
W
_
F
\geq
W; k
\leq
n;
\rs
_
F;
\state
;
\mask
_
F
\sep
\mask
. k > 0
\land
k
\in
(
\fullSat
{
\state
}{
\mask
\cup
\mask
_
F
}{
\rs
\rsplit
\rs
_
F
}{
W
_
F
}
)
\implies
{}
\\
&
\qquad
&
\qquad
(
\expr
\in
\textdom
{
Val
}
\implies
\Exists
W'
\geq
W
_
F.
\Exists
\r
e
s
'.
\\
(
\expr
\in
\textdom
{
Val
}
\implies
\Exists
W'
\geq
W
_
F.
\Exists
\rs
'.
\\
&
\qquad\qquad
&
\qquad\qquad
k
\in
(
\fullSat
{
\state
}{
\mask
\cup
\mask
_
F
}{
\r
e
s
'
\rsplit
\r
e
s
_
F
}{
W'
}
)
\land
(k,
\r
e
s
')
\in
q(
\expr
)(W'))~
\land
\\
k
\in
(
\fullSat
{
\state
}{
\mask
\cup
\mask
_
F
}{
\rs
'
\rsplit
\rs
_
F
}{
W'
}
)
\land
(k,
\rs
')
\in
q(
\expr
)(W'))~
\land
\\
&
\qquad
&
\qquad
(
\All\ectx
,
\expr
_
0,
\expr
'
_
0,
\state
'.
\expr
=
\ectx
[\expr_0]
\land
\cfg
{
\state
}{
\expr
_
0
}
\step
\cfg
{
\state
'
}{
\expr
'
_
0
}
\implies
\Exists
W'
\geq
W
_
F.
\Exists
\r
e
s
'.
\\
(
\All\ectx
,
\expr
_
0,
\expr
'
_
0,
\state
'.
\expr
=
\ectx
[\expr_0]
\land
\cfg
{
\state
}{
\expr
_
0
}
\step
\cfg
{
\state
'
}{
\expr
'
_
0
}
\implies
\Exists
W'
\geq
W
_
F.
\Exists
\rs
'.
\\
&
\qquad\qquad
&
\qquad\qquad
k - 1
\in
(
\fullSat
{
\state
'
}{
\mask
\cup
\mask
_
F
}{
\r
e
s
'
\rsplit
\r
e
s
_
F
}{
W'
}
)
\land
(k-1,
\r
e
s
')
\in
wp
_
\mask
(
\ectx
[\expr_0']
, q)(W'))~
\land
\\
k - 1
\in
(
\fullSat
{
\state
'
}{
\mask
\cup
\mask
_
F
}{
\rs
'
\rsplit
\rs
_
F
}{
W'
}
)
\land
(k-1,
\rs
')
\in
wp
_
\mask
(
\ectx
[\expr_0']
, q)(W'))~
\land
\\
&
\qquad
&
\qquad
(
\All\ectx
,
\expr
'.
\expr
=
\ectx
[\fork{\expr'}]
\implies
\Exists
W'
\geq
W
_
F.
\Exists
\r
e
s
',
\r
e
s
_
1',
\r
e
s
_
2'.
\\
(
\All\ectx
,
\expr
'.
\expr
=
\ectx
[\fork{\expr'}]
\implies
\Exists
W'
\geq
W
_
F.
\Exists
\rs
',
\rs
_
1',
\rs
_
2'.
\\
&
\qquad\qquad
&
\qquad\qquad
k - 1
\in
(
\fullSat
{
\state
}{
\mask
\cup
\mask
_
F
}{
\r
e
s
'
\rsplit
\r
e
s
_
F
}{
W'
}
)
\land
\r
e
s
' =
\r
e
s
_
1'
\rsplit
\r
e
s
_
2'~
\land
\\
k - 1
\in
(
\fullSat
{
\state
}{
\mask
\cup
\mask
_
F
}{
\rs
'
\rsplit
\rs
_
F
}{
W'
}
)
\land
\rs
' =
\rs
_
1'
\rsplit
\rs
_
2'~
\land
\\
&
\qquad\qquad
&
\qquad\qquad
(k-1,
\r
e
s
_
1')
\in
\mathit
{
wp
}_
\mask
(
\ectx
[\textsf{fRet}]
, q)(W')
\land
(k-1,
\rs
_
1')
\in
\mathit
{
wp
}_
\mask
(
\ectx
[\textsf{fRet}]
, q)(W')
\land
(k-1,
\r
e
s
_
2')
\in
\mathit
{
wp
}_
\top
(
\expr
',
\Lam\any
.
\top
)(W'))
(k-1,
\rs
_
2')
\in
\mathit
{
wp
}_
\top
(
\expr
',
\Lam\any
.
\top
)(W'))
\,\}
\,\}
\end{aligned}
\end{aligned}
\end{align*}
\end{align*}
...
@@ -491,9 +491,9 @@ $\rho\nequiv{n} \rho' \iff n=0 \lor \bigl(\dom(\rho)=\dom(\rho') \land
...
@@ -491,9 +491,9 @@ $\rho\nequiv{n} \rho' \iff n=0 \lor \bigl(\dom(\rho)=\dom(\rho') \land
\semTerm
{
\vctx
\proves
\knowInv
{
\iname
}{
\prop
}
:
\Prop
}_
\gamma
&
=
\semTerm
{
\vctx
\proves
\knowInv
{
\iname
}{
\prop
}
:
\Prop
}_
\gamma
&
=
inv(
\semTerm
{
\vctx
\proves
\iname
:
\textsort
{
InvName
}}_
\gamma
,
\semTerm
{
\vctx
\proves
\prop
:
\Prop
}_
\gamma
)
\\
inv(
\semTerm
{
\vctx
\proves
\iname
:
\textsort
{
InvName
}}_
\gamma
,
\semTerm
{
\vctx
\proves
\prop
:
\Prop
}_
\gamma
)
\\
\semTerm
{
\vctx
\proves
\ownGGhost
{
\melt
}
:
\Prop
}_
\gamma
&
=
\semTerm
{
\vctx
\proves
\ownGGhost
{
\melt
}
:
\Prop
}_
\gamma
&
=
\Lam
W.
\{\,
(n,
\r
e
s
)
\mid
\r
e
s
.
\ghostRes
\geq
\semTerm
{
\vctx
\proves
\melt
:
\textsort
{
Monoid
}}_
\gamma
\,\}
\\
\Lam
W.
\{\,
(n,
\rs
)
\mid
\rs
.
\ghostRes
\geq
\semTerm
{
\vctx
\proves
\melt
:
\textsort
{
Monoid
}}_
\gamma
\,\}
\\
\semTerm
{
\vctx
\proves
\ownPhys
{
\state
}
:
\Prop
}_
\gamma
&
=
\semTerm
{
\vctx
\proves
\ownPhys
{
\state
}
:
\Prop
}_
\gamma
&
=
\Lam
W.
\{\,
(n,
\r
e
s
)
\mid
\r
e
s
.
\pres
=
\semTerm
{
\vctx
\proves
\state
:
\textsort
{
State
}}_
\gamma
\,\}
\Lam
W.
\{\,
(n,
\rs
)
\mid
\rs
.
\pres
=
\semTerm
{
\vctx
\proves
\state
:
\textsort
{
State
}}_
\gamma
\,\}
\end{align*}
\end{align*}
%
%
\begin{align*}
\begin{align*}
...
@@ -513,10 +513,10 @@ $\rho\nequiv{n} \rho' \iff n=0 \lor \bigl(\dom(\rho)=\dom(\rho') \land
...
@@ -513,10 +513,10 @@ $\rho\nequiv{n} \rho' \iff n=0 \lor \bigl(\dom(\rho)=\dom(\rho') \land
\MoveEqLeft
\MoveEqLeft
\forall
n
\in
\mathbb
{
N
}
.
\;
\forall
n
\in
\mathbb
{
N
}
.
\;
\forall
W
\in
\textdom
{
World
}
.
\;
\forall
W
\in
\textdom
{
World
}
.
\;
\forall
\r
e
s
\in
\textdom
{
Res
}
.
\;
\forall
\rs
\in
\textdom
{
Res
}
.
\;
\forall
\gamma
\in
\semSort
{
\vctx
}
,
\;
\forall
\gamma
\in
\semSort
{
\vctx
}
,
\;
\\
&
\\
&
\bigl
(
\All
\propB
\in
\pfctx
.
(
n,
\r
e
s
)
\in
\semTerm
{
\vctx
\proves
\propB
:
\Prop
}_
\gamma
(
W
)
\bigr
)
\bigl
(
\All
\propB
\in
\pfctx
.
(
n,
\rs
)
\in
\semTerm
{
\vctx
\proves
\propB
:
\Prop
}_
\gamma
(
W
)
\bigr
)
\implies
(
n,
\r
e
s
)
\in
\semTerm
{
\vctx
\proves
\prop
:
\Prop
}_
\gamma
(
W
)
\implies
(
n,
\rs
)
\in
\semTerm
{
\vctx
\proves
\prop
:
\Prop
}_
\gamma
(
W
)
\end
{
aligned
}
\end
{
aligned
}
\]
\]
docs/iris/pfsteps.sty
deleted
120000 → 0
View file @
2c1c1ab8
../pfsteps.sty
\ No newline at end of file
docs/iris/pftools.sty
0 → 120000
View file @
511f26a4
../pftools.sty
\ No newline at end of file
docs/locallabel.sty
0 → 100644
View file @
511f26a4
% Locallabel
%
% Copyright (C) 2001, 2002, 2003 Didier Rmy
%
% Author : Didier Remy
% Version : 1.1.1
% Bug Reports : to author
% Web Site : http://pauillac.inria.fr/~remy/latex/
%
% Locallabel is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 2, or (at your option)
% any later version.
%
% Locallabel is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details
% (http://pauillac.inria.fr/~remy/license/GPL).
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% File locallabel.sty (LaTeX macros)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% Identification
\NeedsTeXFormat
{
LaTeX2e
}
\ProvidesPackage
{
locallabel
}
[2001/23/02 v0.92 Locallabel]
%% Preliminary declarations
%% Options
%% More declarations
%% We use two counters: The global counter is incremented at each reset.
%% Its value is the ``group'' of a local.
%% The local counter is the last numeric value of a bound label in the
%% current group. The value of a label #1 is globally set to
%% \csname llb@\the\c@llb@global-#1\endcsname
%% The global command \csname llb@\the\c@llb@global-#1*\endcsname is
%% use to ensure that a label is only bound once. Usually a label is
%% bound and declared at the same time with \llabel. It may also be bound in
%% advance, with \lbind, for instance so as to control the numbering.
%% Then, another \llabel must be used to declare it in the text.
%% If no \lbind has been used before, the \llabel calls \lbind implicitlt.
\newcounter
{
llb@global
}
\newcounter
{
llb@local
}
\newcommand
\llb
@find [1]
{
\expandafter
\ifx
\csname
llb@
\the\c
@llb@global-#1
\endcsname
\relax
\message
{
*** Local label #1 undefined in this context
}
%
\edef
\llb
@current
{
#1??
}
%
\else
\edef
\llb
@current
{
\csname
llb@
\the\c
@llb@global-#1
\endcsname
}
%
\fi
}
\newcommand
\llb
@make [1]
{
\expandafter
\ifx
\csname
llb@
\the\c
@llb@global-#1
\endcsname
\relax
\stepcounter
{
llb@local
}
\relax
\expandafter
\xdef
\csname
llb@
\the\c
@llb@global-#1
\endcsname
{
\the\c
@llb@local
}
%
\edef
\llb
@current
{
\the\c
@llb@local
}
%
\else
\expandafter
\ifx
\csname
llb@
\the\c
@llb@global-#1*
\endcsname
\relax
\message
{
*** Local label #1 already defined in this countext!
}
%
\edef
\llb
@current
{
\csname
llb@
\the\c
@llb@global-#1
\endcsname
??
}
%
\else
\expandafter
\global
\expandafter
\let
\csname
llb@
\the\c
@llb@global-#1*
\endcsname
\relax
\edef
\llb
@current
{
\csname
llb@
\the\c
@llb@global-#1
\endcsname
}
\fi
\fi
}
%%% Redefine those macros to change typsetting
\newcommand
\thelocallabel
{
\the
\c
@llb@local
}
\newcommand
\LlabelTypeset
[1]
{
(
\textrm
{
\bfseries
#1
}
)
}
\newcommand
\LrefTypeset
[1]
{
(
\textrm
{
#1)
}}
\newcommand
\glabel
[1]
{
\LlabelTypeset
{
\softtarget
{
#1
}{
#1
}}}
\newcommand
\gref
[1]
{
\LrefTypeset
{
\softlink
{
#1
}{
#1
}}}
%%% To reset all local labels---which just increment a global prefix.
\newcommand
\locallabelreset
[1][0]
%
{
\stepcounter
{
llb@global
}
\setcounter
{
llb@local
}{
#1
}}
%%% Make a new local label, typeset it, and bind to the given name
\def
\llb
@relax
{
\relax
}
\newcommand
{
\llabel
}
[2][
\relax
]
%
{
\llb
@make
{
#2
}
%
\def
\@
test
{
#1
}
\ifx
\@
test
\llb
@relax
\else
\edef
\@
currentlabel
{
\the\c
@llb@local
}
%
\def
\@
test
{
#1
}
\ifx
\@
test
\empty
\def
\@
test
{
#2
}
\fi
\label
{
\@
test
}
%
\fi
%
\LlabelTypeset
{
\softtarget
{
llb@
\the\c
@llb@global-#2
}{
\llb
@current
}}}
%%% Retreive the local label of given name and type set it.
\newcommand
\lref
[1]
{
\llb
@find
{
#1
}
%
\LrefTypeset
{
\softlink
{
llb@
\the\c
@llb@global-#1
}{
\llb
@current
}}}
%%% Make a new local label and bind it to the given name but do not typeset
%%% it. Typesetting may then be done with \llabel non locally. Useful to
%%% control the order of numberring.
\newcommand
\lbind
[1]
{
\llb
@make
{
#1
}
%
\expandafter
\global
\expandafter
\let
\csname
llb@
\the\c
@llb@global-#1*
\endcsname
\empty
}
\AtBeginDocument
{
%
\@
ifundefined
{
softlink
}{
\let
\softlink
\@
secondoftwo
}{}
%
\@
ifundefined
{
softtarget
}{
\let
\softtarget
\@
secondoftwo
}{}
%
}
docs/pfsteps.sty
deleted
100644 → 0
View file @
2c1c1ab8
%%
%% This is file `pfsteps.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% pfsteps.dtx (with options: `package')
%%
%% Copyright (C) 2011 by Jesse A. Tov
%%
%% This file may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License, either version 1.2 of this license or (at
%% your option) any later version. The latest version of this license is
%% in:
%%
%% http://www.latex-project.org/lppl.txt
%%
%% and version 1.2 or later is part of all distributions of LaTeX
%% version 1999/12/01 or later.
%%
\NeedsTeXFormat
{
LaTeX2e
}
[1999/12/01]
\ProvidesPackage
{
pfsteps
}
[2011/04/04 v0.4 proof tools]
\RequirePackage
{
listproc
}
\newcommand*\pfsteps
@set[3][]
{
\expandafter\let\csname
#1pfsteps@#2
\endcsname
#3
}
\newcommand*\pfsteps
@option[2][
\iffalse
]
{
\pfsteps
@set[if]
{
#2
}
#1
\pfsteps
@set[if]
{
#2@set
}
\iffalse
\DeclareOption
{
#2
}{
\pfsteps
@set[if]
{
#2
}
\iftrue
\pfsteps
@set[if]
{
#2@set
}
\iftrue
}
\DeclareOption
{
no#2
}{
\pfsteps
@set[if]
{
#2
}
\iffalse
\pfsteps
@set[if]
{
#2@set
}
\iftrue
}
}
\pfsteps
@option[
\iftrue
]
{
atsign
}
\pfsteps
@option[
\iftrue
]
{
hyperref
}
\pfsteps
@option[
\iftrue
]
{
loadunicode
}
\pfsteps
@option[
\iftrue
]
{
mathpartir
}
\pfsteps
@option
{
unicode
}
\ProcessOptions
\ifpfsteps
@unicode
\ifpfsteps
@loadunicode
\RequirePackage
{
ucs
}
\RequirePackage
[utf8x]
{
inputenc
}
\fi
\fi
\ifpfsteps
@mathpartir
\ifpfsteps
@mathpartir@set
\RequirePackage
{
mathpartir
}
\fi
\fi
\ifpfsteps
@hyperref
\ifpfsteps
@hyperref@set
\RequirePackage
{
hyperref
}
\fi
\fi
\newcommand
{
\pfcounteranchor
}
[1]
{
(#1)
}
\newcommand
{
\pfcounterref
}
[1]
{
(#1)
}
\newcounter
{
pfsteps@pfc@global
}
\newcounter
{
pfsteps@pfc@local
}
\newcommand
{
\resetpfcounter
}
[1][0]
{
\stepcounter
{
pfsteps@pfc@global
}
\setcounter
{
pfsteps@pfc@local
}{
#1
}}
\newcommand
{
\thepfcounter
}
{
\the\value
{
pfsteps@pfc@local
}}
\newcommand
{
\thepfsectioncounter
}
{
\the\value
{
pfsteps@pfc@global
}}
\newcommand
{
\steppfcounter
}
[1][
\relax
]
{
%
\addtocounter
{
pfsteps@pfc@local
}{
1
}
%
\ifx\relax
#1
\relax\else
\pflabel
{
#1
}
%
\fi
}
\newcommand
{
\usepfcounter
}
[1][
\relax
]
{
%
\steppfcounter
[#1]
%
\pfsteps
@hypertarget
{
pfc:
\thepfsectioncounter
:
\thepfcounter
}{
%
\pfcounteranchor
{
\thepfcounter
}
%
}
%
}
\newcommand
{
\pfsteps
@pfc@cs
}
[1]
{
\csname\pfsteps
@pfc@
{
\pfsteps
@strip#1
\@
empty
}
\endcsname
}
\newcommand
{
\pfsteps
@pfc@
}
[1]
{
pfsteps@pfc@
\pfsteps
@strip#1
\@
empty @
\thepfsectioncounter
}
\def\pfsteps
@strip#1 #2
{
%
#1
%
\ifx
#2
\@
empty
\else\expandafter\pfsteps
@strip
\fi
#2
}
\newcommand
{
\pflabel
}
[1]
{
\expandafter\ifx\csname\pfsteps
@pfc@
{
#1
}
@thisrun
\endcsname\relax
\expandafter\xdef\csname\pfsteps
@pfc@
{
#1
}
\endcsname
{
\thepfcounter
}
%
\expandafter\gdef\csname\pfsteps
@pfc@
{
#1
}
@thisrun
\endcsname
{}
%
\immediate\write\@
auxout
{
\noexpand\pfsteps
@def@label
{
#1
}{
\thepfsectioncounter
}{
\thepfcounter
}
}
%
\else
\PackageWarning
{
pfsteps
}
{
Proof step (#1) already defined in this section
}
%
\fi
}
\newcommand*
{
\pfsteps
@def@label
}
[3]
{
\expandafter\gdef
\csname
pfsteps@pfc@#1@#2
\endcsname
{
#3
}
}
\newcommand*
{
\pfref
}
[1]
{{
\ListExprTo
{
\Compress
[\@apply@group\@firstoftwo]
{
\Sort
[\@apply@group\@firstoftwo]
{
\Map
{
%
{
\@
ifundefined
{
\pfsteps
@pfc@
{
##1
}}
{
-1
}
{
\csname\pfsteps
@pfc@
{
##1
}
\endcsname
}}
%
{
\@
ifundefined
{
\pfsteps
@pfc@
{
##1
}}
{
\PackageWarning
{
pfsteps
}
{
Proof step (##1) not yet defined in this section
}
%
\textbf
{
?
}}
{
\pfsteps
@hyperlink
{
pfc:
\thepfsectioncounter
:
\pfsteps
@pfc@cs
{
##1
}}
{
\pfsteps
@pfc@cs
{
##1
}}}}}
{
\List
{
#1
}}}}}
\pfsteps
@pfref@list
\let\listitem\pfsteps
@pfref@listitem@first
\def\@
single##1
{
\@
secondoftwo##1
}
%
\def\@
range##1##2
{
\@
secondoftwo##1--
\@
secondoftwo##2
}
%
\pfcounterref
{
\pfsteps
@pfref@list
}
%
}}
\newcommand\pfsteps
@pfref@listitem@first[1]
{
%
#1
\let\listitem\pfsteps
@pfref@listitem@rest
}
\newcommand\pfsteps
@pfref@listitem@rest[1]
{
%
, #1
\let\listitem\pfsteps
@pfref@listitem@rest
}
\newcommand\pfsteps
@hypertarget[2]
{
#2
}
\newcommand\pfsteps
@hyperlink[2]
{
#2
}
\ifpfsteps
@hyperref
\AtBeginDocument
{
\ifcsname
hypertarget
\endcsname
\let\pfsteps
@hypertarget=
\hypertarget
\let\pfsteps
@hyperlink=
\hyperlink
\fi
}
\fi
\newlength
{
\proofleftskip
}
\newlength
{
\proofrightwidth
}
\setlength
{
\proofleftskip
}{
2pc
}
\setlength
{
\proofrightwidth
}{
0.3
\linewidth
}
\newenvironment
{
pfsteps
}
{
\begin{pfsteps@with}
$}
{
\end
{
pfsteps@with
}}
\newenvironment
{
pfsteps
*
}
{
\begin
{
pfsteps@with
}{}}
{
\end
{
pfsteps@with
}}
\newenvironment
{
pfsteps@with
}
[
1
]
{
\leavevmode\begingroup
\setlength
{
\parskip
}{
0
pt
}
%
\trivlist
\raggedright
\setlength
{
\leftskip
}{
1
.
5
\proofleftskip
}
\let\pfstepsSavedItem\item
\let\pfstepsSavedLabel\label
\let\pfstepsSavedQedhere\qedhere
\newcommand\AND
[
1
][
and
]
{
\mathrel
{
\mbox
{
##
1
}}}
\newcommand\BY
[
2
][
by
]
{
\pfsteps
@unmath
{
\penalty
-
1
\mbox
{
~
}
\hfill
%
\begin
{
minipage
}
[
t
]
{
\proofrightwidth
}
%
\raggedright
##
1
##
2
%
\end
{
minipage
}}}
\def\pfstepsItem
{
%
\pfsteps
@stopmath
\pfstepsSavedItem\mbox
{}
\kern
-
1
.
25
\proofleftskip
\makebox
[
\proofleftskip
]
{
\hfill\usepfcounter
}
\kern
0
.
25
\proofleftskip
#
1
\relax
}
\def\pfstepsQedhere
{
\pfsteps
@unmath
{
\pfstepsSavedQedhere
}}
\let\item\pfstepsItem
\let\label\pflabel
\let\qedhere\pfstepsQedhere
\ifpfsteps
@atsign
\pfsteps
@setup@atsign
\fi
\relax
}
{
\pfsteps
@stopmath
\endtrivlist\endgroup
\noindent\ignorespaces
}
\newcommand\pfsteps
@stopmath
{
\ifmmode
$
\fi
}
\newcommand\pfsteps
@unmath[1]
{
\ifmmode
$
\relax
#
1
\relax
$
\else\relax
#1
\relax\fi
}
{
\def\atsign
{
@
}
\catcode
`
\@
=
\active\relax
\expandafter\gdef\csname
pfsteps
\atsign
setup
\atsign
atsign
\endcsname
{
\catcode
`
\@
=
\active\relax
\gdef
@##1
{
\pflabel
{
##1
}}
}
}
\newcommand\pfstepsmathmode
{
\def\pfsteps
@unicode@arg
{$}}
\newcommand\pfstepstextmode
{
\def\pfsteps
@unicode@arg
{
\relax
}}
\newcommand\pfstepsSetupUnicode
[
3
]
{
\DeclareUnicodeCharacter
{
#
1
}{
\pfsteps
@unicode@startpfsteps
}
\DeclareUnicodeCharacter
{
#
3
}{
\pfsteps
@unicode@item
}
\def\pfsteps
@unicode@startpfsteps
{
\begingroup
\ifpfsteps
@atsign
\catcode
`
\@
=
\active\relax\fi
\pfsteps
@unicode@startpfsteps@kont
}
\def\pfsteps
@unicode@startpfsteps@kont##
1
#
2
{
\begin
{
pfsteps@with
}
\pfsteps
@unicode@arg
\item
##
1
\end
{
pfsteps@with
}
%
\endgroup
}
\def\pfsteps
@unicode@item
{
\item
}
\pfstepsmathmode
}
\ifpfsteps
@unicode
\pfstepsSetupUnicode
{
171
}{
»
}{
8226
}
% « » •
\fi
\newcommand\byCasesEveryCase
{
\resetpfcounter
}
\newcommand\byCasesEveryOtherwise
{
\byCasesEveryCase
}
\providecommand
{
\byCasesOtherwiseTemplate
}{
\textbf
{
Otherwise:
}}
\providecommand
{
\byCasesCaseTemplate
}
[
1
]
{
\textbf
{
Case
\ \ \fbox
{
#
1
}}}
\providecommand
{
\byCasesWhereTemplate
}{
\textbf
{
where
}}
\newenvironment
{
byCases
}
{
%
\begingroup
\let\case\byCases
@case
\let\otherwise\byCases
@otherwise
\ifpfsteps
@mathpartir
\ifcsname
inferrule
\endcsname\let\icase\byCases
@icase
\fi
\fi
\list
{}{
\labelwidth\z
@
\itemindent
-
\leftmargin
\let\makelabel\byCases
@label
}
%
}
{
%
\endlist
\endgroup
}
\newcommand
*
\byCases
@label
[
1
]
{
%
\hspace\labelsep
\normalfont
~
\strut
\expandafter\ifx
#
1
\relax\relax
\byCasesOtherwiseTemplate
\else
\byCasesCaseTemplate
{
\normalfont
${
#1
}$}
%