Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
N
Numerical Analysis in Coq
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Micaela Mayero
Numerical Analysis in Coq
Commits
9be0abe0
Commit
9be0abe0
authored
3 years ago
by
François Clément
Browse files
Options
Downloads
Patches
Plain Diff
Fix alternate representation of is_topo_basis.
Prove correctness results.
parent
5ce1f2e2
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
Lebesgue/UniformSpace_compl.v
+99
-38
99 additions, 38 deletions
Lebesgue/UniformSpace_compl.v
with
99 additions
and
38 deletions
Lebesgue/UniformSpace_compl.v
+
99
−
38
View file @
9be0abe0
...
@@ -245,18 +245,18 @@ End UniformSpace_compl.
...
@@ -245,18 +245,18 @@ End UniformSpace_compl.
Section
topo_basis_Def
.
Section
topo_basis_Def
.
Definition
is_topo_basis_alt
:
forall
{
T
:
UniformSpace
}
,
((
T
->
Prop
)
->
Prop
)
->
Prop
:=
fun
T
PB
=>
(
forall
B
,
PB
B
->
open
B
)
/
\
(
forall
A
,
open
A
->
forall
x
,
A
x
<->
exists
B
,
PB
B
/
\
B
x
).
Definition
is_topo_basis
:
Definition
is_topo_basis
:
forall
{
T
:
UniformSpace
}
{
Idx
:
Type
}
,
(
Idx
->
T
->
Prop
)
->
Prop
:=
forall
{
T
:
UniformSpace
}
{
Idx
:
Type
}
,
(
Idx
->
T
->
Prop
)
->
Prop
:=
fun
T
Idx
B
=>
fun
T
Idx
B
=>
(
forall
i
,
open
(
B
i
))
/
\
(
forall
i
,
open
(
B
i
))
/
\
(
forall
(
A
:
T
->
Prop
),
open
A
->
(
forall
A
,
open
A
->
exists
P
,
forall
x
,
A
x
<->
exists
i
,
P
i
/
\
B
i
x
).
exists
(
P
:
Idx
->
Prop
),
forall
x
,
A
x
<->
exists
i
,
P
i
/
\
B
i
x
).
Definition
is_topo_basis_Prop
:
forall
{
T
:
UniformSpace
}
,
((
T
->
Prop
)
->
Prop
)
->
Prop
:=
fun
T
PB
=>
(
forall
B
,
PB
B
->
open
B
)
/
\
(
forall
A
,
open
A
->
forall
x
,
A
x
<->
exists
B
,
(
PB
B
/
\
forall
y
,
B
y
->
A
y
)
/
\
B
x
).
Definition
is_second_countable
:
UniformSpace
->
Prop
:=
Definition
is_second_countable
:
UniformSpace
->
Prop
:=
fun
T
=>
exists
(
B
:
nat
->
T
->
Prop
),
is_topo_basis
B
.
fun
T
=>
exists
(
B
:
nat
->
T
->
Prop
),
is_topo_basis
B
.
...
@@ -273,37 +273,99 @@ Definition topo_basis_Prod : (nat -> T1 * T2 -> Prop) :=
...
@@ -273,37 +273,99 @@ Definition topo_basis_Prod : (nat -> T1 * T2 -> Prop) :=
End
topo_basis_Def
.
End
topo_basis_Def
.
Section
topo_basis_Facts
.
Section
Subset_compl1
.
Context
{
U
:
Type
}
.
(
*
Universe
.
*
)
Variable
A
:
U
->
Prop
.
(
*
Subset
.
*
)
Lemma
is_topo_basis_correct
:
Definition
subset_to_Idx
:
{
x
|
A
x
}
->
U
:=
@
proj1_sig
U
A
.
forall
{
T
:
UniformSpace
}
{
Idx
:
Type
}
,
(
exists
(
B
:
Idx
->
T
->
Prop
),
is_topo_basis
B
)
<->
Lemma
subset_to_Idx_correct
:
forall
x
,
A
x
<->
exists
i
,
x
=
subset_to_Idx
i
.
(
exists
(
B
:
(
T
->
Prop
)
->
Prop
),
is_topo_basis_alt
B
).
Proof
.
Proof
.
intros
T
Idx
;
split
.
intros
x
;
split
.
(
*
*
)
intros
Hx
;
exists
(
exist
_
x
Hx
);
easy
.
intros
[
B
[
HB1
HB2
]].
intros
[[
y
Hy
]
Hx
];
rewrite
Hx
;
easy
.
exists
(
fun
A
=>
exists
i
,
A
=
B
i
);
split
.
Qed
.
intros
A
[
i
HA
];
rewrite
HA
;
auto
.
intros
A
HA
x
;
destruct
(
HB2
A
HA
)
as
[
P
HP
].
rewrite
HP
;
split
.
intros
[
i
[
Hi
Hx
]].
Variable
Idx
:
Type
.
(
*
Should
be
in
Set
?
*
)
(
*
Indices
.
*
)
Variable
B
:
Idx
->
U
.
Definition
subset_of_Idx
:
U
->
Prop
:=
fun
x
=>
exists
i
,
x
=
B
i
.
(
*
Useless
?
Lemma
subset_of_Idx_correct
:
forall
x
,
(
exists
i
,
x
=
B
i
)
<->
subset_of_Idx
x
.
Proof
.
tauto
.
Qed
.
*
)
End
Subset_compl1
.
Section
Subset_compl2
.
Context
{
U
:
Type
}
.
(
*
Universe
.
*
)
(
*
WIP
...
Lemma
subset_of_Idx_to_Idx
:
forall
A
,
subset_of_Idx
(
subset_to_Idx
A
)
=
A
.
Proof
.
Admitted
.
Admitted
.
Lemma
subset_to_Idx_of_Idx
:
forall
Idx
(
B
:
Idx
->
U
),
subset_to_Idx
(
subset_of_Idx
Idx
B
)
=
B
.
Proof
.
Admitted
.
*
)
End
Subset_compl2
.
Section
topo_basis_Facts
.
Context
{
T
:
UniformSpace
}
.
Lemma
is_topo_basis_to_Prop
:
forall
Idx
(
B
:
Idx
->
T
->
Prop
),
is_topo_basis
B
->
is_topo_basis_Prop
(
subset_of_Idx
Idx
B
).
Proof
.
intros
Idx
B
[
HB1
HB2
];
split
.
intros
B
'
[
i
HB
'
];
rewrite
HB
'
;
auto
.
intros
A
HA
x
;
destruct
(
HB2
A
HA
)
as
[
P
HP
];
rewrite
HP
;
split
.
(
*
*
)
intros
[
i
[
Hi
Hx
]];
exists
(
B
i
);
repeat
split
;
try
exists
i
;
try
easy
.
intros
y
Hy
;
apply
<-
HP
;
exists
i
;
easy
.
(
*
*
)
intros
[
B
'
[[[
i
HB
'1
]
HB
'
2
]
HB
'
3
]].
destruct
(
proj1
(
HP
x
)
(
HB
'
2
x
HB
'
3
))
as
[
j
Hj
];
exists
j
;
easy
.
Qed
.
Lemma
is_topo_basis_of_Prop
:
forall
(
PB
:
(
T
->
Prop
)
->
Prop
),
is_topo_basis_Prop
PB
->
is_topo_basis
(
subset_to_Idx
PB
).
Proof
.
intros
PB
[
HPB1
HPB2
];
split
.
intros
i
;
apply
HPB1
,
subset_to_Idx_correct
;
exists
i
;
easy
.
intros
A
HA
;
exists
(
fun
i
=>
forall
y
,
subset_to_Idx
PB
i
y
->
A
y
);
intros
x
.
rewrite
(
HPB2
_
HA
);
split
.
(
*
*
)
intros
[
B
'
[[
HB
'1
HB
'
2
]
HB
'
3
]].
destruct
(
proj1
(
subset_to_Idx_correct
PB
B
'
)
HB
'1
)
as
[
i
Hi
];
rewrite
Hi
in
*
.
exists
i
;
easy
.
(
*
*
)
intros
[
i
[
Hi1
Hi2
]].
exists
(
subset_to_Idx
PB
i
);
repeat
split
;
try
easy
.
apply
subset_to_Idx_correct
;
exists
i
;
easy
.
Qed
.
(
*
Still
useful
?
Lemma
is_topo_basis_equiv
:
Lemma
is_topo_basis_equiv
:
forall
{
T
:
UniformSpace
}
{
Idx
:
Type
}
(
B
:
Idx
->
T
->
Prop
),
forall
{
Idx
:
Type
}
(
B
:
Idx
->
T
->
Prop
),
(
forall
i
,
open
(
B
i
))
->
(
forall
i
,
open
(
B
i
))
->
is_topo_basis
B
<->
is_topo_basis
B
<->
(
forall
A
(
x
:
T
),
open
A
->
A
x
->
exists
i
,
B
i
x
/
\
forall
y
,
B
i
y
->
A
y
).
(
forall
A
(
x
:
T
),
open
A
->
A
x
->
exists
i
,
B
i
x
/
\
forall
y
,
B
i
y
->
A
y
).
Proof
.
Proof
.
intros
T
Idx
B
HB1
;
split
;
intros
HB2
.
intros
Idx
B
HB1
;
split
;
intros
HB2
.
(
*
*
)
(
*
*
)
intros
A
x
HA
Hx
.
intros
A
x
HA
Hx
.
destruct
(
proj2
HB2
A
HA
)
as
[
P
HP
].
destruct
(
proj1
(
HP
x
)
Hx
)
as
[
i
[
Hi1
Hi2
]].
destruct
(
proj2
HB2
A
HA
)
as
[
P
HP
].
destruct
(
proj1
(
HP
x
)
Hx
)
as
[
i
[
Hi1
Hi2
]].
...
@@ -316,15 +378,18 @@ intros x; split.
...
@@ -316,15 +378,18 @@ intros x; split.
intros
Hx
;
destruct
(
HB2
A
x
HA
Hx
)
as
[
i
[
Hi1
Hi2
]];
exists
i
;
easy
.
intros
Hx
;
destruct
(
HB2
A
x
HA
Hx
)
as
[
i
[
Hi1
Hi2
]];
exists
i
;
easy
.
intros
[
i
[
Hi1
Hi2
]];
auto
.
intros
[
i
[
Hi1
Hi2
]];
auto
.
Qed
.
Qed
.
*
)
Context
{
K1
K2
:
AbsRing
}
.
Let
T1
:=
AbsRing_UniformSpace
K1
.
Let
T2
:=
AbsRing_UniformSpace
K2
.
Lemma
topo_basis_Prod_correct
:
Lemma
topo_basis_Prod_correct
:
forall
{
K1
K2
}
,
forall
(
B1
:
nat
->
T1
->
Prop
)
(
B2
:
nat
->
T2
->
Prop
),
let
T1
:=
AbsRing_UniformSpace
K1
in
is_topo_basis
B1
->
is_topo_basis
B2
->
is_topo_basis
(
topo_basis_Prod
B1
B2
).
let
T2
:=
AbsRing_UniformSpace
K2
in
forall
(
B1
:
nat
->
T1
->
Prop
)
(
B2
:
nat
->
T2
->
Prop
),
is_topo_basis
B1
->
is_topo_basis
B2
->
is_topo_basis
(
topo_basis_Prod
B1
B2
).
Proof
.
Proof
.
intros
K1
K2
T1
T2
B1
B2
[
HB1a
HB1b
]
[
HB2a
HB2b
];
split
.
intros
B1
B2
[
HB1a
HB1b
]
[
HB2a
HB2b
];
split
.
(
*
*
)
(
*
*
)
intros
;
apply
open_prod
;
auto
.
intros
;
apply
open_prod
;
auto
.
(
*
*
)
(
*
*
)
...
@@ -353,14 +418,10 @@ intros [n [Hn1 Hn2]]; auto.
...
@@ -353,14 +418,10 @@ intros [n [Hn1 Hn2]]; auto.
Qed
.
Qed
.
Lemma
is_second_countable_Prod
:
Lemma
is_second_countable_Prod
:
forall
{
K1
K2
}
,
is_second_countable
T1
->
is_second_countable
T2
->
let
T1
:=
AbsRing_UniformSpace
K1
in
is_second_countable
(
prod_UniformSpace
T1
T2
).
let
T2
:=
AbsRing_UniformSpace
K2
in
Proof
.
is_second_countable
T1
->
is_second_countable
T2
->
intros
[
B1
HB1
]
[
B2
HB2
];
exists
(
topo_basis_Prod
B1
B2
).
is_second_countable
(
prod_UniformSpace
T1
T2
).
Proof
.
intros
K1
K2
T1
T2
[
B1
HB1
]
[
B2
HB2
].
exists
(
topo_basis_Prod
B1
B2
).
apply
topo_basis_Prod_correct
;
easy
.
apply
topo_basis_Prod_correct
;
easy
.
Qed
.
Qed
.
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment