Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • F frama-c
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 209
    • Issues 209
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 1
    • Merge requests 1
  • Deployments
    • Deployments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • Value stream
    • Repository
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • pub
  • frama-c
  • Issues
  • #78

Closed
Open
Created Sep 25, 2013 by Virgile Prevosto@virgileOwner

ill-typed alt-ergo proof obligation

ID0001484: This issue was created automatically from Mantis Issue 1484. Further discussion may take place here.


Id Project Category View Due Date Updated
ID0001484 Frama-C Plug-in > wp public 2013-09-25 2020-02-17
Reporter virgile Assigned To correnson Resolution fixed
Priority normal Severity minor Reproducibility always
Platform - OS - OS Version -
Product Version Frama-C GIT, precise the release id Target Version - Fixed in Version Frama-C 20-Calcium

Description :

Using WP with RTE enabled on the attached file results in proof obligations rejected as ill-typed by Alt-Ergo.

Additional Information :

Without rte, everything is fine. With RTE, the resulting proof obligation is the following:

forall x_0 : int. let x_1 = to_sint32(neqb(0, x_0)) : int in let x_2 = to_uint8(x_0 - (ite((eqb(0, x_0)), 0, 1))) : int in is_uint8(x_0) -> (x_1 <= (2147483648 + x_0)) -> (x_0 <= (2147483647 + x_1)) -> is_uint8(x_2) -> (x_2 <= x_0)

the definition of x_1 is lacking an ite(_,0,1) conversion, as shown in the definition of x_2. x_1 does not appear in the PO without RTE, as it is only used in the (x<=2147483648 + x_0) and x_0 <= (2147483647 + x_1) hypotheses reflecting the RTE-generated hypotheses. Note that writing the RTE-generated hypotheses in the code (and launching WP without -wp-rte) results in warning cast from (boolean) not yet implemented, and degenerated goals.

Steps To Reproduce :

frama-c -wp -wp-rte t.c

Attachments

  • t.c
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking