mCRL2
mCRL2 copied to clipboard
eliminate custom replace functions in linearise.cpp
Issue migrated from trac ticket # 1163
component: LPS Library | priority: major
2013-05-17 11:09:19: @wiegerw created the issue
In linearise.cpp there are many custom replace functions like substitute_assignmentlist, substitute_pCRLproc etc. Instead of this, the library functions in replace.h should be used.
2013-05-18 14:12:59: anonymous changed status from new to closed
2013-05-18 14:12:59: anonymous set resolution to fixed
2013-05-18 14:12:59: anonymous commented
Replaced substitute_pCRLproc such that in now uses the standard substitution functions. Did not replace substitute_assignmentlist because the standard function does not take parameters of processes into account. In particular in a process defined as P(b:Bool)= a process_instance_assignment of the form P() to which a substituion sigma(b)=true is applied should yield P(b=true). This addresses bug #1163.
All occurrences of replace_free_variables that are not applied on variables or lists of variables are replaced by replace_variables_capture_avoiding. This addresses bugreport #1164.
Committed in release r11790.
2013-05-20 09:14:53: @wiegerw changed status from closed to reopened
2013-05-20 09:14:53: @wiegerw changed resolution from fixed to **
2013-05-20 09:14:53: @wiegerw commented
Reopened this ticket, since the capture avoiding substitutions now handle missing assignments.
2017-05-04 14:51:10: @wiegerw
I just pushed a commit resolving this problem. fa5bd2517..da6bca8d4 master -> master All tests succeed.
I should of course close this ticket also...
The functions substitute_pCRL_proc and capture_avoiding_substitution behave differently. For instance after replacing the former by the latter lift3_init.mcrl2 and lift3_final.mcrl2 do not linearise correctly anymore. As yet it is unclear what the reason is.