Skip to content

Conversation

@florianschanda
Copy link
Collaborator

This obsoletes PR #153.

This fixes #157 (OSX13 is dead).
This implements the first step in #156.

… (step 1/2)

* Update PyVCG and CVC5

* Permit record field references

* Add new LRM rule that the prefix of a dereference may not be null

* Add unsupported note in VCG (this will be done in step 2)
… (step 2/2)

* Add basic support for record references in VCG. Some bits (like
  references in quantifiers) do not work yet.
@florianschanda florianschanda requested a review from a team as a code owner January 9, 2026 10:38
@florianschanda florianschanda requested a review from phiwuu January 9, 2026 10:38
@hoe-jo hoe-jo self-requested a review January 15, 2026 09:48
Copy link
Contributor

@hoe-jo hoe-jo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM


type T {
arr Integer [2 .. *]
ref T
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should a recursive type not be optional?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is just a test case.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So its possible but unlikely for such a type to exist. I made it non-optional in the test to avoid having to write the null guard :)

A future lint check would probably be a good idea, to spot any self or mutual recursion with all links being non-optional.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Created #159 to do just that.


type T {
value Integer
arr T [0 .. *]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same here

cb_link.item >= 50000, warning "cb item value is oddly low"
// you can obtain a tuple's values

bar.asil == asil, warning "mismatch in ASIL levels"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should have a positive testcase for this. I only see negative testcases

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's not a test, that is an example fragment of the LRM.

Or do you mean having a test that shows such a construct passing?

link = R1
}

T R3 {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Link LRM here?

@hoe-jo
Copy link
Contributor

hoe-jo commented Jan 15, 2026

Thanks for implementing it, Florian!

@phiwuu phiwuu merged commit abb43e1 into bmw-software-engineering:main Jan 15, 2026
20 checks passed
@florianschanda
Copy link
Collaborator Author

A much bigger change is coming that properly fixes VCG for this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

osx13 is retired

3 participants