In the example below, if you import the Io module as opened in Host, then you get three unresolved-identifier errors about AdvanceTime and MaxPacketSize. This only happens in the presence of the Main module (i.e., if you delete the Main module, then the errors go away), and it only happens when using "opened".
```
module Io {
predicate AdvanceTime(oldTime:int) { oldTime > 2 }
class Time
{
static method GetTime()
ensures AdvanceTime(1);
}
function MaxPacketSize() : int { 65507 }
class UdpClient
{
method Receive()
ensures AdvanceTime(3);
method Send() returns(ok:bool)
requires 0 <= MaxPacketSize();
}
}
abstract module Host {
//import opened Io // Doesn't work.
import Io // Works
}
abstract module Main {
import H as Host
}
```
```
module Io {
predicate AdvanceTime(oldTime:int) { oldTime > 2 }
class Time
{
static method GetTime()
ensures AdvanceTime(1);
}
function MaxPacketSize() : int { 65507 }
class UdpClient
{
method Receive()
ensures AdvanceTime(3);
method Send() returns(ok:bool)
requires 0 <= MaxPacketSize();
}
}
abstract module Host {
//import opened Io // Doesn't work.
import Io // Works
}
abstract module Main {
import H as Host
}
```