@@ -522,12 +522,13 @@ module CompoundBeacon {
522
522
}
523
523
524
524
// OkPrefixPair, but return Result with error message
525
- function method CheckOnePrefixPart (pos1 : uint64 , pos2 : uint64 ) : (ret : Result< bool , Error> )
526
- requires pos1 as nat < |parts|
527
- requires pos2 as nat < |parts|
528
- ensures ret. Success? ==> OkPrefixPair (pos1, pos2)
525
+ function method CheckOnePrefixPart (pos1 : nat , pos2 : nat ) : (ret : Result< bool , Error> )
526
+ requires pos1 < |parts|
527
+ requires pos2 < |parts|
528
+ ensures ret. Success? ==> HasUint64Len (parts) && OkPrefixPair (pos1 as uint64 , pos2 as uint64 )
529
529
{
530
- if ! OkPrefixPair (pos1, pos2) then
530
+ SequenceIsSafeBecauseItIsInMemory (parts);
531
+ if ! OkPrefixPair (pos1 as uint64, pos2 as uint64) then
531
532
Failure (E("Compound beacon " + base.name + " defines part " + parts[pos1].getName() + " with prefix " + parts[pos1]. prefix
532
533
+ " which is incompatible with part " + parts[pos2]. getName () + " which has a prefix of " + parts[pos2]. prefix + ". "))
533
534
else
@@ -538,9 +539,8 @@ module CompoundBeacon {
538
539
function method CheckOnePrefix (pos : nat ) : (ret : Result< bool , Error> )
539
540
requires pos < |parts|
540
541
{
541
- SequenceIsSafeBecauseItIsInMemory (parts);
542
542
var partNumbers : seq < nat > := seq (|parts|, (i : nat ) => i as nat );
543
- var _ :- Sequence. MapWithResult ((p : int ) requires 0 <= p < |parts| => CheckOnePrefixPart (pos as uint64 , p as uint64 ), seq (|parts|, i => i));
543
+ var _ :- Sequence. MapWithResult ((p : int ) requires 0 <= p < |parts| => CheckOnePrefixPart (pos, p), seq (|parts|, i => i));
544
544
Success (true)
545
545
}
546
546
0 commit comments