Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Class representative bigger than class members #828

Closed
bclement-ocp opened this issue Sep 20, 2023 · 1 comment
Closed

Class representative bigger than class members #828

bclement-ocp opened this issue Sep 20, 2023 · 1 comment

Comments

@bclement-ocp
Copy link
Collaborator

bclement-ocp commented Sep 20, 2023

With a slightly modified version of the minimal example in #474:

logic ac f : real, real -> real

function id_2() : real = 2.

axiom ax_0 : f(f(0., 1.), 2.) <= 3.0

axiom ax_1:
  f(f(id_2, 1.), 0.) <= 0.0

function f_2_1() : real = f(2., 1.)

axiom ax_2: f_2_1 <= 0.0

goal goal_1: false

I get the following class representative (with alt-ergo -d uf):

------------- UF: Representatives map ----------------
...
  f((2),(1),(0)) --> f(f_2_1,(0)) 

But f((2), (1), (0)) is smaller than f(f_2_1, (0)) according to X.str_cmp, which I believe may break the assumptions of AC(X). I don't understand AC(X) enough to determine if this is indeed the case or not (in particular since it looks like the pair a --> b can only be between two AC terms), but recording this for future reference.

Edit: the issue is still present with #823 applied.

@bclement-ocp
Copy link
Collaborator Author

I don't know where I got that f(f_2_1, (0)) was bigger than f((2), (1), (0)); it is smaller. Closing.

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

No branches or pull requests

1 participant