@@ -75,11 +75,11 @@ class AutoConfigManager(val ruleName: String) : Closeable {
7575 * their parent is also UNSAT. The propagation is recursive.
7676 */
7777 private fun propagateUNSAT (address : SplitAddress ): Unit = synchronized(splitStatAndSolverConfigLock) {
78- if (address.asIntList.toString () !in stats.splitStatistics) {
78+ if (address.name () !in stats.splitStatistics) {
7979 warn(" The split with the address $address should be first added to ${::stats.name} before we propagate its unsat result" )
8080 return
8181 }
82- if (! stats.splitStatistics[address.asIntList.toString ()]!! .isEventuallyUNSAT()) {
82+ if (! stats.splitStatistics[address.name ()]!! .isEventuallyUNSAT()) {
8383 warn(" Trying to propagate an unregistered UNSAT result of the split $address " )
8484 return
8585 }
@@ -90,10 +90,10 @@ class AutoConfigManager(val ruleName: String) : Closeable {
9090 if (address !is SplitAddress .Block ) {
9191 return
9292 }
93- val siblingAddressStr = address.sibling().toString ()
93+ val siblingAddressStr = address.sibling().name ()
9494 if (stats.splitStatistics[siblingAddressStr]?.isEventuallyUNSAT() == true ) {
9595 val parentAddress = address.parent
96- val parentAddressStr = parentAddress.toString()
96+ val parentAddressStr = parentAddress?.name() ? : " null "
9797 if (parentAddressStr !in stats.splitStatistics) {
9898 warn(" The parent address $parentAddressStr is not registered in ${::stats.name} " )
9999 return
@@ -110,12 +110,12 @@ class AutoConfigManager(val ruleName: String) : Closeable {
110110 * Sets the [finalResult] and [solvers] of the stats of [address] based on the stats of [matchingUnsat].
111111 */
112112 private fun markMatchingUnsat (address : SplitAddress , matchingUnsat : BasicSplitStatistics ) = synchronized(splitStatAndSolverConfigLock) {
113- if (address.asIntList.toString () !in stats.splitStatistics) {
113+ if (address.name () !in stats.splitStatistics) {
114114 warn(" Trying to mark an address UNSAT that is not in ${::stats.name} : $address " )
115115 return
116116 }
117- stats.splitStatistics[address.asIntList.toString ()] =
118- stats.splitStatistics[address.asIntList.toString ()]!! .copy(
117+ stats.splitStatistics[address.name ()] =
118+ stats.splitStatistics[address.name ()]!! .copy(
119119 finalResult = matchingUnsat.finalResult,
120120 solvers = matchingUnsat.solvers
121121 )
@@ -126,27 +126,29 @@ class AutoConfigManager(val ruleName: String) : Closeable {
126126 * it gets computed and stored in [stats].
127127 */
128128 private fun getDigest (address : SplitAddress , prog : CoreTACProgram ): String = synchronized(splitStatAndSolverConfigLock) {
129- require(address.asIntList.toString() in stats.splitStatistics) {
130- " Trying to store a digest for a split ${address.asIntList} that is not registered yet"
129+ val addressName = address.name()
130+ require(addressName in stats.splitStatistics) {
131+ " Trying to store a digest for a split ${addressName} that is not registered yet"
131132 }
132- if (stats.splitStatistics[address.asIntList.toString() ]!! .tacStats.digest == null ) {
133+ if (stats.splitStatistics[addressName ]!! .tacStats.digest == null ) {
133134 val digest = BasicTACStatistics .computeDigest(prog)
134- stats.splitStatistics[address.asIntList.toString() ] =
135- stats.splitStatistics[address.asIntList.toString() ]!! .let {
135+ stats.splitStatistics[addressName ] =
136+ stats.splitStatistics[addressName ]!! .let {
136137 it.copy(tacStats = it.tacStats.copy(digest = digest))
137138 }
138139 }
139- return stats.splitStatistics[address.asIntList.toString() ]!! .tacStats.digest!!
140+ return stats.splitStatistics[addressName ]!! .tacStats.digest!!
140141 }
141142
142143 /* *
143144 * Register the given [subProblem] in [stats] (storing just address, split name, and basic TAC statistics).
144145 */
145146 fun registerSplit (address : SplitAddress , name : String , subProblemTAC : CoreTACProgram ) = synchronized(splitStatAndSolverConfigLock) {
146- if (address.asIntList.toString() !in stats.splitStatistics.keys) {
147- info(" registering split ${address.asIntList} " )
148- stats.splitStatistics[address.asIntList.toString()] = BasicSplitStatistics (
149- address = address.asIntList.toString(),
147+ val addressName = address.name()
148+ if (addressName !in stats.splitStatistics.keys) {
149+ info(" registering split ${address.name()} " )
150+ stats.splitStatistics[addressName] = BasicSplitStatistics (
151+ address = addressName,
150152 splitName = name,
151153 tacStats = BasicTACStatistics .fromCoreTACProgram(subProblemTAC, Config .AutoconfigUseDigests .get()),
152154 )
@@ -164,7 +166,7 @@ class AutoConfigManager(val ruleName: String) : Closeable {
164166 timeoutForSubProblem : Duration ,
165167 solvingDuration : Duration ,
166168 ) = synchronized(splitStatAndSolverConfigLock) {
167- val address = splitAddress.asIntList.toString ()
169+ val address = splitAddress.name ()
168170 info(" registering ${verifierResult.finalResult} result for split $address ." )
169171 if (address !in stats.splitStatistics) {
170172 warn(" Trying to register results for an unregistered split $address ." )
@@ -262,7 +264,7 @@ class AutoConfigManager(val ruleName: String) : Closeable {
262264 val loadedMatches = loadedStats?.splitStatistics?.values?.filter { tacStats.match(it.tacStats) } ? : listOf ()
263265 // Splits we have already solved in this CVT run and which are matching the current split.
264266 val newMatches: List <BasicSplitStatistics > = if (learnFromCurrent) {
265- val splitAddressStr = splitAddress.asIntList.toString ()
267+ val splitAddressStr = splitAddress.name ()
266268 synchronized(splitStatAndSolverConfigLock) {
267269 stats.splitStatistics.values.filter { tacStats.match(it.tacStats) && it.address != splitAddressStr }
268270 }
0 commit comments