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
AVA
FloVer
Commits
bf5f1fb2
Commit
bf5f1fb2
authored
Feb 13, 2019
by
Joachim Bard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixing final proof for expressions
parent
1186f241
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
62 additions
and
4 deletions
+62
-4
coq/Expressions.v
coq/Expressions.v
+62
-4
No files found.
coq/Expressions.v
View file @
bf5f1fb2
...
...
@@ -1074,9 +1074,67 @@ Module ExprOrderedType (V_ordered:OrderType) <: OrderType.
-
apply
nat_compare_lt
in
c1
.
apply
nat_compare_lt
in
c2
.
assert
(
c3
:
(
n
?=
n1
)
%
nat
=
Lt
)
by
(
apply
nat_compare_lt
;
omega
).
now
rewrite
c3
.
}
{
admit
.
}
{
admit
.
}
{
admit
.
}
{
destruct
(
n
?=
n0
)
%
nat
eqn
:
c1
;
destruct
(
n0
?=
n1
)
%
nat
eqn
:
c2
;
try
congruence
.
-
apply
Nat
.
compare_eq
in
c1
.
apply
Nat
.
compare_eq
in
c2
.
subst
.
rewrite
Nat
.
compare_refl
.
apply
mTypeEq_compat_eq
in
Heqb
.
subst
.
rewrite
Heqb0
.
auto
.
-
apply
Nat
.
compare_eq
in
c1
.
subst
.
rewrite
c2
.
now
destruct
(
mTypeEq
m
m1
).
-
apply
Nat
.
compare_eq
in
c2
.
subst
.
rewrite
c1
.
now
destruct
(
mTypeEq
m
m1
).
-
apply
nat_compare_lt
in
c1
.
apply
nat_compare_lt
in
c2
.
assert
(
c3
:
(
n
?=
n1
)
%
nat
=
Lt
)
by
(
apply
nat_compare_lt
;
omega
).
rewrite
c3
.
now
destruct
(
mTypeEq
m
m1
).
}
{
destruct
(
n
?=
n0
)
%
nat
eqn
:
c1
;
destruct
(
n0
?=
n1
)
%
nat
eqn
:
c2
;
try
congruence
.
-
apply
Nat
.
compare_eq
in
c1
.
apply
Nat
.
compare_eq
in
c2
.
subst
.
rewrite
Nat
.
compare_refl
.
apply
mTypeEq_compat_eq
in
Heqb0
.
subst
.
rewrite
Heqb
.
auto
.
-
apply
Nat
.
compare_eq
in
c1
.
subst
.
rewrite
c2
.
now
destruct
(
mTypeEq
m
m1
).
-
apply
Nat
.
compare_eq
in
c2
.
subst
.
rewrite
c1
.
now
destruct
(
mTypeEq
m
m1
).
-
apply
nat_compare_lt
in
c1
.
apply
nat_compare_lt
in
c2
.
assert
(
c3
:
(
n
?=
n1
)
%
nat
=
Lt
)
by
(
apply
nat_compare_lt
;
omega
).
rewrite
c3
.
now
destruct
(
mTypeEq
m
m1
).
}
{
destruct
(
n
?=
n0
)
%
nat
eqn
:
c1
;
destruct
(
n0
?=
n1
)
%
nat
eqn
:
c2
;
try
congruence
.
-
apply
Nat
.
compare_eq
in
c1
.
apply
Nat
.
compare_eq
in
c2
.
subst
.
rewrite
Nat
.
compare_refl
.
destruct
(
mTypeEq
m
m1
)
eqn
:?
.
+
type_conv
.
destruct
(
morePrecise
m1
m0
)
eqn
:
prec1
;
destruct
(
morePrecise
m0
m1
)
eqn
:
prec2
;
destruct
m0
,
m1
;
simpl
in
*
;
try
congruence
;
try
auto
;
destruct
(
w
?=
w0
)
eqn
:
case_w0
;
rewrite
Pos
.
compare_antisym
in
lt_e1_e2
;
rewrite
case_w0
in
*
;
cbn
in
*
;
try
congruence
;
rewrite
N
.
compare_antisym
,
lt_e2_e3
in
lt_e1_e2
;
cbn
in
*
;
congruence
.
+
type_conv
;
subst
.
destruct
(
morePrecise
m1
m0
)
eqn
:
prec1
;
destruct
(
morePrecise
m0
m1
)
eqn
:
prec2
;
destruct
m
,
m0
,
m1
;
simpl
in
*
;
try
congruence
;
try
auto
;
destruct
(
w
?=
w0
)
eqn
:
case_w0
;
destruct
(
w0
?=
w1
)
eqn
:
case_w1
;
try
(
apply
Ndec
.
Pcompare_Peqb
in
case_w0
);
try
(
apply
Ndec
.
Pcompare_Peqb
in
case_w1
);
try
rewrite
Pos
.
eqb_eq
in
*
;
try
rewrite
N
.
eqb_eq
in
*
;
subst
;
try
congruence
;
try
rewrite
case_w0
;
try
rewrite
case_w1
;
try
auto
;
try
rewrite
Pos
.
compare_refl
;
try
(
rewrite
N
.
compare_lt_iff
in
*
;
eapply
N
.
lt_trans
;
eauto
);
assert
(
w
?=
w1
=
Lt
)
as
G
by
(
rewrite
Pos
.
compare_lt_iff
in
*
;
eapply
Pos
.
lt_trans
;
eauto
);
rewrite
G
;
auto
.
-
apply
Nat
.
compare_eq
in
c1
.
subst
.
rewrite
c2
.
now
destruct
(
mTypeEq
m
m1
).
-
apply
Nat
.
compare_eq
in
c2
.
subst
.
rewrite
c1
.
now
destruct
(
mTypeEq
m
m1
).
-
apply
nat_compare_lt
in
c1
.
apply
nat_compare_lt
in
c2
.
assert
(
c3
:
(
n
?=
n1
)
%
nat
=
Lt
)
by
(
apply
nat_compare_lt
;
omega
).
rewrite
c3
.
now
destruct
(
mTypeEq
m
m1
).
}
(
*
destruct
(
morePrecise
m
m0
);
destruct
m
,
m0
;
try
congruence
;
...
...
@@ -1134,7 +1192,7 @@ Module ExprOrderedType (V_ordered:OrderType) <: OrderType.
try
(
erewrite
exprCompare_eq_lt_is_lt
;
eauto
;
fail
);
try
(
erewrite
exprCompare_lt_eq_is_lt
;
eauto
;
fail
);
try
(
erewrite
IHe1_2
;
eauto
).
Admitt
ed
.
Q
ed
.
Instance
eq_compat
:
Proper
(
eq
==>
eq
==>
iff
)
eq
.
Proof
.
...
...
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