@@ -6,13 +6,13 @@ import org.usvm.UConcreteHeapAddress
66import org.usvm.UExpr
77import org.usvm.UHeapRef
88import org.usvm.USort
9- import org.usvm.collection.set.USymbolicSetEntries
109import org.usvm.collection.set.USymbolicSetElement
1110import org.usvm.collection.set.USymbolicSetElementsCollector
11+ import org.usvm.collection.set.USymbolicSetEntries
1212import org.usvm.collections.immutable.getOrPut
1313import org.usvm.collections.immutable.implementations.immutableMap.UPersistentHashMap
14- import org.usvm.collections.immutable.persistentHashMapOf
1514import org.usvm.collections.immutable.internal.MutabilityOwnership
15+ import org.usvm.collections.immutable.persistentHashMapOf
1616import org.usvm.memory.ULValue
1717import org.usvm.memory.UMemoryRegion
1818import org.usvm.memory.UMemoryRegionId
@@ -81,6 +81,16 @@ interface USetRegion<SetType, ElementSort : USort, Reg : Region<Reg>> :
8181 operationGuard : UBoolExpr ,
8282 ownership : MutabilityOwnership ,
8383 ): USetRegion <SetType , ElementSort , Reg >
84+
85+ fun initializeAllocatedSet (
86+ address : UConcreteHeapAddress ,
87+ setType : SetType ,
88+ sort : ElementSort ,
89+ content : Set <UExpr <ElementSort >>,
90+ operationGuard : UBoolExpr ,
91+ ownership : MutabilityOwnership ,
92+ makeDisjointCheck : Boolean = true,
93+ ): USetRegion <SetType , ElementSort , Reg >
8494}
8595
8696internal class USetMemoryRegion <SetType , ElementSort : USort , Reg : Region <Reg >>(
@@ -203,6 +213,26 @@ internal class USetMemoryRegion<SetType, ElementSort : USort, Reg : Region<Reg>>
203213 },
204214 )
205215
216+ override fun initializeAllocatedSet (
217+ address : UConcreteHeapAddress ,
218+ setType : SetType ,
219+ sort : ElementSort ,
220+ content : Set <UExpr <ElementSort >>,
221+ operationGuard : UBoolExpr ,
222+ ownership : MutabilityOwnership ,
223+ makeDisjointCheck : Boolean ,
224+ ): USetRegion <SetType , ElementSort , Reg > {
225+ val setId = UAllocatedSetId (address, elementSort, setType, elementInfo)
226+ val newCollection = setId.initializedSet(content, operationGuard, makeDisjointCheck)
227+ return USetMemoryRegion (
228+ setType,
229+ elementSort,
230+ elementInfo,
231+ allocatedSets.put(setId, newCollection, ownership),
232+ inputSet
233+ )
234+ }
235+
206236 override fun setEntries (ref : UHeapRef ): UPrimitiveSetEntries <SetType , ElementSort , Reg > =
207237 foldHeapRefWithStaticAsSymbolic(
208238 ref = ref,
0 commit comments