Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Iris
RefinedC
Commits
5461c895
Commit
5461c895
authored
May 25, 2021
by
Michael Sammler
Browse files
update talk demo
parent
8e7a73c2
Changes
6
Show whitespace changes
Inline
Side-by-side
examples/proofs/talk_demo1/generated_code.v
View file @
5461c895
...
...
@@ -32,56 +32,56 @@ Section code.
Definition
loc_25
:
location_info
:
=
LocationInfo
file_0
12
6
12
7
.
Definition
loc_26
:
location_info
:
=
LocationInfo
file_0
12
6
12
7
.
Definition
loc_27
:
location_info
:
=
LocationInfo
file_0
12
11
12
25
.
Definition
loc_30
:
location_info
:
=
LocationInfo
file_0
2
1
2
2
1
61
.
Definition
loc_31
:
location_info
:
=
LocationInfo
file_0
2
2
2
2
2
17
.
Definition
loc_32
:
location_info
:
=
LocationInfo
file_0
2
2
18
2
2
47
.
Definition
loc_33
:
location_info
:
=
LocationInfo
file_0
2
3
2
2
3
61
.
Definition
loc_34
:
location_info
:
=
LocationInfo
file_0
2
4
2
2
4
17
.
Definition
loc_35
:
location_info
:
=
LocationInfo
file_0
2
4
18
2
4
47
.
Definition
loc_36
:
location_info
:
=
LocationInfo
file_0
2
5
2
2
5
24
.
Definition
loc_37
:
location_info
:
=
LocationInfo
file_0
2
6
2
2
8
3
.
Definition
loc_38
:
location_info
:
=
LocationInfo
file_0
2
6
30
2
8
3
.
Definition
loc_39
:
location_info
:
=
LocationInfo
file_0
2
7
4
2
7
28
.
Definition
loc_40
:
location_info
:
=
LocationInfo
file_0
2
7
11
2
7
26
.
Definition
loc_41
:
location_info
:
=
LocationInfo
file_0
2
7
11
2
7
21
.
Definition
loc_42
:
location_info
:
=
LocationInfo
file_0
2
7
11
2
7
21
.
Definition
loc_43
:
location_info
:
=
LocationInfo
file_0
2
7
11
2
7
16
.
Definition
loc_44
:
location_info
:
=
LocationInfo
file_0
2
7
11
2
7
16
.
Definition
loc_45
:
location_info
:
=
LocationInfo
file_0
2
7
25
2
7
26
.
Definition
loc_47
:
location_info
:
=
LocationInfo
file_0
2
6
5
2
6
28
.
Definition
loc_48
:
location_info
:
=
LocationInfo
file_0
2
6
5
2
6
10
.
Definition
loc_49
:
location_info
:
=
LocationInfo
file_0
2
6
5
2
6
10
.
Definition
loc_50
:
location_info
:
=
LocationInfo
file_0
2
6
14
2
6
28
.
Definition
loc_51
:
location_info
:
=
LocationInfo
file_0
2
5
2
2
5
8
.
Definition
loc_52
:
location_info
:
=
LocationInfo
file_0
2
5
2
2
5
8
.
Definition
loc_53
:
location_info
:
=
LocationInfo
file_0
2
5
9
2
5
15
.
Definition
loc_54
:
location_info
:
=
LocationInfo
file_0
2
5
10
2
5
15
.
Definition
loc_55
:
location_info
:
=
LocationInfo
file_0
2
5
17
2
5
22
.
Definition
loc_56
:
location_info
:
=
LocationInfo
file_0
2
5
17
2
5
22
.
Definition
loc_57
:
location_info
:
=
LocationInfo
file_0
2
4
18
2
4
29
.
Definition
loc_58
:
location_info
:
=
LocationInfo
file_0
2
4
18
2
4
23
.
Definition
loc_59
:
location_info
:
=
LocationInfo
file_0
2
4
18
2
4
23
.
Definition
loc_60
:
location_info
:
=
LocationInfo
file_0
2
4
32
2
4
46
.
Definition
loc_61
:
location_info
:
=
LocationInfo
file_0
2
4
2
2
4
12
.
Definition
loc_62
:
location_info
:
=
LocationInfo
file_0
2
4
2
2
4
7
.
Definition
loc_63
:
location_info
:
=
LocationInfo
file_0
2
4
2
2
4
7
.
Definition
loc_64
:
location_info
:
=
LocationInfo
file_0
2
4
15
2
4
16
.
Definition
loc_65
:
location_info
:
=
LocationInfo
file_0
2
3
29
2
3
60
.
Definition
loc_66
:
location_info
:
=
LocationInfo
file_0
2
3
29
2
3
34
.
Definition
loc_67
:
location_info
:
=
LocationInfo
file_0
2
3
29
2
3
34
.
Definition
loc_68
:
location_info
:
=
LocationInfo
file_0
2
3
35
2
3
59
.
Definition
loc_71
:
location_info
:
=
LocationInfo
file_0
2
2
18
2
2
29
.
Definition
loc_72
:
location_info
:
=
LocationInfo
file_0
2
2
18
2
2
23
.
Definition
loc_73
:
location_info
:
=
LocationInfo
file_0
2
2
18
2
2
23
.
Definition
loc_74
:
location_info
:
=
LocationInfo
file_0
2
2
32
2
2
46
.
Definition
loc_75
:
location_info
:
=
LocationInfo
file_0
2
2
2
2
2
12
.
Definition
loc_76
:
location_info
:
=
LocationInfo
file_0
2
2
2
2
2
7
.
Definition
loc_77
:
location_info
:
=
LocationInfo
file_0
2
2
2
2
2
7
.
Definition
loc_78
:
location_info
:
=
LocationInfo
file_0
2
2
15
2
2
16
.
Definition
loc_79
:
location_info
:
=
LocationInfo
file_0
2
1
29
2
1
60
.
Definition
loc_80
:
location_info
:
=
LocationInfo
file_0
2
1
29
2
1
34
.
Definition
loc_81
:
location_info
:
=
LocationInfo
file_0
2
1
29
2
1
34
.
Definition
loc_82
:
location_info
:
=
LocationInfo
file_0
2
1
35
2
1
59
.
Definition
loc_30
:
location_info
:
=
LocationInfo
file_0
2
0
2
2
0
61
.
Definition
loc_31
:
location_info
:
=
LocationInfo
file_0
2
1
2
2
1
17
.
Definition
loc_32
:
location_info
:
=
LocationInfo
file_0
2
1
18
2
1
47
.
Definition
loc_33
:
location_info
:
=
LocationInfo
file_0
2
2
2
2
2
61
.
Definition
loc_34
:
location_info
:
=
LocationInfo
file_0
2
3
2
2
3
17
.
Definition
loc_35
:
location_info
:
=
LocationInfo
file_0
2
3
18
2
3
47
.
Definition
loc_36
:
location_info
:
=
LocationInfo
file_0
2
4
2
2
4
24
.
Definition
loc_37
:
location_info
:
=
LocationInfo
file_0
2
5
2
2
7
3
.
Definition
loc_38
:
location_info
:
=
LocationInfo
file_0
2
5
30
2
7
3
.
Definition
loc_39
:
location_info
:
=
LocationInfo
file_0
2
6
4
2
6
28
.
Definition
loc_40
:
location_info
:
=
LocationInfo
file_0
2
6
11
2
6
26
.
Definition
loc_41
:
location_info
:
=
LocationInfo
file_0
2
6
11
2
6
21
.
Definition
loc_42
:
location_info
:
=
LocationInfo
file_0
2
6
11
2
6
21
.
Definition
loc_43
:
location_info
:
=
LocationInfo
file_0
2
6
11
2
6
16
.
Definition
loc_44
:
location_info
:
=
LocationInfo
file_0
2
6
11
2
6
16
.
Definition
loc_45
:
location_info
:
=
LocationInfo
file_0
2
6
25
2
6
26
.
Definition
loc_47
:
location_info
:
=
LocationInfo
file_0
2
5
5
2
5
28
.
Definition
loc_48
:
location_info
:
=
LocationInfo
file_0
2
5
5
2
5
10
.
Definition
loc_49
:
location_info
:
=
LocationInfo
file_0
2
5
5
2
5
10
.
Definition
loc_50
:
location_info
:
=
LocationInfo
file_0
2
5
14
2
5
28
.
Definition
loc_51
:
location_info
:
=
LocationInfo
file_0
2
4
2
2
4
8
.
Definition
loc_52
:
location_info
:
=
LocationInfo
file_0
2
4
2
2
4
8
.
Definition
loc_53
:
location_info
:
=
LocationInfo
file_0
2
4
9
2
4
15
.
Definition
loc_54
:
location_info
:
=
LocationInfo
file_0
2
4
10
2
4
15
.
Definition
loc_55
:
location_info
:
=
LocationInfo
file_0
2
4
17
2
4
22
.
Definition
loc_56
:
location_info
:
=
LocationInfo
file_0
2
4
17
2
4
22
.
Definition
loc_57
:
location_info
:
=
LocationInfo
file_0
2
3
18
2
3
29
.
Definition
loc_58
:
location_info
:
=
LocationInfo
file_0
2
3
18
2
3
23
.
Definition
loc_59
:
location_info
:
=
LocationInfo
file_0
2
3
18
2
3
23
.
Definition
loc_60
:
location_info
:
=
LocationInfo
file_0
2
3
32
2
3
46
.
Definition
loc_61
:
location_info
:
=
LocationInfo
file_0
2
3
2
2
3
12
.
Definition
loc_62
:
location_info
:
=
LocationInfo
file_0
2
3
2
2
3
7
.
Definition
loc_63
:
location_info
:
=
LocationInfo
file_0
2
3
2
2
3
7
.
Definition
loc_64
:
location_info
:
=
LocationInfo
file_0
2
3
15
2
3
16
.
Definition
loc_65
:
location_info
:
=
LocationInfo
file_0
2
2
29
2
2
60
.
Definition
loc_66
:
location_info
:
=
LocationInfo
file_0
2
2
29
2
2
34
.
Definition
loc_67
:
location_info
:
=
LocationInfo
file_0
2
2
29
2
2
34
.
Definition
loc_68
:
location_info
:
=
LocationInfo
file_0
2
2
35
2
2
59
.
Definition
loc_71
:
location_info
:
=
LocationInfo
file_0
2
1
18
2
1
29
.
Definition
loc_72
:
location_info
:
=
LocationInfo
file_0
2
1
18
2
1
23
.
Definition
loc_73
:
location_info
:
=
LocationInfo
file_0
2
1
18
2
1
23
.
Definition
loc_74
:
location_info
:
=
LocationInfo
file_0
2
1
32
2
1
46
.
Definition
loc_75
:
location_info
:
=
LocationInfo
file_0
2
1
2
2
1
12
.
Definition
loc_76
:
location_info
:
=
LocationInfo
file_0
2
1
2
2
1
7
.
Definition
loc_77
:
location_info
:
=
LocationInfo
file_0
2
1
2
2
1
7
.
Definition
loc_78
:
location_info
:
=
LocationInfo
file_0
2
1
15
2
1
16
.
Definition
loc_79
:
location_info
:
=
LocationInfo
file_0
2
0
29
2
0
60
.
Definition
loc_80
:
location_info
:
=
LocationInfo
file_0
2
0
29
2
0
34
.
Definition
loc_81
:
location_info
:
=
LocationInfo
file_0
2
0
29
2
0
34
.
Definition
loc_82
:
location_info
:
=
LocationInfo
file_0
2
0
35
2
0
59
.
(* Definition of struct [list_node]. *)
Program
Definition
struct_list_node
:
=
{|
...
...
examples/proofs/talk_demo2/generated_code.v
View file @
5461c895
...
...
@@ -41,47 +41,40 @@ Section code.
Definition
loc_36
:
location_info
:
=
LocationInfo
file_0
29
2
29
24
.
Definition
loc_37
:
location_info
:
=
LocationInfo
file_0
30
2
32
3
.
Definition
loc_38
:
location_info
:
=
LocationInfo
file_0
30
30
32
3
.
Definition
loc_39
:
location_info
:
=
LocationInfo
file_0
31
4
31
28
.
Definition
loc_40
:
location_info
:
=
LocationInfo
file_0
31
11
31
26
.
Definition
loc_41
:
location_info
:
=
LocationInfo
file_0
31
11
31
21
.
Definition
loc_42
:
location_info
:
=
LocationInfo
file_0
31
11
31
21
.
Definition
loc_43
:
location_info
:
=
LocationInfo
file_0
31
11
31
16
.
Definition
loc_44
:
location_info
:
=
LocationInfo
file_0
31
11
31
16
.
Definition
loc_45
:
location_info
:
=
LocationInfo
file_0
31
25
31
26
.
Definition
loc_47
:
location_info
:
=
LocationInfo
file_0
30
5
30
28
.
Definition
loc_48
:
location_info
:
=
LocationInfo
file_0
30
5
30
10
.
Definition
loc_49
:
location_info
:
=
LocationInfo
file_0
30
5
30
10
.
Definition
loc_50
:
location_info
:
=
LocationInfo
file_0
30
14
30
28
.
Definition
loc_51
:
location_info
:
=
LocationInfo
file_0
29
2
29
8
.
Definition
loc_52
:
location_info
:
=
LocationInfo
file_0
29
2
29
8
.
Definition
loc_53
:
location_info
:
=
LocationInfo
file_0
29
9
29
15
.
Definition
loc_54
:
location_info
:
=
LocationInfo
file_0
29
10
29
15
.
Definition
loc_55
:
location_info
:
=
LocationInfo
file_0
29
17
29
22
.
Definition
loc_56
:
location_info
:
=
LocationInfo
file_0
29
17
29
22
.
Definition
loc_57
:
location_info
:
=
LocationInfo
file_0
28
18
28
29
.
Definition
loc_58
:
location_info
:
=
LocationInfo
file_0
28
18
28
23
.
Definition
loc_59
:
location_info
:
=
LocationInfo
file_0
28
18
28
23
.
Definition
loc_60
:
location_info
:
=
LocationInfo
file_0
28
32
28
46
.
Definition
loc_61
:
location_info
:
=
LocationInfo
file_0
28
2
28
12
.
Definition
loc_62
:
location_info
:
=
LocationInfo
file_0
28
2
28
7
.
Definition
loc_63
:
location_info
:
=
LocationInfo
file_0
28
2
28
7
.
Definition
loc_64
:
location_info
:
=
LocationInfo
file_0
28
15
28
16
.
Definition
loc_65
:
location_info
:
=
LocationInfo
file_0
27
29
27
60
.
Definition
loc_66
:
location_info
:
=
LocationInfo
file_0
27
29
27
34
.
Definition
loc_67
:
location_info
:
=
LocationInfo
file_0
27
29
27
34
.
Definition
loc_68
:
location_info
:
=
LocationInfo
file_0
27
35
27
59
.
Definition
loc_71
:
location_info
:
=
LocationInfo
file_0
26
18
26
29
.
Definition
loc_72
:
location_info
:
=
LocationInfo
file_0
26
18
26
23
.
Definition
loc_73
:
location_info
:
=
LocationInfo
file_0
26
18
26
23
.
Definition
loc_74
:
location_info
:
=
LocationInfo
file_0
26
32
26
46
.
Definition
loc_75
:
location_info
:
=
LocationInfo
file_0
26
2
26
12
.
Definition
loc_76
:
location_info
:
=
LocationInfo
file_0
26
2
26
7
.
Definition
loc_77
:
location_info
:
=
LocationInfo
file_0
26
2
26
7
.
Definition
loc_78
:
location_info
:
=
LocationInfo
file_0
26
15
26
16
.
Definition
loc_79
:
location_info
:
=
LocationInfo
file_0
25
29
25
60
.
Definition
loc_80
:
location_info
:
=
LocationInfo
file_0
25
29
25
34
.
Definition
loc_81
:
location_info
:
=
LocationInfo
file_0
25
29
25
34
.
Definition
loc_82
:
location_info
:
=
LocationInfo
file_0
25
35
25
59
.
Definition
loc_40
:
location_info
:
=
LocationInfo
file_0
30
5
30
28
.
Definition
loc_41
:
location_info
:
=
LocationInfo
file_0
30
5
30
10
.
Definition
loc_42
:
location_info
:
=
LocationInfo
file_0
30
5
30
10
.
Definition
loc_43
:
location_info
:
=
LocationInfo
file_0
30
14
30
28
.
Definition
loc_44
:
location_info
:
=
LocationInfo
file_0
29
2
29
8
.
Definition
loc_45
:
location_info
:
=
LocationInfo
file_0
29
2
29
8
.
Definition
loc_46
:
location_info
:
=
LocationInfo
file_0
29
9
29
15
.
Definition
loc_47
:
location_info
:
=
LocationInfo
file_0
29
10
29
15
.
Definition
loc_48
:
location_info
:
=
LocationInfo
file_0
29
17
29
22
.
Definition
loc_49
:
location_info
:
=
LocationInfo
file_0
29
17
29
22
.
Definition
loc_50
:
location_info
:
=
LocationInfo
file_0
28
18
28
29
.
Definition
loc_51
:
location_info
:
=
LocationInfo
file_0
28
18
28
23
.
Definition
loc_52
:
location_info
:
=
LocationInfo
file_0
28
18
28
23
.
Definition
loc_53
:
location_info
:
=
LocationInfo
file_0
28
32
28
46
.
Definition
loc_54
:
location_info
:
=
LocationInfo
file_0
28
2
28
12
.
Definition
loc_55
:
location_info
:
=
LocationInfo
file_0
28
2
28
7
.
Definition
loc_56
:
location_info
:
=
LocationInfo
file_0
28
2
28
7
.
Definition
loc_57
:
location_info
:
=
LocationInfo
file_0
28
15
28
16
.
Definition
loc_58
:
location_info
:
=
LocationInfo
file_0
27
29
27
60
.
Definition
loc_59
:
location_info
:
=
LocationInfo
file_0
27
29
27
34
.
Definition
loc_60
:
location_info
:
=
LocationInfo
file_0
27
29
27
34
.
Definition
loc_61
:
location_info
:
=
LocationInfo
file_0
27
35
27
59
.
Definition
loc_64
:
location_info
:
=
LocationInfo
file_0
26
18
26
29
.
Definition
loc_65
:
location_info
:
=
LocationInfo
file_0
26
18
26
23
.
Definition
loc_66
:
location_info
:
=
LocationInfo
file_0
26
18
26
23
.
Definition
loc_67
:
location_info
:
=
LocationInfo
file_0
26
32
26
46
.
Definition
loc_68
:
location_info
:
=
LocationInfo
file_0
26
2
26
12
.
Definition
loc_69
:
location_info
:
=
LocationInfo
file_0
26
2
26
7
.
Definition
loc_70
:
location_info
:
=
LocationInfo
file_0
26
2
26
7
.
Definition
loc_71
:
location_info
:
=
LocationInfo
file_0
26
15
26
16
.
Definition
loc_72
:
location_info
:
=
LocationInfo
file_0
25
29
25
60
.
Definition
loc_73
:
location_info
:
=
LocationInfo
file_0
25
29
25
34
.
Definition
loc_74
:
location_info
:
=
LocationInfo
file_0
25
29
25
34
.
Definition
loc_75
:
location_info
:
=
LocationInfo
file_0
25
35
25
59
.
(* Definition of struct [list_node]. *)
Program
Definition
struct_list_node
:
=
{|
...
...
@@ -140,35 +133,32 @@ Section code.
f_code
:
=
(
<[
"#0"
:
=
"node1"
<-{
void
*
}
LocInfoE
loc_7
9
(
UnOp
(
CastOp
$
PtrOp
)
(
PtrOp
)
(
LocInfoE
loc_7
9
(
Call
(
LocInfoE
loc_
81
(
global_alloc
))
[@{
expr
}
LocInfoE
loc_
82
(
i2v
(
layout_of
struct_list_node
).(
ly_size
)
size_t
)
])))
;
LocInfoE
loc_7
2
(
UnOp
(
CastOp
$
PtrOp
)
(
PtrOp
)
(
LocInfoE
loc_7
2
(
Call
(
LocInfoE
loc_
74
(
global_alloc
))
[@{
expr
}
LocInfoE
loc_
75
(
i2v
(
layout_of
struct_list_node
).(
ly_size
)
size_t
)
])))
;
locinfo
:
loc_31
;
LocInfoE
loc_
75
((
LocInfoE
loc_
7
6
(!{
void
*}
(
LocInfoE
loc_7
7
(
"node1"
))))
at
{
struct_list_node
}
"val"
)
<-{
it_layout
i32
}
LocInfoE
loc_7
8
(
i2v
1
i32
)
;
LocInfoE
loc_
68
((
LocInfoE
loc_6
9
(!{
void
*}
(
LocInfoE
loc_7
0
(
"node1"
))))
at
{
struct_list_node
}
"val"
)
<-{
it_layout
i32
}
LocInfoE
loc_7
1
(
i2v
1
i32
)
;
locinfo
:
loc_32
;
LocInfoE
loc_
71
((
LocInfoE
loc_
72
(!{
void
*}
(
LocInfoE
loc_
73
(
"node1"
))))
at
{
struct_list_node
}
"next"
)
<-{
void
*
}
LocInfoE
loc_7
4
(
NULL
)
;
LocInfoE
loc_
64
((
LocInfoE
loc_
65
(!{
void
*}
(
LocInfoE
loc_
66
(
"node1"
))))
at
{
struct_list_node
}
"next"
)
<-{
void
*
}
LocInfoE
loc_
6
7
(
NULL
)
;
"node2"
<-{
void
*
}
LocInfoE
loc_
6
5
(
UnOp
(
CastOp
$
PtrOp
)
(
PtrOp
)
(
LocInfoE
loc_
6
5
(
Call
(
LocInfoE
loc_6
7
(
global_alloc
))
[@{
expr
}
LocInfoE
loc_6
8
(
i2v
(
layout_of
struct_list_node
).(
ly_size
)
size_t
)
])))
;
LocInfoE
loc_5
8
(
UnOp
(
CastOp
$
PtrOp
)
(
PtrOp
)
(
LocInfoE
loc_5
8
(
Call
(
LocInfoE
loc_6
0
(
global_alloc
))
[@{
expr
}
LocInfoE
loc_6
1
(
i2v
(
layout_of
struct_list_node
).(
ly_size
)
size_t
)
])))
;
locinfo
:
loc_34
;
LocInfoE
loc_
61
((
LocInfoE
loc_
62
(!{
void
*}
(
LocInfoE
loc_6
3
(
"node2"
))))
at
{
struct_list_node
}
"val"
)
<-{
it_layout
i32
}
LocInfoE
loc_
64
(
i2v
2
i32
)
;
LocInfoE
loc_
54
((
LocInfoE
loc_
55
(!{
void
*}
(
LocInfoE
loc_
5
6
(
"node2"
))))
at
{
struct_list_node
}
"val"
)
<-{
it_layout
i32
}
LocInfoE
loc_
57
(
i2v
2
i32
)
;
locinfo
:
loc_35
;
LocInfoE
loc_5
7
((
LocInfoE
loc_5
8
(!{
void
*}
(
LocInfoE
loc_5
9
(
"node2"
))))
at
{
struct_list_node
}
"next"
)
<-{
void
*
}
LocInfoE
loc_
60
(
NULL
)
;
LocInfoE
loc_5
0
((
LocInfoE
loc_5
1
(!{
void
*}
(
LocInfoE
loc_5
2
(
"node2"
))))
at
{
struct_list_node
}
"next"
)
<-{
void
*
}
LocInfoE
loc_
53
(
NULL
)
;
locinfo
:
loc_36
;
expr
:
(
LocInfoE
loc_36
(
Call
(
LocInfoE
loc_5
2
(
global_append
))
[@{
expr
}
LocInfoE
loc_
53
(&(
LocInfoE
loc_
5
4
(
"node1"
)))
;
LocInfoE
loc_
55
(
use
{
void
*}
(
LocInfoE
loc_
56
(
"node2"
)))
]))
;
locinfo
:
loc_4
7
;
if
:
LocInfoE
loc_4
7
(
UnOp
(
CastOp
$
IntOp
bool_it
)
(
IntOp
i32
)
(
LocInfoE
loc_4
7
((
LocInfoE
loc_4
8
(
use
{
void
*}
(
LocInfoE
loc_4
9
(
"node1"
))))
!={
PtrOp
,
PtrOp
}
(
LocInfoE
loc_
50
(
NULL
)))))
expr
:
(
LocInfoE
loc_36
(
Call
(
LocInfoE
loc_
4
5
(
global_append
))
[@{
expr
}
LocInfoE
loc_
46
(&(
LocInfoE
loc_4
7
(
"node1"
)))
;
LocInfoE
loc_
48
(
use
{
void
*}
(
LocInfoE
loc_
49
(
"node2"
)))
]))
;
locinfo
:
loc_4
0
;
if
:
LocInfoE
loc_4
0
(
UnOp
(
CastOp
$
IntOp
bool_it
)
(
IntOp
i32
)
(
LocInfoE
loc_4
0
((
LocInfoE
loc_4
1
(
use
{
void
*}
(
LocInfoE
loc_4
2
(
"node1"
))))
!={
PtrOp
,
PtrOp
}
(
LocInfoE
loc_
43
(
NULL
)))))
then
locinfo
:
loc_39
;
Goto
"#1"
else
Goto
"#2"
]>
$
<[
"#1"
:
=
locinfo
:
loc_39
;
assert
:
(
LocInfoE
loc_40
(
UnOp
(
CastOp
$
IntOp
bool_it
)
(
IntOp
i32
)
(
LocInfoE
loc_40
((
LocInfoE
loc_41
(
use
{
it_layout
i32
}
(
LocInfoE
loc_42
((
LocInfoE
loc_43
(!{
void
*}
(
LocInfoE
loc_44
(
"node1"
))))
at
{
struct_list_node
}
"val"
))))
={
IntOp
i32
,
IntOp
i32
}
(
LocInfoE
loc_45
(
i2v
1
i32
))))))
;
Return
(
VOID
)
]>
$
<[
"#2"
:
=
...
...
examples/proofs/talk_demo3/generated_code.v
View file @
5461c895
...
...
@@ -41,47 +41,40 @@ Section code.
Definition
loc_36
:
location_info
:
=
LocationInfo
file_0
34
2
34
24
.
Definition
loc_37
:
location_info
:
=
LocationInfo
file_0
35
2
37
3
.
Definition
loc_38
:
location_info
:
=
LocationInfo
file_0
35
30
37
3
.
Definition
loc_39
:
location_info
:
=
LocationInfo
file_0
36
4
36
28
.
Definition
loc_40
:
location_info
:
=
LocationInfo
file_0
36
11
36
26
.
Definition
loc_41
:
location_info
:
=
LocationInfo
file_0
36
11
36
21
.
Definition
loc_42
:
location_info
:
=
LocationInfo
file_0
36
11
36
21
.
Definition
loc_43
:
location_info
:
=
LocationInfo
file_0
36
11
36
16
.
Definition
loc_44
:
location_info
:
=
LocationInfo
file_0
36
11
36
16
.
Definition
loc_45
:
location_info
:
=
LocationInfo
file_0
36
25
36
26
.
Definition
loc_47
:
location_info
:
=
LocationInfo
file_0
35
5
35
28
.
Definition
loc_48
:
location_info
:
=
LocationInfo
file_0
35
5
35
10
.
Definition
loc_49
:
location_info
:
=
LocationInfo
file_0
35
5
35
10
.
Definition
loc_50
:
location_info
:
=
LocationInfo
file_0
35
14
35
28
.
Definition
loc_51
:
location_info
:
=
LocationInfo
file_0
34
2
34
8
.
Definition
loc_52
:
location_info
:
=
LocationInfo
file_0
34
2
34
8
.
Definition
loc_53
:
location_info
:
=
LocationInfo
file_0
34
9
34
15
.
Definition
loc_54
:
location_info
:
=
LocationInfo
file_0
34
10
34
15
.
Definition
loc_55
:
location_info
:
=
LocationInfo
file_0
34
17
34
22
.
Definition
loc_56
:
location_info
:
=
LocationInfo
file_0
34
17
34
22
.
Definition
loc_57
:
location_info
:
=
LocationInfo
file_0
33
18
33
29
.
Definition
loc_58
:
location_info
:
=
LocationInfo
file_0
33
18
33
23
.
Definition
loc_59
:
location_info
:
=
LocationInfo
file_0
33
18
33
23
.
Definition
loc_60
:
location_info
:
=
LocationInfo
file_0
33
32
33
46
.
Definition
loc_61
:
location_info
:
=
LocationInfo
file_0
33
2
33
12
.
Definition
loc_62
:
location_info
:
=
LocationInfo
file_0
33
2
33
7
.
Definition
loc_63
:
location_info
:
=
LocationInfo
file_0
33
2
33
7
.
Definition
loc_64
:
location_info
:
=
LocationInfo
file_0
33
15
33
16
.
Definition
loc_65
:
location_info
:
=
LocationInfo
file_0
32
29
32
60
.
Definition
loc_66
:
location_info
:
=
LocationInfo
file_0
32
29
32
34
.
Definition
loc_67
:
location_info
:
=
LocationInfo
file_0
32
29
32
34
.
Definition
loc_68
:
location_info
:
=
LocationInfo
file_0
32
35
32
59
.
Definition
loc_71
:
location_info
:
=
LocationInfo
file_0
31
18
31
29
.
Definition
loc_72
:
location_info
:
=
LocationInfo
file_0
31
18
31
23
.
Definition
loc_73
:
location_info
:
=
LocationInfo
file_0
31
18
31
23
.
Definition
loc_74
:
location_info
:
=
LocationInfo
file_0
31
32
31
46
.
Definition
loc_75
:
location_info
:
=
LocationInfo
file_0
31
2
31
12
.
Definition
loc_76
:
location_info
:
=
LocationInfo
file_0
31
2
31
7
.
Definition
loc_77
:
location_info
:
=
LocationInfo
file_0
31
2
31
7
.
Definition
loc_78
:
location_info
:
=
LocationInfo
file_0
31
15
31
16
.
Definition
loc_79
:
location_info
:
=
LocationInfo
file_0
30
29
30
60
.
Definition
loc_80
:
location_info
:
=
LocationInfo
file_0
30
29
30
34
.
Definition
loc_81
:
location_info
:
=
LocationInfo
file_0
30
29
30
34
.
Definition
loc_82
:
location_info
:
=
LocationInfo
file_0
30
35
30
59
.
Definition
loc_40
:
location_info
:
=
LocationInfo
file_0
35
5
35
28
.
Definition
loc_41
:
location_info
:
=
LocationInfo
file_0
35
5
35
10
.
Definition
loc_42
:
location_info
:
=
LocationInfo
file_0
35
5
35
10
.
Definition
loc_43
:
location_info
:
=
LocationInfo
file_0
35
14
35
28
.
Definition
loc_44
:
location_info
:
=
LocationInfo
file_0
34
2
34
8
.
Definition
loc_45
:
location_info
:
=
LocationInfo
file_0
34
2
34
8
.
Definition
loc_46
:
location_info
:
=
LocationInfo
file_0
34
9
34
15
.
Definition
loc_47
:
location_info
:
=
LocationInfo
file_0
34
10
34
15
.
Definition
loc_48
:
location_info
:
=
LocationInfo
file_0
34
17
34
22
.
Definition
loc_49
:
location_info
:
=
LocationInfo
file_0
34
17
34
22
.
Definition
loc_50
:
location_info
:
=
LocationInfo
file_0
33
18
33
29
.
Definition
loc_51
:
location_info
:
=
LocationInfo
file_0
33
18
33
23
.
Definition
loc_52
:
location_info
:
=
LocationInfo
file_0
33
18
33
23
.
Definition
loc_53
:
location_info
:
=
LocationInfo
file_0
33
32
33
46
.
Definition
loc_54
:
location_info
:
=
LocationInfo
file_0
33
2
33
12
.
Definition
loc_55
:
location_info
:
=
LocationInfo
file_0
33
2
33
7
.
Definition
loc_56
:
location_info
:
=
LocationInfo
file_0
33
2
33
7
.
Definition
loc_57
:
location_info
:
=
LocationInfo
file_0
33
15
33
16
.
Definition
loc_58
:
location_info
:
=
LocationInfo
file_0
32
29
32
60
.
Definition
loc_59
:
location_info
:
=
LocationInfo
file_0
32
29
32
34
.
Definition
loc_60
:
location_info
:
=
LocationInfo
file_0
32
29
32
34
.
Definition
loc_61
:
location_info
:
=
LocationInfo
file_0
32
35
32
59
.
Definition
loc_64
:
location_info
:
=
LocationInfo
file_0
31
18
31
29
.
Definition
loc_65
:
location_info
:
=
LocationInfo
file_0
31
18
31
23
.
Definition
loc_66
:
location_info
:
=
LocationInfo
file_0
31
18
31
23
.
Definition
loc_67
:
location_info
:
=
LocationInfo
file_0
31
32
31
46
.
Definition
loc_68
:
location_info
:
=
LocationInfo
file_0
31
2
31
12
.
Definition
loc_69
:
location_info
:
=
LocationInfo
file_0
31
2
31
7
.
Definition
loc_70
:
location_info
:
=
LocationInfo
file_0
31
2
31
7
.
Definition
loc_71
:
location_info
:
=
LocationInfo
file_0
31
15
31
16
.
Definition
loc_72
:
location_info
:
=
LocationInfo
file_0
30
29
30
60
.
Definition
loc_73
:
location_info
:
=
LocationInfo
file_0
30
29
30
34
.
Definition
loc_74
:
location_info
:
=
LocationInfo
file_0
30
29
30
34
.
Definition
loc_75
:
location_info
:
=
LocationInfo
file_0
30
35
30
59
.
(* Definition of struct [list_node]. *)
Program
Definition
struct_list_node
:
=
{|
...
...
@@ -140,35 +133,32 @@ Section code.
f_code
:
=
(
<[
"#0"
:
=
"node1"
<-{
void
*
}
LocInfoE
loc_7
9
(
UnOp
(
CastOp
$
PtrOp
)
(
PtrOp
)
(
LocInfoE
loc_7
9
(
Call
(
LocInfoE
loc_
81
(
global_alloc
))
[@{
expr
}
LocInfoE
loc_
82
(
i2v
(
layout_of
struct_list_node
).(
ly_size
)
size_t
)
])))
;
LocInfoE
loc_7
2
(
UnOp
(
CastOp
$
PtrOp
)
(
PtrOp
)
(
LocInfoE
loc_7
2
(
Call
(
LocInfoE
loc_
74
(
global_alloc
))
[@{
expr
}
LocInfoE
loc_
75
(
i2v
(
layout_of
struct_list_node
).(
ly_size
)
size_t
)
])))
;
locinfo
:
loc_31
;
LocInfoE
loc_
75
((
LocInfoE
loc_
7
6
(!{
void
*}
(
LocInfoE
loc_7
7
(
"node1"
))))
at
{
struct_list_node
}
"val"
)
<-{
it_layout
i32
}
LocInfoE
loc_7
8
(
i2v
1
i32
)
;
LocInfoE
loc_
68
((
LocInfoE
loc_6
9
(!{
void
*}
(
LocInfoE
loc_7
0
(
"node1"
))))
at
{
struct_list_node
}
"val"
)
<-{
it_layout
i32
}
LocInfoE
loc_7
1
(
i2v
1
i32
)
;
locinfo
:
loc_32
;
LocInfoE
loc_
71
((
LocInfoE
loc_
72
(!{
void
*}
(
LocInfoE
loc_
73
(
"node1"
))))
at
{
struct_list_node
}
"next"
)
<-{
void
*
}
LocInfoE
loc_7
4
(
NULL
)
;
LocInfoE
loc_
64
((
LocInfoE
loc_
65
(!{
void
*}
(
LocInfoE
loc_
66
(
"node1"
))))
at
{
struct_list_node
}
"next"
)
<-{
void
*
}
LocInfoE
loc_
6
7
(
NULL
)
;
"node2"
<-{
void
*
}
LocInfoE
loc_
6
5
(
UnOp
(
CastOp
$
PtrOp
)
(
PtrOp
)
(
LocInfoE
loc_
6
5
(
Call
(
LocInfoE
loc_6
7
(
global_alloc
))
[@{
expr
}
LocInfoE
loc_6
8
(
i2v
(
layout_of
struct_list_node
).(
ly_size
)
size_t
)
])))
;
LocInfoE
loc_5
8
(
UnOp
(
CastOp
$
PtrOp
)
(
PtrOp
)
(
LocInfoE
loc_5
8
(
Call
(
LocInfoE
loc_6
0
(
global_alloc
))
[@{
expr
}
LocInfoE
loc_6
1
(
i2v
(
layout_of
struct_list_node
).(
ly_size
)
size_t
)
])))
;
locinfo
:
loc_34
;
LocInfoE
loc_
61
((
LocInfoE
loc_
62
(!{
void
*}
(
LocInfoE
loc_6
3
(
"node2"
))))
at
{
struct_list_node
}
"val"
)
<-{
it_layout
i32
}
LocInfoE
loc_
64
(
i2v
2
i32
)
;
LocInfoE
loc_
54
((
LocInfoE
loc_
55
(!{
void
*}
(
LocInfoE
loc_
5
6
(
"node2"
))))
at
{
struct_list_node
}
"val"
)
<-{
it_layout
i32
}
LocInfoE
loc_
57
(
i2v
2
i32
)
;
locinfo
:
loc_35
;
LocInfoE
loc_5
7
((
LocInfoE
loc_5
8
(!{
void
*}
(
LocInfoE
loc_5
9
(
"node2"
))))
at
{
struct_list_node
}
"next"
)
<-{
void
*
}
LocInfoE
loc_
60
(
NULL
)
;
LocInfoE
loc_5
0
((
LocInfoE
loc_5
1
(!{
void
*}
(
LocInfoE
loc_5
2
(
"node2"
))))
at
{
struct_list_node
}
"next"
)
<-{
void
*
}
LocInfoE
loc_
53
(
NULL
)
;
locinfo
:
loc_36
;
expr
:
(
LocInfoE
loc_36
(
Call
(
LocInfoE
loc_5
2
(
global_append
))
[@{
expr
}
LocInfoE
loc_
53
(&(
LocInfoE
loc_
5
4
(
"node1"
)))
;
LocInfoE
loc_
55
(
use
{
void
*}
(
LocInfoE
loc_
56
(
"node2"
)))
]))
;
locinfo
:
loc_4
7
;
if
:
LocInfoE
loc_4
7
(
UnOp
(
CastOp
$
IntOp
bool_it
)
(
IntOp
i32
)
(
LocInfoE
loc_4
7
((
LocInfoE
loc_4
8
(
use
{
void
*}
(
LocInfoE
loc_4
9
(
"node1"
))))
!={
PtrOp
,
PtrOp
}
(
LocInfoE
loc_
50
(
NULL
)))))
expr
:
(
LocInfoE
loc_36
(
Call
(
LocInfoE
loc_
4
5
(
global_append
))
[@{
expr
}
LocInfoE
loc_
46
(&(
LocInfoE
loc_4
7
(
"node1"
)))
;
LocInfoE
loc_
48
(
use
{
void
*}
(
LocInfoE
loc_
49
(
"node2"
)))
]))
;
locinfo
:
loc_4
0
;
if
:
LocInfoE
loc_4
0
(
UnOp
(
CastOp
$
IntOp
bool_it
)
(
IntOp
i32
)
(
LocInfoE
loc_4
0
((
LocInfoE
loc_4
1
(
use
{
void
*}
(
LocInfoE
loc_4
2
(
"node1"
))))
!={
PtrOp
,
PtrOp
}
(
LocInfoE
loc_
43
(
NULL
)))))
then
locinfo
:
loc_39
;
Goto
"#1"
else
Goto
"#2"
]>
$
<[
"#1"
:
=
locinfo
:
loc_39
;
assert
:
(
LocInfoE
loc_40
(
UnOp
(
CastOp
$
IntOp
bool_it
)
(
IntOp
i32
)
(
LocInfoE
loc_40
((
LocInfoE
loc_41
(
use
{
it_layout
i32
}
(
LocInfoE
loc_42
((
LocInfoE
loc_43
(!{
void
*}
(
LocInfoE
loc_44
(
"node1"
))))
at
{
struct_list_node
}
"val"
))))
={
IntOp
i32
,
IntOp
i32
}
(
LocInfoE
loc_45
(
i2v
1
i32
))))))
;
Return
(
VOID
)
]>
$
<[
"#2"
:
=
...
...
examples/talk_demo1.c
View file @
5461c895
...
...
@@ -16,7 +16,6 @@ void append(list_t *l, list_t k) {
}
}
/* [[rc::requires("[alloc_initialized]")]] */
void
test
()
{
struct
list_node
*
node1
=
alloc
(
sizeof
(
struct
list_node
));
node1
->
val
=
1
;
node1
->
next
=
NULL
;
...
...
@@ -26,7 +25,4 @@ void test() {
if
(
node1
!=
NULL
)
{
assert
(
node1
->
val
==
1
);
}
/* assert(node1->next->val == 2); */
/* free(sizeof(struct list_node), node1->next); */
/* free(sizeof(struct list_node), node1); */
}
examples/talk_demo2.c
View file @
5461c895
...
...
@@ -28,9 +28,6 @@ void test() {
node2
->
val
=
2
;
node2
->
next
=
NULL
;
append
(
&
node1
,
node2
);
if
(
node1
!=
NULL
)
{
assert
(
node1
->
val
==
1
);
/*
assert(node1->val == 1);
*/
}
/* assert(node1->next->val == 2); */
/* free(sizeof(struct list_node), node1->next); */
/* free(sizeof(struct list_node), node1); */
}
examples/talk_demo3.c
View file @
5461c895
...
...
@@ -33,109 +33,9 @@ void test() {
node2
->
val
=
2
;
node2
->
next
=
NULL
;
append
(
&
node1
,
node2
);
if
(
node1
!=
NULL
)
{
assert
(
node1
->
val
==
1
);
/*
assert(node1->val == 1);
*/
}
/* assert(node1->next->val == 2); */
/* free(sizeof(struct list_node), node1->next); */
/* free(sizeof(struct list_node), node1); */
}
/*
typedef struct
[[rc::refined_by("u : unit")]]
[[rc::ptr_type("list_t : optional<&own<...>, null>")]] list_node {
[[rc::field("int<i32>")]]
int val;
[[rc::field("list_t")]]
struct list_node *next;
} *list_t;
[[rc::args("&own<list_t>", "list_t")]]
void append(list_t *l, list_t k) {
if(*l == NULL) {
*l = k;
} else {
append(&(*l)->next, k);
}
}
*/
/*
[[rc::parameters("p : loc")]]
[[rc::args("p @ &own<list_t>", "list_t")]]
[[rc::ensures("own p : list_t")]]
void append(list_t *l, list_t k) {
if(*l == NULL) {
*l = k;
} else {
append(&(*l)->next, k);
}
}
*/
/*
typedef struct
[[rc::refined_by("xs : {list Z}")]]
[[rc::ptr_type("list_t : {xs <> []} @ optional<&own<...>, null>")]]
[[rc::exists("y : Z", "ys : {list Z}")]]
[[rc::constraints("{xs = y :: ys}")]]
list_node {
[[rc::field("y @ int<i32>")]]
int val;
[[rc::field("ys @ list_t")]]
struct list_node *next;
} *list_t;
*/
/*
[[rc::parameters("p : loc", "xs : {list Z}", "ys : {list Z}")]]
[[rc::args("p @ &own<xs @ list_t>", "ys @ list_t")]]
[[rc::ensures("own p : {xs ++ ys} @ list_t")]]
void append(list_t *l, list_t k) {
if(*l == NULL) {
*l = k;
} else {
append(&(*l)->next, k);
}
}
*/
/*
if (node1 != NULL) {
if (node1->next != NULL) {
rc_unfold(node1->next->next);
free(sizeof(struct list_node), node1->next);
}
free(sizeof(struct list_node), node1);
}
*/
/*
typedef struct
[[rc::refined_by("xs : {list Z}")]]
[[rc::ptr_type("list_t : {xs <> []} @ optional<&own<...>, null>")]]
[[rc::exists("y : Z", "ys : {list Z}")]]
[[rc::constraints("{xs = y :: ys}")]]
list_node {
[[rc::field("y @ int<i32>")]]
int val;