Skip to content

Add VC Function Substitution#258

Open
rcosta358 wants to merge 1 commit into
null-originsfrom
vc-function-substitution
Open

Add VC Function Substitution#258
rcosta358 wants to merge 1 commit into
null-originsfrom
vc-function-substitution

Conversation

@rcosta358

Copy link
Copy Markdown
Collaborator

Description

This PR adds VC simplification for exact function invocation equalities through VCImplication chains. When a refinement contains an equality such as f(x) == 0, later occurrences of f(x) in the VC suffix are replaced with 0, while preserving the source equality and simplification origins. Unlike normal binder substitution, this pass does not remove the source node.

Example

x:int. f(x) == 0 =>
∀y:int. f(y) == f(x) + 1 =>
f(y) == 1

is simplified tox:int. f(x) == 0 =>
∀y:int. f(y) == 0 + 1 =>
f(y) == 1

with originx:int. f(x) == 0

Related Issue

None.

Type of change

  • Bug fix
  • New feature
  • Documentation update
  • Code refactoring

Checklist

  • Added/updated tests
  • mvn test passes locally
  • Updated docs/README if behavior or API changed

@rcosta358 rcosta358 self-assigned this Jun 17, 2026
@rcosta358 rcosta358 added enhancement New feature or request simplification Related to the simplification of expressions labels Jun 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request simplification Related to the simplification of expressions

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant