Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Giuseppe Castagna
occurrence-typing
Commits
53eb81a8
Commit
53eb81a8
authored
Nov 24, 2020
by
Mickael Laurent
Browse files
several fixes
parent
a6dfd671
Changes
1
Hide whitespace changes
Inline
Side-by-side
new_system3.tex
View file @
53eb81a8
...
...
@@ -163,9 +163,9 @@ The elements of $\Gamma\avdash\Gammap\ct e:S$ mean:
\\
\Infer
[Proj*]
{
\Gamma
(x)
\equiv\textstyle\bigvee
_{
i
\in
I
}
\pair
{
t
_
i
}{
s
_
i
}
\\
\forall
i
\in
I.
\ \Gamma\avdash
{
\Gammap\subst
{
x
}{
\pair
{
t
_
i
}{
s
_
i
}}}{
[]
}
\ct
[\pi_
i
x]
: S
_
i
\forall
i
\in
I.
\ \Gamma\avdash
{
\Gammap\subst
{
x
}{
\pair
{
t
_
i
}{
s
_
i
}}}{
[]
}
\ct
[\pi_
j
x]
: S
_
i
}
{
\Gamma
\avdash\Gammap\ct
\pi
_
i
x:
\textstyle\bigcup
_{
i
\in
I
}
S
_
i
}
{
\Gamma
\avdash\Gammap\ct
\pi
_
j
x:
\textstyle\bigcup
_{
i
\in
I
}
S
_
i
}
{
}
\\
\Infer
[ProjDom]
...
...
@@ -260,7 +260,7 @@ rules, because one branch is already unreachable and retyping only occurs with s
\Infer
[LetFirst]
{
\Gamma\avdash\Gammap\ct
a:
\{
(t
_
i,
\Gamma
_
i)
\}
_{
i
\in
I
}
\\
\forall
i
\in
I.
\ \Gamma
_
i,(x:t
_
i)
\avdash\Gammap
{
\ct
[
\letexp x a
{[]
}
]
}
e : S
_
i
\forall
i
\in
I.
\ \Gamma
_
i,(x:t
_
i)
\avdash\Gammap
{
\ct
}
\letexp
x a e : S
_
i
}
{
\Gamma\avdash\Gammap\ct\letexp
x a e :
\textstyle\bigcup
_{
i
\in
I
}
S
_
i
...
...
@@ -517,29 +517,29 @@ $x$ is supposed to be included into $t_x$ or $\neg t_x$.
\\
\Infer
[EFQ]
{
\exists
x
\in\dom\Gamma
.
\ \Gamma
(x)=
\Empty
}
{
\Gamma
\avdash\Gammap\ct
e :
\Leaf
(
\Empty
,
\Gamma
\land\Gammap
)
}
{
\Gamma
\avdash\Gammap\ct
e :
\Leaf
(
\Empty
,
\Gamma
)
}
{
}
\\
\Infer
[Const]
{
}
{
\Gamma\avdash\Gammap\ct
c:
\Leaf
(
\basic
{
c
}
,
\Gamma
\land\Gammap
)
}
{
\Gamma\avdash\Gammap\ct
c:
\Leaf
(
\basic
{
c
}
,
\Gamma
)
}
{
}
\quad
\Infer
[Var]
{
}
{
\Gamma
\avdash\Gammap\ct
x:
\Leaf
(
\Gamma
(x),
\Gamma
\land\Gammap
)
}
{
\Gamma
\avdash\Gammap\ct
x:
\Leaf
(
\Gamma
(x),
\Gamma
)
}
{
x
\in\dom\Gamma
}
\\
\Infer
[Proj]
{
\Gamma
(x)
\equiv\pair
{
t
_
1
}{
t
_
2
}}
{
\Gamma
\avdash\Gammap\ct
\pi
_
i x:
\Leaf
(t
_
i,
\Gamma
\land\Gammap
)
}
{
\Gamma
\avdash\Gammap\ct
\pi
_
i x:
\Leaf
(t
_
i,
\Gamma
)
}
{
}
\\
\Infer
[Proj*]
{
\Gamma
(x)
\equiv\textstyle\bigvee
_{
i
\in
I
}
\pair
{
t
_
i
}{
s
_
i
}
\\
\forall
i
\in
I.
\ \Gamma\avdash
{
\Gammap\subst
{
x
}{
\pair
{
t
_
i
}{
s
_
i
}}}{
[]
}
\ct
[\pi_
i
x]
:
\tree
_
i
\forall
i
\in
I.
\ \Gamma\avdash
{
\Gammap\subst
{
x
}{
\pair
{
t
_
i
}{
s
_
i
}}}{
[]
}
\ct
[\pi_
j
x]
:
\tree
_
i
}
{
\Gamma
\avdash\Gammap\ct
\pi
_
i
x:
\Node
(
\Gamma\land\Gammap
,
\{\tree
_
i
\}
_{
i
\in
I
}
)
}
{
\Gamma
\avdash\Gammap\ct
\pi
_
j
x:
\Node
(
\Gamma\land\Gammap
,
\{\tree
_
i
\}
_{
i
\in
I
}
)
}
{
}
\\
\Infer
[ProjDom]
...
...
@@ -554,7 +554,7 @@ $x$ is supposed to be included into $t_x$ or $\neg t_x$.
\\
\Infer
[Pair]
{
}
{
\Gamma
\avdash\Gammap\ct
(x
_
1,x
_
2):
\Leaf
(
\pair
{
\Gamma
(x
_
1)
}
{
\Gamma
(x
_
2)
}
,
\Gamma
\land\Gammap
)
}
{
\Gamma
\avdash\Gammap\ct
(x
_
1,x
_
2):
\Leaf
(
\pair
{
\Gamma
(x
_
1)
}
{
\Gamma
(x
_
2)
}
,
\Gamma
)
}
{
}
\\
\Infer
[App]
...
...
@@ -563,7 +563,7 @@ $x$ is supposed to be included into $t_x$ or $\neg t_x$.
\Gamma
(x
_
2)=s
\\
\exists
i
\in
I.
\
s
\leq
s
_
i
}
{
\Gamma
\avdash\Gammap\ct
{
x
_
1
}{
x
_
2
}
:
\Leaf
((
\textstyle\bigwedge
_{
i
\in
I
}
\arrow
{
s
_
i
}{
t
_
i
}
)
\circ
s,
\Gamma
\land\Gammap
)
}
{
\Gamma
\avdash\Gammap\ct
{
x
_
1
}{
x
_
2
}
:
\Leaf
((
\textstyle\bigwedge
_{
i
\in
I
}
\arrow
{
s
_
i
}{
t
_
i
}
)
\circ
s,
\Gamma
)
}
{
}
\\
\Infer
[AppR*]
...
...
@@ -635,7 +635,7 @@ rules, because one branch is already unreachable and retyping only occurs with s
{
\Gamma\avdash\Gammap\ct
a:
\tree\\
\{\Leaf
(t
_
i,
\Gamma
_
i)
\}
_{
i
\in
I
}
=
\tleaves
(
\tree
)
\\
\forall
i
\in
I.
\ \Gamma
_
i,(x:t
_
i)
\avdash\Gammap
{
\ct
[
\letexp x a
{[]
}
]
}
e :
\tree
_
i
\\
\forall
i
\in
I.
\ \Gamma
_
i,(x:t
_
i)
\avdash\Gammap
{
\ct
}
\letexp
x a e :
\tree
_
i
\\
\tree
'=
\tree\text
{
with each leaf
}
\Leaf
(t
_
i,
\Gamma
_
i)
\text
{
replaced with
}
\tree
_
i
}
{
...
...
@@ -662,7 +662,7 @@ rules, because one branch is already unreachable and retyping only occurs with s
\Gamma
_
\circ\bvdash
{
a
}{
\Gammap
(x)
}
\{\Gamma
_
i
\}
_{
i
\in
I
}
\\
\forall
i
\in
I.
\ \Gamma
_
\circ\subst
{
x
}{
\Gamma
_
\circ
(x)
\land\Gammap
(x)
}
\avdash
{
(
\Gammap\land\Gamma
_
i)
\setminus\{
x
\}
}{
[]
}
\ct
[\letexp x a e]
:
\tree
_
i
}
{
\Gamma\avdash\Gammap\ct\letexp
x a e :
\Node
(
\Gamma
_
1'
,
\{\tree
_
i
\}
_{
i
\in
I
}
)
\Gamma\avdash\Gammap\ct\letexp
x a e :
\Node
(
\Gamma
_
\circ\land\Gammap
,
\{\tree
_
i
\}
_{
i
\in
I
}
)
}
{
}
\end{mathpar}
...
...
@@ -680,6 +680,3 @@ rules, because one branch is already unreachable and retyping only occurs with s
\end{mathpar}
TODO: Update the Abs rule. In particular, use
$
\fvdash
{
e
}{
t
}$
to improve it.
TODO: Allow Gammap to be non-empty initially. For that, LetFirst should call recursively LetNoRefine
or LetRefine, and the environments associated to the leaves should not be itersected with Gammap.
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment