Skip to content
This repository has been archived by the owner on May 22, 2023. It is now read-only.

Prove tests #160

Closed
6 of 7 tasks
jklmnn opened this issue Mar 24, 2020 · 9 comments
Closed
6 of 7 tasks

Prove tests #160

jklmnn opened this issue Mar 24, 2020 · 9 comments

Comments

@jklmnn
Copy link
Member

jklmnn commented Mar 24, 2020

Prove all tests to validate interface definitions

  • Log Hello World
  • Log Proxy
  • Message
  • Timer
  • Memory
  • Rom
  • Block
@jklmnn
Copy link
Member Author

jklmnn commented Mar 26, 2020

@senier How should we handle warnings for missing global contracts? From the perspective of the application this isn't directly an error but I think we should model it at some point. I would propose an extra issue for that but I'm not sure if it should reside in 0.2.

jklmnn added a commit that referenced this issue Mar 26, 2020
jklmnn added a commit that referenced this issue Mar 26, 2020
jklmnn added a commit that referenced this issue Mar 26, 2020
jklmnn added a commit that referenced this issue Mar 26, 2020
@senier
Copy link
Member

senier commented Mar 26, 2020

@senier How should we handle warnings for missing global contracts? From the perspective of the application this isn't directly an error but I think we should model it at some point. I would propose an extra issue for that but I'm not sure if it should reside in 0.2.

What messages are you referring to? Missing internal state? If so, wouldn't that prevent even flow analysis?

@jklmnn
Copy link
Member Author

jklmnn commented Mar 27, 2020

I'm referring to

warning: no global contract available for ...
warning: assuming ... has no effect on global items

This happens when the aspect Global => is not defined but the package has global items or states. I think we should discuss in general how we want to handle global state, especially in regards to procedures that are passed to generic packages. In this case the procedure inside the package that calls the procedure that has been passed into the package somehow needs to define the same global state as the passed procedure.

@senier
Copy link
Member

senier commented Mar 30, 2020

Offline discussion: We will handle this in a separate issue #164. Idea: Make generic subprograms Global => null and add a parameter (with a generic type) to pass in global state. For generic subprograms called by the platform we need to find a different solution.

jklmnn added a commit that referenced this issue Apr 1, 2020
@jklmnn
Copy link
Member Author

jklmnn commented Apr 1, 2020

Currently I cannot prove the block test since we do not have this interface on Linux and proving components only works there. Should we postpone these three tests (client, server, proxy)?

@senier
Copy link
Member

senier commented Apr 1, 2020

Yes, we should skip it for now. What would be necessary to enable proof for non-Linux platforms?

@jklmnn
Copy link
Member Author

jklmnn commented Apr 1, 2020

We would have to set up an environment that allows to compile gneiss as a library. For Genode adding the correct source directories could be enough since we dont need to resolve all linker symbols. For Muen for example we would have to provide the whole source/library tree. For the sole purpose of proving applications we could provide an empty proof platform that only has empty implementations (and is not SPARK in its body). But to validate our assumptions (see aliasing) we should at least be able to proof on one real world platform (as far as it is possible).

@senier
Copy link
Member

senier commented Apr 1, 2020

OK, so this is related to #86. Beyond that, we should focus on Linux for proof (i.e. sessions not available there cannot be validated right now).

jklmnn added a commit that referenced this issue Apr 17, 2020
jklmnn added a commit that referenced this issue Apr 24, 2020
jklmnn added a commit that referenced this issue Apr 24, 2020
jklmnn added a commit that referenced this issue Apr 24, 2020
jklmnn added a commit that referenced this issue Apr 24, 2020
jklmnn added a commit that referenced this issue Apr 24, 2020
jklmnn added a commit that referenced this issue Apr 24, 2020
jklmnn added a commit that referenced this issue Apr 24, 2020
jklmnn added a commit that referenced this issue Apr 24, 2020
jklmnn added a commit that referenced this issue Apr 24, 2020
jklmnn added a commit that referenced this issue Apr 24, 2020
jklmnn added a commit that referenced this issue Apr 24, 2020
jklmnn added a commit that referenced this issue May 19, 2020
jklmnn added a commit that referenced this issue May 19, 2020
jklmnn added a commit that referenced this issue May 19, 2020
jklmnn added a commit that referenced this issue May 19, 2020
jklmnn added a commit that referenced this issue May 19, 2020
jklmnn added a commit that referenced this issue May 19, 2020
jklmnn added a commit that referenced this issue May 19, 2020
@jklmnn
Copy link
Member Author

jklmnn commented May 19, 2020

Fixed by #173.

@jklmnn jklmnn closed this as completed May 19, 2020
jklmnn added a commit that referenced this issue May 20, 2020
jklmnn added a commit that referenced this issue May 20, 2020
jklmnn added a commit that referenced this issue May 20, 2020
jklmnn added a commit that referenced this issue May 20, 2020
jklmnn added a commit that referenced this issue May 20, 2020
jklmnn added a commit that referenced this issue May 20, 2020
jklmnn added a commit that referenced this issue May 20, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants