Library Lambda.Meta.TPOSR_JRussell

Require
Import
Lambda.Terms
.
Require
Import
Lambda.Reduction
.
Require
Import
Lambda.Conv
.
Require
Import
Lambda.LiftSubst
.
Require
Import
Lambda.Env
.
Require
Import
Lambda.Tactics
.

Require
Import
Lambda.JRussell.Types
.
Require
Import
Lambda.JRussell.Basic
.
Require
Import
Lambda.JRussell.Coercion
.
Require
Import
Lambda.JRussell.Generation
.
Require
Import
Lambda.JRussell.Thinning
.
Require
Import
Lambda.JRussell.Substitution
.
Require
Import
Lambda.JRussell.Validity
.
Require
Import
Lambda.JRussell.UnicityOfSorting
.

Require
Import
Lambda.TPOSR.Terms
.
Require
Import
Lambda.TPOSR.Reduction
.
Require
Import
Lambda.TPOSR.Conv
.
Require
Import
Lambda.TPOSR.LiftSubst
.
Require
Import
Lambda.TPOSR.Env
.
Require
Import
Lambda.TPOSR.Types
.
Require
Import
Lambda.TPOSR.Unlab
.

Implicit
Types
i
k
m
n
p
:
nat
.
Implicit
Type
s
:
sort
.
Implicit
Types
A
B
M
N
T
t
u
v
:
lterm
.
Implicit
Types
e
f
g
:
lenv
.


Lemma
item_unlab
: ∀
n
t
e
,
item
lterm
t
e
n
->
item
term
(|t|) (
unlab_ctx
e
)
n
.

Theorem
unlab_sound
:
  (∀
e
u
v
T
,
e
|--
u
->
v
:
T
->
  (
unlab_ctx
e
) |-= (|u|) = (|v|) : (|T|)) ∧
  (∀
e
,
tposr_wf
e
->
  (
unlab_ctx
e
) |-=
Srt
prop
:
Srt
kind

  (
unlab_ctx
e
) |-=
Srt
set
:
Srt
kind

  (∀
A
n
,
item_llift
A
e
n
->
  (
unlab_ctx
e
) |-=
Ref
n
: (|A|))) ∧
  (∀
e
u
v
s
,
e
|--
u
~=
v
:
s
->
  (
unlab_ctx
e
) |-= (|u|) = (|v|) :
Srt
s
) ∧
  (∀
e
u
v
s
,
e
|--
u
>->
v
:
s
->
  (
unlab_ctx
e
) |-= (|u|) >> (|v|) :
s
).

Corollary
unlab_sound_type
: ∀
e
u
v
T
,
e
|--
u
->
v
:
T
->
  (
unlab_ctx
e
) |-= (|u|) = (|v|) : (|T|).

Corollary
unlab_sound_tposrp
: ∀
e
u
v
T
,
e
|--
u
-+>
v
:
T
->
  (
unlab_ctx
e
) |-= (|u|) = (|v|) : (|T|).

Corollary
unlab_sound_wf
:
  (∀
e
,
tposr_wf
e
->
  (
unlab_ctx
e
) |-=
Srt
prop
:
Srt
kind

  (
unlab_ctx
e
) |-=
Srt
set
:
Srt
kind

  (∀
A
n
,
item_llift
A
e
n
->
  (
unlab_ctx
e
) |-=
Ref
n
: (|A|))).

Corollary
unlab_sound_eq
: ∀
e
u
v
s
,
e
|--
u
~=
v
:
s
->
  (
unlab_ctx
e
) |-= (|u|) = (|v|) :
Srt
s
.

Corollary
unlab_sound_coerce
: ∀
e
u
v
s
,
e
|--
u
>->
v
:
s
->
  (
unlab_ctx
e
) |-= (|u|) >> (|v|) :
s
.

Theorem
tposr_unique_sort
: ∀
G
A
B
C
s
s'
,
G
|--
A
->
B
:
Srt_l
s
->
G
|--
A
->
C
:
Srt_l
s'
->
  
s
=
s'
.

Theorem
tposr_eq_unique_sort
: ∀
G
A
B
C
s
s'
,
G
|--
A
~=
B
:
s
->
G
|--
A
~=
C
:
s'
->
  
s
=
s'
.

Theorem
tposr_coerce_unique_sort
: ∀
G
A
B
C
s
s'
,
G
|--
A
>->
B
:
s
->
G
|--
A
>->
C
:
s'
->
  
s
=
s'
.