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
65848472
Commit
65848472
authored
Nov 12, 2020
by
Mickael Laurent
Browse files
add guardians to algorithmic type system
parent
78ea0c43
Changes
1
Show whitespace changes
Inline
Side-by-side
new_system3.tex
View file @
65848472
...
...
@@ -148,6 +148,8 @@ TODO: Theorems and proof: no need for rule Inter, etc.
\\
\Infer
[ProjDom]
{
\Gamma
(x) = t
\\
t
\land
(
\pair
{
\Any
}{
\Any
}
)
\neq\Empty\\
t
\land\neg
(
\pair
{
\Any
}{
\Any
}
)
\neq\Empty\\
\Gamma\subst
{
x
}{
t
\land
(
\pair
{
\Any
}{
\Any
}
)
}
\vdash
_
e e:
\{
(u
_
i,
\Gamma
_
i)
\}
_{
i
\in
I
}
\\
\Gamma\subst
{
x
}{
t
\land\neg
(
\pair
{
\Any
}{
\Any
}
)
}
\vdash
_
e e:
\{
(u
_
j,
\Gamma
_
j)
\}
_{
j
\in
J
}
}
...
...
@@ -181,8 +183,8 @@ TODO: Theorems and proof: no need for rule Inter, etc.
\Infer
[AppRDom]
{
\Gamma
(x
_
1)
\equiv
\textstyle\bigwedge
_{
i
\in
I
}
\arrow
{
s
_
i
}{
t
_
i
}
\\
\Gamma
(x
_
2)=s
\\
s
_
\circ
=
\textstyle\bigvee
_{
i
\in
I
}
s
_
i
\\
\Gamma
(x
_
2)=s
\\
s
\land
s
_
\circ\neq\Empty\\
s
\land
\neg
s
_
\circ\neq\Empty\\
\Gamma\subst
{
x
_
2
}{
s
\land
s
_
\circ
}
\vdash
_
e e:
\{
(u
_
i,
\Gamma
_
i)
\}
_{
i
\in
I
}
\\
\Gamma\subst
{
x
_
2
}{
s
\land
\neg
s
_
\circ
}
\vdash
_
e e:
\{
(u
_
j,
\Gamma
_
j)
\}
_{
j
\in
J
}
}
...
...
@@ -190,20 +192,22 @@ TODO: Theorems and proof: no need for rule Inter, etc.
{
}
\\
\Infer
[AppL*]
{
\Gamma
(x
_
1)
\equiv\textstyle\bigvee
_{
i
\in
I
}
\arrow
{
s
_
i
}{
t
_
i
}
\\
\forall
i
\in
I.
\ \Gamma\subst
{
x
_
1
}{
\arrow
{
s
_
i
}{
t
_
i
}
}
\vdash
_
e e:
\{
(u
_
j,
\Gamma
_
j)
\}
_{
j
\in
J
_
i
}
{
\Gamma
(x
_
1)
\equiv\textstyle\bigvee
_{
i
\in
I
}
t
_
i
\leq\arrow
{
\Empty
}{
\Any
}
\\
\forall
i
\in
I.
\ \Gamma\subst
{
x
_
1
}{
t
_
i
}
\vdash
_
e e:
\{
(u
_
j,
\Gamma
_
j)
\}
_{
j
\in
J
_
i
}
}
{
\Gamma
\vdash
_
e
{
x
_
1
}{
x
_
2
}
:
\bt\{
(u
_
j,
\Gamma
_
j)
\,\alt\,
i
\in
I,
\
j
\in
J
_
i
\}
}
{
}
\\
\Infer
[AppLDom]
{
\Gamma
(x
_
1) = t
\\
{
\Gamma
(x
_
1) = t
\\
t
\land
(
\arrow
{
\Empty
}{
\Any
}
)
\neq\Empty\\
t
\land
\neg
(
\arrow
{
\Empty
}{
\Any
}
)
\neq\Empty\\
\Gamma\subst
{
x
_
1
}{
t
\land
(
\arrow
{
\Empty
}{
\Any
}
)
}
\vdash
_
e e:
\{
(u
_
i,
\Gamma
_
i)
\}
_{
i
\in
I
}
\\
\Gamma\subst
{
x
_
1
}{
t
\land\neg
(
\arrow
{
\Empty
}{
\Any
}
)
}
\vdash
_
e e:
\{
(u
_
j,
\Gamma
_
j)
\}
_{
j
\in
J
}
}
{
\Gamma
\vdash
_
e
{
x
_
1
}{
x
_
2
}
:
\bt\{
(u
_
i,
\Gamma
_
i)
\}
_{
i
\in
I
}
\cup\{
(u
_
j,
\Gamma
_
j)
\}
_{
j
\in
J
}}
{
}
\\
\end{mathpar}
\begin{mathpar}
\Infer
[CaseThen]
{
\Gamma
(x)=t
_
\circ\\
t
_
\circ\leq
t
\\
...
...
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