Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
why3
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
125
Issues
125
List
Boards
Labels
Service Desk
Milestones
Merge Requests
16
Merge Requests
16
Operations
Operations
Incidents
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Why3
why3
Commits
f09f05cb
Commit
f09f05cb
authored
Mar 04, 2013
by
Jean-Christophe Filliâtre
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
resizable_array: make it polymorphic, additional invariant
parent
c07f1a25
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
66 additions
and
56 deletions
+66
-56
examples/resizable_array.mlw
examples/resizable_array.mlw
+38
-32
examples/resizable_array/why3session.xml
examples/resizable_array/why3session.xml
+28
-24
No files found.
examples/resizable_array.mlw
View file @
f09f05cb
...
...
@@ -5,50 +5,57 @@ module ResizableArrayImplem
use import int.MinMax
use array.Array as A
type elt
constant dummy: elt
type rarray = { mutable length: int; mutable data: A.array elt }
type rarray 'a =
{ dummy: 'a; mutable length: int; mutable data: A.array 'a }
invariant { 0 <= self.length <= A.length self.data }
invariant { forall i: int. self.length <= i < A.length self.data ->
A.get self.data i = self.dummy }
function ([]) (r: rarray
) (i: int) : elt
= A.get r.data i
function ([<-]) (r: rarray
) (i: int) (v: elt) : rarray
=
function ([]) (r: rarray
'a) (i: int) : 'a
= A.get r.data i
function ([<-]) (r: rarray
'a) (i: int) (v: 'a) : rarray 'a
=
{ r with data = A.set r.data i v }
function make (len: int)
: rarray
=
{ length = len; data = A.make len dummy }
function make (len: int)
(dummy: 'a) : rarray 'a
=
{
dummy = dummy;
length = len; data = A.make len dummy }
let make (len: int)
requires { 0 <= len } ensures { result = make len }
= { length = len; data = A.make len dummy }
let make (len: int) (dummy: 'a) : rarray 'a
requires { 0 <= len } ensures { result = make len dummy }
=
{ dummy = dummy; length = len; data = A.make len dummy }
let ([]) (r: rarray
) (i: int)
let ([]) (r: rarray
'a) (i: int) : 'a
requires { 0 <= i < r.length } ensures { result = r[i] }
= A.([]) r.data i
=
A.([]) r.data i
let ([]<-) (r: rarray
) (i: int) (v: elt)
let ([]<-) (r: rarray
'a) (i: int) (v: 'a) : unit
requires { 0 <= i < r.length } ensures { r = (old r)[i <- v] }
= A.([]<-) r.data i v
=
A.([]<-) r.data i v
let resize (r: rarray
) (len: int)
let resize (r: rarray
'a) (len: int) : unit
requires { 0 <= len }
ensures { r.length = len /\
forall i: int.
0 <= i < min (old r.length) len -> r[i] = (old r)[i] }
= let n = A.length r.data in
ensures { r.length = len }
ensures { forall i: int.
0 <= i < min (old r.length) len -> r[i] = (old r)[i] }
=
let n = A.length r.data in
if len > n then begin
let a = A.make (max len (2 * n)) dummy in
let a = A.make (max len (2 * n))
r.
dummy in
A.blit r.data 0 a 0 n;
r.data <- a
end else begin
A.fill r.data len (n - len) r.dummy
end;
r.length <- len
let append (r1: rarray) (r2: rarray)
ensures { r1.length = old r1.length + r2.length /\
forall i: int. 0 <= i < r1.length ->
(i < old r1.length -> r1[i] = (old r1)[i]) /\
(old r1.length <= i -> r1[i] = r2[i - old r1.length]) }
= let n1 = length r1 in
let append (r1: rarray 'a) (r2: rarray 'a) : unit
ensures { r1.length = old r1.length + r2.length }
ensures { forall i: int. 0 <= i < r1.length ->
(i < old r1.length -> r1[i] = (old r1)[i]) /\
(old r1.length <= i -> r1[i] = r2[i - old r1.length]) }
=
let n1 = length r1 in
resize r1 (length r1 + length r2);
A.blit r2.data 0 r1.data n1 (length r2)
...
...
@@ -81,11 +88,10 @@ end
module Test
use import int.Int
clone import ResizableArrayImplem
with type elt = int, constant dummy = Int.zero
use import ResizableArrayImplem
let test1 () =
let r = make 10 in
let r = make 10
0
in
assert { r.length = 10 };
r[0] <- 17;
resize r 7;
...
...
@@ -93,9 +99,9 @@ module Test
assert { r.length = 7 }
let test2 () =
let r1 = make 10 in
let r1 = make 10
0
in
r1[0] <- 17;
let r2 = make 10 in
let r2 = make 10
0
in
r2[0] <- 42;
append r1 r2;
assert { r1.length = 20 };
...
...
examples/resizable_array/why3session.xml
View file @
f09f05cb
...
...
@@ -5,6 +5,10 @@
id=
"0"
name=
"Alt-Ergo"
version=
"0.94"
/>
<prover
id=
"1"
name=
"Alt-Ergo"
version=
"0.95"
/>
<file
name=
"../resizable_array.mlw"
verified=
"true"
...
...
@@ -18,12 +22,12 @@
<goal
name=
"WP_parameter make"
locfile=
"../resizable_array.mlw"
loclnum=
"2
1
"
loccnumb=
"6"
loccnume=
"10"
loclnum=
"2
0
"
loccnumb=
"6"
loccnume=
"10"
expl=
"VC for make"
sum=
"
796826f8e9ffb5c76f776ce1287d325c
"
sum=
"
5f0e573562e505c30c3a538c63edea05
"
proved=
"true"
expanded=
"true"
shape=
"ainfix =amk rarrayV
0amk arrayV0aconstadummyamakeV0
Aainfix <=V0V0Aainfix <=c0V0Iainfix <=c0V0Aainfix >=V0c0Iainfix <=c0V0F"
>
shape=
"ainfix =amk rarrayV
1V0amk arrayV0aconstV1amakeV0V1Aainfix =agetaconstV1V2V1Iainfix <V2V0Aainfix <=V0V2F
Aainfix <=V0V0Aainfix <=c0V0Iainfix <=c0V0Aainfix >=V0c0Iainfix <=c0V0F"
>
<label
name=
"expl:VC for make"
/>
<proof
...
...
@@ -40,10 +44,10 @@
locfile=
"../resizable_array.mlw"
loclnum=
"25"
loccnumb=
"7"
loccnume=
"9"
expl=
"VC for mixfix []"
sum=
"
c7456e2986c5356e89e9357bb8ef869d
"
sum=
"
f943129a270dc5c2d18458811ad06e6c
"
proved=
"true"
expanded=
"true"
shape=
"ainfix =agetV
2V0agetV2V0Aainfix <V0V1Aainfix <=c0V0Iainfix <V0V3Aainfix <=c0V0Aainfix <=c0V1Aainfix <=V3V1Aainfix <=c0V3
FF"
>
shape=
"ainfix =agetV
3V1agetV3V1Aainfix <V1V2Aainfix <=c0V1Iainfix <V1V4Aainfix <=c0V1Aainfix <=c0V2Aainfix =agetV3V5V0Iainfix <V5V2Aainfix <=V4V5FAainfix <=V4V2Aainfix <=c0V4
FF"
>
<label
name=
"expl:VC for mixfix []"
/>
<proof
...
...
@@ -58,12 +62,12 @@
<goal
name=
"WP_parameter mixfix []<-"
locfile=
"../resizable_array.mlw"
loclnum=
"
29
"
loccnumb=
"7"
loccnume=
"11"
loclnum=
"
30
"
loccnumb=
"7"
loccnume=
"11"
expl=
"VC for mixfix []<-"
sum=
"
341494c1a51e093d5c696e2d85f8e2a1
"
sum=
"
9ebfe3049bcb1a3dc3a54d50b137249b
"
proved=
"true"
expanded=
"true"
shape=
"ainfix =asetV
3V0V1V5Aainfix <=c0V2Aainfix <=V4V2Aainfix <=c0V4Iainfix =V5asetV3V0V1Aainfix <=c0V2FAainfix <V0V2Aainfix <=c0V0Iainfix <V0V4Aainfix <=c0V0Aainfix <=c0V2Aainfix <=V4V2Aainfix <=c0V4
FF"
>
shape=
"ainfix =asetV
4V1V2V6Aainfix <=c0V3Aainfix =agetV6V7V0Iainfix <V7V3Aainfix <=V5V7FAainfix <=V5V3Aainfix <=c0V5Iainfix =V6asetV4V1V2Aainfix <=c0V3FAainfix <V1V3Aainfix <=c0V1Iainfix <V1V5Aainfix <=c0V1Aainfix <=c0V3Aainfix =agetV4V8V0Iainfix <V8V3Aainfix <=V5V8FAainfix <=V5V3Aainfix <=c0V5
FF"
>
<label
name=
"expl:VC for mixfix []<-"
/>
<proof
...
...
@@ -78,32 +82,32 @@
<goal
name=
"WP_parameter resize"
locfile=
"../resizable_array.mlw"
loclnum=
"3
3
"
loccnumb=
"6"
loccnume=
"12"
loclnum=
"3
5
"
loccnumb=
"6"
loccnume=
"12"
expl=
"VC for resize"
sum=
"
e61c46dc3aef496a419f2489a84363be
"
sum=
"
fe729207541d0fcb7769b4956bee6718
"
proved=
"true"
expanded=
"true"
shape=
"iainfix >V
0V1ainfix =agetV6V8agetV2V8Iainfix <V8aminV3V0Aainfix <=c0V8FAainfix =V7V0Aainfix <=c0V5Aainfix <=V7V5Aainfix <=c0V7Iainfix =V7V0FIainfix =V6V4Aainfix =V5amaxV0ainfix *c2V1FIainfix =agetV4V9agetV2ainfix -ainfix +c0V9c0Iainfix <V9ainfix +c0V1Aainfix <=c0V9FAainfix =agetV4V10agetaconstadummyV10Iainfix <V10amaxV0ainfix *c2V1Aainfix <=ainfix +c0V1V10Oainfix <V10c0Aainfix <=c0V10FAainfix <=c0amaxV0ainfix *c2V1FAainfix <=ainfix +c0V1amaxV0ainfix *c2V1Aainfix <=c0c0Aainfix <=ainfix +c0V1V1Aainfix <=c0V1Aainfix <=c0c0Iainfix <=c0amaxV0ainfix *c2V1Aainfix >=amaxV0ainfix *c2V1c0ainfix =agetV2V12agetV2V12Iainfix <V12aminV3V0Aainfix <=c0V12FAainfix =V11V0Aainfix <=V11V1Aainfix <=c0V11Iainfix =V11V0FIainfix <=c0V0Aainfix <=c0V1Aainfix <=V3V1Aainfix <=c0V3
FF"
>
shape=
"iainfix >V
1V2ainfix =agetV7V9agetV3V9Iainfix <V9aminV4V1Aainfix <=c0V9FAainfix =V8V1Aainfix <=c0V6Aainfix =agetV7V10V0Iainfix <V10V6Aainfix <=V8V10FAainfix <=V8V6Aainfix <=c0V8Iainfix =V8V1FIainfix =V7V5Aainfix =V6amaxV1ainfix *c2V2FIainfix =agetV5V11agetV3ainfix -ainfix +c0V11c0Iainfix <V11ainfix +c0V2Aainfix <=c0V11FAainfix =agetV5V12agetaconstV0V12Iainfix <V12amaxV1ainfix *c2V2Aainfix <=ainfix +c0V2V12Oainfix <V12c0Aainfix <=c0V12FAainfix <=c0amaxV1ainfix *c2V2FAainfix <=ainfix +c0V2amaxV1ainfix *c2V2Aainfix <=c0c0Aainfix <=ainfix +c0V2V2Aainfix <=c0V2Aainfix <=c0c0Iainfix <=c0amaxV1ainfix *c2V2Aainfix >=amaxV1ainfix *c2V2c0ainfix =agetV13V15agetV3V15Iainfix <V15aminV4V1Aainfix <=c0V15FAainfix =V14V1Aainfix <=c0V2Aainfix =agetV13V16V0Iainfix <V16V2Aainfix <=V14V16FAainfix <=V14V2Aainfix <=c0V14Iainfix =V14V1FIainfix =agetV13V17V0Iainfix <V17ainfix +V1ainfix -V2V1Aainfix <=V1V17FAainfix =agetV13V18agetV3V18Iainfix <V18V2Aainfix <=ainfix +V1ainfix -V2V1V18Oainfix <V18V1Aainfix <=c0V18FAainfix <=c0V2FAainfix <=ainfix +V1ainfix -V2V1V2Aainfix <=c0ainfix -V2V1Aainfix <=c0V1Iainfix <=c0V1Aainfix <=c0V2Aainfix =agetV3V19V0Iainfix <V19V2Aainfix <=V4V19FAainfix <=V4V2Aainfix <=c0V4
FF"
>
<label
name=
"expl:VC for resize"
/>
<proof
prover=
"
0
"
timelimit=
"
10
"
prover=
"
1
"
timelimit=
"
5
"
memlimit=
"1000"
obsolete=
"false"
archived=
"false"
>
<result
status=
"valid"
time=
"0.
07
"
/>
<result
status=
"valid"
time=
"0.
21
"
/>
</proof>
</goal>
<goal
name=
"WP_parameter append"
locfile=
"../resizable_array.mlw"
loclnum=
"
46
"
loccnumb=
"6"
loccnume=
"12"
loclnum=
"
51
"
loccnumb=
"6"
loccnume=
"12"
expl=
"VC for append"
sum=
"
c830186d8c39d0188bf506a31f5ff3aa
"
sum=
"
315f734ad46ea8f9d5174ff75230fc34
"
proved=
"true"
expanded=
"true"
shape=
"ainfix =agetV
9V10agetV1ainfix -V10V5Iainfix <=V5V10Aainfix =agetV9V10agetV4V10Iainfix <V10V5Iainfix <V10V8Aainfix <=c0V10FAainfix =V8ainfix +V5V2Aainfix <=c0V6Aainfix <=V8V6Aainfix <=c0V8Iainfix =agetV9V11agetV1ainfix -ainfix +c0V11V5Iainfix <V11ainfix +V5V2Aainfix <=V5V11FAainfix =agetV9V12agetV7V12Iainfix <V12V6Aainfix <=ainfix +V5V2V12Oainfix <V12V5Aainfix <=c0V12FAainfix <=c0V6FAainfix <=ainfix +V5V2V6Aainfix <=c0V5Aainfix <=ainfix +c0V2V0Aainfix <=c0V2Aainfix <=c0c0Iainfix =agetV7V13agetV4V13Iainfix <V13aminV5ainfix +V5V2Aainfix <=c0V13FAainfix =V8ainfix +V5V2Aainfix <=c0V6Aainfix <=V8V6Aainfix <=c0V8FAainfix <=c0ainfix +V5V2Iainfix <=c0V0Aainfix <=V2V0Aainfix <=c0V2Aainfix <=c0V3Aainfix <=V5V3Aainfix <=c0V5
F"
>
shape=
"ainfix =agetV
11V12agetV3ainfix -V12V7Iainfix <=V7V12Aainfix =agetV11V12agetV6V12Iainfix <V12V7Iainfix <V12V10Aainfix <=c0V12FAainfix =V10ainfix +V7V4Aainfix <=c0V8Aainfix =agetV11V13V0Iainfix <V13V8Aainfix <=V10V13FAainfix <=V10V8Aainfix <=c0V10Iainfix =agetV11V14agetV3ainfix -ainfix +c0V14V7Iainfix <V14ainfix +V7V4Aainfix <=V7V14FAainfix =agetV11V15agetV9V15Iainfix <V15V8Aainfix <=ainfix +V7V4V15Oainfix <V15V7Aainfix <=c0V15FAainfix <=c0V8FAainfix <=ainfix +V7V4V8Aainfix <=c0V7Aainfix <=ainfix +c0V4V2Aainfix <=c0V4Aainfix <=c0c0Iainfix =agetV9V16agetV6V16Iainfix <V16aminV7ainfix +V7V4Aainfix <=c0V16FAainfix =V10ainfix +V7V4Aainfix <=c0V8Aainfix =agetV9V17V0Iainfix <V17V8Aainfix <=V10V17FAainfix <=V10V8Aainfix <=c0V10FAainfix <=c0ainfix +V7V4Iainfix <=c0V2Aainfix =agetV3V18V1Iainfix <V18V2Aainfix <=V4V18FAainfix <=V4V2Aainfix <=c0V4Aainfix <=c0V5Aainfix =agetV6V19V0Iainfix <V19V5Aainfix <=V7V19FAainfix <=V7V5Aainfix <=c0V7F
F"
>
<label
name=
"expl:VC for append"
/>
<proof
...
...
@@ -119,18 +123,18 @@
<theory
name=
"Test"
locfile=
"../resizable_array.mlw"
loclnum=
"8
1
"
loccnumb=
"7"
loccnume=
"11"
loclnum=
"8
6
"
loccnumb=
"7"
loccnume=
"11"
verified=
"true"
expanded=
"true"
>
<goal
name=
"WP_parameter test1"
locfile=
"../resizable_array.mlw"
loclnum=
"
87
"
loccnumb=
"6"
loccnume=
"11"
loclnum=
"
91
"
loccnumb=
"6"
loccnume=
"11"
expl=
"VC for test1"
sum=
"0
582db5ba8969b7241e7159e4fdc2e81
"
sum=
"0
6a9f56c81b7ee3cdb32e2af60a99c8a
"
proved=
"true"
expanded=
"true"
shape=
"ainfix =CV0amk rarrayVVV
4c7Aainfix =agetCV0amk rarrayVVV3c0c17Iainfix =agetCV0amk rarrayVVV3V9agetCV0amk rarrayVVCV13amk arrayVVV1V9Iainfix <V9aminCV0amk rarrayVVV16c7Aainfix <=c0V9FAainfix =CV0amk rarrayVVV4c7ACV0amk rarrayVVainfix <=c0V2Aainfix <=CV0amk rarrayVVV4CV0amk rarrayVVV2Aainfix <=c0CV0amk rarrayVVV4FAainfix <=c0c7ACV0amk rarrayVVCV29amk arrayVVtICV0amk rarrayVVCV33amk arrayVVainfix =asetaeltsadataV0c0c17V1Aainfix =alengthadataV0V34Aainfix =alengthV0V32ACV0amk rarrayVVCV37amk arrayVVtAainfix <=c0CV37amk arrayVVV40Aainfix <=CV0amk rarrayVVV42CV0amk rarrayVVCV45amk arrayVVV46Aainfix <=c0CV0amk rarrayVVV48FAainfix <c0alengthV0Aainfix <=c0c0ACV0amk rarrayVVCV51amk arrayVVtAainfix =alengthV0c10ICV0amk rarrayVVCV55amk arrayVVtAainfix <=c0alengthV55Aainfix <=alengthV0alengthadataV0Aainfix <=c0alengthV0Lamakec1
0Aainfix <=c0c10"
>
shape=
"ainfix =CV0amk rarrayVVV
V4c7Aainfix =agetCV0amk rarrayVVVV3c0c17Iainfix =agetCV0amk rarrayVVVV3V11agetCV0amk rarrayVVVCV17amk arrayVVV1V11Iainfix <V11aminCV0amk rarrayVVVV21c7Aainfix <=c0V11FAainfix =CV0amk rarrayVVVV4c7ACV0amk rarrayVVVainfix <=c0V2Aainfix =agetCV0amk rarrayVVVV3V29CV0amk rarrayVVVV33Iainfix <V29CV0amk rarrayVVVV2Aainfix <=CV0amk rarrayVVVV4V29FAainfix <=CV0amk rarrayVVVV4CV0amk rarrayVVVV2Aainfix <=c0CV0amk rarrayVVVV4FAainfix <=c0c7ACV0amk rarrayVVVCV53amk arrayVVtICV0amk rarrayVVVCV58amk arrayVVainfix =asetaeltsadataV0c0c17V1Aainfix =alengthadataV0V59Aainfix =alengthV0V57Aainfix =adummyV0V56ACV0amk rarrayVVVCV63amk arrayVVtAainfix <=c0CV63amk arrayVVV66Aainfix =agetCV0amk rarrayVVVCV71amk arrayVVV1V68CV0amk rarrayVVVV74Iainfix <V68CV0amk rarrayVVVCV79amk arrayVVV80Aainfix <=CV0amk rarrayVVVV83V68FAainfix <=CV0amk rarrayVVVV86CV0amk rarrayVVVCV90amk arrayVVV91Aainfix <=c0CV0amk rarrayVVVV94FAainfix <c0alengthV0Aainfix <=c0c0ACV0amk rarrayVVVCV98amk arrayVVtAainfix =alengthV0c10ICV0amk rarrayVVVCV103amk arrayVVtAainfix <=c0alengthV103Aainfix =agetaeltsadataV0V106adummyV0Iainfix <V106alengthadataV0Aainfix <=alengthV0V106FAainfix <=alengthV0alengthadataV0Aainfix <=c0alengthV0Lamakec10c
0Aainfix <=c0c10"
>
<label
name=
"expl:VC for test1"
/>
<proof
...
...
@@ -145,12 +149,12 @@
<goal
name=
"WP_parameter test2"
locfile=
"../resizable_array.mlw"
loclnum=
"9
5
"
loccnumb=
"6"
loccnume=
"11"
loclnum=
"9
9
"
loccnumb=
"6"
loccnume=
"11"
expl=
"VC for test2"
sum=
"
08ad72d18eeafd8ac4d458660bb44f3
6"
sum=
"
45767b1ca1870bff0c5c34a31d55014
6"
proved=
"true"
expanded=
"true"
shape=
"ainfix =agetCV2amk rarrayVV
CV8amk arrayVVV3c0c42Aainfix <c0CV2amk rarrayVVV11Aainfix <=c0c0ACV2amk rarrayVVCV14amk arrayVVtAainfix =agetCV0amk rarrayVVV5c10c42Aainfix <c10CV0amk rarrayVVV6Aainfix <=c0c10ACV0amk rarrayVVtAainfix =agetCV0amk rarrayVVV5c0c17Aainfix =CV0amk rarrayVVV6c20Iainfix =agetCV0amk rarrayVVV5V27agetCV2amk rarrayVVCV31amk arrayVVV3ainfix -V27CV0amk rarrayVVV34Iainfix <=CV0amk rarrayVVV36V27Aainfix =agetCV0amk rarrayVVV5V27agetCV0amk rarrayVVCV41amk arrayVVV1V27Iainfix <V27CV0amk rarrayVVV44Iainfix <V27CV0amk rarrayVVV6Aainfix <=c0V27FAainfix =CV0amk rarrayVVV6ainfix +CV0amk rarrayVVV50CV2amk rarrayVVV52ACV0amk rarrayVVainfix <=c0V4Aainfix <=CV0amk rarrayVVV6CV0amk rarrayVVV4Aainfix <=c0CV0amk rarrayVVV6FACV2amk rarrayVVCV63amk arrayVVtACV0amk rarrayVVCV67amk arrayVVtICV2amk rarrayVVCV71amk arrayVVainfix =asetaeltsadataV2c0c42V3Aainfix =alengthadataV2V72Aainfix =alengthV2V70ACV2amk rarrayVVCV75amk arrayVVtAainfix <=c0CV75amk arrayVVV78Aainfix <=CV2amk rarrayVVV80CV2amk rarrayVVCV83amk arrayVVV84Aainfix <=c0CV2amk rarrayVVV86FAainfix <c0alengthV2Aainfix <=c0c0ACV2amk rarrayVVCV89amk arrayVVtICV2amk rarrayVVCV93amk arrayVVtAainfix <=c0alengthV93Aainfix <=alengthV2alengthadataV2Aainfix <=c0alengthV2Lamakec10Aainfix <=c0c10ICV0amk rarrayVVCV97amk arrayVVainfix =asetaeltsadataV0c0c17V1Aainfix =alengthadataV0V98Aainfix =alengthV0V96ACV0amk rarrayVVCV101amk arrayVVtAainfix <=c0CV101amk arrayVVV104Aainfix <=CV0amk rarrayVVV106CV0amk rarrayVVCV109amk arrayVVV110Aainfix <=c0CV0amk rarrayVVV112FAainfix <c0alengthV0Aainfix <=c0c0ACV0amk rarrayVVCV115amk arrayVVtICV0amk rarrayVVCV119amk arrayVVtAainfix <=c0alengthV119Aainfix <=alengthV0alengthadataV0Aainfix <=c0alengthV0Lamakec1
0Aainfix <=c0c10"
>
shape=
"ainfix =agetCV2amk rarrayVV
VCV9amk arrayVVV3c0c42Aainfix <c0CV2amk rarrayVVVV13Aainfix <=c0c0ACV2amk rarrayVVVCV17amk arrayVVtAainfix =agetCV0amk rarrayVVVV5c10c42Aainfix <c10CV0amk rarrayVVVV6Aainfix <=c0c10ACV0amk rarrayVVVtAainfix =agetCV0amk rarrayVVVV5c0c17Aainfix =CV0amk rarrayVVVV6c20Iainfix =agetCV0amk rarrayVVVV5V35agetCV2amk rarrayVVVCV41amk arrayVVV3ainfix -V35CV0amk rarrayVVVV45Iainfix <=CV0amk rarrayVVVV48V35Aainfix =agetCV0amk rarrayVVVV5V35agetCV0amk rarrayVVVCV55amk arrayVVV1V35Iainfix <V35CV0amk rarrayVVVV59Iainfix <V35CV0amk rarrayVVVV6Aainfix <=c0V35FAainfix =CV0amk rarrayVVVV6ainfix +CV0amk rarrayVVVV68CV2amk rarrayVVVV71ACV0amk rarrayVVVainfix <=c0V4Aainfix =agetCV0amk rarrayVVVV5V76CV0amk rarrayVVVV80Iainfix <V76CV0amk rarrayVVVV4Aainfix <=CV0amk rarrayVVVV6V76FAainfix <=CV0amk rarrayVVVV6CV0amk rarrayVVVV4Aainfix <=c0CV0amk rarrayVVVV6FACV2amk rarrayVVVCV100amk arrayVVtACV0amk rarrayVVVCV105amk arrayVVtICV2amk rarrayVVVCV110amk arrayVVainfix =asetaeltsadataV2c0c42V3Aainfix =alengthadataV2V111Aainfix =alengthV2V109Aainfix =adummyV2V108ACV2amk rarrayVVVCV115amk arrayVVtAainfix <=c0CV115amk arrayVVV118Aainfix =agetCV2amk rarrayVVVCV123amk arrayVVV3V120CV2amk rarrayVVVV126Iainfix <V120CV2amk rarrayVVVCV131amk arrayVVV132Aainfix <=CV2amk rarrayVVVV135V120FAainfix <=CV2amk rarrayVVVV138CV2amk rarrayVVVCV142amk arrayVVV143Aainfix <=c0CV2amk rarrayVVVV146FAainfix <c0alengthV2Aainfix <=c0c0ACV2amk rarrayVVVCV150amk arrayVVtICV2amk rarrayVVVCV155amk arrayVVtAainfix <=c0alengthV155Aainfix =agetaeltsadataV2V158adummyV2Iainfix <V158alengthadataV2Aainfix <=alengthV2V158FAainfix <=alengthV2alengthadataV2Aainfix <=c0alengthV2Lamakec10c0Aainfix <=c0c10ICV0amk rarrayVVVCV161amk arrayVVainfix =asetaeltsadataV0c0c17V1Aainfix =alengthadataV0V162Aainfix =alengthV0V160Aainfix =adummyV0V159ACV0amk rarrayVVVCV166amk arrayVVtAainfix <=c0CV166amk arrayVVV169Aainfix =agetCV0amk rarrayVVVCV174amk arrayVVV1V171CV0amk rarrayVVVV177Iainfix <V171CV0amk rarrayVVVCV182amk arrayVVV183Aainfix <=CV0amk rarrayVVVV186V171FAainfix <=CV0amk rarrayVVVV189CV0amk rarrayVVVCV193amk arrayVVV194Aainfix <=c0CV0amk rarrayVVVV197FAainfix <c0alengthV0Aainfix <=c0c0ACV0amk rarrayVVVCV201amk arrayVVtICV0amk rarrayVVVCV206amk arrayVVtAainfix <=c0alengthV206Aainfix =agetaeltsadataV0V209adummyV0Iainfix <V209alengthadataV0Aainfix <=alengthV0V209FAainfix <=alengthV0alengthadataV0Aainfix <=c0alengthV0Lamakec10c
0Aainfix <=c0c10"
>
<label
name=
"expl:VC for test2"
/>
<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