Library Lambda.Conv

Require
Import
Lambda.Terms
.
Require
Import
Lambda.LiftSubst
.
Require
Import
Lambda.Reduction
.

Implicit
Types
i
k
m
n
p
:
nat
.
Implicit
Type
s
:
sort
.
Implicit
Types
A
B
M
N
T
t
u
v
:
term
.

Section
Church_Rosser
.

  
Definition
str_confluent
(
R
:
term
term
Prop
) :=
    
commut
_
R
(
transp
_
R
).

  
Lemma
str_confluence_par_red1
:
str_confluent
par_red1
.

  
Lemma
strip_lemma
:
commut
_
par_red
(
transp
_
par_red1
).

  
Lemma
confluence_par_red
:
str_confluent
par_red
.

  
Lemma
confluence_red
:
str_confluent
red
.

  
Theorem
church_rosser
:
   ∀
u
v
,
conv
u
v
ex2
(
fun
t
red
u
t
) (
fun
t
red
v
t
).

  
Lemma
inv_conv_prod_l
:
   ∀
a
b
c
d
:
term
,
conv
(
Prod
a
c
) (
Prod
b
d
) →
conv
a
b
.

  
Lemma
inv_conv_prod_r
:
   ∀
a
b
c
d
:
term
,
conv
(
Prod
a
c
) (
Prod
b
d
) →
conv
c
d
.

  
Lemma
inv_conv_sum_l
:
   ∀
a
b
c
d
:
term
,
conv
(
Sum
a
c
) (
Sum
b
d
) →
conv
a
b
.

Lemma
inv_conv_sum_r
:
   ∀
a
b
c
d
:
term
,
conv
(
Sum
a
c
) (
Sum
b
d
) →
conv
c
d
.

Lemma
inv_conv_subset_l
:
   ∀
a
b
c
d
:
term
,
conv
(
Subset
a
c
) (
Subset
b
d
) →
conv
a
b
.

Lemma
inv_conv_subset_r
:
   ∀
a
b
c
d
:
term
,
conv
(
Subset
a
c
) (
Subset
b
d
) →
conv
c
d
.

  
Lemma
nf_uniqueness
: ∀
u
v
,
conv
u
v
normal
u
normal
v
u
=
v
.

  
Lemma
conv_sort
: ∀
s1
s2
,
conv
(
Srt
s1
) (
Srt
s2
) →
s1
=
s2
.

  
Lemma
conv_kind_prop
: ¬
conv
(
Srt
kind
) (
Srt
prop
).

  
Lemma
conv_kind_set
: ¬
conv
(
Srt
kind
) (
Srt
set
).

Lemma
conv_sort_ref
: ∀
s
n
, ¬
conv
(
Srt
s
) (
Ref
n
).

  
Lemma
conv_sort_prod
: ∀
s
t
u
, ¬
conv
(
Srt
s
) (
Prod
t
u
).

  
Lemma
conv_sort_sum
: ∀
s
t
u
, ¬
conv
(
Srt
s
) (
Sum
t
u
).

  
Lemma
conv_sort_subset
: ∀
s
t
u
, ¬
conv
(
Srt
s
) (
Subset
t
u
).

  
Lemma
conv_ref_prod
: ∀
n
t
u
, ¬
conv
(
Ref
n
) (
Prod
t
u
).

  
Lemma
conv_ref_sum
: ∀
n
t
u
, ¬
conv
(
Ref
n
) (
Sum
t
u
).

  
Lemma
conv_ref_subset
: ∀
n
t
u
, ¬
conv
(
Ref
n
) (
Subset
t
u
).

  
Lemma
conv_prod_abs
: ∀
U
V
t
u
, ¬
conv
(
Prod
U
V
) (
Abs
t
u
).

  
Lemma
conv_prod_pair
: ∀
U
V
t
u
v
, ¬
conv
(
Prod
U
V
) (
Pair
t
u
v
).

  
Lemma
conv_prod_subset
: ∀
U
V
t
u
, ¬
conv
(
Prod
U
V
) (
Subset
t
u
).

  
Lemma
conv_prod_sum
: ∀
U
V
t
u
, ¬
conv
(
Prod
U
V
) (
Sum
t
u
).

  
Lemma
conv_subset_sum
: ∀
U
V
t
u
, ¬
conv
(
Subset
U
V
) (
Sum
t
u
).

  
Lemma
conv_sum_abs
: ∀
U
V
t
u
, ¬
conv
(
Sum
U
V
) (
Abs
t
u
).

  
Lemma
conv_sum_pair
: ∀
U
V
t
u
v
, ¬
conv
(
Sum
U
V
) (
Pair
t
u
v
).

  
Lemma
conv_subset_abs
: ∀
U
V
t
u
, ¬
conv
(
Subset
U
V
) (
Abs
t
u
).

  
Lemma
conv_subset_pair
: ∀
U
V
t
u
v
, ¬
conv
(
Subset
U
V
) (
Pair
t
u
v
).

End
Church_Rosser
.