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

Implement "can process" for block machine. #2372

Draft
wants to merge 13 commits into
base: main
Choose a base branch
from

Conversation

chriseth
Copy link
Member

No description provided.

@chriseth chriseth force-pushed the call_direct_for_block branch 2 times, most recently from 7af2db8 to 8b604d7 Compare January 22, 2025 11:41
@chriseth chriseth force-pushed the call_direct_for_block branch from 8b604d7 to 2d61357 Compare January 22, 2025 11:45
@chriseth chriseth changed the title Simplify interface. Implement "can process" for block machine. Jan 22, 2025
@chriseth chriseth marked this pull request as draft January 22, 2025 11:45
@chriseth
Copy link
Member Author

The formatter already pays off. The current version of the code does return range constraints, but somehow, for the binary machine, the new range constraints for the inputs are unconstrained, and this is already true for the variables.

The range constraint on the input A should be derived from identity 2 on row 2, and this is how it looks:

--------------[ identity 2 on row 2: ]--------------
main_binary::A' = ((     main_binary::A      * (1 - main_binary::latch)) + (main_binary::A_byte * main_binary::FACTOR))
    <known>     =             ???                           0                       ???                16777216        
                =   [0, 16777215] & 0xffffff                                  [0, 255] & 0xff                          
main_binary::A' =                     (     main_binary::A      + (main_binary::A_byte * 16777216))                    
    <known>     =                                ???                       ???                                         
                =                      [0, 16777215] & 0xffffff      [0, 255] & 0xff  

it's unclear to me why the .solve() function does not derive a new range constraint on A', because it actually should.

@chriseth
Copy link
Member Author

Ah nice! It does not consider the "only concrete is considered known" because this is only done if we fully solved the other case. The solution is to just do both, regardless of the other!

@chriseth
Copy link
Member Author

Ok, that completely derives range constraints on the binary machine, but it still does not solve the vm_to_block_to_block stackable error :(

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.

1 participant