Advertisement
Guest User

Untitled

a guest
Jul 20th, 2019
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 473.96 KB | None | 0 0
  1. (set-option :print-success false)
  2. (set-info :smt-lib-version 2.0)
  3. (set-option :AUTO_CONFIG false)
  4. (set-option :pp.bv_literals false)
  5. (set-option :MODEL.V2 true)
  6. (set-option :smt.PHASE_SELECTION 0)
  7. (set-option :smt.RESTART_STRATEGY 0)
  8. (set-option :smt.RESTART_FACTOR |1.5|)
  9. (set-option :smt.ARITH.RANDOM_INITIAL_VALUE true)
  10. (set-option :smt.CASE_SPLIT 3)
  11. (set-option :smt.DELAY_UNITS true)
  12. (set-option :NNF.SK_HACK true)
  13. (set-option :smt.MBQI false)
  14. (set-option :smt.QI.EAGER_THRESHOLD 100)
  15. (set-option :TYPE_CHECK true)
  16. (set-option :smt.BV.REFLECT true)
  17. (set-option :model_compress false)
  18. ; done setting options
  19.  
  20.  
  21. (set-info :category "industrial")
  22. (declare-sort |T@U| 0)
  23. (declare-sort |T@T| 0)
  24. (declare-fun real_pow (Real Real) Real)
  25. (declare-fun UOrdering2 (|T@U| |T@U|) Bool)
  26. (declare-fun UOrdering3 (|T@T| |T@U| |T@U|) Bool)
  27. (declare-fun tickleBool (Bool) Bool)
  28. (assert (and (tickleBool true) (tickleBool false)))
  29. (declare-fun Ctor (T@T) Int)
  30. (declare-fun intType () T@T)
  31. (declare-fun realType () T@T)
  32. (declare-fun boolType () T@T)
  33. (declare-fun rmodeType () T@T)
  34. (declare-fun int_2_U (Int) T@U)
  35. (declare-fun U_2_int (T@U) Int)
  36. (declare-fun type (T@U) T@T)
  37. (declare-fun real_2_U (Real) T@U)
  38. (declare-fun U_2_real (T@U) Real)
  39. (declare-fun bool_2_U (Bool) T@U)
  40. (declare-fun U_2_bool (T@U) Bool)
  41. (declare-fun rmode_2_U (RoundingMode) T@U)
  42. (declare-fun U_2_rmode (T@U) RoundingMode)
  43. (declare-fun TyType () T@T)
  44. (declare-fun TBool () T@U)
  45. (declare-fun TChar () T@U)
  46. (declare-fun TInt () T@U)
  47. (declare-fun TReal () T@U)
  48. (declare-fun TORDINAL () T@U)
  49. (declare-fun TyTagType () T@T)
  50. (declare-fun TagBool () T@U)
  51. (declare-fun TagChar () T@U)
  52. (declare-fun TagInt () T@U)
  53. (declare-fun TagReal () T@U)
  54. (declare-fun TagORDINAL () T@U)
  55. (declare-fun TagSet () T@U)
  56. (declare-fun TagISet () T@U)
  57. (declare-fun TagMultiSet () T@U)
  58. (declare-fun TagSeq () T@U)
  59. (declare-fun TagMap () T@U)
  60. (declare-fun TagIMap () T@U)
  61. (declare-fun TagClass () T@U)
  62. (declare-fun ClassNameType () T@T)
  63. (declare-fun NoTraitAtAll () T@U)
  64. (declare-fun class._System.int () T@U)
  65. (declare-fun class._System.bool () T@U)
  66. (declare-fun class._System.set () T@U)
  67. (declare-fun class._System.seq () T@U)
  68. (declare-fun class._System.multiset () T@U)
  69. (declare-fun FieldType (T@T) T@T)
  70. (declare-fun FieldTypeInv0 (T@T) T@T)
  71. (declare-fun alloc () T@U)
  72. (declare-fun NameFamilyType () T@T)
  73. (declare-fun allocName () T@U)
  74. (declare-fun Tagclass._System.nat () T@U)
  75. (declare-fun class._System.object? () T@U)
  76. (declare-fun Tagclass._System.object? () T@U)
  77. (declare-fun Tagclass._System.object () T@U)
  78. (declare-fun class._System.array? () T@U)
  79. (declare-fun Tagclass._System.array? () T@U)
  80. (declare-fun Tagclass._System.array () T@U)
  81. (declare-fun Tagclass._System.___hFunc0 () T@U)
  82. (declare-fun Tagclass._System.___hPartialFunc0 () T@U)
  83. (declare-fun Tagclass._System.___hTotalFunc0 () T@U)
  84. (declare-fun class._System.Tuple2 () T@U)
  85. (declare-fun DtCtorIdType () T@T)
  86. (declare-fun |##_System._tuple#2._#Make2| () T@U)
  87. (declare-fun Tagclass._System.Tuple2 () T@U)
  88. (declare-fun Tagclass._System.___hFunc1 () T@U)
  89. (declare-fun Tagclass._System.___hPartialFunc1 () T@U)
  90. (declare-fun Tagclass._System.___hTotalFunc1 () T@U)
  91. (declare-fun class._System.Tuple0 () T@U)
  92. (declare-fun |##_System._tuple#0._#Make0| () T@U)
  93. (declare-fun Tagclass._System.Tuple0 () T@U)
  94. (declare-fun class._module.__default () T@U)
  95. (declare-fun Tagclass._module.__default () T@U)
  96. (declare-fun $$Language$Dafny () Bool)
  97. (declare-fun TBitvector (Int) T@U)
  98. (declare-fun Inv0_TBitvector (T@U) Int)
  99. (declare-fun TSet (T@U) T@U)
  100. (declare-fun Inv0_TSet (T@U) T@U)
  101. (declare-fun TISet (T@U) T@U)
  102. (declare-fun Inv0_TISet (T@U) T@U)
  103. (declare-fun TSeq (T@U) T@U)
  104. (declare-fun Inv0_TSeq (T@U) T@U)
  105. (declare-fun TMultiSet (T@U) T@U)
  106. (declare-fun Inv0_TMultiSet (T@U) T@U)
  107. (declare-fun TMap (T@U T@U) T@U)
  108. (declare-fun Inv0_TMap (T@U) T@U)
  109. (declare-fun Inv1_TMap (T@U) T@U)
  110. (declare-fun TIMap (T@U T@U) T@U)
  111. (declare-fun Inv0_TIMap (T@U) T@U)
  112. (declare-fun Inv1_TIMap (T@U) T@U)
  113. (declare-fun Tag (T@U) T@U)
  114. (declare-fun LitInt (Int) Int)
  115. (declare-fun BoxType () T@T)
  116. (declare-fun $Box (T@U) T@U)
  117. (declare-fun Lit (T@U) T@U)
  118. (declare-fun LitReal (Real) Real)
  119. (declare-fun charType () T@T)
  120. (declare-fun |char#FromInt| (Int) T@U)
  121. (declare-fun |char#ToInt| (T@U) Int)
  122. (declare-fun |char#Plus| (T@U T@U) T@U)
  123. (declare-fun |char#Minus| (T@U T@U) T@U)
  124. (declare-fun $Unbox (T@T T@U) T@U)
  125. (declare-fun $IsBox (T@U T@U) Bool)
  126. (declare-fun $Is (T@U T@U) Bool)
  127. (declare-fun MapType0Type (T@T T@T) T@T)
  128. (declare-fun MapType0TypeInv0 (T@T) T@T)
  129. (declare-fun MapType0TypeInv1 (T@T) T@T)
  130. (declare-fun MapType0Select (T@U T@U) T@U)
  131. (declare-fun MapType0Store (T@U T@U T@U) T@U)
  132. (declare-fun SeqType (T@T) T@T)
  133. (declare-fun SeqTypeInv0 (T@T) T@T)
  134. (declare-fun MapType (T@T T@T) T@T)
  135. (declare-fun MapTypeInv0 (T@T) T@T)
  136. (declare-fun MapTypeInv1 (T@T) T@T)
  137. (declare-fun IMapType (T@T T@T) T@T)
  138. (declare-fun IMapTypeInv0 (T@T) T@T)
  139. (declare-fun IMapTypeInv1 (T@T) T@T)
  140. (declare-fun MapType1Select (T@U T@U) T@U)
  141. (declare-fun MapType1Type () T@T)
  142. (declare-fun MapType1Store (T@U T@U T@U) T@U)
  143. (declare-fun refType () T@T)
  144. (declare-fun $IsAllocBox (T@U T@U T@U) Bool)
  145. (declare-fun $IsAlloc (T@U T@U T@U) Bool)
  146. (declare-fun $IsGoodMultiSet (T@U) Bool)
  147. (declare-fun |Seq#Index| (T@U Int) T@U)
  148. (declare-fun |Seq#Length| (T@U) Int)
  149. (declare-fun |Map#Elements| (T@U) T@U)
  150. (declare-fun |Map#Domain| (T@U) T@U)
  151. (declare-fun |IMap#Elements| (T@U) T@U)
  152. (declare-fun |IMap#Domain| (T@U) T@U)
  153. (declare-fun TypeTuple (T@U T@U) T@U)
  154. (declare-fun TypeTupleCar (T@U) T@U)
  155. (declare-fun TypeTupleCdr (T@U) T@U)
  156. (declare-fun SetRef_to_SetBox (T@U) T@U)
  157. (declare-fun Tclass._System.object? () T@U)
  158. (declare-fun DatatypeTypeType () T@T)
  159. (declare-fun BoxRank (T@U) Int)
  160. (declare-fun DtRank (T@U) Int)
  161. (declare-fun |ORD#Offset| (T@U) Int)
  162. (declare-fun |ORD#FromNat| (Int) T@U)
  163. (declare-fun |ORD#IsNat| (T@U) Bool)
  164. (declare-fun |ORD#Less| (T@U T@U) Bool)
  165. (declare-fun |ORD#LessThanLimit| (T@U T@U) Bool)
  166. (declare-fun |ORD#Plus| (T@U T@U) T@U)
  167. (declare-fun |ORD#Minus| (T@U T@U) T@U)
  168. (declare-fun IndexField (Int) T@U)
  169. (declare-fun FDim (T@U) Int)
  170. (declare-fun IndexField_Inverse (T@U) Int)
  171. (declare-fun MultiIndexField (T@U Int) T@U)
  172. (declare-fun MultiIndexField_Inverse0 (T@U) T@U)
  173. (declare-fun MultiIndexField_Inverse1 (T@U) Int)
  174. (declare-fun FieldOfDecl (T@T T@U T@U) T@U)
  175. (declare-fun DeclType (T@U) T@U)
  176. (declare-fun DeclName (T@U) T@U)
  177. (declare-fun $HeapSucc (T@U T@U) Bool)
  178. (declare-fun $IsGhostField (T@U) Bool)
  179. (declare-fun _System.array.Length (T@U) Int)
  180. (declare-fun q@Int (Real) Int)
  181. (declare-fun q@Real (Int) Real)
  182. (declare-fun $OneHeap () T@U)
  183. (declare-fun $IsGoodHeap (T@U) Bool)
  184. (declare-fun $HeapSuccGhost (T@U T@U) Bool)
  185. (declare-fun |Set#Card| (T@U) Int)
  186. (declare-fun |Set#Empty| (T@T) T@U)
  187. (declare-fun |Set#Singleton| (T@U) T@U)
  188. (declare-fun |Set#UnionOne| (T@U T@U) T@U)
  189. (declare-fun |Set#Union| (T@U T@U) T@U)
  190. (declare-fun |Set#Difference| (T@U T@U) T@U)
  191. (declare-fun |Set#Disjoint| (T@U T@U) Bool)
  192. (declare-fun |Set#Intersection| (T@U T@U) T@U)
  193. (declare-fun |Set#Subset| (T@U T@U) Bool)
  194. (declare-fun |Set#Equal| (T@U T@U) Bool)
  195. (declare-fun |ISet#Empty| (T@T) T@U)
  196. (declare-fun |ISet#UnionOne| (T@U T@U) T@U)
  197. (declare-fun |ISet#Union| (T@U T@U) T@U)
  198. (declare-fun |ISet#Difference| (T@U T@U) T@U)
  199. (declare-fun |ISet#Disjoint| (T@U T@U) Bool)
  200. (declare-fun |ISet#Intersection| (T@U T@U) T@U)
  201. (declare-fun |ISet#Subset| (T@U T@U) Bool)
  202. (declare-fun |ISet#Equal| (T@U T@U) Bool)
  203. (declare-fun |Math#min| (Int Int) Int)
  204. (declare-fun |Math#clip| (Int) Int)
  205. (declare-fun |MultiSet#Card| (T@U) Int)
  206. (declare-fun |MultiSet#Empty| (T@T) T@U)
  207. (declare-fun |MultiSet#Singleton| (T@U) T@U)
  208. (declare-fun |MultiSet#UnionOne| (T@U T@U) T@U)
  209. (declare-fun |MultiSet#Union| (T@U T@U) T@U)
  210. (declare-fun |MultiSet#Intersection| (T@U T@U) T@U)
  211. (declare-fun |MultiSet#Difference| (T@U T@U) T@U)
  212. (declare-fun |MultiSet#Subset| (T@U T@U) Bool)
  213. (declare-fun |MultiSet#Equal| (T@U T@U) Bool)
  214. (declare-fun |MultiSet#Disjoint| (T@U T@U) Bool)
  215. (declare-fun |MultiSet#FromSet| (T@U) T@U)
  216. (declare-fun |MultiSet#FromSeq| (T@U) T@U)
  217. (declare-fun |Seq#Build| (T@U T@U) T@U)
  218. (declare-fun |Seq#Empty| (T@T) T@U)
  219. (declare-fun |Seq#Append| (T@U T@U) T@U)
  220. (declare-fun |Seq#Update| (T@U Int T@U) T@U)
  221. (declare-fun |Seq#Singleton| (T@U) T@U)
  222. (declare-fun |Seq#Build_inv0| (T@U) T@U)
  223. (declare-fun |Seq#Build_inv1| (T@U) T@U)
  224. (declare-fun |Seq#Contains| (T@U T@U) Bool)
  225. (declare-fun |Seq#Take| (T@U Int) T@U)
  226. (declare-fun |Seq#Drop| (T@U Int) T@U)
  227. (declare-fun |Seq#Equal| (T@U T@U) Bool)
  228. (declare-fun |Seq#SameUntil| (T@U T@U Int) Bool)
  229. (declare-fun |Seq#FromArray| (T@U T@U) T@U)
  230. (declare-fun |Seq#Rank| (T@U) Int)
  231. (declare-fun |Map#Card| (T@U) Int)
  232. (declare-fun |Map#Values| (T@U) T@U)
  233. (declare-fun |Map#Items| (T@U) T@U)
  234. (declare-fun _System.Tuple2._0 (T@U) T@U)
  235. (declare-fun _System.Tuple2._1 (T@U) T@U)
  236. (declare-fun |Map#Empty| (T@T T@T) T@U)
  237. (declare-fun |Map#Glue| (T@U T@U T@U) T@U)
  238. (declare-fun |Map#Build| (T@U T@U T@U) T@U)
  239. (declare-fun |Map#Equal| (T@U T@U) Bool)
  240. (declare-fun |Map#Disjoint| (T@U T@U) Bool)
  241. (declare-fun |IMap#Values| (T@U) T@U)
  242. (declare-fun |IMap#Items| (T@U) T@U)
  243. (declare-fun |IMap#Empty| (T@T T@T) T@U)
  244. (declare-fun |IMap#Glue| (T@U T@U T@U) T@U)
  245. (declare-fun |IMap#Build| (T@U T@U T@U) T@U)
  246. (declare-fun |IMap#Equal| (T@U T@U) Bool)
  247. (declare-fun INTERNAL_add_boogie (Int Int) Int)
  248. (declare-fun INTERNAL_sub_boogie (Int Int) Int)
  249. (declare-fun INTERNAL_mul_boogie (Int Int) Int)
  250. (declare-fun INTERNAL_div_boogie (Int Int) Int)
  251. (declare-fun INTERNAL_mod_boogie (Int Int) Int)
  252. (declare-fun INTERNAL_lt_boogie (Int Int) Bool)
  253. (declare-fun INTERNAL_le_boogie (Int Int) Bool)
  254. (declare-fun INTERNAL_gt_boogie (Int Int) Bool)
  255. (declare-fun INTERNAL_ge_boogie (Int Int) Bool)
  256. (declare-fun Mul (Int Int) Int)
  257. (declare-fun Div (Int Int) Int)
  258. (declare-fun Mod (Int Int) Int)
  259. (declare-fun Add (Int Int) Int)
  260. (declare-fun Sub (Int Int) Int)
  261. (declare-fun Tclass._System.nat () T@U)
  262. (declare-fun null () T@U)
  263. (declare-fun Tclass._System.object () T@U)
  264. (declare-fun Tclass._System.array? (T@U) T@U)
  265. (declare-fun Tclass._System.array?_0 (T@U) T@U)
  266. (declare-fun dtype (T@U) T@U)
  267. (declare-fun Tclass._System.array (T@U) T@U)
  268. (declare-fun Tclass._System.array_0 (T@U) T@U)
  269. (declare-fun Tclass._System.___hFunc0 (T@U) T@U)
  270. (declare-fun Tclass._System.___hFunc0_0 (T@U) T@U)
  271. (declare-fun HandleTypeType () T@T)
  272. (declare-fun Apply0 (T@U T@U T@U) T@U)
  273. (declare-fun Handle0 (T@U T@U T@U) T@U)
  274. (declare-fun Requires0 (T@U T@U T@U) Bool)
  275. (declare-fun Reads0 (T@U T@U T@U) T@U)
  276. (declare-fun Tclass._System.___hPartialFunc0 (T@U) T@U)
  277. (declare-fun Tclass._System.___hPartialFunc0_0 (T@U) T@U)
  278. (declare-fun Tclass._System.___hTotalFunc0 (T@U) T@U)
  279. (declare-fun Tclass._System.___hTotalFunc0_0 (T@U) T@U)
  280. (declare-fun |#_System._tuple#2._#Make2| (T@U T@U) T@U)
  281. (declare-fun DatatypeCtorId (T@U) T@U)
  282. (declare-fun _System.Tuple2.___hMake2_q (T@U) Bool)
  283. (declare-fun Tclass._System.Tuple2 (T@U T@U) T@U)
  284. (declare-fun Tclass._System.Tuple2_0 (T@U) T@U)
  285. (declare-fun Tclass._System.Tuple2_1 (T@U) T@U)
  286. (declare-fun |$IsA#_System.Tuple2| (T@U) Bool)
  287. (declare-fun |_System.Tuple2#Equal| (T@U T@U) Bool)
  288. (declare-fun Tclass._System.___hFunc1 (T@U T@U) T@U)
  289. (declare-fun Tclass._System.___hFunc1_0 (T@U) T@U)
  290. (declare-fun Tclass._System.___hFunc1_1 (T@U) T@U)
  291. (declare-fun MapType2Type (T@T T@T T@T) T@T)
  292. (declare-fun MapType2TypeInv0 (T@T) T@T)
  293. (declare-fun MapType2TypeInv1 (T@T) T@T)
  294. (declare-fun MapType2TypeInv2 (T@T) T@T)
  295. (declare-fun MapType2Select (T@U T@U T@U) T@U)
  296. (declare-fun MapType2Store (T@U T@U T@U T@U) T@U)
  297. (declare-fun Apply1 (T@U T@U T@U T@U T@U) T@U)
  298. (declare-fun Handle1 (T@U T@U T@U) T@U)
  299. (declare-fun Requires1 (T@U T@U T@U T@U T@U) Bool)
  300. (declare-fun Reads1 (T@U T@U T@U T@U T@U) T@U)
  301. (declare-fun Tclass._System.___hPartialFunc1 (T@U T@U) T@U)
  302. (declare-fun Tclass._System.___hPartialFunc1_0 (T@U) T@U)
  303. (declare-fun Tclass._System.___hPartialFunc1_1 (T@U) T@U)
  304. (declare-fun Tclass._System.___hTotalFunc1 (T@U T@U) T@U)
  305. (declare-fun Tclass._System.___hTotalFunc1_0 (T@U) T@U)
  306. (declare-fun Tclass._System.___hTotalFunc1_1 (T@U) T@U)
  307. (declare-fun |#_System._tuple#0._#Make0| () T@U)
  308. (declare-fun _System.Tuple0.___hMake0_q (T@U) Bool)
  309. (declare-fun Tclass._System.Tuple0 () T@U)
  310. (declare-fun |$IsA#_System.Tuple0| (T@U) Bool)
  311. (declare-fun |_System.Tuple0#Equal| (T@U T@U) Bool)
  312. (declare-fun Tclass._module.__default () T@U)
  313. (declare-fun MapType3Type (T@T T@T) T@T)
  314. (declare-fun MapType3TypeInv0 (T@T) T@T)
  315. (declare-fun MapType3TypeInv1 (T@T) T@T)
  316. (declare-fun MapType3Select (T@U T@U T@U) T@U)
  317. (declare-fun MapType3Store (T@U T@U T@U T@U) T@U)
  318. (declare-fun |lambda#0| (T@U T@U T@U T@U) T@U)
  319. (declare-fun |lambda#1| (T@U T@U T@U T@U) T@U)
  320. (assert (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (= (Ctor intType) 0) (= (Ctor realType) 1)) (= (Ctor boolType) 2)) (= (Ctor rmodeType) 3)) (forall ((arg0 Int) ) (! (= (U_2_int (int_2_U arg0)) arg0)
  321. :qid |typeInv:U_2_int|
  322. :pattern ( (int_2_U arg0))
  323. ))) (forall ((x T@U) ) (! (=> (= (type x) intType) (= (int_2_U (U_2_int x)) x))
  324. :qid |cast:U_2_int|
  325. :pattern ( (U_2_int x))
  326. ))) (forall ((arg0@@0 Int) ) (! (= (type (int_2_U arg0@@0)) intType)
  327. :qid |funType:int_2_U|
  328. :pattern ( (int_2_U arg0@@0))
  329. ))) (forall ((arg0@@1 Real) ) (! (= (U_2_real (real_2_U arg0@@1)) arg0@@1)
  330. :qid |typeInv:U_2_real|
  331. :pattern ( (real_2_U arg0@@1))
  332. ))) (forall ((x@@0 T@U) ) (! (=> (= (type x@@0) realType) (= (real_2_U (U_2_real x@@0)) x@@0))
  333. :qid |cast:U_2_real|
  334. :pattern ( (U_2_real x@@0))
  335. ))) (forall ((arg0@@2 Real) ) (! (= (type (real_2_U arg0@@2)) realType)
  336. :qid |funType:real_2_U|
  337. :pattern ( (real_2_U arg0@@2))
  338. ))) (forall ((arg0@@3 Bool) ) (! (= (U_2_bool (bool_2_U arg0@@3)) arg0@@3)
  339. :qid |typeInv:U_2_bool|
  340. :pattern ( (bool_2_U arg0@@3))
  341. ))) (forall ((x@@1 T@U) ) (! (=> (= (type x@@1) boolType) (= (bool_2_U (U_2_bool x@@1)) x@@1))
  342. :qid |cast:U_2_bool|
  343. :pattern ( (U_2_bool x@@1))
  344. ))) (forall ((arg0@@4 Bool) ) (! (= (type (bool_2_U arg0@@4)) boolType)
  345. :qid |funType:bool_2_U|
  346. :pattern ( (bool_2_U arg0@@4))
  347. ))) (forall ((arg0@@5 RoundingMode) ) (! (= (U_2_rmode (rmode_2_U arg0@@5)) arg0@@5)
  348. :qid |typeInv:U_2_rmode|
  349. :pattern ( (rmode_2_U arg0@@5))
  350. ))) (forall ((x@@2 T@U) ) (! (=> (= (type x@@2) rmodeType) (= (rmode_2_U (U_2_rmode x@@2)) x@@2))
  351. :qid |cast:U_2_rmode|
  352. :pattern ( (U_2_rmode x@@2))
  353. ))) (forall ((arg0@@6 RoundingMode) ) (! (= (type (rmode_2_U arg0@@6)) rmodeType)
  354. :qid |funType:rmode_2_U|
  355. :pattern ( (rmode_2_U arg0@@6))
  356. ))))
  357. (assert (forall ((x@@3 T@U) ) (! (UOrdering2 x@@3 x@@3)
  358. :qid |bg:subtype-refl|
  359. :no-pattern (U_2_int x@@3)
  360. :no-pattern (U_2_bool x@@3)
  361. )))
  362. (assert (forall ((x@@4 T@U) (y T@U) (z T@U) ) (! (let ((alpha (type x@@4)))
  363. (=> (and (and (= (type y) alpha) (= (type z) alpha)) (and (UOrdering2 x@@4 y) (UOrdering2 y z))) (UOrdering2 x@@4 z)))
  364. :qid |bg:subtype-trans|
  365. :pattern ( (UOrdering2 x@@4 y) (UOrdering2 y z))
  366. )))
  367. (assert (forall ((x@@5 T@U) (y@@0 T@U) ) (! (let ((alpha@@0 (type x@@5)))
  368. (=> (= (type y@@0) alpha@@0) (=> (and (UOrdering2 x@@5 y@@0) (UOrdering2 y@@0 x@@5)) (= x@@5 y@@0))))
  369. :qid |bg:subtype-antisymm|
  370. :pattern ( (UOrdering2 x@@5 y@@0) (UOrdering2 y@@0 x@@5))
  371. )))
  372. (assert (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (= (Ctor TyType) 4) (= (type TBool) TyType)) (= (type TChar) TyType)) (= (type TInt) TyType)) (= (type TReal) TyType)) (= (type TORDINAL) TyType)) (= (Ctor TyTagType) 5)) (= (type TagBool) TyTagType)) (= (type TagChar) TyTagType)) (= (type TagInt) TyTagType)) (= (type TagReal) TyTagType)) (= (type TagORDINAL) TyTagType)) (= (type TagSet) TyTagType)) (= (type TagISet) TyTagType)) (= (type TagMultiSet) TyTagType)) (= (type TagSeq) TyTagType)) (= (type TagMap) TyTagType)) (= (type TagIMap) TyTagType)) (= (type TagClass) TyTagType)) (= (Ctor ClassNameType) 6)) (= (type NoTraitAtAll) ClassNameType)) (= (type class._System.int) ClassNameType)) (= (type class._System.bool) ClassNameType)) (= (type class._System.set) ClassNameType)) (= (type class._System.seq) ClassNameType)) (= (type class._System.multiset) ClassNameType)) (forall ((arg0@@7 T@T) ) (! (= (Ctor (FieldType arg0@@7)) 7)
  373. :qid |ctor:FieldType|
  374. ))) (forall ((arg0@@8 T@T) ) (! (= (FieldTypeInv0 (FieldType arg0@@8)) arg0@@8)
  375. :qid |typeInv:FieldTypeInv0|
  376. :pattern ( (FieldType arg0@@8))
  377. ))) (= (type alloc) (FieldType boolType))) (= (Ctor NameFamilyType) 8)) (= (type allocName) NameFamilyType)) (= (type Tagclass._System.nat) TyTagType)) (= (type class._System.object?) ClassNameType)) (= (type Tagclass._System.object?) TyTagType)) (= (type Tagclass._System.object) TyTagType)) (= (type class._System.array?) ClassNameType)) (= (type Tagclass._System.array?) TyTagType)) (= (type Tagclass._System.array) TyTagType)) (= (type Tagclass._System.___hFunc0) TyTagType)) (= (type Tagclass._System.___hPartialFunc0) TyTagType)) (= (type Tagclass._System.___hTotalFunc0) TyTagType)) (= (type class._System.Tuple2) ClassNameType)) (= (Ctor DtCtorIdType) 9)) (= (type |##_System._tuple#2._#Make2|) DtCtorIdType)) (= (type Tagclass._System.Tuple2) TyTagType)) (= (type Tagclass._System.___hFunc1) TyTagType)) (= (type Tagclass._System.___hPartialFunc1) TyTagType)) (= (type Tagclass._System.___hTotalFunc1) TyTagType)) (= (type class._System.Tuple0) ClassNameType)) (= (type |##_System._tuple#0._#Make0|) DtCtorIdType)) (= (type Tagclass._System.Tuple0) TyTagType)) (= (type class._module.__default) ClassNameType)) (= (type Tagclass._module.__default) TyTagType)))
  378. (assert (distinct TBool TChar TInt TReal TORDINAL TagBool TagChar TagInt TagReal TagORDINAL TagSet TagISet TagMultiSet TagSeq TagMap TagIMap TagClass NoTraitAtAll class._System.int class._System.bool class._System.set class._System.seq class._System.multiset alloc allocName Tagclass._System.nat class._System.object? Tagclass._System.object? Tagclass._System.object class._System.array? Tagclass._System.array? Tagclass._System.array Tagclass._System.___hFunc0 Tagclass._System.___hPartialFunc0 Tagclass._System.___hTotalFunc0 class._System.Tuple2 |##_System._tuple#2._#Make2| Tagclass._System.Tuple2 Tagclass._System.___hFunc1 Tagclass._System.___hPartialFunc1 Tagclass._System.___hTotalFunc1 class._System.Tuple0 |##_System._tuple#0._#Make0| Tagclass._System.Tuple0 class._module.__default Tagclass._module.__default)
  379. )
  380. (assert $$Language$Dafny)
  381. (assert (forall ((arg0@@9 Int) ) (! (= (type (TBitvector arg0@@9)) TyType)
  382. :qid |funType:TBitvector|
  383. :pattern ( (TBitvector arg0@@9))
  384. )))
  385. (assert (forall ((w Int) ) (! (= (Inv0_TBitvector (TBitvector w)) w)
  386. :qid |funwiths.38:15|
  387. :skolemid |0|
  388. :pattern ( (TBitvector w))
  389. )))
  390. (assert (and (forall ((arg0@@10 T@U) ) (! (= (type (TSet arg0@@10)) TyType)
  391. :qid |funType:TSet|
  392. :pattern ( (TSet arg0@@10))
  393. )) (forall ((arg0@@11 T@U) ) (! (= (type (Inv0_TSet arg0@@11)) TyType)
  394. :qid |funType:Inv0_TSet|
  395. :pattern ( (Inv0_TSet arg0@@11))
  396. ))))
  397. (assert (forall ((t T@U) ) (! (=> (= (type t) TyType) (= (Inv0_TSet (TSet t)) t))
  398. :qid |funwiths.42:15|
  399. :skolemid |1|
  400. :pattern ( (TSet t))
  401. )))
  402. (assert (and (forall ((arg0@@12 T@U) ) (! (= (type (TISet arg0@@12)) TyType)
  403. :qid |funType:TISet|
  404. :pattern ( (TISet arg0@@12))
  405. )) (forall ((arg0@@13 T@U) ) (! (= (type (Inv0_TISet arg0@@13)) TyType)
  406. :qid |funType:Inv0_TISet|
  407. :pattern ( (Inv0_TISet arg0@@13))
  408. ))))
  409. (assert (forall ((t@@0 T@U) ) (! (=> (= (type t@@0) TyType) (= (Inv0_TISet (TISet t@@0)) t@@0))
  410. :qid |funwiths.46:15|
  411. :skolemid |2|
  412. :pattern ( (TISet t@@0))
  413. )))
  414. (assert (and (forall ((arg0@@14 T@U) ) (! (= (type (TSeq arg0@@14)) TyType)
  415. :qid |funType:TSeq|
  416. :pattern ( (TSeq arg0@@14))
  417. )) (forall ((arg0@@15 T@U) ) (! (= (type (Inv0_TSeq arg0@@15)) TyType)
  418. :qid |funType:Inv0_TSeq|
  419. :pattern ( (Inv0_TSeq arg0@@15))
  420. ))))
  421. (assert (forall ((t@@1 T@U) ) (! (=> (= (type t@@1) TyType) (= (Inv0_TSeq (TSeq t@@1)) t@@1))
  422. :qid |funwiths.50:15|
  423. :skolemid |3|
  424. :pattern ( (TSeq t@@1))
  425. )))
  426. (assert (and (forall ((arg0@@16 T@U) ) (! (= (type (TMultiSet arg0@@16)) TyType)
  427. :qid |funType:TMultiSet|
  428. :pattern ( (TMultiSet arg0@@16))
  429. )) (forall ((arg0@@17 T@U) ) (! (= (type (Inv0_TMultiSet arg0@@17)) TyType)
  430. :qid |funType:Inv0_TMultiSet|
  431. :pattern ( (Inv0_TMultiSet arg0@@17))
  432. ))))
  433. (assert (forall ((t@@2 T@U) ) (! (=> (= (type t@@2) TyType) (= (Inv0_TMultiSet (TMultiSet t@@2)) t@@2))
  434. :qid |funwiths.54:15|
  435. :skolemid |4|
  436. :pattern ( (TMultiSet t@@2))
  437. )))
  438. (assert (and (forall ((arg0@@18 T@U) (arg1 T@U) ) (! (= (type (TMap arg0@@18 arg1)) TyType)
  439. :qid |funType:TMap|
  440. :pattern ( (TMap arg0@@18 arg1))
  441. )) (forall ((arg0@@19 T@U) ) (! (= (type (Inv0_TMap arg0@@19)) TyType)
  442. :qid |funType:Inv0_TMap|
  443. :pattern ( (Inv0_TMap arg0@@19))
  444. ))))
  445. (assert (forall ((t@@3 T@U) (u T@U) ) (! (=> (and (= (type t@@3) TyType) (= (type u) TyType)) (= (Inv0_TMap (TMap t@@3 u)) t@@3))
  446. :qid |funwiths.60:15|
  447. :skolemid |5|
  448. :pattern ( (TMap t@@3 u))
  449. )))
  450. (assert (forall ((arg0@@20 T@U) ) (! (= (type (Inv1_TMap arg0@@20)) TyType)
  451. :qid |funType:Inv1_TMap|
  452. :pattern ( (Inv1_TMap arg0@@20))
  453. )))
  454. (assert (forall ((t@@4 T@U) (u@@0 T@U) ) (! (=> (and (= (type t@@4) TyType) (= (type u@@0) TyType)) (= (Inv1_TMap (TMap t@@4 u@@0)) u@@0))
  455. :qid |funwiths.62:15|
  456. :skolemid |6|
  457. :pattern ( (TMap t@@4 u@@0))
  458. )))
  459. (assert (and (forall ((arg0@@21 T@U) (arg1@@0 T@U) ) (! (= (type (TIMap arg0@@21 arg1@@0)) TyType)
  460. :qid |funType:TIMap|
  461. :pattern ( (TIMap arg0@@21 arg1@@0))
  462. )) (forall ((arg0@@22 T@U) ) (! (= (type (Inv0_TIMap arg0@@22)) TyType)
  463. :qid |funType:Inv0_TIMap|
  464. :pattern ( (Inv0_TIMap arg0@@22))
  465. ))))
  466. (assert (forall ((t@@5 T@U) (u@@1 T@U) ) (! (=> (and (= (type t@@5) TyType) (= (type u@@1) TyType)) (= (Inv0_TIMap (TIMap t@@5 u@@1)) t@@5))
  467. :qid |funwiths.68:15|
  468. :skolemid |7|
  469. :pattern ( (TIMap t@@5 u@@1))
  470. )))
  471. (assert (forall ((arg0@@23 T@U) ) (! (= (type (Inv1_TIMap arg0@@23)) TyType)
  472. :qid |funType:Inv1_TIMap|
  473. :pattern ( (Inv1_TIMap arg0@@23))
  474. )))
  475. (assert (forall ((t@@6 T@U) (u@@2 T@U) ) (! (=> (and (= (type t@@6) TyType) (= (type u@@2) TyType)) (= (Inv1_TIMap (TIMap t@@6 u@@2)) u@@2))
  476. :qid |funwiths.70:15|
  477. :skolemid |8|
  478. :pattern ( (TIMap t@@6 u@@2))
  479. )))
  480. (assert (forall ((arg0@@24 T@U) ) (! (= (type (Tag arg0@@24)) TyTagType)
  481. :qid |funType:Tag|
  482. :pattern ( (Tag arg0@@24))
  483. )))
  484. (assert (= (Tag TBool) TagBool))
  485. (assert (= (Tag TChar) TagChar))
  486. (assert (= (Tag TInt) TagInt))
  487. (assert (= (Tag TReal) TagReal))
  488. (assert (= (Tag TORDINAL) TagORDINAL))
  489. (assert (forall ((t@@7 T@U) ) (! (=> (= (type t@@7) TyType) (= (Tag (TSet t@@7)) TagSet))
  490. :qid |funwiths.110:15|
  491. :skolemid |9|
  492. :pattern ( (TSet t@@7))
  493. )))
  494. (assert (forall ((t@@8 T@U) ) (! (=> (= (type t@@8) TyType) (= (Tag (TISet t@@8)) TagISet))
  495. :qid |funwiths.112:15|
  496. :skolemid |10|
  497. :pattern ( (TISet t@@8))
  498. )))
  499. (assert (forall ((t@@9 T@U) ) (! (=> (= (type t@@9) TyType) (= (Tag (TMultiSet t@@9)) TagMultiSet))
  500. :qid |funwiths.114:15|
  501. :skolemid |11|
  502. :pattern ( (TMultiSet t@@9))
  503. )))
  504. (assert (forall ((t@@10 T@U) ) (! (=> (= (type t@@10) TyType) (= (Tag (TSeq t@@10)) TagSeq))
  505. :qid |funwiths.116:15|
  506. :skolemid |12|
  507. :pattern ( (TSeq t@@10))
  508. )))
  509. (assert (forall ((t@@11 T@U) (u@@3 T@U) ) (! (=> (and (= (type t@@11) TyType) (= (type u@@3) TyType)) (= (Tag (TMap t@@11 u@@3)) TagMap))
  510. :qid |funwiths.118:15|
  511. :skolemid |13|
  512. :pattern ( (TMap t@@11 u@@3))
  513. )))
  514. (assert (forall ((t@@12 T@U) (u@@4 T@U) ) (! (=> (and (= (type t@@12) TyType) (= (type u@@4) TyType)) (= (Tag (TIMap t@@12 u@@4)) TagIMap))
  515. :qid |funwiths.120:15|
  516. :skolemid |14|
  517. :pattern ( (TIMap t@@12 u@@4))
  518. )))
  519. (assert (forall ((x@@6 Int) ) (! (= (LitInt x@@6) x@@6)
  520. :qid |funwiths.124:15|
  521. :skolemid |15|
  522. :pattern ( (LitInt x@@6))
  523. )))
  524. (assert (and (and (= (Ctor BoxType) 10) (forall ((arg0@@25 T@U) ) (! (= (type ($Box arg0@@25)) BoxType)
  525. :qid |funType:$Box|
  526. :pattern ( ($Box arg0@@25))
  527. ))) (forall ((arg0@@26 T@U) ) (! (let ((T (type arg0@@26)))
  528. (= (type (Lit arg0@@26)) T))
  529. :qid |funType:Lit|
  530. :pattern ( (Lit arg0@@26))
  531. ))))
  532. (assert (forall ((x@@7 Int) ) (! (= ($Box (int_2_U (LitInt x@@7))) (Lit ($Box (int_2_U x@@7))))
  533. :qid |funwiths.126:15|
  534. :skolemid |16|
  535. :pattern ( ($Box (int_2_U (LitInt x@@7))))
  536. )))
  537. (assert (forall ((x@@8 Real) ) (! (= (LitReal x@@8) x@@8)
  538. :qid |funwiths.130:15|
  539. :skolemid |17|
  540. :pattern ( (LitReal x@@8))
  541. )))
  542. (assert (forall ((x@@9 Real) ) (! (= ($Box (real_2_U (LitReal x@@9))) (Lit ($Box (real_2_U x@@9))))
  543. :qid |funwiths.132:15|
  544. :skolemid |18|
  545. :pattern ( ($Box (real_2_U (LitReal x@@9))))
  546. )))
  547. (assert (forall ((x@@10 T@U) ) (! (= (Lit x@@10) x@@10)
  548. :qid |funwiths.136:18|
  549. :skolemid |19|
  550. :pattern ( (Lit x@@10))
  551. )))
  552. (assert (forall ((x@@11 T@U) ) (! (= ($Box (Lit x@@11)) (Lit ($Box x@@11)))
  553. :qid |funwiths.138:18|
  554. :skolemid |20|
  555. :pattern ( ($Box (Lit x@@11)))
  556. )))
  557. (assert (and (= (Ctor charType) 11) (forall ((arg0@@27 Int) ) (! (= (type (|char#FromInt| arg0@@27)) charType)
  558. :qid |funType:char#FromInt|
  559. :pattern ( (|char#FromInt| arg0@@27))
  560. ))))
  561. (assert (forall ((ch T@U) ) (! (=> (= (type ch) charType) (and (and (= (|char#FromInt| (|char#ToInt| ch)) ch) (<= 0 (|char#ToInt| ch))) (< (|char#ToInt| ch) 65536)))
  562. :qid |funwiths.146:15|
  563. :skolemid |21|
  564. :pattern ( (|char#ToInt| ch))
  565. )))
  566. (assert (forall ((n Int) ) (! (=> (and (<= 0 n) (< n 65536)) (= (|char#ToInt| (|char#FromInt| n)) n))
  567. :qid |funwiths.152:15|
  568. :skolemid |22|
  569. :pattern ( (|char#FromInt| n))
  570. )))
  571. (assert (forall ((arg0@@28 T@U) (arg1@@1 T@U) ) (! (= (type (|char#Plus| arg0@@28 arg1@@1)) charType)
  572. :qid |funType:char#Plus|
  573. :pattern ( (|char#Plus| arg0@@28 arg1@@1))
  574. )))
  575. (assert (forall ((a T@U) (b T@U) ) (! (=> (and (= (type a) charType) (= (type b) charType)) (= (|char#Plus| a b) (|char#FromInt| (+ (|char#ToInt| a) (|char#ToInt| b)))))
  576. :qid |funwiths.160:15|
  577. :skolemid |23|
  578. :pattern ( (|char#Plus| a b))
  579. )))
  580. (assert (forall ((arg0@@29 T@U) (arg1@@2 T@U) ) (! (= (type (|char#Minus| arg0@@29 arg1@@2)) charType)
  581. :qid |funType:char#Minus|
  582. :pattern ( (|char#Minus| arg0@@29 arg1@@2))
  583. )))
  584. (assert (forall ((a@@0 T@U) (b@@0 T@U) ) (! (=> (and (= (type a@@0) charType) (= (type b@@0) charType)) (= (|char#Minus| a@@0 b@@0) (|char#FromInt| (- (|char#ToInt| a@@0) (|char#ToInt| b@@0)))))
  585. :qid |funwiths.164:15|
  586. :skolemid |24|
  587. :pattern ( (|char#Minus| a@@0 b@@0))
  588. )))
  589. (assert (forall ((T@@0 T@T) (arg0@@30 T@U) ) (! (= (type ($Unbox T@@0 arg0@@30)) T@@0)
  590. :qid |funType:$Unbox|
  591. :pattern ( ($Unbox T@@0 arg0@@30))
  592. )))
  593. (assert (forall ((x@@12 T@U) ) (! (let ((T@@1 (type x@@12)))
  594. (= ($Unbox T@@1 ($Box x@@12)) x@@12))
  595. :qid |funwiths.184:18|
  596. :skolemid |25|
  597. :pattern ( ($Box x@@12))
  598. )))
  599. (assert (forall ((bx T@U) ) (! (=> (and (= (type bx) BoxType) ($IsBox bx TInt)) (and (= ($Box ($Unbox intType bx)) bx) ($Is ($Unbox intType bx) TInt)))
  600. :qid |funwiths.186:15|
  601. :skolemid |26|
  602. :pattern ( ($IsBox bx TInt))
  603. )))
  604. (assert (forall ((bx@@0 T@U) ) (! (=> (and (= (type bx@@0) BoxType) ($IsBox bx@@0 TReal)) (and (= ($Box ($Unbox realType bx@@0)) bx@@0) ($Is ($Unbox realType bx@@0) TReal)))
  605. :qid |funwiths.190:15|
  606. :skolemid |27|
  607. :pattern ( ($IsBox bx@@0 TReal))
  608. )))
  609. (assert (forall ((bx@@1 T@U) ) (! (=> (and (= (type bx@@1) BoxType) ($IsBox bx@@1 TBool)) (and (= ($Box ($Unbox boolType bx@@1)) bx@@1) ($Is ($Unbox boolType bx@@1) TBool)))
  610. :qid |funwiths.195:15|
  611. :skolemid |28|
  612. :pattern ( ($IsBox bx@@1 TBool))
  613. )))
  614. (assert (forall ((bx@@2 T@U) ) (! (=> (and (= (type bx@@2) BoxType) ($IsBox bx@@2 TChar)) (and (= ($Box ($Unbox charType bx@@2)) bx@@2) ($Is ($Unbox charType bx@@2) TChar)))
  615. :qid |funwiths.200:15|
  616. :skolemid |29|
  617. :pattern ( ($IsBox bx@@2 TChar))
  618. )))
  619. (assert (and (and (and (and (and (and (forall ((arg0@@31 T@T) (arg1@@3 T@T) ) (! (= (Ctor (MapType0Type arg0@@31 arg1@@3)) 12)
  620. :qid |ctor:MapType0Type|
  621. )) (forall ((arg0@@32 T@T) (arg1@@4 T@T) ) (! (= (MapType0TypeInv0 (MapType0Type arg0@@32 arg1@@4)) arg0@@32)
  622. :qid |typeInv:MapType0TypeInv0|
  623. :pattern ( (MapType0Type arg0@@32 arg1@@4))
  624. ))) (forall ((arg0@@33 T@T) (arg1@@5 T@T) ) (! (= (MapType0TypeInv1 (MapType0Type arg0@@33 arg1@@5)) arg1@@5)
  625. :qid |typeInv:MapType0TypeInv1|
  626. :pattern ( (MapType0Type arg0@@33 arg1@@5))
  627. ))) (forall ((arg0@@34 T@U) (arg1@@6 T@U) ) (! (let ((aVar1 (MapType0TypeInv1 (type arg0@@34))))
  628. (= (type (MapType0Select arg0@@34 arg1@@6)) aVar1))
  629. :qid |funType:MapType0Select|
  630. :pattern ( (MapType0Select arg0@@34 arg1@@6))
  631. ))) (forall ((arg0@@35 T@U) (arg1@@7 T@U) (arg2 T@U) ) (! (let ((aVar1@@0 (type arg2)))
  632. (let ((aVar0 (type arg1@@7)))
  633. (= (type (MapType0Store arg0@@35 arg1@@7 arg2)) (MapType0Type aVar0 aVar1@@0))))
  634. :qid |funType:MapType0Store|
  635. :pattern ( (MapType0Store arg0@@35 arg1@@7 arg2))
  636. ))) (forall ((m T@U) (x0 T@U) (val T@U) ) (! (let ((aVar1@@1 (MapType0TypeInv1 (type m))))
  637. (=> (= (type val) aVar1@@1) (= (MapType0Select (MapType0Store m x0 val) x0) val)))
  638. :qid |mapAx0:MapType0Select|
  639. :weight 0
  640. ))) (and (forall ((val@@0 T@U) (m@@0 T@U) (x0@@0 T@U) (y0 T@U) ) (! (or (= x0@@0 y0) (= (MapType0Select (MapType0Store m@@0 x0@@0 val@@0) y0) (MapType0Select m@@0 y0)))
  641. :qid |mapAx1:MapType0Select:0|
  642. :weight 0
  643. )) (forall ((val@@1 T@U) (m@@1 T@U) (x0@@1 T@U) (y0@@0 T@U) ) (! (or true (= (MapType0Select (MapType0Store m@@1 x0@@1 val@@1) y0@@0) (MapType0Select m@@1 y0@@0)))
  644. :qid |mapAx2:MapType0Select|
  645. :weight 0
  646. )))))
  647. (assert (forall ((bx@@3 T@U) (t@@13 T@U) ) (! (=> (and (and (= (type bx@@3) BoxType) (= (type t@@13) TyType)) ($IsBox bx@@3 (TSet t@@13))) (and (= ($Box ($Unbox (MapType0Type BoxType boolType) bx@@3)) bx@@3) ($Is ($Unbox (MapType0Type BoxType boolType) bx@@3) (TSet t@@13))))
  648. :qid |funwiths.205:15|
  649. :skolemid |30|
  650. :pattern ( ($IsBox bx@@3 (TSet t@@13)))
  651. )))
  652. (assert (forall ((bx@@4 T@U) (t@@14 T@U) ) (! (=> (and (and (= (type bx@@4) BoxType) (= (type t@@14) TyType)) ($IsBox bx@@4 (TISet t@@14))) (and (= ($Box ($Unbox (MapType0Type BoxType boolType) bx@@4)) bx@@4) ($Is ($Unbox (MapType0Type BoxType boolType) bx@@4) (TISet t@@14))))
  653. :qid |funwiths.210:15|
  654. :skolemid |31|
  655. :pattern ( ($IsBox bx@@4 (TISet t@@14)))
  656. )))
  657. (assert (forall ((bx@@5 T@U) (t@@15 T@U) ) (! (=> (and (and (= (type bx@@5) BoxType) (= (type t@@15) TyType)) ($IsBox bx@@5 (TMultiSet t@@15))) (and (= ($Box ($Unbox (MapType0Type BoxType intType) bx@@5)) bx@@5) ($Is ($Unbox (MapType0Type BoxType intType) bx@@5) (TMultiSet t@@15))))
  658. :qid |funwiths.215:15|
  659. :skolemid |32|
  660. :pattern ( ($IsBox bx@@5 (TMultiSet t@@15)))
  661. )))
  662. (assert (and (forall ((arg0@@36 T@T) ) (! (= (Ctor (SeqType arg0@@36)) 13)
  663. :qid |ctor:SeqType|
  664. )) (forall ((arg0@@37 T@T) ) (! (= (SeqTypeInv0 (SeqType arg0@@37)) arg0@@37)
  665. :qid |typeInv:SeqTypeInv0|
  666. :pattern ( (SeqType arg0@@37))
  667. ))))
  668. (assert (forall ((bx@@6 T@U) (t@@16 T@U) ) (! (=> (and (and (= (type bx@@6) BoxType) (= (type t@@16) TyType)) ($IsBox bx@@6 (TSeq t@@16))) (and (= ($Box ($Unbox (SeqType BoxType) bx@@6)) bx@@6) ($Is ($Unbox (SeqType BoxType) bx@@6) (TSeq t@@16))))
  669. :qid |funwiths.221:15|
  670. :skolemid |33|
  671. :pattern ( ($IsBox bx@@6 (TSeq t@@16)))
  672. )))
  673. (assert (and (and (forall ((arg0@@38 T@T) (arg1@@8 T@T) ) (! (= (Ctor (MapType arg0@@38 arg1@@8)) 14)
  674. :qid |ctor:MapType|
  675. )) (forall ((arg0@@39 T@T) (arg1@@9 T@T) ) (! (= (MapTypeInv0 (MapType arg0@@39 arg1@@9)) arg0@@39)
  676. :qid |typeInv:MapTypeInv0|
  677. :pattern ( (MapType arg0@@39 arg1@@9))
  678. ))) (forall ((arg0@@40 T@T) (arg1@@10 T@T) ) (! (= (MapTypeInv1 (MapType arg0@@40 arg1@@10)) arg1@@10)
  679. :qid |typeInv:MapTypeInv1|
  680. :pattern ( (MapType arg0@@40 arg1@@10))
  681. ))))
  682. (assert (forall ((bx@@7 T@U) (s T@U) (t@@17 T@U) ) (! (=> (and (and (and (= (type bx@@7) BoxType) (= (type s) TyType)) (= (type t@@17) TyType)) ($IsBox bx@@7 (TMap s t@@17))) (and (= ($Box ($Unbox (MapType BoxType BoxType) bx@@7)) bx@@7) ($Is ($Unbox (MapType BoxType BoxType) bx@@7) (TMap s t@@17))))
  683. :qid |funwiths.226:15|
  684. :skolemid |34|
  685. :pattern ( ($IsBox bx@@7 (TMap s t@@17)))
  686. )))
  687. (assert (and (and (forall ((arg0@@41 T@T) (arg1@@11 T@T) ) (! (= (Ctor (IMapType arg0@@41 arg1@@11)) 15)
  688. :qid |ctor:IMapType|
  689. )) (forall ((arg0@@42 T@T) (arg1@@12 T@T) ) (! (= (IMapTypeInv0 (IMapType arg0@@42 arg1@@12)) arg0@@42)
  690. :qid |typeInv:IMapTypeInv0|
  691. :pattern ( (IMapType arg0@@42 arg1@@12))
  692. ))) (forall ((arg0@@43 T@T) (arg1@@13 T@T) ) (! (= (IMapTypeInv1 (IMapType arg0@@43 arg1@@13)) arg1@@13)
  693. :qid |typeInv:IMapTypeInv1|
  694. :pattern ( (IMapType arg0@@43 arg1@@13))
  695. ))))
  696. (assert (forall ((bx@@8 T@U) (s@@0 T@U) (t@@18 T@U) ) (! (=> (and (and (and (= (type bx@@8) BoxType) (= (type s@@0) TyType)) (= (type t@@18) TyType)) ($IsBox bx@@8 (TIMap s@@0 t@@18))) (and (= ($Box ($Unbox (IMapType BoxType BoxType) bx@@8)) bx@@8) ($Is ($Unbox (IMapType BoxType BoxType) bx@@8) (TIMap s@@0 t@@18))))
  697. :qid |funwiths.231:15|
  698. :skolemid |35|
  699. :pattern ( ($IsBox bx@@8 (TIMap s@@0 t@@18)))
  700. )))
  701. (assert (forall ((v T@U) (t@@19 T@U) ) (! (=> (= (type t@@19) TyType) (and (=> ($IsBox ($Box v) t@@19) ($Is v t@@19)) (=> ($Is v t@@19) ($IsBox ($Box v) t@@19))))
  702. :qid |funwiths.237:18|
  703. :skolemid |36|
  704. :pattern ( ($IsBox ($Box v) t@@19))
  705. )))
  706. (assert (and (and (and (and (and (forall ((arg0@@44 T@U) (arg1@@14 T@U) ) (! (let ((alpha@@1 (FieldTypeInv0 (type arg1@@14))))
  707. (= (type (MapType1Select arg0@@44 arg1@@14)) alpha@@1))
  708. :qid |funType:MapType1Select|
  709. :pattern ( (MapType1Select arg0@@44 arg1@@14))
  710. )) (= (Ctor MapType1Type) 16)) (forall ((arg0@@45 T@U) (arg1@@15 T@U) (arg2@@0 T@U) ) (! (= (type (MapType1Store arg0@@45 arg1@@15 arg2@@0)) MapType1Type)
  711. :qid |funType:MapType1Store|
  712. :pattern ( (MapType1Store arg0@@45 arg1@@15 arg2@@0))
  713. ))) (forall ((m@@2 T@U) (x0@@2 T@U) (val@@2 T@U) ) (! (let ((alpha@@2 (FieldTypeInv0 (type x0@@2))))
  714. (=> (= (type val@@2) alpha@@2) (= (MapType1Select (MapType1Store m@@2 x0@@2 val@@2) x0@@2) val@@2)))
  715. :qid |mapAx0:MapType1Select|
  716. :weight 0
  717. ))) (and (forall ((val@@3 T@U) (m@@3 T@U) (x0@@3 T@U) (y0@@1 T@U) ) (! (or (= x0@@3 y0@@1) (= (MapType1Select (MapType1Store m@@3 x0@@3 val@@3) y0@@1) (MapType1Select m@@3 y0@@1)))
  718. :qid |mapAx1:MapType1Select:0|
  719. :weight 0
  720. )) (forall ((val@@4 T@U) (m@@4 T@U) (x0@@4 T@U) (y0@@2 T@U) ) (! (or true (= (MapType1Select (MapType1Store m@@4 x0@@4 val@@4) y0@@2) (MapType1Select m@@4 y0@@2)))
  721. :qid |mapAx2:MapType1Select|
  722. :weight 0
  723. )))) (= (Ctor refType) 17)))
  724. (assert (forall ((v@@0 T@U) (t@@20 T@U) (h T@U) ) (! (=> (and (= (type t@@20) TyType) (= (type h) (MapType0Type refType MapType1Type))) (and (=> ($IsAllocBox ($Box v@@0) t@@20 h) ($IsAlloc v@@0 t@@20 h)) (=> ($IsAlloc v@@0 t@@20 h) ($IsAllocBox ($Box v@@0) t@@20 h))))
  725. :qid |funwiths.241:18|
  726. :skolemid |37|
  727. :pattern ( ($IsAllocBox ($Box v@@0) t@@20 h))
  728. )))
  729. (assert (forall ((v@@1 T@U) ) (! (=> (= (type v@@1) intType) ($Is v@@1 TInt))
  730. :qid |funwiths.253:15|
  731. :skolemid |38|
  732. :pattern ( ($Is v@@1 TInt))
  733. )))
  734. (assert (forall ((v@@2 T@U) ) (! (=> (= (type v@@2) realType) ($Is v@@2 TReal))
  735. :qid |funwiths.255:15|
  736. :skolemid |39|
  737. :pattern ( ($Is v@@2 TReal))
  738. )))
  739. (assert (forall ((v@@3 T@U) ) (! (=> (= (type v@@3) boolType) ($Is v@@3 TBool))
  740. :qid |funwiths.257:15|
  741. :skolemid |40|
  742. :pattern ( ($Is v@@3 TBool))
  743. )))
  744. (assert (forall ((v@@4 T@U) ) (! (=> (= (type v@@4) charType) ($Is v@@4 TChar))
  745. :qid |funwiths.259:15|
  746. :skolemid |41|
  747. :pattern ( ($Is v@@4 TChar))
  748. )))
  749. (assert (forall ((v@@5 T@U) ) (! (=> (= (type v@@5) BoxType) ($Is v@@5 TORDINAL))
  750. :qid |funwiths.261:15|
  751. :skolemid |42|
  752. :pattern ( ($Is v@@5 TORDINAL))
  753. )))
  754. (assert (forall ((h@@0 T@U) (v@@6 T@U) ) (! (=> (and (= (type h@@0) (MapType0Type refType MapType1Type)) (= (type v@@6) intType)) ($IsAlloc v@@6 TInt h@@0))
  755. :qid |funwiths.263:15|
  756. :skolemid |43|
  757. :pattern ( ($IsAlloc v@@6 TInt h@@0))
  758. )))
  759. (assert (forall ((h@@1 T@U) (v@@7 T@U) ) (! (=> (and (= (type h@@1) (MapType0Type refType MapType1Type)) (= (type v@@7) realType)) ($IsAlloc v@@7 TReal h@@1))
  760. :qid |funwiths.265:15|
  761. :skolemid |44|
  762. :pattern ( ($IsAlloc v@@7 TReal h@@1))
  763. )))
  764. (assert (forall ((h@@2 T@U) (v@@8 T@U) ) (! (=> (and (= (type h@@2) (MapType0Type refType MapType1Type)) (= (type v@@8) boolType)) ($IsAlloc v@@8 TBool h@@2))
  765. :qid |funwiths.267:15|
  766. :skolemid |45|
  767. :pattern ( ($IsAlloc v@@8 TBool h@@2))
  768. )))
  769. (assert (forall ((h@@3 T@U) (v@@9 T@U) ) (! (=> (and (= (type h@@3) (MapType0Type refType MapType1Type)) (= (type v@@9) charType)) ($IsAlloc v@@9 TChar h@@3))
  770. :qid |funwiths.269:15|
  771. :skolemid |46|
  772. :pattern ( ($IsAlloc v@@9 TChar h@@3))
  773. )))
  774. (assert (forall ((h@@4 T@U) (v@@10 T@U) ) (! (=> (and (= (type h@@4) (MapType0Type refType MapType1Type)) (= (type v@@10) BoxType)) ($IsAlloc v@@10 TORDINAL h@@4))
  775. :qid |funwiths.271:15|
  776. :skolemid |47|
  777. :pattern ( ($IsAlloc v@@10 TORDINAL h@@4))
  778. )))
  779. (assert (forall ((v@@11 T@U) (t0 T@U) ) (! (=> (and (= (type v@@11) (MapType0Type BoxType boolType)) (= (type t0) TyType)) (and (=> ($Is v@@11 (TSet t0)) (forall ((bx@@9 T@U) ) (! (=> (and (= (type bx@@9) BoxType) (U_2_bool (MapType0Select v@@11 bx@@9))) ($IsBox bx@@9 t0))
  780. :qid |funwiths.277:33|
  781. :skolemid |48|
  782. :pattern ( (MapType0Select v@@11 bx@@9))
  783. ))) (=> (forall ((bx@@10 T@U) ) (! (=> (and (= (type bx@@10) BoxType) (U_2_bool (MapType0Select v@@11 bx@@10))) ($IsBox bx@@10 t0))
  784. :qid |funwiths.277:33|
  785. :skolemid |48|
  786. :pattern ( (MapType0Select v@@11 bx@@10))
  787. )) ($Is v@@11 (TSet t0)))))
  788. :qid |funwiths.275:15|
  789. :skolemid |49|
  790. :pattern ( ($Is v@@11 (TSet t0)))
  791. )))
  792. (assert (forall ((v@@12 T@U) (t0@@0 T@U) ) (! (=> (and (= (type v@@12) (MapType0Type BoxType boolType)) (= (type t0@@0) TyType)) (and (=> ($Is v@@12 (TISet t0@@0)) (forall ((bx@@11 T@U) ) (! (=> (and (= (type bx@@11) BoxType) (U_2_bool (MapType0Select v@@12 bx@@11))) ($IsBox bx@@11 t0@@0))
  793. :qid |funwiths.281:34|
  794. :skolemid |50|
  795. :pattern ( (MapType0Select v@@12 bx@@11))
  796. ))) (=> (forall ((bx@@12 T@U) ) (! (=> (and (= (type bx@@12) BoxType) (U_2_bool (MapType0Select v@@12 bx@@12))) ($IsBox bx@@12 t0@@0))
  797. :qid |funwiths.281:34|
  798. :skolemid |50|
  799. :pattern ( (MapType0Select v@@12 bx@@12))
  800. )) ($Is v@@12 (TISet t0@@0)))))
  801. :qid |funwiths.279:15|
  802. :skolemid |51|
  803. :pattern ( ($Is v@@12 (TISet t0@@0)))
  804. )))
  805. (assert (forall ((v@@13 T@U) (t0@@1 T@U) ) (! (=> (and (= (type v@@13) (MapType0Type BoxType intType)) (= (type t0@@1) TyType)) (and (=> ($Is v@@13 (TMultiSet t0@@1)) (forall ((bx@@13 T@U) ) (! (=> (and (= (type bx@@13) BoxType) (< 0 (U_2_int (MapType0Select v@@13 bx@@13)))) ($IsBox bx@@13 t0@@1))
  806. :qid |funwiths.286:19|
  807. :skolemid |52|
  808. :pattern ( (MapType0Select v@@13 bx@@13))
  809. ))) (=> (forall ((bx@@14 T@U) ) (! (=> (and (= (type bx@@14) BoxType) (< 0 (U_2_int (MapType0Select v@@13 bx@@14)))) ($IsBox bx@@14 t0@@1))
  810. :qid |funwiths.286:19|
  811. :skolemid |52|
  812. :pattern ( (MapType0Select v@@13 bx@@14))
  813. )) ($Is v@@13 (TMultiSet t0@@1)))))
  814. :qid |funwiths.283:15|
  815. :skolemid |53|
  816. :pattern ( ($Is v@@13 (TMultiSet t0@@1)))
  817. )))
  818. (assert (forall ((v@@14 T@U) (t0@@2 T@U) ) (! (=> (and (and (= (type v@@14) (MapType0Type BoxType intType)) (= (type t0@@2) TyType)) ($Is v@@14 (TMultiSet t0@@2))) ($IsGoodMultiSet v@@14))
  819. :qid |funwiths.288:15|
  820. :skolemid |54|
  821. :pattern ( ($Is v@@14 (TMultiSet t0@@2)))
  822. )))
  823. (assert (forall ((arg0@@46 T@U) (arg1@@16 Int) ) (! (let ((T@@2 (SeqTypeInv0 (type arg0@@46))))
  824. (= (type (|Seq#Index| arg0@@46 arg1@@16)) T@@2))
  825. :qid |funType:Seq#Index|
  826. :pattern ( (|Seq#Index| arg0@@46 arg1@@16))
  827. )))
  828. (assert (forall ((v@@15 T@U) (t0@@3 T@U) ) (! (=> (and (= (type v@@15) (SeqType BoxType)) (= (type t0@@3) TyType)) (and (=> ($Is v@@15 (TSeq t0@@3)) (forall ((i Int) ) (! (=> (and (<= 0 i) (< i (|Seq#Length| v@@15))) ($IsBox (|Seq#Index| v@@15 i) t0@@3))
  829. :qid |funwiths.295:19|
  830. :skolemid |55|
  831. :pattern ( (|Seq#Index| v@@15 i))
  832. ))) (=> (forall ((i@@0 Int) ) (! (=> (and (<= 0 i@@0) (< i@@0 (|Seq#Length| v@@15))) ($IsBox (|Seq#Index| v@@15 i@@0) t0@@3))
  833. :qid |funwiths.295:19|
  834. :skolemid |55|
  835. :pattern ( (|Seq#Index| v@@15 i@@0))
  836. )) ($Is v@@15 (TSeq t0@@3)))))
  837. :qid |funwiths.292:15|
  838. :skolemid |56|
  839. :pattern ( ($Is v@@15 (TSeq t0@@3)))
  840. )))
  841. (assert (forall ((v@@16 T@U) (t0@@4 T@U) (h@@5 T@U) ) (! (=> (and (and (= (type v@@16) (MapType0Type BoxType boolType)) (= (type t0@@4) TyType)) (= (type h@@5) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc v@@16 (TSet t0@@4) h@@5) (forall ((bx@@15 T@U) ) (! (=> (and (= (type bx@@15) BoxType) (U_2_bool (MapType0Select v@@16 bx@@15))) ($IsAllocBox bx@@15 t0@@4 h@@5))
  842. :qid |funwiths.302:19|
  843. :skolemid |57|
  844. :pattern ( (MapType0Select v@@16 bx@@15))
  845. ))) (=> (forall ((bx@@16 T@U) ) (! (=> (and (= (type bx@@16) BoxType) (U_2_bool (MapType0Select v@@16 bx@@16))) ($IsAllocBox bx@@16 t0@@4 h@@5))
  846. :qid |funwiths.302:19|
  847. :skolemid |57|
  848. :pattern ( (MapType0Select v@@16 bx@@16))
  849. )) ($IsAlloc v@@16 (TSet t0@@4) h@@5))))
  850. :qid |funwiths.299:15|
  851. :skolemid |58|
  852. :pattern ( ($IsAlloc v@@16 (TSet t0@@4) h@@5))
  853. )))
  854. (assert (forall ((v@@17 T@U) (t0@@5 T@U) (h@@6 T@U) ) (! (=> (and (and (= (type v@@17) (MapType0Type BoxType boolType)) (= (type t0@@5) TyType)) (= (type h@@6) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc v@@17 (TISet t0@@5) h@@6) (forall ((bx@@17 T@U) ) (! (=> (and (= (type bx@@17) BoxType) (U_2_bool (MapType0Select v@@17 bx@@17))) ($IsAllocBox bx@@17 t0@@5 h@@6))
  855. :qid |funwiths.307:19|
  856. :skolemid |59|
  857. :pattern ( (MapType0Select v@@17 bx@@17))
  858. ))) (=> (forall ((bx@@18 T@U) ) (! (=> (and (= (type bx@@18) BoxType) (U_2_bool (MapType0Select v@@17 bx@@18))) ($IsAllocBox bx@@18 t0@@5 h@@6))
  859. :qid |funwiths.307:19|
  860. :skolemid |59|
  861. :pattern ( (MapType0Select v@@17 bx@@18))
  862. )) ($IsAlloc v@@17 (TISet t0@@5) h@@6))))
  863. :qid |funwiths.304:15|
  864. :skolemid |60|
  865. :pattern ( ($IsAlloc v@@17 (TISet t0@@5) h@@6))
  866. )))
  867. (assert (forall ((v@@18 T@U) (t0@@6 T@U) (h@@7 T@U) ) (! (=> (and (and (= (type v@@18) (MapType0Type BoxType intType)) (= (type t0@@6) TyType)) (= (type h@@7) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc v@@18 (TMultiSet t0@@6) h@@7) (forall ((bx@@19 T@U) ) (! (=> (and (= (type bx@@19) BoxType) (< 0 (U_2_int (MapType0Select v@@18 bx@@19)))) ($IsAllocBox bx@@19 t0@@6 h@@7))
  868. :qid |funwiths.312:19|
  869. :skolemid |61|
  870. :pattern ( (MapType0Select v@@18 bx@@19))
  871. ))) (=> (forall ((bx@@20 T@U) ) (! (=> (and (= (type bx@@20) BoxType) (< 0 (U_2_int (MapType0Select v@@18 bx@@20)))) ($IsAllocBox bx@@20 t0@@6 h@@7))
  872. :qid |funwiths.312:19|
  873. :skolemid |61|
  874. :pattern ( (MapType0Select v@@18 bx@@20))
  875. )) ($IsAlloc v@@18 (TMultiSet t0@@6) h@@7))))
  876. :qid |funwiths.309:15|
  877. :skolemid |62|
  878. :pattern ( ($IsAlloc v@@18 (TMultiSet t0@@6) h@@7))
  879. )))
  880. (assert (forall ((v@@19 T@U) (t0@@7 T@U) (h@@8 T@U) ) (! (=> (and (and (= (type v@@19) (SeqType BoxType)) (= (type t0@@7) TyType)) (= (type h@@8) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc v@@19 (TSeq t0@@7) h@@8) (forall ((i@@1 Int) ) (! (=> (and (<= 0 i@@1) (< i@@1 (|Seq#Length| v@@19))) ($IsAllocBox (|Seq#Index| v@@19 i@@1) t0@@7 h@@8))
  881. :qid |funwiths.317:19|
  882. :skolemid |63|
  883. :pattern ( (|Seq#Index| v@@19 i@@1))
  884. ))) (=> (forall ((i@@2 Int) ) (! (=> (and (<= 0 i@@2) (< i@@2 (|Seq#Length| v@@19))) ($IsAllocBox (|Seq#Index| v@@19 i@@2) t0@@7 h@@8))
  885. :qid |funwiths.317:19|
  886. :skolemid |63|
  887. :pattern ( (|Seq#Index| v@@19 i@@2))
  888. )) ($IsAlloc v@@19 (TSeq t0@@7) h@@8))))
  889. :qid |funwiths.314:15|
  890. :skolemid |64|
  891. :pattern ( ($IsAlloc v@@19 (TSeq t0@@7) h@@8))
  892. )))
  893. (assert (and (forall ((arg0@@47 T@U) ) (! (let ((V (MapTypeInv1 (type arg0@@47))))
  894. (let ((U (MapTypeInv0 (type arg0@@47))))
  895. (= (type (|Map#Elements| arg0@@47)) (MapType0Type U V))))
  896. :qid |funType:Map#Elements|
  897. :pattern ( (|Map#Elements| arg0@@47))
  898. )) (forall ((arg0@@48 T@U) ) (! (let ((U@@0 (MapTypeInv0 (type arg0@@48))))
  899. (= (type (|Map#Domain| arg0@@48)) (MapType0Type U@@0 boolType)))
  900. :qid |funType:Map#Domain|
  901. :pattern ( (|Map#Domain| arg0@@48))
  902. ))))
  903. (assert (forall ((v@@20 T@U) (t0@@8 T@U) (t1 T@U) ) (! (=> (and (and (= (type v@@20) (MapType BoxType BoxType)) (= (type t0@@8) TyType)) (= (type t1) TyType)) (and (=> ($Is v@@20 (TMap t0@@8 t1)) (forall ((bx@@21 T@U) ) (! (=> (and (= (type bx@@21) BoxType) (U_2_bool (MapType0Select (|Map#Domain| v@@20) bx@@21))) (and ($IsBox (MapType0Select (|Map#Elements| v@@20) bx@@21) t1) ($IsBox bx@@21 t0@@8)))
  904. :qid |funwiths.324:19|
  905. :skolemid |65|
  906. :pattern ( (MapType0Select (|Map#Elements| v@@20) bx@@21))
  907. :pattern ( (MapType0Select (|Map#Domain| v@@20) bx@@21))
  908. ))) (=> (forall ((bx@@22 T@U) ) (! (=> (and (= (type bx@@22) BoxType) (U_2_bool (MapType0Select (|Map#Domain| v@@20) bx@@22))) (and ($IsBox (MapType0Select (|Map#Elements| v@@20) bx@@22) t1) ($IsBox bx@@22 t0@@8)))
  909. :qid |funwiths.324:19|
  910. :skolemid |65|
  911. :pattern ( (MapType0Select (|Map#Elements| v@@20) bx@@22))
  912. :pattern ( (MapType0Select (|Map#Domain| v@@20) bx@@22))
  913. )) ($Is v@@20 (TMap t0@@8 t1)))))
  914. :qid |funwiths.321:15|
  915. :skolemid |66|
  916. :pattern ( ($Is v@@20 (TMap t0@@8 t1)))
  917. )))
  918. (assert (forall ((v@@21 T@U) (t0@@9 T@U) (t1@@0 T@U) (h@@9 T@U) ) (! (=> (and (and (and (= (type v@@21) (MapType BoxType BoxType)) (= (type t0@@9) TyType)) (= (type t1@@0) TyType)) (= (type h@@9) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc v@@21 (TMap t0@@9 t1@@0) h@@9) (forall ((bx@@23 T@U) ) (! (=> (and (= (type bx@@23) BoxType) (U_2_bool (MapType0Select (|Map#Domain| v@@21) bx@@23))) (and ($IsAllocBox (MapType0Select (|Map#Elements| v@@21) bx@@23) t1@@0 h@@9) ($IsAllocBox bx@@23 t0@@9 h@@9)))
  919. :qid |funwiths.331:19|
  920. :skolemid |67|
  921. :pattern ( (MapType0Select (|Map#Elements| v@@21) bx@@23))
  922. :pattern ( (MapType0Select (|Map#Domain| v@@21) bx@@23))
  923. ))) (=> (forall ((bx@@24 T@U) ) (! (=> (and (= (type bx@@24) BoxType) (U_2_bool (MapType0Select (|Map#Domain| v@@21) bx@@24))) (and ($IsAllocBox (MapType0Select (|Map#Elements| v@@21) bx@@24) t1@@0 h@@9) ($IsAllocBox bx@@24 t0@@9 h@@9)))
  924. :qid |funwiths.331:19|
  925. :skolemid |67|
  926. :pattern ( (MapType0Select (|Map#Elements| v@@21) bx@@24))
  927. :pattern ( (MapType0Select (|Map#Domain| v@@21) bx@@24))
  928. )) ($IsAlloc v@@21 (TMap t0@@9 t1@@0) h@@9))))
  929. :qid |funwiths.328:15|
  930. :skolemid |68|
  931. :pattern ( ($IsAlloc v@@21 (TMap t0@@9 t1@@0) h@@9))
  932. )))
  933. (assert (and (forall ((arg0@@49 T@U) ) (! (let ((V@@0 (IMapTypeInv1 (type arg0@@49))))
  934. (let ((U@@1 (IMapTypeInv0 (type arg0@@49))))
  935. (= (type (|IMap#Elements| arg0@@49)) (MapType0Type U@@1 V@@0))))
  936. :qid |funType:IMap#Elements|
  937. :pattern ( (|IMap#Elements| arg0@@49))
  938. )) (forall ((arg0@@50 T@U) ) (! (let ((U@@2 (IMapTypeInv0 (type arg0@@50))))
  939. (= (type (|IMap#Domain| arg0@@50)) (MapType0Type U@@2 boolType)))
  940. :qid |funType:IMap#Domain|
  941. :pattern ( (|IMap#Domain| arg0@@50))
  942. ))))
  943. (assert (forall ((v@@22 T@U) (t0@@10 T@U) (t1@@1 T@U) ) (! (=> (and (and (= (type v@@22) (IMapType BoxType BoxType)) (= (type t0@@10) TyType)) (= (type t1@@1) TyType)) (and (=> ($Is v@@22 (TIMap t0@@10 t1@@1)) (forall ((bx@@25 T@U) ) (! (=> (and (= (type bx@@25) BoxType) (U_2_bool (MapType0Select (|IMap#Domain| v@@22) bx@@25))) (and ($IsBox (MapType0Select (|IMap#Elements| v@@22) bx@@25) t1@@1) ($IsBox bx@@25 t0@@10)))
  944. :qid |funwiths.339:19|
  945. :skolemid |69|
  946. :pattern ( (MapType0Select (|IMap#Elements| v@@22) bx@@25))
  947. :pattern ( (MapType0Select (|IMap#Domain| v@@22) bx@@25))
  948. ))) (=> (forall ((bx@@26 T@U) ) (! (=> (and (= (type bx@@26) BoxType) (U_2_bool (MapType0Select (|IMap#Domain| v@@22) bx@@26))) (and ($IsBox (MapType0Select (|IMap#Elements| v@@22) bx@@26) t1@@1) ($IsBox bx@@26 t0@@10)))
  949. :qid |funwiths.339:19|
  950. :skolemid |69|
  951. :pattern ( (MapType0Select (|IMap#Elements| v@@22) bx@@26))
  952. :pattern ( (MapType0Select (|IMap#Domain| v@@22) bx@@26))
  953. )) ($Is v@@22 (TIMap t0@@10 t1@@1)))))
  954. :qid |funwiths.336:15|
  955. :skolemid |70|
  956. :pattern ( ($Is v@@22 (TIMap t0@@10 t1@@1)))
  957. )))
  958. (assert (forall ((v@@23 T@U) (t0@@11 T@U) (t1@@2 T@U) (h@@10 T@U) ) (! (=> (and (and (and (= (type v@@23) (IMapType BoxType BoxType)) (= (type t0@@11) TyType)) (= (type t1@@2) TyType)) (= (type h@@10) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc v@@23 (TIMap t0@@11 t1@@2) h@@10) (forall ((bx@@27 T@U) ) (! (=> (and (= (type bx@@27) BoxType) (U_2_bool (MapType0Select (|IMap#Domain| v@@23) bx@@27))) (and ($IsAllocBox (MapType0Select (|IMap#Elements| v@@23) bx@@27) t1@@2 h@@10) ($IsAllocBox bx@@27 t0@@11 h@@10)))
  959. :qid |funwiths.346:19|
  960. :skolemid |71|
  961. :pattern ( (MapType0Select (|IMap#Elements| v@@23) bx@@27))
  962. :pattern ( (MapType0Select (|IMap#Domain| v@@23) bx@@27))
  963. ))) (=> (forall ((bx@@28 T@U) ) (! (=> (and (= (type bx@@28) BoxType) (U_2_bool (MapType0Select (|IMap#Domain| v@@23) bx@@28))) (and ($IsAllocBox (MapType0Select (|IMap#Elements| v@@23) bx@@28) t1@@2 h@@10) ($IsAllocBox bx@@28 t0@@11 h@@10)))
  964. :qid |funwiths.346:19|
  965. :skolemid |71|
  966. :pattern ( (MapType0Select (|IMap#Elements| v@@23) bx@@28))
  967. :pattern ( (MapType0Select (|IMap#Domain| v@@23) bx@@28))
  968. )) ($IsAlloc v@@23 (TIMap t0@@11 t1@@2) h@@10))))
  969. :qid |funwiths.343:15|
  970. :skolemid |72|
  971. :pattern ( ($IsAlloc v@@23 (TIMap t0@@11 t1@@2) h@@10))
  972. )))
  973. (assert (and (and (forall ((arg0@@51 T@U) (arg1@@17 T@U) ) (! (= (type (TypeTuple arg0@@51 arg1@@17)) ClassNameType)
  974. :qid |funType:TypeTuple|
  975. :pattern ( (TypeTuple arg0@@51 arg1@@17))
  976. )) (forall ((arg0@@52 T@U) ) (! (= (type (TypeTupleCar arg0@@52)) ClassNameType)
  977. :qid |funType:TypeTupleCar|
  978. :pattern ( (TypeTupleCar arg0@@52))
  979. ))) (forall ((arg0@@53 T@U) ) (! (= (type (TypeTupleCdr arg0@@53)) ClassNameType)
  980. :qid |funType:TypeTupleCdr|
  981. :pattern ( (TypeTupleCdr arg0@@53))
  982. ))))
  983. (assert (forall ((a@@1 T@U) (b@@1 T@U) ) (! (=> (and (= (type a@@1) ClassNameType) (= (type b@@1) ClassNameType)) (and (= (TypeTupleCar (TypeTuple a@@1 b@@1)) a@@1) (= (TypeTupleCdr (TypeTuple a@@1 b@@1)) b@@1)))
  984. :qid |funwiths.373:15|
  985. :skolemid |73|
  986. :pattern ( (TypeTuple a@@1 b@@1))
  987. )))
  988. (assert (forall ((arg0@@54 T@U) ) (! (= (type (SetRef_to_SetBox arg0@@54)) (MapType0Type BoxType boolType))
  989. :qid |funType:SetRef_to_SetBox|
  990. :pattern ( (SetRef_to_SetBox arg0@@54))
  991. )))
  992. (assert (forall ((s@@1 T@U) (bx@@29 T@U) ) (! (=> (and (= (type s@@1) (MapType0Type refType boolType)) (= (type bx@@29) BoxType)) (and (=> (U_2_bool (MapType0Select (SetRef_to_SetBox s@@1) bx@@29)) (U_2_bool (MapType0Select s@@1 ($Unbox refType bx@@29)))) (=> (U_2_bool (MapType0Select s@@1 ($Unbox refType bx@@29))) (U_2_bool (MapType0Select (SetRef_to_SetBox s@@1) bx@@29)))))
  993. :qid |funwiths.381:15|
  994. :skolemid |74|
  995. :pattern ( (MapType0Select (SetRef_to_SetBox s@@1) bx@@29))
  996. )))
  997. (assert (= (type Tclass._System.object?) TyType))
  998. (assert (forall ((s@@2 T@U) ) (! (=> (= (type s@@2) (MapType0Type refType boolType)) ($Is (SetRef_to_SetBox s@@2) (TSet Tclass._System.object?)))
  999. :qid |funwiths.385:15|
  1000. :skolemid |75|
  1001. :pattern ( (SetRef_to_SetBox s@@2))
  1002. )))
  1003. (assert (= (Ctor DatatypeTypeType) 18))
  1004. (assert (forall ((d T@U) ) (! (=> (= (type d) DatatypeTypeType) (= (BoxRank ($Box d)) (DtRank d)))
  1005. :qid |funwiths.399:15|
  1006. :skolemid |76|
  1007. :pattern ( (BoxRank ($Box d)))
  1008. )))
  1009. (assert (forall ((o T@U) ) (! (=> (= (type o) BoxType) (<= 0 (|ORD#Offset| o)))
  1010. :qid |funwiths.407:15|
  1011. :skolemid |77|
  1012. :pattern ( (|ORD#Offset| o))
  1013. )))
  1014. (assert (forall ((arg0@@55 Int) ) (! (= (type (|ORD#FromNat| arg0@@55)) BoxType)
  1015. :qid |funType:ORD#FromNat|
  1016. :pattern ( (|ORD#FromNat| arg0@@55))
  1017. )))
  1018. (assert (forall ((n@@0 Int) ) (! (=> (<= 0 n@@0) (and (|ORD#IsNat| (|ORD#FromNat| n@@0)) (= (|ORD#Offset| (|ORD#FromNat| n@@0)) n@@0)))
  1019. :qid |funwiths.421:15|
  1020. :skolemid |78|
  1021. :pattern ( (|ORD#FromNat| n@@0))
  1022. )))
  1023. (assert (forall ((o@@0 T@U) ) (! (=> (and (= (type o@@0) BoxType) (|ORD#IsNat| o@@0)) (= o@@0 (|ORD#FromNat| (|ORD#Offset| o@@0))))
  1024. :qid |funwiths.425:15|
  1025. :skolemid |79|
  1026. :pattern ( (|ORD#Offset| o@@0))
  1027. :pattern ( (|ORD#IsNat| o@@0))
  1028. )))
  1029. (assert (forall ((o@@1 T@U) (p T@U) ) (! (=> (and (= (type o@@1) BoxType) (= (type p) BoxType)) (and (and (=> (|ORD#Less| o@@1 p) (not (= o@@1 p))) (=> (and (|ORD#IsNat| o@@1) (not (|ORD#IsNat| p))) (|ORD#Less| o@@1 p))) (=> (and (|ORD#IsNat| o@@1) (|ORD#IsNat| p)) (and (=> (|ORD#Less| o@@1 p) (< (|ORD#Offset| o@@1) (|ORD#Offset| p))) (=> (< (|ORD#Offset| o@@1) (|ORD#Offset| p)) (|ORD#Less| o@@1 p))))))
  1030. :qid |funwiths.431:15|
  1031. :skolemid |80|
  1032. :pattern ( (|ORD#Less| o@@1 p))
  1033. )))
  1034. (assert (forall ((o@@2 T@U) (p@@0 T@U) ) (! (=> (and (and (= (type o@@2) BoxType) (= (type p@@0) BoxType)) (|ORD#Less| o@@2 p@@0)) (not (= o@@2 p@@0)))
  1035. :qid |funwiths.438:15|
  1036. :skolemid |81|
  1037. :pattern ( (|ORD#Less| o@@2 p@@0))
  1038. )))
  1039. (assert (forall ((o@@3 T@U) (p@@1 T@U) ) (! (=> (and (= (type o@@3) BoxType) (= (type p@@1) BoxType)) (or (or (|ORD#Less| o@@3 p@@1) (= o@@3 p@@1)) (|ORD#Less| p@@1 o@@3)))
  1040. :qid |funwiths.440:15|
  1041. :skolemid |82|
  1042. :pattern ( (|ORD#Less| o@@3 p@@1) (|ORD#Less| p@@1 o@@3))
  1043. )))
  1044. (assert (forall ((o@@4 T@U) (p@@2 T@U) (r T@U) ) (! (=> (and (and (and (= (type o@@4) BoxType) (= (type p@@2) BoxType)) (= (type r) BoxType)) (and (|ORD#Less| o@@4 p@@2) (|ORD#Less| p@@2 r))) (|ORD#Less| o@@4 r))
  1045. :qid |funwiths.444:15|
  1046. :skolemid |83|
  1047. :pattern ( (|ORD#Less| o@@4 p@@2) (|ORD#Less| p@@2 r))
  1048. :pattern ( (|ORD#Less| o@@4 p@@2) (|ORD#Less| o@@4 r))
  1049. )))
  1050. (assert (forall ((o@@5 T@U) (p@@3 T@U) ) (! (=> (and (= (type o@@5) BoxType) (= (type p@@3) BoxType)) (and (=> (|ORD#LessThanLimit| o@@5 p@@3) (|ORD#Less| o@@5 p@@3)) (=> (|ORD#Less| o@@5 p@@3) (|ORD#LessThanLimit| o@@5 p@@3))))
  1051. :qid |funwiths.450:15|
  1052. :skolemid |84|
  1053. :pattern ( (|ORD#LessThanLimit| o@@5 p@@3))
  1054. )))
  1055. (assert (forall ((arg0@@56 T@U) (arg1@@18 T@U) ) (! (= (type (|ORD#Plus| arg0@@56 arg1@@18)) BoxType)
  1056. :qid |funType:ORD#Plus|
  1057. :pattern ( (|ORD#Plus| arg0@@56 arg1@@18))
  1058. )))
  1059. (assert (forall ((o@@6 T@U) (p@@4 T@U) ) (! (=> (and (= (type o@@6) BoxType) (= (type p@@4) BoxType)) (and (=> (|ORD#IsNat| (|ORD#Plus| o@@6 p@@4)) (and (|ORD#IsNat| o@@6) (|ORD#IsNat| p@@4))) (=> (|ORD#IsNat| p@@4) (and (and (=> (|ORD#IsNat| (|ORD#Plus| o@@6 p@@4)) (|ORD#IsNat| o@@6)) (=> (|ORD#IsNat| o@@6) (|ORD#IsNat| (|ORD#Plus| o@@6 p@@4)))) (= (|ORD#Offset| (|ORD#Plus| o@@6 p@@4)) (+ (|ORD#Offset| o@@6) (|ORD#Offset| p@@4)))))))
  1060. :qid |funwiths.456:15|
  1061. :skolemid |85|
  1062. :pattern ( (|ORD#Plus| o@@6 p@@4))
  1063. )))
  1064. (assert (forall ((o@@7 T@U) (p@@5 T@U) ) (! (=> (and (= (type o@@7) BoxType) (= (type p@@5) BoxType)) (and (or (= o@@7 (|ORD#Plus| o@@7 p@@5)) (|ORD#Less| o@@7 (|ORD#Plus| o@@7 p@@5))) (or (= p@@5 (|ORD#Plus| o@@7 p@@5)) (|ORD#Less| p@@5 (|ORD#Plus| o@@7 p@@5)))))
  1065. :qid |funwiths.463:15|
  1066. :skolemid |86|
  1067. :pattern ( (|ORD#Plus| o@@7 p@@5))
  1068. )))
  1069. (assert (forall ((o@@8 T@U) (p@@6 T@U) ) (! (=> (and (= (type o@@8) BoxType) (= (type p@@6) BoxType)) (and (=> (= o@@8 (|ORD#FromNat| 0)) (= (|ORD#Plus| o@@8 p@@6) p@@6)) (=> (= p@@6 (|ORD#FromNat| 0)) (= (|ORD#Plus| o@@8 p@@6) o@@8))))
  1070. :qid |funwiths.468:15|
  1071. :skolemid |87|
  1072. :pattern ( (|ORD#Plus| o@@8 p@@6))
  1073. )))
  1074. (assert (forall ((arg0@@57 T@U) (arg1@@19 T@U) ) (! (= (type (|ORD#Minus| arg0@@57 arg1@@19)) BoxType)
  1075. :qid |funType:ORD#Minus|
  1076. :pattern ( (|ORD#Minus| arg0@@57 arg1@@19))
  1077. )))
  1078. (assert (forall ((o@@9 T@U) (p@@7 T@U) ) (! (=> (and (and (= (type o@@9) BoxType) (= (type p@@7) BoxType)) (and (|ORD#IsNat| p@@7) (<= (|ORD#Offset| p@@7) (|ORD#Offset| o@@9)))) (and (and (=> (|ORD#IsNat| (|ORD#Minus| o@@9 p@@7)) (|ORD#IsNat| o@@9)) (=> (|ORD#IsNat| o@@9) (|ORD#IsNat| (|ORD#Minus| o@@9 p@@7)))) (= (|ORD#Offset| (|ORD#Minus| o@@9 p@@7)) (- (|ORD#Offset| o@@9) (|ORD#Offset| p@@7)))))
  1079. :qid |funwiths.475:15|
  1080. :skolemid |88|
  1081. :pattern ( (|ORD#Minus| o@@9 p@@7))
  1082. )))
  1083. (assert (forall ((o@@10 T@U) (p@@8 T@U) ) (! (=> (and (and (= (type o@@10) BoxType) (= (type p@@8) BoxType)) (and (|ORD#IsNat| p@@8) (<= (|ORD#Offset| p@@8) (|ORD#Offset| o@@10)))) (or (and (= p@@8 (|ORD#FromNat| 0)) (= (|ORD#Minus| o@@10 p@@8) o@@10)) (and (not (= p@@8 (|ORD#FromNat| 0))) (|ORD#Less| (|ORD#Minus| o@@10 p@@8) o@@10))))
  1084. :qid |funwiths.481:15|
  1085. :skolemid |89|
  1086. :pattern ( (|ORD#Minus| o@@10 p@@8))
  1087. )))
  1088. (assert (forall ((o@@11 T@U) (m@@5 Int) (n@@1 Int) ) (! (=> (= (type o@@11) BoxType) (=> (and (<= 0 m@@5) (<= 0 n@@1)) (= (|ORD#Plus| (|ORD#Plus| o@@11 (|ORD#FromNat| m@@5)) (|ORD#FromNat| n@@1)) (|ORD#Plus| o@@11 (|ORD#FromNat| (+ m@@5 n@@1))))))
  1089. :qid |funwiths.487:15|
  1090. :skolemid |90|
  1091. :pattern ( (|ORD#Plus| (|ORD#Plus| o@@11 (|ORD#FromNat| m@@5)) (|ORD#FromNat| n@@1)))
  1092. )))
  1093. (assert (forall ((o@@12 T@U) (m@@6 Int) (n@@2 Int) ) (! (=> (= (type o@@12) BoxType) (=> (and (and (<= 0 m@@6) (<= 0 n@@2)) (<= (+ m@@6 n@@2) (|ORD#Offset| o@@12))) (= (|ORD#Minus| (|ORD#Minus| o@@12 (|ORD#FromNat| m@@6)) (|ORD#FromNat| n@@2)) (|ORD#Minus| o@@12 (|ORD#FromNat| (+ m@@6 n@@2))))))
  1094. :qid |funwiths.493:15|
  1095. :skolemid |91|
  1096. :pattern ( (|ORD#Minus| (|ORD#Minus| o@@12 (|ORD#FromNat| m@@6)) (|ORD#FromNat| n@@2)))
  1097. )))
  1098. (assert (forall ((o@@13 T@U) (m@@7 Int) (n@@3 Int) ) (! (=> (= (type o@@13) BoxType) (=> (and (and (<= 0 m@@7) (<= 0 n@@3)) (<= n@@3 (+ (|ORD#Offset| o@@13) m@@7))) (and (=> (<= 0 (- m@@7 n@@3)) (= (|ORD#Minus| (|ORD#Plus| o@@13 (|ORD#FromNat| m@@7)) (|ORD#FromNat| n@@3)) (|ORD#Plus| o@@13 (|ORD#FromNat| (- m@@7 n@@3))))) (=> (<= (- m@@7 n@@3) 0) (= (|ORD#Minus| (|ORD#Plus| o@@13 (|ORD#FromNat| m@@7)) (|ORD#FromNat| n@@3)) (|ORD#Minus| o@@13 (|ORD#FromNat| (- n@@3 m@@7))))))))
  1099. :qid |funwiths.499:15|
  1100. :skolemid |92|
  1101. :pattern ( (|ORD#Minus| (|ORD#Plus| o@@13 (|ORD#FromNat| m@@7)) (|ORD#FromNat| n@@3)))
  1102. )))
  1103. (assert (forall ((o@@14 T@U) (m@@8 Int) (n@@4 Int) ) (! (=> (= (type o@@14) BoxType) (=> (and (and (<= 0 m@@8) (<= 0 n@@4)) (<= n@@4 (+ (|ORD#Offset| o@@14) m@@8))) (and (=> (<= 0 (- m@@8 n@@4)) (= (|ORD#Plus| (|ORD#Minus| o@@14 (|ORD#FromNat| m@@8)) (|ORD#FromNat| n@@4)) (|ORD#Minus| o@@14 (|ORD#FromNat| (- m@@8 n@@4))))) (=> (<= (- m@@8 n@@4) 0) (= (|ORD#Plus| (|ORD#Minus| o@@14 (|ORD#FromNat| m@@8)) (|ORD#FromNat| n@@4)) (|ORD#Plus| o@@14 (|ORD#FromNat| (- n@@4 m@@8))))))))
  1104. :qid |funwiths.509:15|
  1105. :skolemid |93|
  1106. :pattern ( (|ORD#Plus| (|ORD#Minus| o@@14 (|ORD#FromNat| m@@8)) (|ORD#FromNat| n@@4)))
  1107. )))
  1108. (assert (forall ((arg0@@58 Int) ) (! (= (type (IndexField arg0@@58)) (FieldType BoxType))
  1109. :qid |funType:IndexField|
  1110. :pattern ( (IndexField arg0@@58))
  1111. )))
  1112. (assert (forall ((i@@3 Int) ) (! (= (FDim (IndexField i@@3)) 1)
  1113. :qid |funwiths.537:15|
  1114. :skolemid |94|
  1115. :pattern ( (IndexField i@@3))
  1116. )))
  1117. (assert (forall ((i@@4 Int) ) (! (= (IndexField_Inverse (IndexField i@@4)) i@@4)
  1118. :qid |funwiths.541:15|
  1119. :skolemid |95|
  1120. :pattern ( (IndexField i@@4))
  1121. )))
  1122. (assert (forall ((arg0@@59 T@U) (arg1@@20 Int) ) (! (= (type (MultiIndexField arg0@@59 arg1@@20)) (FieldType BoxType))
  1123. :qid |funType:MultiIndexField|
  1124. :pattern ( (MultiIndexField arg0@@59 arg1@@20))
  1125. )))
  1126. (assert (forall ((f T@U) (i@@5 Int) ) (! (=> (= (type f) (FieldType BoxType)) (= (FDim (MultiIndexField f i@@5)) (+ (FDim f) 1)))
  1127. :qid |funwiths.545:15|
  1128. :skolemid |96|
  1129. :pattern ( (MultiIndexField f i@@5))
  1130. )))
  1131. (assert (forall ((arg0@@60 T@U) ) (! (let ((T@@3 (FieldTypeInv0 (type arg0@@60))))
  1132. (= (type (MultiIndexField_Inverse0 arg0@@60)) (FieldType T@@3)))
  1133. :qid |funType:MultiIndexField_Inverse0|
  1134. :pattern ( (MultiIndexField_Inverse0 arg0@@60))
  1135. )))
  1136. (assert (forall ((f@@0 T@U) (i@@6 Int) ) (! (=> (= (type f@@0) (FieldType BoxType)) (and (= (MultiIndexField_Inverse0 (MultiIndexField f@@0 i@@6)) f@@0) (= (MultiIndexField_Inverse1 (MultiIndexField f@@0 i@@6)) i@@6)))
  1137. :qid |funwiths.553:15|
  1138. :skolemid |97|
  1139. :pattern ( (MultiIndexField f@@0 i@@6))
  1140. )))
  1141. (assert (and (and (forall ((alpha@@3 T@T) (arg0@@61 T@U) (arg1@@21 T@U) ) (! (= (type (FieldOfDecl alpha@@3 arg0@@61 arg1@@21)) (FieldType alpha@@3))
  1142. :qid |funType:FieldOfDecl|
  1143. :pattern ( (FieldOfDecl alpha@@3 arg0@@61 arg1@@21))
  1144. )) (forall ((arg0@@62 T@U) ) (! (= (type (DeclType arg0@@62)) ClassNameType)
  1145. :qid |funType:DeclType|
  1146. :pattern ( (DeclType arg0@@62))
  1147. ))) (forall ((arg0@@63 T@U) ) (! (= (type (DeclName arg0@@63)) NameFamilyType)
  1148. :qid |funType:DeclName|
  1149. :pattern ( (DeclName arg0@@63))
  1150. ))))
  1151. (assert (forall ((cl T@U) (nm T@U) (T@@4 T@T) ) (! (=> (and (= (type cl) ClassNameType) (= (type nm) NameFamilyType)) (and (= (DeclType (FieldOfDecl T@@4 cl nm)) cl) (= (DeclName (FieldOfDecl T@@4 cl nm)) nm)))
  1152. :qid |funwiths.566:18|
  1153. :skolemid |98|
  1154. :pattern ( (FieldOfDecl T@@4 cl nm))
  1155. )))
  1156. (assert (forall ((h@@11 T@U) (k T@U) (v@@24 T@U) (t@@21 T@U) ) (! (=> (and (and (and (and (= (type h@@11) (MapType0Type refType MapType1Type)) (= (type k) (MapType0Type refType MapType1Type))) (= (type t@@21) TyType)) ($HeapSucc h@@11 k)) ($IsAlloc v@@24 t@@21 h@@11)) ($IsAlloc v@@24 t@@21 k))
  1157. :qid |funwiths.573:18|
  1158. :skolemid |99|
  1159. :pattern ( ($HeapSucc h@@11 k) ($IsAlloc v@@24 t@@21 h@@11))
  1160. )))
  1161. (assert (forall ((h@@12 T@U) (k@@0 T@U) (bx@@30 T@U) (t@@22 T@U) ) (! (=> (and (and (and (and (and (= (type h@@12) (MapType0Type refType MapType1Type)) (= (type k@@0) (MapType0Type refType MapType1Type))) (= (type bx@@30) BoxType)) (= (type t@@22) TyType)) ($HeapSucc h@@12 k@@0)) ($IsAllocBox bx@@30 t@@22 h@@12)) ($IsAllocBox bx@@30 t@@22 k@@0))
  1162. :qid |funwiths.577:15|
  1163. :skolemid |100|
  1164. :pattern ( ($HeapSucc h@@12 k@@0) ($IsAllocBox bx@@30 t@@22 h@@12))
  1165. )))
  1166. (assert (= (FDim alloc) 0))
  1167. (assert (= (DeclName alloc) allocName))
  1168. (assert (not ($IsGhostField alloc)))
  1169. (assert (forall ((o@@15 T@U) ) (! (=> (= (type o@@15) refType) (<= 0 (_System.array.Length o@@15)))
  1170. :qid |funwiths.589:15|
  1171. :skolemid |101|
  1172. :no-pattern (type o@@15)
  1173. :no-pattern (U_2_int o@@15)
  1174. :no-pattern (U_2_bool o@@15)
  1175. )))
  1176. (assert (forall ((x@@13 Real) ) (! (= (q@Int x@@13) (to_int x@@13))
  1177. :qid |funwiths.593:15|
  1178. :skolemid |102|
  1179. :pattern ( (q@Int x@@13))
  1180. )))
  1181. (assert (forall ((x@@14 Int) ) (! (= (q@Real x@@14) (to_real x@@14))
  1182. :qid |funwiths.597:15|
  1183. :skolemid |103|
  1184. :pattern ( (q@Real x@@14))
  1185. )))
  1186. (assert (forall ((i@@7 Int) ) (! (= (q@Int (q@Real i@@7)) i@@7)
  1187. :qid |funwiths.599:15|
  1188. :skolemid |104|
  1189. :pattern ( (q@Int (q@Real i@@7)))
  1190. )))
  1191. (assert (= (type $OneHeap) (MapType0Type refType MapType1Type)))
  1192. (assert ($IsGoodHeap $OneHeap))
  1193. (assert (forall ((h@@13 T@U) (r@@0 T@U) (f@@1 T@U) (x@@15 T@U) ) (! (let ((alpha@@4 (type x@@15)))
  1194. (=> (and (and (and (= (type h@@13) (MapType0Type refType MapType1Type)) (= (type r@@0) refType)) (= (type f@@1) (FieldType alpha@@4))) ($IsGoodHeap (MapType0Store h@@13 r@@0 (MapType1Store (MapType0Select h@@13 r@@0) f@@1 x@@15)))) ($HeapSucc h@@13 (MapType0Store h@@13 r@@0 (MapType1Store (MapType0Select h@@13 r@@0) f@@1 x@@15)))))
  1195. :qid |funwiths.630:22|
  1196. :skolemid |105|
  1197. :pattern ( (MapType0Store h@@13 r@@0 (MapType1Store (MapType0Select h@@13 r@@0) f@@1 x@@15)))
  1198. )))
  1199. (assert (forall ((a@@2 T@U) (b@@2 T@U) (c T@U) ) (! (=> (and (and (and (and (= (type a@@2) (MapType0Type refType MapType1Type)) (= (type b@@2) (MapType0Type refType MapType1Type))) (= (type c) (MapType0Type refType MapType1Type))) (not (= a@@2 c))) (and ($HeapSucc a@@2 b@@2) ($HeapSucc b@@2 c))) ($HeapSucc a@@2 c))
  1200. :qid |funwiths.634:15|
  1201. :skolemid |106|
  1202. :pattern ( ($HeapSucc a@@2 b@@2) ($HeapSucc b@@2 c))
  1203. )))
  1204. (assert (forall ((h@@14 T@U) (k@@1 T@U) ) (! (=> (and (and (= (type h@@14) (MapType0Type refType MapType1Type)) (= (type k@@1) (MapType0Type refType MapType1Type))) ($HeapSucc h@@14 k@@1)) (forall ((o@@16 T@U) ) (! (=> (and (= (type o@@16) refType) (U_2_bool (MapType1Select (MapType0Select h@@14 o@@16) alloc))) (U_2_bool (MapType1Select (MapType0Select k@@1 o@@16) alloc)))
  1205. :qid |funwiths.641:18|
  1206. :skolemid |107|
  1207. :pattern ( (MapType1Select (MapType0Select k@@1 o@@16) alloc))
  1208. )))
  1209. :qid |funwiths.638:15|
  1210. :skolemid |108|
  1211. :pattern ( ($HeapSucc h@@14 k@@1))
  1212. )))
  1213. (assert (forall ((h@@15 T@U) (k@@2 T@U) ) (! (=> (and (and (= (type h@@15) (MapType0Type refType MapType1Type)) (= (type k@@2) (MapType0Type refType MapType1Type))) ($HeapSuccGhost h@@15 k@@2)) (and ($HeapSucc h@@15 k@@2) (forall ((o@@17 T@U) (f@@2 T@U) ) (! (let ((alpha@@5 (FieldTypeInv0 (type f@@2))))
  1214. (=> (and (and (= (type o@@17) refType) (= (type f@@2) (FieldType alpha@@5))) (not ($IsGhostField f@@2))) (= (MapType1Select (MapType0Select h@@15 o@@17) f@@2) (MapType1Select (MapType0Select k@@2 o@@17) f@@2))))
  1215. :qid |funwiths.649:26|
  1216. :skolemid |109|
  1217. :pattern ( (MapType1Select (MapType0Select k@@2 o@@17) f@@2))
  1218. ))))
  1219. :qid |funwiths.645:15|
  1220. :skolemid |110|
  1221. :pattern ( ($HeapSuccGhost h@@15 k@@2))
  1222. )))
  1223. (assert (forall ((s@@3 T@U) ) (! (let ((T@@5 (MapType0TypeInv0 (type s@@3))))
  1224. (=> (= (type s@@3) (MapType0Type T@@5 boolType)) (<= 0 (|Set#Card| s@@3))))
  1225. :qid |funwiths.711:18|
  1226. :skolemid |115|
  1227. :pattern ( (|Set#Card| s@@3))
  1228. )))
  1229. (assert (forall ((T@@6 T@T) ) (! (= (type (|Set#Empty| T@@6)) (MapType0Type T@@6 boolType))
  1230. :qid |funType:Set#Empty|
  1231. :pattern ( (|Set#Empty| T@@6))
  1232. )))
  1233. (assert (forall ((o@@18 T@U) ) (! (let ((T@@7 (type o@@18)))
  1234. (not (U_2_bool (MapType0Select (|Set#Empty| T@@7) o@@18))))
  1235. :qid |funwiths.715:18|
  1236. :skolemid |116|
  1237. :pattern ( (let ((T@@7 (type o@@18)))
  1238. (MapType0Select (|Set#Empty| T@@7) o@@18)))
  1239. )))
  1240. (assert (forall ((s@@4 T@U) ) (! (let ((T@@8 (MapType0TypeInv0 (type s@@4))))
  1241. (=> (= (type s@@4) (MapType0Type T@@8 boolType)) (and (and (=> (= (|Set#Card| s@@4) 0) (= s@@4 (|Set#Empty| T@@8))) (=> (= s@@4 (|Set#Empty| T@@8)) (= (|Set#Card| s@@4) 0))) (=> (not (= (|Set#Card| s@@4) 0)) (exists ((x@@16 T@U) ) (! (and (= (type x@@16) T@@8) (U_2_bool (MapType0Select s@@4 x@@16)))
  1242. :qid |funwiths.720:39|
  1243. :skolemid |117|
  1244. :no-pattern (type x@@16)
  1245. :no-pattern (U_2_int x@@16)
  1246. :no-pattern (U_2_bool x@@16)
  1247. ))))))
  1248. :qid |funwiths.717:18|
  1249. :skolemid |118|
  1250. :pattern ( (|Set#Card| s@@4))
  1251. )))
  1252. (assert (forall ((arg0@@64 T@U) ) (! (let ((T@@9 (type arg0@@64)))
  1253. (= (type (|Set#Singleton| arg0@@64)) (MapType0Type T@@9 boolType)))
  1254. :qid |funType:Set#Singleton|
  1255. :pattern ( (|Set#Singleton| arg0@@64))
  1256. )))
  1257. (assert (forall ((r@@1 T@U) ) (! (U_2_bool (MapType0Select (|Set#Singleton| r@@1) r@@1))
  1258. :qid |funwiths.724:18|
  1259. :skolemid |119|
  1260. :pattern ( (|Set#Singleton| r@@1))
  1261. )))
  1262. (assert (forall ((r@@2 T@U) (o@@19 T@U) ) (! (let ((T@@10 (type r@@2)))
  1263. (=> (= (type o@@19) T@@10) (and (=> (U_2_bool (MapType0Select (|Set#Singleton| r@@2) o@@19)) (= r@@2 o@@19)) (=> (= r@@2 o@@19) (U_2_bool (MapType0Select (|Set#Singleton| r@@2) o@@19))))))
  1264. :qid |funwiths.726:18|
  1265. :skolemid |120|
  1266. :pattern ( (MapType0Select (|Set#Singleton| r@@2) o@@19))
  1267. )))
  1268. (assert (forall ((r@@3 T@U) ) (! (= (|Set#Card| (|Set#Singleton| r@@3)) 1)
  1269. :qid |funwiths.730:18|
  1270. :skolemid |121|
  1271. :pattern ( (|Set#Card| (|Set#Singleton| r@@3)))
  1272. )))
  1273. (assert (forall ((arg0@@65 T@U) (arg1@@22 T@U) ) (! (let ((T@@11 (type arg1@@22)))
  1274. (= (type (|Set#UnionOne| arg0@@65 arg1@@22)) (MapType0Type T@@11 boolType)))
  1275. :qid |funType:Set#UnionOne|
  1276. :pattern ( (|Set#UnionOne| arg0@@65 arg1@@22))
  1277. )))
  1278. (assert (forall ((a@@3 T@U) (x@@17 T@U) (o@@20 T@U) ) (! (let ((T@@12 (type x@@17)))
  1279. (=> (and (= (type a@@3) (MapType0Type T@@12 boolType)) (= (type o@@20) T@@12)) (and (=> (U_2_bool (MapType0Select (|Set#UnionOne| a@@3 x@@17) o@@20)) (or (= o@@20 x@@17) (U_2_bool (MapType0Select a@@3 o@@20)))) (=> (or (= o@@20 x@@17) (U_2_bool (MapType0Select a@@3 o@@20))) (U_2_bool (MapType0Select (|Set#UnionOne| a@@3 x@@17) o@@20))))))
  1280. :qid |funwiths.736:18|
  1281. :skolemid |122|
  1282. :pattern ( (MapType0Select (|Set#UnionOne| a@@3 x@@17) o@@20))
  1283. )))
  1284. (assert (forall ((a@@4 T@U) (x@@18 T@U) ) (! (let ((T@@13 (type x@@18)))
  1285. (=> (= (type a@@4) (MapType0Type T@@13 boolType)) (U_2_bool (MapType0Select (|Set#UnionOne| a@@4 x@@18) x@@18))))
  1286. :qid |funwiths.740:18|
  1287. :skolemid |123|
  1288. :pattern ( (|Set#UnionOne| a@@4 x@@18))
  1289. )))
  1290. (assert (forall ((a@@5 T@U) (x@@19 T@U) (y@@1 T@U) ) (! (let ((T@@14 (type x@@19)))
  1291. (=> (and (and (= (type a@@5) (MapType0Type T@@14 boolType)) (= (type y@@1) T@@14)) (U_2_bool (MapType0Select a@@5 y@@1))) (U_2_bool (MapType0Select (|Set#UnionOne| a@@5 x@@19) y@@1))))
  1292. :qid |funwiths.742:18|
  1293. :skolemid |124|
  1294. :pattern ( (|Set#UnionOne| a@@5 x@@19) (MapType0Select a@@5 y@@1))
  1295. )))
  1296. (assert (forall ((a@@6 T@U) (x@@20 T@U) ) (! (let ((T@@15 (type x@@20)))
  1297. (=> (and (= (type a@@6) (MapType0Type T@@15 boolType)) (U_2_bool (MapType0Select a@@6 x@@20))) (= (|Set#Card| (|Set#UnionOne| a@@6 x@@20)) (|Set#Card| a@@6))))
  1298. :qid |funwiths.746:18|
  1299. :skolemid |125|
  1300. :pattern ( (|Set#Card| (|Set#UnionOne| a@@6 x@@20)))
  1301. )))
  1302. (assert (forall ((a@@7 T@U) (x@@21 T@U) ) (! (let ((T@@16 (type x@@21)))
  1303. (=> (and (= (type a@@7) (MapType0Type T@@16 boolType)) (not (U_2_bool (MapType0Select a@@7 x@@21)))) (= (|Set#Card| (|Set#UnionOne| a@@7 x@@21)) (+ (|Set#Card| a@@7) 1))))
  1304. :qid |funwiths.750:18|
  1305. :skolemid |126|
  1306. :pattern ( (|Set#Card| (|Set#UnionOne| a@@7 x@@21)))
  1307. )))
  1308. (assert (forall ((arg0@@66 T@U) (arg1@@23 T@U) ) (! (let ((T@@17 (MapType0TypeInv0 (type arg0@@66))))
  1309. (= (type (|Set#Union| arg0@@66 arg1@@23)) (MapType0Type T@@17 boolType)))
  1310. :qid |funType:Set#Union|
  1311. :pattern ( (|Set#Union| arg0@@66 arg1@@23))
  1312. )))
  1313. (assert (forall ((a@@8 T@U) (b@@3 T@U) (o@@21 T@U) ) (! (let ((T@@18 (type o@@21)))
  1314. (=> (and (= (type a@@8) (MapType0Type T@@18 boolType)) (= (type b@@3) (MapType0Type T@@18 boolType))) (and (=> (U_2_bool (MapType0Select (|Set#Union| a@@8 b@@3) o@@21)) (or (U_2_bool (MapType0Select a@@8 o@@21)) (U_2_bool (MapType0Select b@@3 o@@21)))) (=> (or (U_2_bool (MapType0Select a@@8 o@@21)) (U_2_bool (MapType0Select b@@3 o@@21))) (U_2_bool (MapType0Select (|Set#Union| a@@8 b@@3) o@@21))))))
  1315. :qid |funwiths.756:18|
  1316. :skolemid |127|
  1317. :pattern ( (MapType0Select (|Set#Union| a@@8 b@@3) o@@21))
  1318. )))
  1319. (assert (forall ((a@@9 T@U) (b@@4 T@U) (y@@2 T@U) ) (! (let ((T@@19 (type y@@2)))
  1320. (=> (and (and (= (type a@@9) (MapType0Type T@@19 boolType)) (= (type b@@4) (MapType0Type T@@19 boolType))) (U_2_bool (MapType0Select a@@9 y@@2))) (U_2_bool (MapType0Select (|Set#Union| a@@9 b@@4) y@@2))))
  1321. :qid |funwiths.760:18|
  1322. :skolemid |128|
  1323. :pattern ( (|Set#Union| a@@9 b@@4) (MapType0Select a@@9 y@@2))
  1324. )))
  1325. (assert (forall ((a@@10 T@U) (b@@5 T@U) (y@@3 T@U) ) (! (let ((T@@20 (type y@@3)))
  1326. (=> (and (and (= (type a@@10) (MapType0Type T@@20 boolType)) (= (type b@@5) (MapType0Type T@@20 boolType))) (U_2_bool (MapType0Select b@@5 y@@3))) (U_2_bool (MapType0Select (|Set#Union| a@@10 b@@5) y@@3))))
  1327. :qid |funwiths.764:18|
  1328. :skolemid |129|
  1329. :pattern ( (|Set#Union| a@@10 b@@5) (MapType0Select b@@5 y@@3))
  1330. )))
  1331. (assert (forall ((arg0@@67 T@U) (arg1@@24 T@U) ) (! (let ((T@@21 (MapType0TypeInv0 (type arg0@@67))))
  1332. (= (type (|Set#Difference| arg0@@67 arg1@@24)) (MapType0Type T@@21 boolType)))
  1333. :qid |funType:Set#Difference|
  1334. :pattern ( (|Set#Difference| arg0@@67 arg1@@24))
  1335. )))
  1336. (assert (forall ((a@@11 T@U) (b@@6 T@U) ) (! (let ((T@@22 (MapType0TypeInv0 (type a@@11))))
  1337. (=> (and (and (= (type a@@11) (MapType0Type T@@22 boolType)) (= (type b@@6) (MapType0Type T@@22 boolType))) (|Set#Disjoint| a@@11 b@@6)) (and (= (|Set#Difference| (|Set#Union| a@@11 b@@6) a@@11) b@@6) (= (|Set#Difference| (|Set#Union| a@@11 b@@6) b@@6) a@@11))))
  1338. :qid |funwiths.768:18|
  1339. :skolemid |130|
  1340. :pattern ( (|Set#Union| a@@11 b@@6))
  1341. )))
  1342. (assert (forall ((arg0@@68 T@U) (arg1@@25 T@U) ) (! (let ((T@@23 (MapType0TypeInv0 (type arg0@@68))))
  1343. (= (type (|Set#Intersection| arg0@@68 arg1@@25)) (MapType0Type T@@23 boolType)))
  1344. :qid |funType:Set#Intersection|
  1345. :pattern ( (|Set#Intersection| arg0@@68 arg1@@25))
  1346. )))
  1347. (assert (forall ((a@@12 T@U) (b@@7 T@U) (o@@22 T@U) ) (! (let ((T@@24 (type o@@22)))
  1348. (=> (and (= (type a@@12) (MapType0Type T@@24 boolType)) (= (type b@@7) (MapType0Type T@@24 boolType))) (and (=> (U_2_bool (MapType0Select (|Set#Intersection| a@@12 b@@7) o@@22)) (and (U_2_bool (MapType0Select a@@12 o@@22)) (U_2_bool (MapType0Select b@@7 o@@22)))) (=> (and (U_2_bool (MapType0Select a@@12 o@@22)) (U_2_bool (MapType0Select b@@7 o@@22))) (U_2_bool (MapType0Select (|Set#Intersection| a@@12 b@@7) o@@22))))))
  1349. :qid |funwiths.776:18|
  1350. :skolemid |131|
  1351. :pattern ( (MapType0Select (|Set#Intersection| a@@12 b@@7) o@@22))
  1352. )))
  1353. (assert (forall ((a@@13 T@U) (b@@8 T@U) ) (! (let ((T@@25 (MapType0TypeInv0 (type a@@13))))
  1354. (=> (and (= (type a@@13) (MapType0Type T@@25 boolType)) (= (type b@@8) (MapType0Type T@@25 boolType))) (= (|Set#Union| (|Set#Union| a@@13 b@@8) b@@8) (|Set#Union| a@@13 b@@8))))
  1355. :qid |funwiths.780:18|
  1356. :skolemid |132|
  1357. :pattern ( (|Set#Union| (|Set#Union| a@@13 b@@8) b@@8))
  1358. )))
  1359. (assert (forall ((a@@14 T@U) (b@@9 T@U) ) (! (let ((T@@26 (MapType0TypeInv0 (type a@@14))))
  1360. (=> (and (= (type a@@14) (MapType0Type T@@26 boolType)) (= (type b@@9) (MapType0Type T@@26 boolType))) (= (|Set#Union| a@@14 (|Set#Union| a@@14 b@@9)) (|Set#Union| a@@14 b@@9))))
  1361. :qid |funwiths.784:18|
  1362. :skolemid |133|
  1363. :pattern ( (|Set#Union| a@@14 (|Set#Union| a@@14 b@@9)))
  1364. )))
  1365. (assert (forall ((a@@15 T@U) (b@@10 T@U) ) (! (let ((T@@27 (MapType0TypeInv0 (type a@@15))))
  1366. (=> (and (= (type a@@15) (MapType0Type T@@27 boolType)) (= (type b@@10) (MapType0Type T@@27 boolType))) (= (|Set#Intersection| (|Set#Intersection| a@@15 b@@10) b@@10) (|Set#Intersection| a@@15 b@@10))))
  1367. :qid |funwiths.788:18|
  1368. :skolemid |134|
  1369. :pattern ( (|Set#Intersection| (|Set#Intersection| a@@15 b@@10) b@@10))
  1370. )))
  1371. (assert (forall ((a@@16 T@U) (b@@11 T@U) ) (! (let ((T@@28 (MapType0TypeInv0 (type a@@16))))
  1372. (=> (and (= (type a@@16) (MapType0Type T@@28 boolType)) (= (type b@@11) (MapType0Type T@@28 boolType))) (= (|Set#Intersection| a@@16 (|Set#Intersection| a@@16 b@@11)) (|Set#Intersection| a@@16 b@@11))))
  1373. :qid |funwiths.792:18|
  1374. :skolemid |135|
  1375. :pattern ( (|Set#Intersection| a@@16 (|Set#Intersection| a@@16 b@@11)))
  1376. )))
  1377. (assert (forall ((a@@17 T@U) (b@@12 T@U) ) (! (let ((T@@29 (MapType0TypeInv0 (type a@@17))))
  1378. (=> (and (= (type a@@17) (MapType0Type T@@29 boolType)) (= (type b@@12) (MapType0Type T@@29 boolType))) (= (+ (|Set#Card| (|Set#Union| a@@17 b@@12)) (|Set#Card| (|Set#Intersection| a@@17 b@@12))) (+ (|Set#Card| a@@17) (|Set#Card| b@@12)))))
  1379. :qid |funwiths.796:18|
  1380. :skolemid |136|
  1381. :pattern ( (|Set#Card| (|Set#Union| a@@17 b@@12)))
  1382. :pattern ( (|Set#Card| (|Set#Intersection| a@@17 b@@12)))
  1383. )))
  1384. (assert (forall ((a@@18 T@U) (b@@13 T@U) (o@@23 T@U) ) (! (let ((T@@30 (type o@@23)))
  1385. (=> (and (= (type a@@18) (MapType0Type T@@30 boolType)) (= (type b@@13) (MapType0Type T@@30 boolType))) (and (=> (U_2_bool (MapType0Select (|Set#Difference| a@@18 b@@13) o@@23)) (and (U_2_bool (MapType0Select a@@18 o@@23)) (not (U_2_bool (MapType0Select b@@13 o@@23))))) (=> (and (U_2_bool (MapType0Select a@@18 o@@23)) (not (U_2_bool (MapType0Select b@@13 o@@23)))) (U_2_bool (MapType0Select (|Set#Difference| a@@18 b@@13) o@@23))))))
  1386. :qid |funwiths.803:18|
  1387. :skolemid |137|
  1388. :pattern ( (MapType0Select (|Set#Difference| a@@18 b@@13) o@@23))
  1389. )))
  1390. (assert (forall ((a@@19 T@U) (b@@14 T@U) (y@@4 T@U) ) (! (let ((T@@31 (type y@@4)))
  1391. (=> (and (and (= (type a@@19) (MapType0Type T@@31 boolType)) (= (type b@@14) (MapType0Type T@@31 boolType))) (U_2_bool (MapType0Select b@@14 y@@4))) (not (U_2_bool (MapType0Select (|Set#Difference| a@@19 b@@14) y@@4)))))
  1392. :qid |funwiths.807:18|
  1393. :skolemid |138|
  1394. :pattern ( (|Set#Difference| a@@19 b@@14) (MapType0Select b@@14 y@@4))
  1395. )))
  1396. (assert (forall ((a@@20 T@U) (b@@15 T@U) ) (! (let ((T@@32 (MapType0TypeInv0 (type a@@20))))
  1397. (=> (and (= (type a@@20) (MapType0Type T@@32 boolType)) (= (type b@@15) (MapType0Type T@@32 boolType))) (and (= (+ (+ (|Set#Card| (|Set#Difference| a@@20 b@@15)) (|Set#Card| (|Set#Difference| b@@15 a@@20))) (|Set#Card| (|Set#Intersection| a@@20 b@@15))) (|Set#Card| (|Set#Union| a@@20 b@@15))) (= (|Set#Card| (|Set#Difference| a@@20 b@@15)) (- (|Set#Card| a@@20) (|Set#Card| (|Set#Intersection| a@@20 b@@15)))))))
  1398. :qid |funwiths.811:18|
  1399. :skolemid |139|
  1400. :pattern ( (|Set#Card| (|Set#Difference| a@@20 b@@15)))
  1401. )))
  1402. (assert (forall ((a@@21 T@U) (b@@16 T@U) ) (! (let ((T@@33 (MapType0TypeInv0 (type a@@21))))
  1403. (=> (and (= (type a@@21) (MapType0Type T@@33 boolType)) (= (type b@@16) (MapType0Type T@@33 boolType))) (and (=> (|Set#Subset| a@@21 b@@16) (forall ((o@@24 T@U) ) (! (=> (and (= (type o@@24) T@@33) (U_2_bool (MapType0Select a@@21 o@@24))) (U_2_bool (MapType0Select b@@16 o@@24)))
  1404. :qid |funwiths.823:33|
  1405. :skolemid |140|
  1406. :pattern ( (MapType0Select a@@21 o@@24))
  1407. :pattern ( (MapType0Select b@@16 o@@24))
  1408. ))) (=> (forall ((o@@25 T@U) ) (! (=> (and (= (type o@@25) T@@33) (U_2_bool (MapType0Select a@@21 o@@25))) (U_2_bool (MapType0Select b@@16 o@@25)))
  1409. :qid |funwiths.823:33|
  1410. :skolemid |140|
  1411. :pattern ( (MapType0Select a@@21 o@@25))
  1412. :pattern ( (MapType0Select b@@16 o@@25))
  1413. )) (|Set#Subset| a@@21 b@@16)))))
  1414. :qid |funwiths.821:18|
  1415. :skolemid |141|
  1416. :pattern ( (|Set#Subset| a@@21 b@@16))
  1417. )))
  1418. (assert (forall ((a@@22 T@U) (b@@17 T@U) ) (! (let ((T@@34 (MapType0TypeInv0 (type a@@22))))
  1419. (=> (and (= (type a@@22) (MapType0Type T@@34 boolType)) (= (type b@@17) (MapType0Type T@@34 boolType))) (and (=> (|Set#Equal| a@@22 b@@17) (forall ((o@@26 T@U) ) (! (=> (= (type o@@26) T@@34) (and (=> (U_2_bool (MapType0Select a@@22 o@@26)) (U_2_bool (MapType0Select b@@17 o@@26))) (=> (U_2_bool (MapType0Select b@@17 o@@26)) (U_2_bool (MapType0Select a@@22 o@@26)))))
  1420. :qid |funwiths.829:32|
  1421. :skolemid |142|
  1422. :pattern ( (MapType0Select a@@22 o@@26))
  1423. :pattern ( (MapType0Select b@@17 o@@26))
  1424. ))) (=> (forall ((o@@27 T@U) ) (! (=> (= (type o@@27) T@@34) (and (=> (U_2_bool (MapType0Select a@@22 o@@27)) (U_2_bool (MapType0Select b@@17 o@@27))) (=> (U_2_bool (MapType0Select b@@17 o@@27)) (U_2_bool (MapType0Select a@@22 o@@27)))))
  1425. :qid |funwiths.829:32|
  1426. :skolemid |142|
  1427. :pattern ( (MapType0Select a@@22 o@@27))
  1428. :pattern ( (MapType0Select b@@17 o@@27))
  1429. )) (|Set#Equal| a@@22 b@@17)))))
  1430. :qid |funwiths.827:18|
  1431. :skolemid |143|
  1432. :pattern ( (|Set#Equal| a@@22 b@@17))
  1433. )))
  1434. (assert (forall ((a@@23 T@U) (b@@18 T@U) ) (! (let ((T@@35 (MapType0TypeInv0 (type a@@23))))
  1435. (=> (and (and (= (type a@@23) (MapType0Type T@@35 boolType)) (= (type b@@18) (MapType0Type T@@35 boolType))) (|Set#Equal| a@@23 b@@18)) (= a@@23 b@@18)))
  1436. :qid |funwiths.831:18|
  1437. :skolemid |144|
  1438. :pattern ( (|Set#Equal| a@@23 b@@18))
  1439. )))
  1440. (assert (forall ((a@@24 T@U) (b@@19 T@U) ) (! (let ((T@@36 (MapType0TypeInv0 (type a@@24))))
  1441. (=> (and (= (type a@@24) (MapType0Type T@@36 boolType)) (= (type b@@19) (MapType0Type T@@36 boolType))) (and (=> (|Set#Disjoint| a@@24 b@@19) (forall ((o@@28 T@U) ) (! (=> (= (type o@@28) T@@36) (or (not (U_2_bool (MapType0Select a@@24 o@@28))) (not (U_2_bool (MapType0Select b@@19 o@@28)))))
  1442. :qid |funwiths.837:35|
  1443. :skolemid |145|
  1444. :pattern ( (MapType0Select a@@24 o@@28))
  1445. :pattern ( (MapType0Select b@@19 o@@28))
  1446. ))) (=> (forall ((o@@29 T@U) ) (! (=> (= (type o@@29) T@@36) (or (not (U_2_bool (MapType0Select a@@24 o@@29))) (not (U_2_bool (MapType0Select b@@19 o@@29)))))
  1447. :qid |funwiths.837:35|
  1448. :skolemid |145|
  1449. :pattern ( (MapType0Select a@@24 o@@29))
  1450. :pattern ( (MapType0Select b@@19 o@@29))
  1451. )) (|Set#Disjoint| a@@24 b@@19)))))
  1452. :qid |funwiths.835:18|
  1453. :skolemid |146|
  1454. :pattern ( (|Set#Disjoint| a@@24 b@@19))
  1455. )))
  1456. (assert (forall ((T@@37 T@T) ) (! (= (type (|ISet#Empty| T@@37)) (MapType0Type T@@37 boolType))
  1457. :qid |funType:ISet#Empty|
  1458. :pattern ( (|ISet#Empty| T@@37))
  1459. )))
  1460. (assert (forall ((o@@30 T@U) ) (! (let ((T@@38 (type o@@30)))
  1461. (not (U_2_bool (MapType0Select (|ISet#Empty| T@@38) o@@30))))
  1462. :qid |funwiths.843:18|
  1463. :skolemid |147|
  1464. :pattern ( (let ((T@@38 (type o@@30)))
  1465. (MapType0Select (|ISet#Empty| T@@38) o@@30)))
  1466. )))
  1467. (assert (forall ((arg0@@69 T@U) (arg1@@26 T@U) ) (! (let ((T@@39 (type arg1@@26)))
  1468. (= (type (|ISet#UnionOne| arg0@@69 arg1@@26)) (MapType0Type T@@39 boolType)))
  1469. :qid |funType:ISet#UnionOne|
  1470. :pattern ( (|ISet#UnionOne| arg0@@69 arg1@@26))
  1471. )))
  1472. (assert (forall ((a@@25 T@U) (x@@22 T@U) (o@@31 T@U) ) (! (let ((T@@40 (type x@@22)))
  1473. (=> (and (= (type a@@25) (MapType0Type T@@40 boolType)) (= (type o@@31) T@@40)) (and (=> (U_2_bool (MapType0Select (|ISet#UnionOne| a@@25 x@@22) o@@31)) (or (= o@@31 x@@22) (U_2_bool (MapType0Select a@@25 o@@31)))) (=> (or (= o@@31 x@@22) (U_2_bool (MapType0Select a@@25 o@@31))) (U_2_bool (MapType0Select (|ISet#UnionOne| a@@25 x@@22) o@@31))))))
  1474. :qid |funwiths.847:18|
  1475. :skolemid |148|
  1476. :pattern ( (MapType0Select (|ISet#UnionOne| a@@25 x@@22) o@@31))
  1477. )))
  1478. (assert (forall ((a@@26 T@U) (x@@23 T@U) ) (! (let ((T@@41 (type x@@23)))
  1479. (=> (= (type a@@26) (MapType0Type T@@41 boolType)) (U_2_bool (MapType0Select (|ISet#UnionOne| a@@26 x@@23) x@@23))))
  1480. :qid |funwiths.851:18|
  1481. :skolemid |149|
  1482. :pattern ( (|ISet#UnionOne| a@@26 x@@23))
  1483. )))
  1484. (assert (forall ((a@@27 T@U) (x@@24 T@U) (y@@5 T@U) ) (! (let ((T@@42 (type x@@24)))
  1485. (=> (and (and (= (type a@@27) (MapType0Type T@@42 boolType)) (= (type y@@5) T@@42)) (U_2_bool (MapType0Select a@@27 y@@5))) (U_2_bool (MapType0Select (|ISet#UnionOne| a@@27 x@@24) y@@5))))
  1486. :qid |funwiths.853:18|
  1487. :skolemid |150|
  1488. :pattern ( (|ISet#UnionOne| a@@27 x@@24) (MapType0Select a@@27 y@@5))
  1489. )))
  1490. (assert (forall ((arg0@@70 T@U) (arg1@@27 T@U) ) (! (let ((T@@43 (MapType0TypeInv0 (type arg0@@70))))
  1491. (= (type (|ISet#Union| arg0@@70 arg1@@27)) (MapType0Type T@@43 boolType)))
  1492. :qid |funType:ISet#Union|
  1493. :pattern ( (|ISet#Union| arg0@@70 arg1@@27))
  1494. )))
  1495. (assert (forall ((a@@28 T@U) (b@@20 T@U) (o@@32 T@U) ) (! (let ((T@@44 (type o@@32)))
  1496. (=> (and (= (type a@@28) (MapType0Type T@@44 boolType)) (= (type b@@20) (MapType0Type T@@44 boolType))) (and (=> (U_2_bool (MapType0Select (|ISet#Union| a@@28 b@@20) o@@32)) (or (U_2_bool (MapType0Select a@@28 o@@32)) (U_2_bool (MapType0Select b@@20 o@@32)))) (=> (or (U_2_bool (MapType0Select a@@28 o@@32)) (U_2_bool (MapType0Select b@@20 o@@32))) (U_2_bool (MapType0Select (|ISet#Union| a@@28 b@@20) o@@32))))))
  1497. :qid |funwiths.859:18|
  1498. :skolemid |151|
  1499. :pattern ( (MapType0Select (|ISet#Union| a@@28 b@@20) o@@32))
  1500. )))
  1501. (assert (forall ((a@@29 T@U) (b@@21 T@U) (y@@6 T@U) ) (! (let ((T@@45 (type y@@6)))
  1502. (=> (and (and (= (type a@@29) (MapType0Type T@@45 boolType)) (= (type b@@21) (MapType0Type T@@45 boolType))) (U_2_bool (MapType0Select a@@29 y@@6))) (U_2_bool (MapType0Select (|ISet#Union| a@@29 b@@21) y@@6))))
  1503. :qid |funwiths.863:18|
  1504. :skolemid |152|
  1505. :pattern ( (|ISet#Union| a@@29 b@@21) (MapType0Select a@@29 y@@6))
  1506. )))
  1507. (assert (forall ((a@@30 T@U) (b@@22 T@U) (y@@7 T@U) ) (! (let ((T@@46 (type y@@7)))
  1508. (=> (and (and (= (type a@@30) (MapType0Type T@@46 boolType)) (= (type b@@22) (MapType0Type T@@46 boolType))) (U_2_bool (MapType0Select b@@22 y@@7))) (U_2_bool (MapType0Select (|ISet#Union| a@@30 b@@22) y@@7))))
  1509. :qid |funwiths.867:18|
  1510. :skolemid |153|
  1511. :pattern ( (|ISet#Union| a@@30 b@@22) (MapType0Select b@@22 y@@7))
  1512. )))
  1513. (assert (forall ((arg0@@71 T@U) (arg1@@28 T@U) ) (! (let ((T@@47 (MapType0TypeInv0 (type arg0@@71))))
  1514. (= (type (|ISet#Difference| arg0@@71 arg1@@28)) (MapType0Type T@@47 boolType)))
  1515. :qid |funType:ISet#Difference|
  1516. :pattern ( (|ISet#Difference| arg0@@71 arg1@@28))
  1517. )))
  1518. (assert (forall ((a@@31 T@U) (b@@23 T@U) ) (! (let ((T@@48 (MapType0TypeInv0 (type a@@31))))
  1519. (=> (and (and (= (type a@@31) (MapType0Type T@@48 boolType)) (= (type b@@23) (MapType0Type T@@48 boolType))) (|ISet#Disjoint| a@@31 b@@23)) (and (= (|ISet#Difference| (|ISet#Union| a@@31 b@@23) a@@31) b@@23) (= (|ISet#Difference| (|ISet#Union| a@@31 b@@23) b@@23) a@@31))))
  1520. :qid |funwiths.871:18|
  1521. :skolemid |154|
  1522. :pattern ( (|ISet#Union| a@@31 b@@23))
  1523. )))
  1524. (assert (forall ((arg0@@72 T@U) (arg1@@29 T@U) ) (! (let ((T@@49 (MapType0TypeInv0 (type arg0@@72))))
  1525. (= (type (|ISet#Intersection| arg0@@72 arg1@@29)) (MapType0Type T@@49 boolType)))
  1526. :qid |funType:ISet#Intersection|
  1527. :pattern ( (|ISet#Intersection| arg0@@72 arg1@@29))
  1528. )))
  1529. (assert (forall ((a@@32 T@U) (b@@24 T@U) (o@@33 T@U) ) (! (let ((T@@50 (type o@@33)))
  1530. (=> (and (= (type a@@32) (MapType0Type T@@50 boolType)) (= (type b@@24) (MapType0Type T@@50 boolType))) (and (=> (U_2_bool (MapType0Select (|ISet#Intersection| a@@32 b@@24) o@@33)) (and (U_2_bool (MapType0Select a@@32 o@@33)) (U_2_bool (MapType0Select b@@24 o@@33)))) (=> (and (U_2_bool (MapType0Select a@@32 o@@33)) (U_2_bool (MapType0Select b@@24 o@@33))) (U_2_bool (MapType0Select (|ISet#Intersection| a@@32 b@@24) o@@33))))))
  1531. :qid |funwiths.879:18|
  1532. :skolemid |155|
  1533. :pattern ( (MapType0Select (|ISet#Intersection| a@@32 b@@24) o@@33))
  1534. )))
  1535. (assert (forall ((a@@33 T@U) (b@@25 T@U) ) (! (let ((T@@51 (MapType0TypeInv0 (type a@@33))))
  1536. (=> (and (= (type a@@33) (MapType0Type T@@51 boolType)) (= (type b@@25) (MapType0Type T@@51 boolType))) (= (|ISet#Union| (|ISet#Union| a@@33 b@@25) b@@25) (|ISet#Union| a@@33 b@@25))))
  1537. :qid |funwiths.883:18|
  1538. :skolemid |156|
  1539. :pattern ( (|ISet#Union| (|ISet#Union| a@@33 b@@25) b@@25))
  1540. )))
  1541. (assert (forall ((a@@34 T@U) (b@@26 T@U) ) (! (let ((T@@52 (MapType0TypeInv0 (type a@@34))))
  1542. (=> (and (= (type a@@34) (MapType0Type T@@52 boolType)) (= (type b@@26) (MapType0Type T@@52 boolType))) (= (|ISet#Union| a@@34 (|ISet#Union| a@@34 b@@26)) (|ISet#Union| a@@34 b@@26))))
  1543. :qid |funwiths.887:18|
  1544. :skolemid |157|
  1545. :pattern ( (|ISet#Union| a@@34 (|ISet#Union| a@@34 b@@26)))
  1546. )))
  1547. (assert (forall ((a@@35 T@U) (b@@27 T@U) ) (! (let ((T@@53 (MapType0TypeInv0 (type a@@35))))
  1548. (=> (and (= (type a@@35) (MapType0Type T@@53 boolType)) (= (type b@@27) (MapType0Type T@@53 boolType))) (= (|ISet#Intersection| (|ISet#Intersection| a@@35 b@@27) b@@27) (|ISet#Intersection| a@@35 b@@27))))
  1549. :qid |funwiths.891:18|
  1550. :skolemid |158|
  1551. :pattern ( (|ISet#Intersection| (|ISet#Intersection| a@@35 b@@27) b@@27))
  1552. )))
  1553. (assert (forall ((a@@36 T@U) (b@@28 T@U) ) (! (let ((T@@54 (MapType0TypeInv0 (type a@@36))))
  1554. (=> (and (= (type a@@36) (MapType0Type T@@54 boolType)) (= (type b@@28) (MapType0Type T@@54 boolType))) (= (|ISet#Intersection| a@@36 (|ISet#Intersection| a@@36 b@@28)) (|ISet#Intersection| a@@36 b@@28))))
  1555. :qid |funwiths.895:18|
  1556. :skolemid |159|
  1557. :pattern ( (|ISet#Intersection| a@@36 (|ISet#Intersection| a@@36 b@@28)))
  1558. )))
  1559. (assert (forall ((a@@37 T@U) (b@@29 T@U) (o@@34 T@U) ) (! (let ((T@@55 (type o@@34)))
  1560. (=> (and (= (type a@@37) (MapType0Type T@@55 boolType)) (= (type b@@29) (MapType0Type T@@55 boolType))) (and (=> (U_2_bool (MapType0Select (|ISet#Difference| a@@37 b@@29) o@@34)) (and (U_2_bool (MapType0Select a@@37 o@@34)) (not (U_2_bool (MapType0Select b@@29 o@@34))))) (=> (and (U_2_bool (MapType0Select a@@37 o@@34)) (not (U_2_bool (MapType0Select b@@29 o@@34)))) (U_2_bool (MapType0Select (|ISet#Difference| a@@37 b@@29) o@@34))))))
  1561. :qid |funwiths.901:18|
  1562. :skolemid |160|
  1563. :pattern ( (MapType0Select (|ISet#Difference| a@@37 b@@29) o@@34))
  1564. )))
  1565. (assert (forall ((a@@38 T@U) (b@@30 T@U) (y@@8 T@U) ) (! (let ((T@@56 (type y@@8)))
  1566. (=> (and (and (= (type a@@38) (MapType0Type T@@56 boolType)) (= (type b@@30) (MapType0Type T@@56 boolType))) (U_2_bool (MapType0Select b@@30 y@@8))) (not (U_2_bool (MapType0Select (|ISet#Difference| a@@38 b@@30) y@@8)))))
  1567. :qid |funwiths.905:18|
  1568. :skolemid |161|
  1569. :pattern ( (|ISet#Difference| a@@38 b@@30) (MapType0Select b@@30 y@@8))
  1570. )))
  1571. (assert (forall ((a@@39 T@U) (b@@31 T@U) ) (! (let ((T@@57 (MapType0TypeInv0 (type a@@39))))
  1572. (=> (and (= (type a@@39) (MapType0Type T@@57 boolType)) (= (type b@@31) (MapType0Type T@@57 boolType))) (and (=> (|ISet#Subset| a@@39 b@@31) (forall ((o@@35 T@U) ) (! (=> (and (= (type o@@35) T@@57) (U_2_bool (MapType0Select a@@39 o@@35))) (U_2_bool (MapType0Select b@@31 o@@35)))
  1573. :qid |funwiths.913:34|
  1574. :skolemid |162|
  1575. :pattern ( (MapType0Select a@@39 o@@35))
  1576. :pattern ( (MapType0Select b@@31 o@@35))
  1577. ))) (=> (forall ((o@@36 T@U) ) (! (=> (and (= (type o@@36) T@@57) (U_2_bool (MapType0Select a@@39 o@@36))) (U_2_bool (MapType0Select b@@31 o@@36)))
  1578. :qid |funwiths.913:34|
  1579. :skolemid |162|
  1580. :pattern ( (MapType0Select a@@39 o@@36))
  1581. :pattern ( (MapType0Select b@@31 o@@36))
  1582. )) (|ISet#Subset| a@@39 b@@31)))))
  1583. :qid |funwiths.911:18|
  1584. :skolemid |163|
  1585. :pattern ( (|ISet#Subset| a@@39 b@@31))
  1586. )))
  1587. (assert (forall ((a@@40 T@U) (b@@32 T@U) ) (! (let ((T@@58 (MapType0TypeInv0 (type a@@40))))
  1588. (=> (and (= (type a@@40) (MapType0Type T@@58 boolType)) (= (type b@@32) (MapType0Type T@@58 boolType))) (and (=> (|ISet#Equal| a@@40 b@@32) (forall ((o@@37 T@U) ) (! (=> (= (type o@@37) T@@58) (and (=> (U_2_bool (MapType0Select a@@40 o@@37)) (U_2_bool (MapType0Select b@@32 o@@37))) (=> (U_2_bool (MapType0Select b@@32 o@@37)) (U_2_bool (MapType0Select a@@40 o@@37)))))
  1589. :qid |funwiths.919:33|
  1590. :skolemid |164|
  1591. :pattern ( (MapType0Select a@@40 o@@37))
  1592. :pattern ( (MapType0Select b@@32 o@@37))
  1593. ))) (=> (forall ((o@@38 T@U) ) (! (=> (= (type o@@38) T@@58) (and (=> (U_2_bool (MapType0Select a@@40 o@@38)) (U_2_bool (MapType0Select b@@32 o@@38))) (=> (U_2_bool (MapType0Select b@@32 o@@38)) (U_2_bool (MapType0Select a@@40 o@@38)))))
  1594. :qid |funwiths.919:33|
  1595. :skolemid |164|
  1596. :pattern ( (MapType0Select a@@40 o@@38))
  1597. :pattern ( (MapType0Select b@@32 o@@38))
  1598. )) (|ISet#Equal| a@@40 b@@32)))))
  1599. :qid |funwiths.917:18|
  1600. :skolemid |165|
  1601. :pattern ( (|ISet#Equal| a@@40 b@@32))
  1602. )))
  1603. (assert (forall ((a@@41 T@U) (b@@33 T@U) ) (! (let ((T@@59 (MapType0TypeInv0 (type a@@41))))
  1604. (=> (and (and (= (type a@@41) (MapType0Type T@@59 boolType)) (= (type b@@33) (MapType0Type T@@59 boolType))) (|ISet#Equal| a@@41 b@@33)) (= a@@41 b@@33)))
  1605. :qid |funwiths.921:18|
  1606. :skolemid |166|
  1607. :pattern ( (|ISet#Equal| a@@41 b@@33))
  1608. )))
  1609. (assert (forall ((a@@42 T@U) (b@@34 T@U) ) (! (let ((T@@60 (MapType0TypeInv0 (type a@@42))))
  1610. (=> (and (= (type a@@42) (MapType0Type T@@60 boolType)) (= (type b@@34) (MapType0Type T@@60 boolType))) (and (=> (|ISet#Disjoint| a@@42 b@@34) (forall ((o@@39 T@U) ) (! (=> (= (type o@@39) T@@60) (or (not (U_2_bool (MapType0Select a@@42 o@@39))) (not (U_2_bool (MapType0Select b@@34 o@@39)))))
  1611. :qid |funwiths.929:36|
  1612. :skolemid |167|
  1613. :pattern ( (MapType0Select a@@42 o@@39))
  1614. :pattern ( (MapType0Select b@@34 o@@39))
  1615. ))) (=> (forall ((o@@40 T@U) ) (! (=> (= (type o@@40) T@@60) (or (not (U_2_bool (MapType0Select a@@42 o@@40))) (not (U_2_bool (MapType0Select b@@34 o@@40)))))
  1616. :qid |funwiths.929:36|
  1617. :skolemid |167|
  1618. :pattern ( (MapType0Select a@@42 o@@40))
  1619. :pattern ( (MapType0Select b@@34 o@@40))
  1620. )) (|ISet#Disjoint| a@@42 b@@34)))))
  1621. :qid |funwiths.927:18|
  1622. :skolemid |168|
  1623. :pattern ( (|ISet#Disjoint| a@@42 b@@34))
  1624. )))
  1625. (assert (forall ((a@@43 Int) (b@@35 Int) ) (! (and (=> (<= a@@43 b@@35) (= (|Math#min| a@@43 b@@35) a@@43)) (=> (= (|Math#min| a@@43 b@@35) a@@43) (<= a@@43 b@@35)))
  1626. :qid |funwiths.933:15|
  1627. :skolemid |169|
  1628. :pattern ( (|Math#min| a@@43 b@@35))
  1629. )))
  1630. (assert (forall ((a@@44 Int) (b@@36 Int) ) (! (and (=> (<= b@@36 a@@44) (= (|Math#min| a@@44 b@@36) b@@36)) (=> (= (|Math#min| a@@44 b@@36) b@@36) (<= b@@36 a@@44)))
  1631. :qid |funwiths.935:15|
  1632. :skolemid |170|
  1633. :pattern ( (|Math#min| a@@44 b@@36))
  1634. )))
  1635. (assert (forall ((a@@45 Int) (b@@37 Int) ) (! (or (= (|Math#min| a@@45 b@@37) a@@45) (= (|Math#min| a@@45 b@@37) b@@37))
  1636. :qid |funwiths.937:15|
  1637. :skolemid |171|
  1638. :pattern ( (|Math#min| a@@45 b@@37))
  1639. )))
  1640. (assert (forall ((a@@46 Int) ) (! (=> (<= 0 a@@46) (= (|Math#clip| a@@46) a@@46))
  1641. :qid |funwiths.943:15|
  1642. :skolemid |172|
  1643. :pattern ( (|Math#clip| a@@46))
  1644. )))
  1645. (assert (forall ((a@@47 Int) ) (! (=> (< a@@47 0) (= (|Math#clip| a@@47) 0))
  1646. :qid |funwiths.945:15|
  1647. :skolemid |173|
  1648. :pattern ( (|Math#clip| a@@47))
  1649. )))
  1650. (assert (forall ((ms T@U) ) (! (let ((T@@61 (MapType0TypeInv0 (type ms))))
  1651. (=> (= (type ms) (MapType0Type T@@61 intType)) (and (=> ($IsGoodMultiSet ms) (forall ((bx@@31 T@U) ) (! (=> (= (type bx@@31) T@@61) (and (<= 0 (U_2_int (MapType0Select ms bx@@31))) (<= (U_2_int (MapType0Select ms bx@@31)) (|MultiSet#Card| ms))))
  1652. :qid |funwiths.954:19|
  1653. :skolemid |174|
  1654. :pattern ( (MapType0Select ms bx@@31))
  1655. ))) (=> (forall ((bx@@32 T@U) ) (! (=> (= (type bx@@32) T@@61) (and (<= 0 (U_2_int (MapType0Select ms bx@@32))) (<= (U_2_int (MapType0Select ms bx@@32)) (|MultiSet#Card| ms))))
  1656. :qid |funwiths.954:19|
  1657. :skolemid |174|
  1658. :pattern ( (MapType0Select ms bx@@32))
  1659. )) ($IsGoodMultiSet ms)))))
  1660. :qid |funwiths.951:18|
  1661. :skolemid |175|
  1662. :pattern ( ($IsGoodMultiSet ms))
  1663. )))
  1664. (assert (forall ((s@@5 T@U) ) (! (let ((T@@62 (MapType0TypeInv0 (type s@@5))))
  1665. (=> (= (type s@@5) (MapType0Type T@@62 intType)) (<= 0 (|MultiSet#Card| s@@5))))
  1666. :qid |funwiths.958:18|
  1667. :skolemid |176|
  1668. :pattern ( (|MultiSet#Card| s@@5))
  1669. )))
  1670. (assert (forall ((s@@6 T@U) (x@@25 T@U) (n@@5 T@U) ) (! (let ((T@@63 (type x@@25)))
  1671. (=> (and (and (= (type s@@6) (MapType0Type T@@63 intType)) (= (type n@@5) intType)) (<= 0 (U_2_int n@@5))) (= (|MultiSet#Card| (MapType0Store s@@6 x@@25 n@@5)) (+ (- (|MultiSet#Card| s@@6) (U_2_int (MapType0Select s@@6 x@@25))) (U_2_int n@@5)))))
  1672. :qid |funwiths.960:18|
  1673. :skolemid |177|
  1674. :pattern ( (|MultiSet#Card| (MapType0Store s@@6 x@@25 n@@5)))
  1675. )))
  1676. (assert (forall ((T@@64 T@T) ) (! (= (type (|MultiSet#Empty| T@@64)) (MapType0Type T@@64 intType))
  1677. :qid |funType:MultiSet#Empty|
  1678. :pattern ( (|MultiSet#Empty| T@@64))
  1679. )))
  1680. (assert (forall ((o@@41 T@U) ) (! (let ((T@@65 (type o@@41)))
  1681. (= (U_2_int (MapType0Select (|MultiSet#Empty| T@@65) o@@41)) 0))
  1682. :qid |funwiths.966:18|
  1683. :skolemid |178|
  1684. :pattern ( (let ((T@@65 (type o@@41)))
  1685. (MapType0Select (|MultiSet#Empty| T@@65) o@@41)))
  1686. )))
  1687. (assert (forall ((s@@7 T@U) ) (! (let ((T@@66 (MapType0TypeInv0 (type s@@7))))
  1688. (=> (= (type s@@7) (MapType0Type T@@66 intType)) (and (and (=> (= (|MultiSet#Card| s@@7) 0) (= s@@7 (|MultiSet#Empty| T@@66))) (=> (= s@@7 (|MultiSet#Empty| T@@66)) (= (|MultiSet#Card| s@@7) 0))) (=> (not (= (|MultiSet#Card| s@@7) 0)) (exists ((x@@26 T@U) ) (! (and (= (type x@@26) T@@66) (< 0 (U_2_int (MapType0Select s@@7 x@@26))))
  1689. :qid |funwiths.971:44|
  1690. :skolemid |179|
  1691. :no-pattern (type x@@26)
  1692. :no-pattern (U_2_int x@@26)
  1693. :no-pattern (U_2_bool x@@26)
  1694. ))))))
  1695. :qid |funwiths.968:18|
  1696. :skolemid |180|
  1697. :pattern ( (|MultiSet#Card| s@@7))
  1698. )))
  1699. (assert (forall ((arg0@@73 T@U) ) (! (let ((T@@67 (type arg0@@73)))
  1700. (= (type (|MultiSet#Singleton| arg0@@73)) (MapType0Type T@@67 intType)))
  1701. :qid |funType:MultiSet#Singleton|
  1702. :pattern ( (|MultiSet#Singleton| arg0@@73))
  1703. )))
  1704. (assert (forall ((r@@4 T@U) (o@@42 T@U) ) (! (let ((T@@68 (type r@@4)))
  1705. (=> (= (type o@@42) T@@68) (and (and (=> (= (U_2_int (MapType0Select (|MultiSet#Singleton| r@@4) o@@42)) 1) (= r@@4 o@@42)) (=> (= r@@4 o@@42) (= (U_2_int (MapType0Select (|MultiSet#Singleton| r@@4) o@@42)) 1))) (and (=> (= (U_2_int (MapType0Select (|MultiSet#Singleton| r@@4) o@@42)) 0) (not (= r@@4 o@@42))) (=> (not (= r@@4 o@@42)) (= (U_2_int (MapType0Select (|MultiSet#Singleton| r@@4) o@@42)) 0))))))
  1706. :qid |funwiths.975:18|
  1707. :skolemid |181|
  1708. :pattern ( (MapType0Select (|MultiSet#Singleton| r@@4) o@@42))
  1709. )))
  1710. (assert (forall ((arg0@@74 T@U) (arg1@@30 T@U) ) (! (let ((T@@69 (type arg1@@30)))
  1711. (= (type (|MultiSet#UnionOne| arg0@@74 arg1@@30)) (MapType0Type T@@69 intType)))
  1712. :qid |funType:MultiSet#UnionOne|
  1713. :pattern ( (|MultiSet#UnionOne| arg0@@74 arg1@@30))
  1714. )))
  1715. (assert (forall ((r@@5 T@U) ) (! (let ((T@@70 (type r@@5)))
  1716. (= (|MultiSet#Singleton| r@@5) (|MultiSet#UnionOne| (|MultiSet#Empty| T@@70) r@@5)))
  1717. :qid |funwiths.980:18|
  1718. :skolemid |182|
  1719. :pattern ( (|MultiSet#Singleton| r@@5))
  1720. )))
  1721. (assert (forall ((a@@48 T@U) (x@@27 T@U) (o@@43 T@U) ) (! (let ((T@@71 (type x@@27)))
  1722. (=> (and (= (type a@@48) (MapType0Type T@@71 intType)) (= (type o@@43) T@@71)) (and (=> (< 0 (U_2_int (MapType0Select (|MultiSet#UnionOne| a@@48 x@@27) o@@43))) (or (= o@@43 x@@27) (< 0 (U_2_int (MapType0Select a@@48 o@@43))))) (=> (or (= o@@43 x@@27) (< 0 (U_2_int (MapType0Select a@@48 o@@43)))) (< 0 (U_2_int (MapType0Select (|MultiSet#UnionOne| a@@48 x@@27) o@@43)))))))
  1723. :qid |funwiths.986:18|
  1724. :skolemid |183|
  1725. :pattern ( (MapType0Select (|MultiSet#UnionOne| a@@48 x@@27) o@@43))
  1726. )))
  1727. (assert (forall ((a@@49 T@U) (x@@28 T@U) ) (! (let ((T@@72 (type x@@28)))
  1728. (=> (= (type a@@49) (MapType0Type T@@72 intType)) (= (U_2_int (MapType0Select (|MultiSet#UnionOne| a@@49 x@@28) x@@28)) (+ (U_2_int (MapType0Select a@@49 x@@28)) 1))))
  1729. :qid |funwiths.990:18|
  1730. :skolemid |184|
  1731. :pattern ( (|MultiSet#UnionOne| a@@49 x@@28))
  1732. )))
  1733. (assert (forall ((a@@50 T@U) (x@@29 T@U) (y@@9 T@U) ) (! (let ((T@@73 (type x@@29)))
  1734. (=> (and (and (= (type a@@50) (MapType0Type T@@73 intType)) (= (type y@@9) T@@73)) (< 0 (U_2_int (MapType0Select a@@50 y@@9)))) (< 0 (U_2_int (MapType0Select (|MultiSet#UnionOne| a@@50 x@@29) y@@9)))))
  1735. :qid |funwiths.994:18|
  1736. :skolemid |185|
  1737. :pattern ( (|MultiSet#UnionOne| a@@50 x@@29) (MapType0Select a@@50 y@@9))
  1738. )))
  1739. (assert (forall ((a@@51 T@U) (x@@30 T@U) (y@@10 T@U) ) (! (let ((T@@74 (type x@@30)))
  1740. (=> (and (and (= (type a@@51) (MapType0Type T@@74 intType)) (= (type y@@10) T@@74)) (not (= x@@30 y@@10))) (= (U_2_int (MapType0Select a@@51 y@@10)) (U_2_int (MapType0Select (|MultiSet#UnionOne| a@@51 x@@30) y@@10)))))
  1741. :qid |funwiths.998:18|
  1742. :skolemid |186|
  1743. :pattern ( (|MultiSet#UnionOne| a@@51 x@@30) (MapType0Select a@@51 y@@10))
  1744. )))
  1745. (assert (forall ((a@@52 T@U) (x@@31 T@U) ) (! (let ((T@@75 (type x@@31)))
  1746. (=> (= (type a@@52) (MapType0Type T@@75 intType)) (= (|MultiSet#Card| (|MultiSet#UnionOne| a@@52 x@@31)) (+ (|MultiSet#Card| a@@52) 1))))
  1747. :qid |funwiths.1002:18|
  1748. :skolemid |187|
  1749. :pattern ( (|MultiSet#Card| (|MultiSet#UnionOne| a@@52 x@@31)))
  1750. )))
  1751. (assert (forall ((arg0@@75 T@U) (arg1@@31 T@U) ) (! (let ((T@@76 (MapType0TypeInv0 (type arg0@@75))))
  1752. (= (type (|MultiSet#Union| arg0@@75 arg1@@31)) (MapType0Type T@@76 intType)))
  1753. :qid |funType:MultiSet#Union|
  1754. :pattern ( (|MultiSet#Union| arg0@@75 arg1@@31))
  1755. )))
  1756. (assert (forall ((a@@53 T@U) (b@@38 T@U) (o@@44 T@U) ) (! (let ((T@@77 (type o@@44)))
  1757. (=> (and (= (type a@@53) (MapType0Type T@@77 intType)) (= (type b@@38) (MapType0Type T@@77 intType))) (= (U_2_int (MapType0Select (|MultiSet#Union| a@@53 b@@38) o@@44)) (+ (U_2_int (MapType0Select a@@53 o@@44)) (U_2_int (MapType0Select b@@38 o@@44))))))
  1758. :qid |funwiths.1008:18|
  1759. :skolemid |188|
  1760. :pattern ( (MapType0Select (|MultiSet#Union| a@@53 b@@38) o@@44))
  1761. )))
  1762. (assert (forall ((a@@54 T@U) (b@@39 T@U) ) (! (let ((T@@78 (MapType0TypeInv0 (type a@@54))))
  1763. (=> (and (= (type a@@54) (MapType0Type T@@78 intType)) (= (type b@@39) (MapType0Type T@@78 intType))) (= (|MultiSet#Card| (|MultiSet#Union| a@@54 b@@39)) (+ (|MultiSet#Card| a@@54) (|MultiSet#Card| b@@39)))))
  1764. :qid |funwiths.1012:18|
  1765. :skolemid |189|
  1766. :pattern ( (|MultiSet#Card| (|MultiSet#Union| a@@54 b@@39)))
  1767. )))
  1768. (assert (forall ((arg0@@76 T@U) (arg1@@32 T@U) ) (! (let ((T@@79 (MapType0TypeInv0 (type arg0@@76))))
  1769. (= (type (|MultiSet#Intersection| arg0@@76 arg1@@32)) (MapType0Type T@@79 intType)))
  1770. :qid |funType:MultiSet#Intersection|
  1771. :pattern ( (|MultiSet#Intersection| arg0@@76 arg1@@32))
  1772. )))
  1773. (assert (forall ((a@@55 T@U) (b@@40 T@U) (o@@45 T@U) ) (! (let ((T@@80 (type o@@45)))
  1774. (=> (and (= (type a@@55) (MapType0Type T@@80 intType)) (= (type b@@40) (MapType0Type T@@80 intType))) (= (U_2_int (MapType0Select (|MultiSet#Intersection| a@@55 b@@40) o@@45)) (|Math#min| (U_2_int (MapType0Select a@@55 o@@45)) (U_2_int (MapType0Select b@@40 o@@45))))))
  1775. :qid |funwiths.1018:18|
  1776. :skolemid |190|
  1777. :pattern ( (MapType0Select (|MultiSet#Intersection| a@@55 b@@40) o@@45))
  1778. )))
  1779. (assert (forall ((a@@56 T@U) (b@@41 T@U) ) (! (let ((T@@81 (MapType0TypeInv0 (type a@@56))))
  1780. (=> (and (= (type a@@56) (MapType0Type T@@81 intType)) (= (type b@@41) (MapType0Type T@@81 intType))) (= (|MultiSet#Intersection| (|MultiSet#Intersection| a@@56 b@@41) b@@41) (|MultiSet#Intersection| a@@56 b@@41))))
  1781. :qid |funwiths.1022:18|
  1782. :skolemid |191|
  1783. :pattern ( (|MultiSet#Intersection| (|MultiSet#Intersection| a@@56 b@@41) b@@41))
  1784. )))
  1785. (assert (forall ((a@@57 T@U) (b@@42 T@U) ) (! (let ((T@@82 (MapType0TypeInv0 (type a@@57))))
  1786. (=> (and (= (type a@@57) (MapType0Type T@@82 intType)) (= (type b@@42) (MapType0Type T@@82 intType))) (= (|MultiSet#Intersection| a@@57 (|MultiSet#Intersection| a@@57 b@@42)) (|MultiSet#Intersection| a@@57 b@@42))))
  1787. :qid |funwiths.1027:18|
  1788. :skolemid |192|
  1789. :pattern ( (|MultiSet#Intersection| a@@57 (|MultiSet#Intersection| a@@57 b@@42)))
  1790. )))
  1791. (assert (forall ((arg0@@77 T@U) (arg1@@33 T@U) ) (! (let ((T@@83 (MapType0TypeInv0 (type arg0@@77))))
  1792. (= (type (|MultiSet#Difference| arg0@@77 arg1@@33)) (MapType0Type T@@83 intType)))
  1793. :qid |funType:MultiSet#Difference|
  1794. :pattern ( (|MultiSet#Difference| arg0@@77 arg1@@33))
  1795. )))
  1796. (assert (forall ((a@@58 T@U) (b@@43 T@U) (o@@46 T@U) ) (! (let ((T@@84 (type o@@46)))
  1797. (=> (and (= (type a@@58) (MapType0Type T@@84 intType)) (= (type b@@43) (MapType0Type T@@84 intType))) (= (U_2_int (MapType0Select (|MultiSet#Difference| a@@58 b@@43) o@@46)) (|Math#clip| (- (U_2_int (MapType0Select a@@58 o@@46)) (U_2_int (MapType0Select b@@43 o@@46)))))))
  1798. :qid |funwiths.1034:18|
  1799. :skolemid |193|
  1800. :pattern ( (MapType0Select (|MultiSet#Difference| a@@58 b@@43) o@@46))
  1801. )))
  1802. (assert (forall ((a@@59 T@U) (b@@44 T@U) (y@@11 T@U) ) (! (let ((T@@85 (type y@@11)))
  1803. (=> (and (and (= (type a@@59) (MapType0Type T@@85 intType)) (= (type b@@44) (MapType0Type T@@85 intType))) (<= (U_2_int (MapType0Select a@@59 y@@11)) (U_2_int (MapType0Select b@@44 y@@11)))) (= (U_2_int (MapType0Select (|MultiSet#Difference| a@@59 b@@44) y@@11)) 0)))
  1804. :qid |funwiths.1038:18|
  1805. :skolemid |194|
  1806. :pattern ( (|MultiSet#Difference| a@@59 b@@44) (MapType0Select b@@44 y@@11) (MapType0Select a@@59 y@@11))
  1807. )))
  1808. (assert (forall ((a@@60 T@U) (b@@45 T@U) ) (! (let ((T@@86 (MapType0TypeInv0 (type a@@60))))
  1809. (=> (and (= (type a@@60) (MapType0Type T@@86 intType)) (= (type b@@45) (MapType0Type T@@86 intType))) (and (= (+ (+ (|MultiSet#Card| (|MultiSet#Difference| a@@60 b@@45)) (|MultiSet#Card| (|MultiSet#Difference| b@@45 a@@60))) (* 2 (|MultiSet#Card| (|MultiSet#Intersection| a@@60 b@@45)))) (|MultiSet#Card| (|MultiSet#Union| a@@60 b@@45))) (= (|MultiSet#Card| (|MultiSet#Difference| a@@60 b@@45)) (- (|MultiSet#Card| a@@60) (|MultiSet#Card| (|MultiSet#Intersection| a@@60 b@@45)))))))
  1810. :qid |funwiths.1042:18|
  1811. :skolemid |195|
  1812. :pattern ( (|MultiSet#Card| (|MultiSet#Difference| a@@60 b@@45)))
  1813. )))
  1814. (assert (forall ((a@@61 T@U) (b@@46 T@U) ) (! (let ((T@@87 (MapType0TypeInv0 (type a@@61))))
  1815. (=> (and (= (type a@@61) (MapType0Type T@@87 intType)) (= (type b@@46) (MapType0Type T@@87 intType))) (and (=> (|MultiSet#Subset| a@@61 b@@46) (forall ((o@@47 T@U) ) (! (=> (= (type o@@47) T@@87) (<= (U_2_int (MapType0Select a@@61 o@@47)) (U_2_int (MapType0Select b@@46 o@@47))))
  1816. :qid |funwiths.1055:38|
  1817. :skolemid |196|
  1818. :pattern ( (MapType0Select a@@61 o@@47))
  1819. :pattern ( (MapType0Select b@@46 o@@47))
  1820. ))) (=> (forall ((o@@48 T@U) ) (! (=> (= (type o@@48) T@@87) (<= (U_2_int (MapType0Select a@@61 o@@48)) (U_2_int (MapType0Select b@@46 o@@48))))
  1821. :qid |funwiths.1055:38|
  1822. :skolemid |196|
  1823. :pattern ( (MapType0Select a@@61 o@@48))
  1824. :pattern ( (MapType0Select b@@46 o@@48))
  1825. )) (|MultiSet#Subset| a@@61 b@@46)))))
  1826. :qid |funwiths.1053:18|
  1827. :skolemid |197|
  1828. :pattern ( (|MultiSet#Subset| a@@61 b@@46))
  1829. )))
  1830. (assert (forall ((a@@62 T@U) (b@@47 T@U) ) (! (let ((T@@88 (MapType0TypeInv0 (type a@@62))))
  1831. (=> (and (= (type a@@62) (MapType0Type T@@88 intType)) (= (type b@@47) (MapType0Type T@@88 intType))) (and (=> (|MultiSet#Equal| a@@62 b@@47) (forall ((o@@49 T@U) ) (! (=> (= (type o@@49) T@@88) (= (U_2_int (MapType0Select a@@62 o@@49)) (U_2_int (MapType0Select b@@47 o@@49))))
  1832. :qid |funwiths.1061:37|
  1833. :skolemid |198|
  1834. :pattern ( (MapType0Select a@@62 o@@49))
  1835. :pattern ( (MapType0Select b@@47 o@@49))
  1836. ))) (=> (forall ((o@@50 T@U) ) (! (=> (= (type o@@50) T@@88) (= (U_2_int (MapType0Select a@@62 o@@50)) (U_2_int (MapType0Select b@@47 o@@50))))
  1837. :qid |funwiths.1061:37|
  1838. :skolemid |198|
  1839. :pattern ( (MapType0Select a@@62 o@@50))
  1840. :pattern ( (MapType0Select b@@47 o@@50))
  1841. )) (|MultiSet#Equal| a@@62 b@@47)))))
  1842. :qid |funwiths.1059:18|
  1843. :skolemid |199|
  1844. :pattern ( (|MultiSet#Equal| a@@62 b@@47))
  1845. )))
  1846. (assert (forall ((a@@63 T@U) (b@@48 T@U) ) (! (let ((T@@89 (MapType0TypeInv0 (type a@@63))))
  1847. (=> (and (and (= (type a@@63) (MapType0Type T@@89 intType)) (= (type b@@48) (MapType0Type T@@89 intType))) (|MultiSet#Equal| a@@63 b@@48)) (= a@@63 b@@48)))
  1848. :qid |funwiths.1063:18|
  1849. :skolemid |200|
  1850. :pattern ( (|MultiSet#Equal| a@@63 b@@48))
  1851. )))
  1852. (assert (forall ((a@@64 T@U) (b@@49 T@U) ) (! (let ((T@@90 (MapType0TypeInv0 (type a@@64))))
  1853. (=> (and (= (type a@@64) (MapType0Type T@@90 intType)) (= (type b@@49) (MapType0Type T@@90 intType))) (and (=> (|MultiSet#Disjoint| a@@64 b@@49) (forall ((o@@51 T@U) ) (! (=> (= (type o@@51) T@@90) (or (= (U_2_int (MapType0Select a@@64 o@@51)) 0) (= (U_2_int (MapType0Select b@@49 o@@51)) 0)))
  1854. :qid |funwiths.1072:19|
  1855. :skolemid |201|
  1856. :pattern ( (MapType0Select a@@64 o@@51))
  1857. :pattern ( (MapType0Select b@@49 o@@51))
  1858. ))) (=> (forall ((o@@52 T@U) ) (! (=> (= (type o@@52) T@@90) (or (= (U_2_int (MapType0Select a@@64 o@@52)) 0) (= (U_2_int (MapType0Select b@@49 o@@52)) 0)))
  1859. :qid |funwiths.1072:19|
  1860. :skolemid |201|
  1861. :pattern ( (MapType0Select a@@64 o@@52))
  1862. :pattern ( (MapType0Select b@@49 o@@52))
  1863. )) (|MultiSet#Disjoint| a@@64 b@@49)))))
  1864. :qid |funwiths.1069:18|
  1865. :skolemid |202|
  1866. :pattern ( (|MultiSet#Disjoint| a@@64 b@@49))
  1867. )))
  1868. (assert (forall ((arg0@@78 T@U) ) (! (let ((T@@91 (MapType0TypeInv0 (type arg0@@78))))
  1869. (= (type (|MultiSet#FromSet| arg0@@78)) (MapType0Type T@@91 intType)))
  1870. :qid |funType:MultiSet#FromSet|
  1871. :pattern ( (|MultiSet#FromSet| arg0@@78))
  1872. )))
  1873. (assert (forall ((s@@8 T@U) (a@@65 T@U) ) (! (let ((T@@92 (type a@@65)))
  1874. (=> (= (type s@@8) (MapType0Type T@@92 boolType)) (and (and (=> (= (U_2_int (MapType0Select (|MultiSet#FromSet| s@@8) a@@65)) 0) (not (U_2_bool (MapType0Select s@@8 a@@65)))) (=> (not (U_2_bool (MapType0Select s@@8 a@@65))) (= (U_2_int (MapType0Select (|MultiSet#FromSet| s@@8) a@@65)) 0))) (and (=> (= (U_2_int (MapType0Select (|MultiSet#FromSet| s@@8) a@@65)) 1) (U_2_bool (MapType0Select s@@8 a@@65))) (=> (U_2_bool (MapType0Select s@@8 a@@65)) (= (U_2_int (MapType0Select (|MultiSet#FromSet| s@@8) a@@65)) 1))))))
  1875. :qid |funwiths.1076:18|
  1876. :skolemid |203|
  1877. :pattern ( (MapType0Select (|MultiSet#FromSet| s@@8) a@@65))
  1878. )))
  1879. (assert (forall ((s@@9 T@U) ) (! (let ((T@@93 (MapType0TypeInv0 (type s@@9))))
  1880. (=> (= (type s@@9) (MapType0Type T@@93 boolType)) (= (|MultiSet#Card| (|MultiSet#FromSet| s@@9)) (|Set#Card| s@@9))))
  1881. :qid |funwiths.1081:18|
  1882. :skolemid |204|
  1883. :pattern ( (|MultiSet#Card| (|MultiSet#FromSet| s@@9)))
  1884. )))
  1885. (assert (forall ((arg0@@79 T@U) ) (! (let ((T@@94 (SeqTypeInv0 (type arg0@@79))))
  1886. (= (type (|MultiSet#FromSeq| arg0@@79)) (MapType0Type T@@94 intType)))
  1887. :qid |funType:MultiSet#FromSeq|
  1888. :pattern ( (|MultiSet#FromSeq| arg0@@79))
  1889. )))
  1890. (assert (forall ((s@@10 T@U) ) (! (let ((T@@95 (SeqTypeInv0 (type s@@10))))
  1891. (=> (= (type s@@10) (SeqType T@@95)) ($IsGoodMultiSet (|MultiSet#FromSeq| s@@10))))
  1892. :qid |funwiths.1087:18|
  1893. :skolemid |205|
  1894. :pattern ( (|MultiSet#FromSeq| s@@10))
  1895. )))
  1896. (assert (forall ((s@@11 T@U) ) (! (let ((T@@96 (SeqTypeInv0 (type s@@11))))
  1897. (=> (= (type s@@11) (SeqType T@@96)) (= (|MultiSet#Card| (|MultiSet#FromSeq| s@@11)) (|Seq#Length| s@@11))))
  1898. :qid |funwiths.1091:18|
  1899. :skolemid |206|
  1900. :pattern ( (|MultiSet#Card| (|MultiSet#FromSeq| s@@11)))
  1901. )))
  1902. (assert (forall ((arg0@@80 T@U) (arg1@@34 T@U) ) (! (let ((T@@97 (type arg1@@34)))
  1903. (= (type (|Seq#Build| arg0@@80 arg1@@34)) (SeqType T@@97)))
  1904. :qid |funType:Seq#Build|
  1905. :pattern ( (|Seq#Build| arg0@@80 arg1@@34))
  1906. )))
  1907. (assert (forall ((s@@12 T@U) (v@@25 T@U) ) (! (let ((T@@98 (type v@@25)))
  1908. (=> (= (type s@@12) (SeqType T@@98)) (= (|MultiSet#FromSeq| (|Seq#Build| s@@12 v@@25)) (|MultiSet#UnionOne| (|MultiSet#FromSeq| s@@12) v@@25))))
  1909. :qid |funwiths.1095:18|
  1910. :skolemid |207|
  1911. :pattern ( (|MultiSet#FromSeq| (|Seq#Build| s@@12 v@@25)))
  1912. )))
  1913. (assert (forall ((T@@99 T@T) ) (! (= (type (|Seq#Empty| T@@99)) (SeqType T@@99))
  1914. :qid |funType:Seq#Empty|
  1915. :pattern ( (|Seq#Empty| T@@99))
  1916. )))
  1917. (assert (forall ((T@@100 T@T) ) (! (= (|MultiSet#FromSeq| (|Seq#Empty| T@@100)) (|MultiSet#Empty| T@@100))
  1918. :skolemid |208|
  1919. )))
  1920. (assert (forall ((arg0@@81 T@U) (arg1@@35 T@U) ) (! (let ((T@@101 (SeqTypeInv0 (type arg0@@81))))
  1921. (= (type (|Seq#Append| arg0@@81 arg1@@35)) (SeqType T@@101)))
  1922. :qid |funType:Seq#Append|
  1923. :pattern ( (|Seq#Append| arg0@@81 arg1@@35))
  1924. )))
  1925. (assert (forall ((a@@66 T@U) (b@@50 T@U) ) (! (let ((T@@102 (SeqTypeInv0 (type a@@66))))
  1926. (=> (and (= (type a@@66) (SeqType T@@102)) (= (type b@@50) (SeqType T@@102))) (= (|MultiSet#FromSeq| (|Seq#Append| a@@66 b@@50)) (|MultiSet#Union| (|MultiSet#FromSeq| a@@66) (|MultiSet#FromSeq| b@@50)))))
  1927. :qid |funwiths.1102:18|
  1928. :skolemid |209|
  1929. :pattern ( (|MultiSet#FromSeq| (|Seq#Append| a@@66 b@@50)))
  1930. )))
  1931. (assert (forall ((arg0@@82 T@U) (arg1@@36 Int) (arg2@@1 T@U) ) (! (let ((T@@103 (type arg2@@1)))
  1932. (= (type (|Seq#Update| arg0@@82 arg1@@36 arg2@@1)) (SeqType T@@103)))
  1933. :qid |funType:Seq#Update|
  1934. :pattern ( (|Seq#Update| arg0@@82 arg1@@36 arg2@@1))
  1935. )))
  1936. (assert (forall ((s@@13 T@U) (i@@8 Int) (v@@26 T@U) (x@@32 T@U) ) (! (let ((T@@104 (type v@@26)))
  1937. (=> (and (and (= (type s@@13) (SeqType T@@104)) (= (type x@@32) T@@104)) (and (<= 0 i@@8) (< i@@8 (|Seq#Length| s@@13)))) (= (U_2_int (MapType0Select (|MultiSet#FromSeq| (|Seq#Update| s@@13 i@@8 v@@26)) x@@32)) (U_2_int (MapType0Select (|MultiSet#Union| (|MultiSet#Difference| (|MultiSet#FromSeq| s@@13) (|MultiSet#Singleton| (|Seq#Index| s@@13 i@@8))) (|MultiSet#Singleton| v@@26)) x@@32)))))
  1938. :qid |funwiths.1107:18|
  1939. :skolemid |210|
  1940. :pattern ( (MapType0Select (|MultiSet#FromSeq| (|Seq#Update| s@@13 i@@8 v@@26)) x@@32))
  1941. )))
  1942. (assert (forall ((s@@14 T@U) (x@@33 T@U) ) (! (let ((T@@105 (type x@@33)))
  1943. (=> (= (type s@@14) (SeqType T@@105)) (and (=> (exists ((i@@9 Int) ) (! (and (and (<= 0 i@@9) (< i@@9 (|Seq#Length| s@@14))) (= x@@33 (|Seq#Index| s@@14 i@@9)))
  1944. :qid |funwiths.1116:11|
  1945. :skolemid |211|
  1946. :pattern ( (|Seq#Index| s@@14 i@@9))
  1947. )) (< 0 (U_2_int (MapType0Select (|MultiSet#FromSeq| s@@14) x@@33)))) (=> (< 0 (U_2_int (MapType0Select (|MultiSet#FromSeq| s@@14) x@@33))) (exists ((i@@10 Int) ) (! (and (and (<= 0 i@@10) (< i@@10 (|Seq#Length| s@@14))) (= x@@33 (|Seq#Index| s@@14 i@@10)))
  1948. :qid |funwiths.1116:11|
  1949. :skolemid |211|
  1950. :pattern ( (|Seq#Index| s@@14 i@@10))
  1951. ))))))
  1952. :qid |funwiths.1114:18|
  1953. :skolemid |212|
  1954. :pattern ( (MapType0Select (|MultiSet#FromSeq| s@@14) x@@33))
  1955. )))
  1956. (assert (forall ((s@@15 T@U) ) (! (let ((T@@106 (SeqTypeInv0 (type s@@15))))
  1957. (=> (= (type s@@15) (SeqType T@@106)) (<= 0 (|Seq#Length| s@@15))))
  1958. :qid |funwiths.1125:18|
  1959. :skolemid |213|
  1960. :pattern ( (|Seq#Length| s@@15))
  1961. )))
  1962. (assert (forall ((T@@107 T@T) ) (! (= (|Seq#Length| (|Seq#Empty| T@@107)) 0)
  1963. :skolemid |214|
  1964. :pattern ( (|Seq#Empty| T@@107))
  1965. )))
  1966. (assert (forall ((s@@16 T@U) ) (! (let ((T@@108 (SeqTypeInv0 (type s@@16))))
  1967. (=> (and (= (type s@@16) (SeqType T@@108)) (= (|Seq#Length| s@@16) 0)) (= s@@16 (|Seq#Empty| T@@108))))
  1968. :qid |funwiths.1131:18|
  1969. :skolemid |215|
  1970. :pattern ( (|Seq#Length| s@@16))
  1971. )))
  1972. (assert (forall ((t@@23 T@U) (T@@109 T@T) ) (! (=> (= (type t@@23) TyType) ($Is (|Seq#Empty| T@@109) t@@23))
  1973. :qid |funwiths.1135:18|
  1974. :skolemid |216|
  1975. :pattern ( ($Is (|Seq#Empty| T@@109) t@@23))
  1976. )))
  1977. (assert (forall ((arg0@@83 T@U) ) (! (let ((T@@110 (type arg0@@83)))
  1978. (= (type (|Seq#Singleton| arg0@@83)) (SeqType T@@110)))
  1979. :qid |funType:Seq#Singleton|
  1980. :pattern ( (|Seq#Singleton| arg0@@83))
  1981. )))
  1982. (assert (forall ((t@@24 T@U) ) (! (= (|Seq#Length| (|Seq#Singleton| t@@24)) 1)
  1983. :qid |funwiths.1139:18|
  1984. :skolemid |217|
  1985. :pattern ( (|Seq#Length| (|Seq#Singleton| t@@24)))
  1986. )))
  1987. (assert (and (forall ((arg0@@84 T@U) ) (! (let ((T@@111 (SeqTypeInv0 (type arg0@@84))))
  1988. (= (type (|Seq#Build_inv0| arg0@@84)) (SeqType T@@111)))
  1989. :qid |funType:Seq#Build_inv0|
  1990. :pattern ( (|Seq#Build_inv0| arg0@@84))
  1991. )) (forall ((arg0@@85 T@U) ) (! (let ((T@@112 (SeqTypeInv0 (type arg0@@85))))
  1992. (= (type (|Seq#Build_inv1| arg0@@85)) T@@112))
  1993. :qid |funType:Seq#Build_inv1|
  1994. :pattern ( (|Seq#Build_inv1| arg0@@85))
  1995. ))))
  1996. (assert (forall ((s@@17 T@U) (val@@5 T@U) ) (! (let ((T@@113 (type val@@5)))
  1997. (=> (= (type s@@17) (SeqType T@@113)) (and (= (|Seq#Build_inv0| (|Seq#Build| s@@17 val@@5)) s@@17) (= (|Seq#Build_inv1| (|Seq#Build| s@@17 val@@5)) val@@5))))
  1998. :qid |funwiths.1149:18|
  1999. :skolemid |218|
  2000. :pattern ( (|Seq#Build| s@@17 val@@5))
  2001. )))
  2002. (assert (forall ((s@@18 T@U) (v@@27 T@U) ) (! (let ((T@@114 (type v@@27)))
  2003. (=> (= (type s@@18) (SeqType T@@114)) (= (|Seq#Length| (|Seq#Build| s@@18 v@@27)) (+ 1 (|Seq#Length| s@@18)))))
  2004. :qid |funwiths.1154:18|
  2005. :skolemid |219|
  2006. :pattern ( (|Seq#Build| s@@18 v@@27))
  2007. )))
  2008. (assert (forall ((s@@19 T@U) (i@@11 Int) (v@@28 T@U) ) (! (let ((T@@115 (type v@@28)))
  2009. (=> (= (type s@@19) (SeqType T@@115)) (and (=> (= i@@11 (|Seq#Length| s@@19)) (= (|Seq#Index| (|Seq#Build| s@@19 v@@28) i@@11) v@@28)) (=> (not (= i@@11 (|Seq#Length| s@@19))) (= (|Seq#Index| (|Seq#Build| s@@19 v@@28) i@@11) (|Seq#Index| s@@19 i@@11))))))
  2010. :qid |funwiths.1158:18|
  2011. :skolemid |220|
  2012. :pattern ( (|Seq#Index| (|Seq#Build| s@@19 v@@28) i@@11))
  2013. )))
  2014. (assert (forall ((s@@20 T@U) (bx@@33 T@U) (t@@25 T@U) ) (! (=> (and (and (and (= (type s@@20) (SeqType BoxType)) (= (type bx@@33) BoxType)) (= (type t@@25) TyType)) (and ($Is s@@20 (TSeq t@@25)) ($IsBox bx@@33 t@@25))) ($Is (|Seq#Build| s@@20 bx@@33) (TSeq t@@25)))
  2015. :qid |funwiths.1163:15|
  2016. :skolemid |221|
  2017. :pattern ( ($Is (|Seq#Build| s@@20 bx@@33) (TSeq t@@25)))
  2018. )))
  2019. (assert (forall ((s0 T@U) (s1 T@U) ) (! (let ((T@@116 (SeqTypeInv0 (type s0))))
  2020. (=> (and (= (type s0) (SeqType T@@116)) (= (type s1) (SeqType T@@116))) (= (|Seq#Length| (|Seq#Append| s0 s1)) (+ (|Seq#Length| s0) (|Seq#Length| s1)))))
  2021. :qid |funwiths.1169:18|
  2022. :skolemid |222|
  2023. :pattern ( (|Seq#Length| (|Seq#Append| s0 s1)))
  2024. )))
  2025. (assert (forall ((s0@@0 T@U) (s1@@0 T@U) (t@@26 T@U) ) (! (=> (and (and (and (= (type s0@@0) (SeqType BoxType)) (= (type s1@@0) (SeqType BoxType))) (= (type t@@26) TyType)) (and ($Is s0@@0 t@@26) ($Is s1@@0 t@@26))) ($Is (|Seq#Append| s0@@0 s1@@0) t@@26))
  2026. :qid |funwiths.1173:15|
  2027. :skolemid |223|
  2028. :pattern ( ($Is (|Seq#Append| s0@@0 s1@@0) t@@26))
  2029. )))
  2030. (assert (forall ((t@@27 T@U) ) (! (= (|Seq#Index| (|Seq#Singleton| t@@27) 0) t@@27)
  2031. :qid |funwiths.1179:18|
  2032. :skolemid |224|
  2033. :pattern ( (|Seq#Index| (|Seq#Singleton| t@@27) 0))
  2034. )))
  2035. (assert (forall ((s0@@1 T@U) (s1@@1 T@U) (n@@6 Int) ) (! (let ((T@@117 (SeqTypeInv0 (type s0@@1))))
  2036. (=> (and (= (type s0@@1) (SeqType T@@117)) (= (type s1@@1) (SeqType T@@117))) (and (=> (< n@@6 (|Seq#Length| s0@@1)) (= (|Seq#Index| (|Seq#Append| s0@@1 s1@@1) n@@6) (|Seq#Index| s0@@1 n@@6))) (=> (<= (|Seq#Length| s0@@1) n@@6) (= (|Seq#Index| (|Seq#Append| s0@@1 s1@@1) n@@6) (|Seq#Index| s1@@1 (- n@@6 (|Seq#Length| s0@@1))))))))
  2037. :qid |funwiths.1183:18|
  2038. :skolemid |225|
  2039. :pattern ( (|Seq#Index| (|Seq#Append| s0@@1 s1@@1) n@@6))
  2040. )))
  2041. (assert (forall ((s@@21 T@U) (i@@12 Int) (v@@29 T@U) ) (! (let ((T@@118 (type v@@29)))
  2042. (=> (= (type s@@21) (SeqType T@@118)) (=> (and (<= 0 i@@12) (< i@@12 (|Seq#Length| s@@21))) (= (|Seq#Length| (|Seq#Update| s@@21 i@@12 v@@29)) (|Seq#Length| s@@21)))))
  2043. :qid |funwiths.1191:18|
  2044. :skolemid |226|
  2045. :pattern ( (|Seq#Length| (|Seq#Update| s@@21 i@@12 v@@29)))
  2046. )))
  2047. (assert (forall ((s@@22 T@U) (i@@13 Int) (v@@30 T@U) (n@@7 Int) ) (! (let ((T@@119 (type v@@30)))
  2048. (=> (= (type s@@22) (SeqType T@@119)) (=> (and (<= 0 n@@7) (< n@@7 (|Seq#Length| s@@22))) (and (=> (= i@@13 n@@7) (= (|Seq#Index| (|Seq#Update| s@@22 i@@13 v@@30) n@@7) v@@30)) (=> (not (= i@@13 n@@7)) (= (|Seq#Index| (|Seq#Update| s@@22 i@@13 v@@30) n@@7) (|Seq#Index| s@@22 n@@7)))))))
  2049. :qid |funwiths.1195:18|
  2050. :skolemid |227|
  2051. :pattern ( (|Seq#Index| (|Seq#Update| s@@22 i@@13 v@@30) n@@7))
  2052. )))
  2053. (assert (forall ((s@@23 T@U) (x@@34 T@U) ) (! (let ((T@@120 (type x@@34)))
  2054. (=> (= (type s@@23) (SeqType T@@120)) (and (=> (|Seq#Contains| s@@23 x@@34) (exists ((i@@14 Int) ) (! (and (and (<= 0 i@@14) (< i@@14 (|Seq#Length| s@@23))) (= (|Seq#Index| s@@23 i@@14) x@@34))
  2055. :qid |funwiths.1206:19|
  2056. :skolemid |228|
  2057. :pattern ( (|Seq#Index| s@@23 i@@14))
  2058. ))) (=> (exists ((i@@15 Int) ) (! (and (and (<= 0 i@@15) (< i@@15 (|Seq#Length| s@@23))) (= (|Seq#Index| s@@23 i@@15) x@@34))
  2059. :qid |funwiths.1206:19|
  2060. :skolemid |228|
  2061. :pattern ( (|Seq#Index| s@@23 i@@15))
  2062. )) (|Seq#Contains| s@@23 x@@34)))))
  2063. :qid |funwiths.1203:18|
  2064. :skolemid |229|
  2065. :pattern ( (|Seq#Contains| s@@23 x@@34))
  2066. )))
  2067. (assert (forall ((x@@35 T@U) ) (! (let ((T@@121 (type x@@35)))
  2068. (not (|Seq#Contains| (|Seq#Empty| T@@121) x@@35)))
  2069. :qid |funwiths.1210:18|
  2070. :skolemid |230|
  2071. :pattern ( (let ((T@@121 (type x@@35)))
  2072. (|Seq#Contains| (|Seq#Empty| T@@121) x@@35)))
  2073. )))
  2074. (assert (forall ((s0@@2 T@U) (s1@@2 T@U) (x@@36 T@U) ) (! (let ((T@@122 (type x@@36)))
  2075. (=> (and (= (type s0@@2) (SeqType T@@122)) (= (type s1@@2) (SeqType T@@122))) (and (=> (|Seq#Contains| (|Seq#Append| s0@@2 s1@@2) x@@36) (or (|Seq#Contains| s0@@2 x@@36) (|Seq#Contains| s1@@2 x@@36))) (=> (or (|Seq#Contains| s0@@2 x@@36) (|Seq#Contains| s1@@2 x@@36)) (|Seq#Contains| (|Seq#Append| s0@@2 s1@@2) x@@36)))))
  2076. :qid |funwiths.1214:18|
  2077. :skolemid |231|
  2078. :pattern ( (|Seq#Contains| (|Seq#Append| s0@@2 s1@@2) x@@36))
  2079. )))
  2080. (assert (forall ((s@@24 T@U) (v@@31 T@U) (x@@37 T@U) ) (! (let ((T@@123 (type v@@31)))
  2081. (=> (and (= (type s@@24) (SeqType T@@123)) (= (type x@@37) T@@123)) (and (=> (|Seq#Contains| (|Seq#Build| s@@24 v@@31) x@@37) (or (= v@@31 x@@37) (|Seq#Contains| s@@24 x@@37))) (=> (or (= v@@31 x@@37) (|Seq#Contains| s@@24 x@@37)) (|Seq#Contains| (|Seq#Build| s@@24 v@@31) x@@37)))))
  2082. :qid |funwiths.1219:18|
  2083. :skolemid |232|
  2084. :pattern ( (|Seq#Contains| (|Seq#Build| s@@24 v@@31) x@@37))
  2085. )))
  2086. (assert (forall ((arg0@@86 T@U) (arg1@@37 Int) ) (! (let ((T@@124 (SeqTypeInv0 (type arg0@@86))))
  2087. (= (type (|Seq#Take| arg0@@86 arg1@@37)) (SeqType T@@124)))
  2088. :qid |funType:Seq#Take|
  2089. :pattern ( (|Seq#Take| arg0@@86 arg1@@37))
  2090. )))
  2091. (assert (forall ((s@@25 T@U) (n@@8 Int) (x@@38 T@U) ) (! (let ((T@@125 (type x@@38)))
  2092. (=> (= (type s@@25) (SeqType T@@125)) (and (=> (|Seq#Contains| (|Seq#Take| s@@25 n@@8) x@@38) (exists ((i@@16 Int) ) (! (and (and (and (<= 0 i@@16) (< i@@16 n@@8)) (< i@@16 (|Seq#Length| s@@25))) (= (|Seq#Index| s@@25 i@@16) x@@38))
  2093. :qid |funwiths.1226:19|
  2094. :skolemid |233|
  2095. :pattern ( (|Seq#Index| s@@25 i@@16))
  2096. ))) (=> (exists ((i@@17 Int) ) (! (and (and (and (<= 0 i@@17) (< i@@17 n@@8)) (< i@@17 (|Seq#Length| s@@25))) (= (|Seq#Index| s@@25 i@@17) x@@38))
  2097. :qid |funwiths.1226:19|
  2098. :skolemid |233|
  2099. :pattern ( (|Seq#Index| s@@25 i@@17))
  2100. )) (|Seq#Contains| (|Seq#Take| s@@25 n@@8) x@@38)))))
  2101. :qid |funwiths.1223:18|
  2102. :skolemid |234|
  2103. :pattern ( (|Seq#Contains| (|Seq#Take| s@@25 n@@8) x@@38))
  2104. )))
  2105. (assert (forall ((arg0@@87 T@U) (arg1@@38 Int) ) (! (let ((T@@126 (SeqTypeInv0 (type arg0@@87))))
  2106. (= (type (|Seq#Drop| arg0@@87 arg1@@38)) (SeqType T@@126)))
  2107. :qid |funType:Seq#Drop|
  2108. :pattern ( (|Seq#Drop| arg0@@87 arg1@@38))
  2109. )))
  2110. (assert (forall ((s@@26 T@U) (n@@9 Int) (x@@39 T@U) ) (! (let ((T@@127 (type x@@39)))
  2111. (=> (= (type s@@26) (SeqType T@@127)) (and (=> (|Seq#Contains| (|Seq#Drop| s@@26 n@@9) x@@39) (exists ((i@@18 Int) ) (! (and (and (and (<= 0 n@@9) (<= n@@9 i@@18)) (< i@@18 (|Seq#Length| s@@26))) (= (|Seq#Index| s@@26 i@@18) x@@39))
  2112. :qid |funwiths.1233:19|
  2113. :skolemid |235|
  2114. :pattern ( (|Seq#Index| s@@26 i@@18))
  2115. ))) (=> (exists ((i@@19 Int) ) (! (and (and (and (<= 0 n@@9) (<= n@@9 i@@19)) (< i@@19 (|Seq#Length| s@@26))) (= (|Seq#Index| s@@26 i@@19) x@@39))
  2116. :qid |funwiths.1233:19|
  2117. :skolemid |235|
  2118. :pattern ( (|Seq#Index| s@@26 i@@19))
  2119. )) (|Seq#Contains| (|Seq#Drop| s@@26 n@@9) x@@39)))))
  2120. :qid |funwiths.1230:18|
  2121. :skolemid |236|
  2122. :pattern ( (|Seq#Contains| (|Seq#Drop| s@@26 n@@9) x@@39))
  2123. )))
  2124. (assert (forall ((s0@@3 T@U) (s1@@3 T@U) ) (! (let ((T@@128 (SeqTypeInv0 (type s0@@3))))
  2125. (=> (and (= (type s0@@3) (SeqType T@@128)) (= (type s1@@3) (SeqType T@@128))) (and (=> (|Seq#Equal| s0@@3 s1@@3) (and (= (|Seq#Length| s0@@3) (|Seq#Length| s1@@3)) (forall ((j Int) ) (! (=> (and (<= 0 j) (< j (|Seq#Length| s0@@3))) (= (|Seq#Index| s0@@3 j) (|Seq#Index| s1@@3 j)))
  2126. :qid |funwiths.1243:19|
  2127. :skolemid |237|
  2128. :pattern ( (|Seq#Index| s0@@3 j))
  2129. :pattern ( (|Seq#Index| s1@@3 j))
  2130. )))) (=> (and (= (|Seq#Length| s0@@3) (|Seq#Length| s1@@3)) (forall ((j@@0 Int) ) (! (=> (and (<= 0 j@@0) (< j@@0 (|Seq#Length| s0@@3))) (= (|Seq#Index| s0@@3 j@@0) (|Seq#Index| s1@@3 j@@0)))
  2131. :qid |funwiths.1243:19|
  2132. :skolemid |237|
  2133. :pattern ( (|Seq#Index| s0@@3 j@@0))
  2134. :pattern ( (|Seq#Index| s1@@3 j@@0))
  2135. ))) (|Seq#Equal| s0@@3 s1@@3)))))
  2136. :qid |funwiths.1239:18|
  2137. :skolemid |238|
  2138. :pattern ( (|Seq#Equal| s0@@3 s1@@3))
  2139. )))
  2140. (assert (forall ((a@@67 T@U) (b@@51 T@U) ) (! (let ((T@@129 (SeqTypeInv0 (type a@@67))))
  2141. (=> (and (and (= (type a@@67) (SeqType T@@129)) (= (type b@@51) (SeqType T@@129))) (|Seq#Equal| a@@67 b@@51)) (= a@@67 b@@51)))
  2142. :qid |funwiths.1247:18|
  2143. :skolemid |239|
  2144. :pattern ( (|Seq#Equal| a@@67 b@@51))
  2145. )))
  2146. (assert (forall ((s0@@4 T@U) (s1@@4 T@U) (n@@10 Int) ) (! (let ((T@@130 (SeqTypeInv0 (type s0@@4))))
  2147. (=> (and (= (type s0@@4) (SeqType T@@130)) (= (type s1@@4) (SeqType T@@130))) (and (=> (|Seq#SameUntil| s0@@4 s1@@4 n@@10) (forall ((j@@1 Int) ) (! (=> (and (<= 0 j@@1) (< j@@1 n@@10)) (= (|Seq#Index| s0@@4 j@@1) (|Seq#Index| s1@@4 j@@1)))
  2148. :qid |funwiths.1254:19|
  2149. :skolemid |240|
  2150. :pattern ( (|Seq#Index| s0@@4 j@@1))
  2151. :pattern ( (|Seq#Index| s1@@4 j@@1))
  2152. ))) (=> (forall ((j@@2 Int) ) (! (=> (and (<= 0 j@@2) (< j@@2 n@@10)) (= (|Seq#Index| s0@@4 j@@2) (|Seq#Index| s1@@4 j@@2)))
  2153. :qid |funwiths.1254:19|
  2154. :skolemid |240|
  2155. :pattern ( (|Seq#Index| s0@@4 j@@2))
  2156. :pattern ( (|Seq#Index| s1@@4 j@@2))
  2157. )) (|Seq#SameUntil| s0@@4 s1@@4 n@@10)))))
  2158. :qid |funwiths.1251:18|
  2159. :skolemid |241|
  2160. :pattern ( (|Seq#SameUntil| s0@@4 s1@@4 n@@10))
  2161. )))
  2162. (assert (forall ((s@@27 T@U) (n@@11 Int) ) (! (let ((T@@131 (SeqTypeInv0 (type s@@27))))
  2163. (=> (= (type s@@27) (SeqType T@@131)) (=> (and (<= 0 n@@11) (<= n@@11 (|Seq#Length| s@@27))) (= (|Seq#Length| (|Seq#Take| s@@27 n@@11)) n@@11))))
  2164. :qid |funwiths.1260:18|
  2165. :skolemid |242|
  2166. :pattern ( (|Seq#Length| (|Seq#Take| s@@27 n@@11)))
  2167. )))
  2168. (assert (forall ((s@@28 T@U) (n@@12 Int) (j@@3 Int) ) (! (let ((T@@132 (SeqTypeInv0 (type s@@28))))
  2169. (=> (= (type s@@28) (SeqType T@@132)) (=> (and (and (<= 0 j@@3) (< j@@3 n@@12)) (< j@@3 (|Seq#Length| s@@28))) (= (|Seq#Index| (|Seq#Take| s@@28 n@@12) j@@3) (|Seq#Index| s@@28 j@@3)))))
  2170. :qid |funwiths.1264:18|
  2171. :weight 25
  2172. :skolemid |243|
  2173. :pattern ( (|Seq#Index| (|Seq#Take| s@@28 n@@12) j@@3))
  2174. :pattern ( (|Seq#Index| s@@28 j@@3) (|Seq#Take| s@@28 n@@12))
  2175. )))
  2176. (assert (forall ((s@@29 T@U) (n@@13 Int) ) (! (let ((T@@133 (SeqTypeInv0 (type s@@29))))
  2177. (=> (= (type s@@29) (SeqType T@@133)) (=> (and (<= 0 n@@13) (<= n@@13 (|Seq#Length| s@@29))) (= (|Seq#Length| (|Seq#Drop| s@@29 n@@13)) (- (|Seq#Length| s@@29) n@@13)))))
  2178. :qid |funwiths.1271:18|
  2179. :skolemid |244|
  2180. :pattern ( (|Seq#Length| (|Seq#Drop| s@@29 n@@13)))
  2181. )))
  2182. (assert (forall ((s@@30 T@U) (n@@14 Int) (j@@4 Int) ) (! (let ((T@@134 (SeqTypeInv0 (type s@@30))))
  2183. (=> (= (type s@@30) (SeqType T@@134)) (=> (and (and (<= 0 n@@14) (<= 0 j@@4)) (< j@@4 (- (|Seq#Length| s@@30) n@@14))) (= (|Seq#Index| (|Seq#Drop| s@@30 n@@14) j@@4) (|Seq#Index| s@@30 (+ j@@4 n@@14))))))
  2184. :qid |funwiths.1275:18|
  2185. :weight 25
  2186. :skolemid |245|
  2187. :pattern ( (|Seq#Index| (|Seq#Drop| s@@30 n@@14) j@@4))
  2188. )))
  2189. (assert (forall ((s@@31 T@U) (n@@15 Int) (k@@3 Int) ) (! (let ((T@@135 (SeqTypeInv0 (type s@@31))))
  2190. (=> (= (type s@@31) (SeqType T@@135)) (=> (and (and (<= 0 n@@15) (<= n@@15 k@@3)) (< k@@3 (|Seq#Length| s@@31))) (= (|Seq#Index| (|Seq#Drop| s@@31 n@@15) (- k@@3 n@@15)) (|Seq#Index| s@@31 k@@3)))))
  2191. :qid |funwiths.1280:18|
  2192. :weight 25
  2193. :skolemid |246|
  2194. :pattern ( (|Seq#Index| s@@31 k@@3) (|Seq#Drop| s@@31 n@@15))
  2195. )))
  2196. (assert (forall ((s@@32 T@U) (t@@28 T@U) (n@@16 Int) ) (! (let ((T@@136 (SeqTypeInv0 (type s@@32))))
  2197. (=> (and (and (= (type s@@32) (SeqType T@@136)) (= (type t@@28) (SeqType T@@136))) (= n@@16 (|Seq#Length| s@@32))) (= (|Seq#Take| (|Seq#Append| s@@32 t@@28) n@@16) s@@32)))
  2198. :qid |funwiths.1285:18|
  2199. :skolemid |247|
  2200. :pattern ( (|Seq#Take| (|Seq#Append| s@@32 t@@28) n@@16))
  2201. )))
  2202. (assert (forall ((s@@33 T@U) (t@@29 T@U) (n@@17 Int) ) (! (let ((T@@137 (SeqTypeInv0 (type s@@33))))
  2203. (=> (and (and (= (type s@@33) (SeqType T@@137)) (= (type t@@29) (SeqType T@@137))) (= n@@17 (|Seq#Length| s@@33))) (= (|Seq#Drop| (|Seq#Append| s@@33 t@@29) n@@17) t@@29)))
  2204. :qid |funwiths.1290:18|
  2205. :skolemid |248|
  2206. :pattern ( (|Seq#Drop| (|Seq#Append| s@@33 t@@29) n@@17))
  2207. )))
  2208. (assert (forall ((arg0@@88 T@U) (arg1@@39 T@U) ) (! (= (type (|Seq#FromArray| arg0@@88 arg1@@39)) (SeqType BoxType))
  2209. :qid |funType:Seq#FromArray|
  2210. :pattern ( (|Seq#FromArray| arg0@@88 arg1@@39))
  2211. )))
  2212. (assert (forall ((h@@16 T@U) (a@@68 T@U) ) (! (=> (and (= (type h@@16) (MapType0Type refType MapType1Type)) (= (type a@@68) refType)) (= (|Seq#Length| (|Seq#FromArray| h@@16 a@@68)) (_System.array.Length a@@68)))
  2213. :qid |funwiths.1297:15|
  2214. :skolemid |249|
  2215. :pattern ( (|Seq#Length| (|Seq#FromArray| h@@16 a@@68)))
  2216. )))
  2217. (assert (forall ((h@@17 T@U) (a@@69 T@U) ) (! (=> (and (= (type h@@17) (MapType0Type refType MapType1Type)) (= (type a@@69) refType)) (forall ((i@@20 Int) ) (! (=> (and (<= 0 i@@20) (< i@@20 (|Seq#Length| (|Seq#FromArray| h@@17 a@@69)))) (= (|Seq#Index| (|Seq#FromArray| h@@17 a@@69) i@@20) (MapType1Select (MapType0Select h@@17 a@@69) (IndexField i@@20))))
  2218. :qid |funwiths.1303:11|
  2219. :skolemid |250|
  2220. :pattern ( (MapType1Select (MapType0Select h@@17 a@@69) (IndexField i@@20)))
  2221. :pattern ( (|Seq#Index| (|Seq#FromArray| h@@17 a@@69) i@@20))
  2222. )))
  2223. :qid |funwiths.1301:15|
  2224. :skolemid |251|
  2225. :pattern ( (|Seq#FromArray| h@@17 a@@69))
  2226. )))
  2227. (assert (forall ((h0 T@U) (h1 T@U) (a@@70 T@U) ) (! (=> (and (and (= (type h0) (MapType0Type refType MapType1Type)) (= (type h1) (MapType0Type refType MapType1Type))) (= (type a@@70) refType)) (=> (and (and (and ($IsGoodHeap h0) ($IsGoodHeap h1)) ($HeapSucc h0 h1)) (= (MapType0Select h0 a@@70) (MapType0Select h1 a@@70))) (= (|Seq#FromArray| h0 a@@70) (|Seq#FromArray| h1 a@@70))))
  2228. :qid |funwiths.1308:15|
  2229. :skolemid |252|
  2230. :pattern ( (|Seq#FromArray| h1 a@@70) ($HeapSucc h0 h1))
  2231. )))
  2232. (assert (forall ((h@@18 T@U) (i@@21 Int) (v@@32 T@U) (a@@71 T@U) ) (! (=> (and (and (and (= (type h@@18) (MapType0Type refType MapType1Type)) (= (type v@@32) BoxType)) (= (type a@@71) refType)) (and (<= 0 i@@21) (< i@@21 (_System.array.Length a@@71)))) (= (|Seq#FromArray| (MapType0Store h@@18 a@@71 (MapType1Store (MapType0Select h@@18 a@@71) (IndexField i@@21) v@@32)) a@@71) (|Seq#Update| (|Seq#FromArray| h@@18 a@@71) i@@21 v@@32)))
  2233. :qid |funwiths.1313:15|
  2234. :skolemid |253|
  2235. :pattern ( (|Seq#FromArray| (MapType0Store h@@18 a@@71 (MapType1Store (MapType0Select h@@18 a@@71) (IndexField i@@21) v@@32)) a@@71))
  2236. )))
  2237. (assert (forall ((s@@34 T@U) (i@@22 Int) (v@@33 T@U) (n@@18 Int) ) (! (let ((T@@138 (type v@@33)))
  2238. (=> (= (type s@@34) (SeqType T@@138)) (=> (and (and (<= 0 i@@22) (< i@@22 n@@18)) (<= n@@18 (|Seq#Length| s@@34))) (= (|Seq#Take| (|Seq#Update| s@@34 i@@22 v@@33) n@@18) (|Seq#Update| (|Seq#Take| s@@34 n@@18) i@@22 v@@33)))))
  2239. :qid |funwiths.1319:18|
  2240. :skolemid |254|
  2241. :pattern ( (|Seq#Take| (|Seq#Update| s@@34 i@@22 v@@33) n@@18))
  2242. )))
  2243. (assert (forall ((s@@35 T@U) (i@@23 Int) (v@@34 T@U) (n@@19 Int) ) (! (let ((T@@139 (type v@@34)))
  2244. (=> (= (type s@@35) (SeqType T@@139)) (=> (and (<= n@@19 i@@23) (< i@@23 (|Seq#Length| s@@35))) (= (|Seq#Take| (|Seq#Update| s@@35 i@@23 v@@34) n@@19) (|Seq#Take| s@@35 n@@19)))))
  2245. :qid |funwiths.1324:18|
  2246. :skolemid |255|
  2247. :pattern ( (|Seq#Take| (|Seq#Update| s@@35 i@@23 v@@34) n@@19))
  2248. )))
  2249. (assert (forall ((s@@36 T@U) (i@@24 Int) (v@@35 T@U) (n@@20 Int) ) (! (let ((T@@140 (type v@@35)))
  2250. (=> (= (type s@@36) (SeqType T@@140)) (=> (and (and (<= 0 n@@20) (<= n@@20 i@@24)) (< i@@24 (|Seq#Length| s@@36))) (= (|Seq#Drop| (|Seq#Update| s@@36 i@@24 v@@35) n@@20) (|Seq#Update| (|Seq#Drop| s@@36 n@@20) (- i@@24 n@@20) v@@35)))))
  2251. :qid |funwiths.1329:18|
  2252. :skolemid |256|
  2253. :pattern ( (|Seq#Drop| (|Seq#Update| s@@36 i@@24 v@@35) n@@20))
  2254. )))
  2255. (assert (forall ((s@@37 T@U) (i@@25 Int) (v@@36 T@U) (n@@21 Int) ) (! (let ((T@@141 (type v@@36)))
  2256. (=> (= (type s@@37) (SeqType T@@141)) (=> (and (and (<= 0 i@@25) (< i@@25 n@@21)) (< n@@21 (|Seq#Length| s@@37))) (= (|Seq#Drop| (|Seq#Update| s@@37 i@@25 v@@36) n@@21) (|Seq#Drop| s@@37 n@@21)))))
  2257. :qid |funwiths.1334:18|
  2258. :skolemid |257|
  2259. :pattern ( (|Seq#Drop| (|Seq#Update| s@@37 i@@25 v@@36) n@@21))
  2260. )))
  2261. (assert (forall ((h@@19 T@U) (a@@72 T@U) (n0 Int) (n1 Int) ) (! (=> (and (= (type h@@19) (MapType0Type refType MapType1Type)) (= (type a@@72) refType)) (=> (and (and (= (+ n0 1) n1) (<= 0 n0)) (<= n1 (_System.array.Length a@@72))) (= (|Seq#Take| (|Seq#FromArray| h@@19 a@@72) n1) (|Seq#Build| (|Seq#Take| (|Seq#FromArray| h@@19 a@@72) n0) (MapType1Select (MapType0Select h@@19 a@@72) (IndexField n0))))))
  2262. :qid |funwiths.1339:15|
  2263. :skolemid |258|
  2264. :pattern ( (|Seq#Take| (|Seq#FromArray| h@@19 a@@72) n0) (|Seq#Take| (|Seq#FromArray| h@@19 a@@72) n1))
  2265. )))
  2266. (assert (forall ((s@@38 T@U) (v@@37 T@U) (n@@22 Int) ) (! (let ((T@@142 (type v@@37)))
  2267. (=> (= (type s@@38) (SeqType T@@142)) (=> (and (<= 0 n@@22) (<= n@@22 (|Seq#Length| s@@38))) (= (|Seq#Drop| (|Seq#Build| s@@38 v@@37) n@@22) (|Seq#Build| (|Seq#Drop| s@@38 n@@22) v@@37)))))
  2268. :qid |funwiths.1345:18|
  2269. :skolemid |259|
  2270. :pattern ( (|Seq#Drop| (|Seq#Build| s@@38 v@@37) n@@22))
  2271. )))
  2272. (assert (forall ((s@@39 T@U) (i@@26 Int) ) (! (=> (= (type s@@39) (SeqType BoxType)) (=> (and (<= 0 i@@26) (< i@@26 (|Seq#Length| s@@39))) (< (DtRank ($Unbox DatatypeTypeType (|Seq#Index| s@@39 i@@26))) (|Seq#Rank| s@@39))))
  2273. :qid |funwiths.1352:15|
  2274. :skolemid |260|
  2275. :pattern ( (DtRank ($Unbox DatatypeTypeType (|Seq#Index| s@@39 i@@26))))
  2276. )))
  2277. (assert (forall ((s@@40 T@U) (i@@27 Int) ) (! (let ((T@@143 (SeqTypeInv0 (type s@@40))))
  2278. (=> (= (type s@@40) (SeqType T@@143)) (=> (and (< 0 i@@27) (<= i@@27 (|Seq#Length| s@@40))) (< (|Seq#Rank| (|Seq#Drop| s@@40 i@@27)) (|Seq#Rank| s@@40)))))
  2279. :qid |funwiths.1357:18|
  2280. :skolemid |261|
  2281. :pattern ( (|Seq#Rank| (|Seq#Drop| s@@40 i@@27)))
  2282. )))
  2283. (assert (forall ((s@@41 T@U) (i@@28 Int) ) (! (let ((T@@144 (SeqTypeInv0 (type s@@41))))
  2284. (=> (= (type s@@41) (SeqType T@@144)) (=> (and (<= 0 i@@28) (< i@@28 (|Seq#Length| s@@41))) (< (|Seq#Rank| (|Seq#Take| s@@41 i@@28)) (|Seq#Rank| s@@41)))))
  2285. :qid |funwiths.1361:18|
  2286. :skolemid |262|
  2287. :pattern ( (|Seq#Rank| (|Seq#Take| s@@41 i@@28)))
  2288. )))
  2289. (assert (forall ((s@@42 T@U) (i@@29 Int) (j@@5 Int) ) (! (let ((T@@145 (SeqTypeInv0 (type s@@42))))
  2290. (=> (= (type s@@42) (SeqType T@@145)) (=> (and (and (<= 0 i@@29) (< i@@29 j@@5)) (<= j@@5 (|Seq#Length| s@@42))) (< (|Seq#Rank| (|Seq#Append| (|Seq#Take| s@@42 i@@29) (|Seq#Drop| s@@42 j@@5))) (|Seq#Rank| s@@42)))))
  2291. :qid |funwiths.1365:18|
  2292. :skolemid |263|
  2293. :pattern ( (|Seq#Rank| (|Seq#Append| (|Seq#Take| s@@42 i@@29) (|Seq#Drop| s@@42 j@@5))))
  2294. )))
  2295. (assert (forall ((s@@43 T@U) (n@@23 Int) ) (! (let ((T@@146 (SeqTypeInv0 (type s@@43))))
  2296. (=> (and (= (type s@@43) (SeqType T@@146)) (= n@@23 0)) (= (|Seq#Drop| s@@43 n@@23) s@@43)))
  2297. :qid |funwiths.1370:18|
  2298. :skolemid |264|
  2299. :pattern ( (|Seq#Drop| s@@43 n@@23))
  2300. )))
  2301. (assert (forall ((s@@44 T@U) (n@@24 Int) ) (! (let ((T@@147 (SeqTypeInv0 (type s@@44))))
  2302. (=> (and (= (type s@@44) (SeqType T@@147)) (= n@@24 0)) (= (|Seq#Take| s@@44 n@@24) (|Seq#Empty| T@@147))))
  2303. :qid |funwiths.1374:18|
  2304. :skolemid |265|
  2305. :pattern ( (|Seq#Take| s@@44 n@@24))
  2306. )))
  2307. (assert (forall ((s@@45 T@U) (m@@9 Int) (n@@25 Int) ) (! (let ((T@@148 (SeqTypeInv0 (type s@@45))))
  2308. (=> (= (type s@@45) (SeqType T@@148)) (=> (and (and (<= 0 m@@9) (<= 0 n@@25)) (<= (+ m@@9 n@@25) (|Seq#Length| s@@45))) (= (|Seq#Drop| (|Seq#Drop| s@@45 m@@9) n@@25) (|Seq#Drop| s@@45 (+ m@@9 n@@25))))))
  2309. :qid |funwiths.1378:18|
  2310. :skolemid |266|
  2311. :pattern ( (|Seq#Drop| (|Seq#Drop| s@@45 m@@9) n@@25))
  2312. )))
  2313. (assert (forall ((m@@10 T@U) ) (! (let ((V@@1 (MapTypeInv1 (type m@@10))))
  2314. (let ((U@@3 (MapTypeInv0 (type m@@10))))
  2315. (=> (= (type m@@10) (MapType U@@3 V@@1)) (<= 0 (|Map#Card| m@@10)))))
  2316. :qid |funwiths.1391:20|
  2317. :skolemid |267|
  2318. :pattern ( (|Map#Card| m@@10))
  2319. )))
  2320. (assert (forall ((m@@11 T@U) ) (! (let ((V@@2 (MapTypeInv1 (type m@@11))))
  2321. (let ((U@@4 (MapTypeInv0 (type m@@11))))
  2322. (=> (= (type m@@11) (MapType U@@4 V@@2)) (= (|Set#Card| (|Map#Domain| m@@11)) (|Map#Card| m@@11)))))
  2323. :qid |funwiths.1393:20|
  2324. :skolemid |268|
  2325. :pattern ( (|Set#Card| (|Map#Domain| m@@11)))
  2326. )))
  2327. (assert (forall ((arg0@@89 T@U) ) (! (let ((V@@3 (MapTypeInv1 (type arg0@@89))))
  2328. (= (type (|Map#Values| arg0@@89)) (MapType0Type V@@3 boolType)))
  2329. :qid |funType:Map#Values|
  2330. :pattern ( (|Map#Values| arg0@@89))
  2331. )))
  2332. (assert (forall ((m@@12 T@U) (v@@38 T@U) ) (! (let ((V@@4 (type v@@38)))
  2333. (let ((U@@5 (MapTypeInv0 (type m@@12))))
  2334. (=> (= (type m@@12) (MapType U@@5 V@@4)) (and (=> (U_2_bool (MapType0Select (|Map#Values| m@@12) v@@38)) (exists ((u@@5 T@U) ) (! (and (= (type u@@5) U@@5) (and (U_2_bool (MapType0Select (|Map#Domain| m@@12) u@@5)) (= v@@38 (MapType0Select (|Map#Elements| m@@12) u@@5))))
  2335. :qid |funwiths.1402:17|
  2336. :skolemid |269|
  2337. :pattern ( (MapType0Select (|Map#Domain| m@@12) u@@5))
  2338. :pattern ( (MapType0Select (|Map#Elements| m@@12) u@@5))
  2339. ))) (=> (exists ((u@@6 T@U) ) (! (and (= (type u@@6) U@@5) (and (U_2_bool (MapType0Select (|Map#Domain| m@@12) u@@6)) (= v@@38 (MapType0Select (|Map#Elements| m@@12) u@@6))))
  2340. :qid |funwiths.1402:17|
  2341. :skolemid |269|
  2342. :pattern ( (MapType0Select (|Map#Domain| m@@12) u@@6))
  2343. :pattern ( (MapType0Select (|Map#Elements| m@@12) u@@6))
  2344. )) (U_2_bool (MapType0Select (|Map#Values| m@@12) v@@38)))))))
  2345. :qid |funwiths.1399:20|
  2346. :skolemid |270|
  2347. :pattern ( (MapType0Select (|Map#Values| m@@12) v@@38))
  2348. )))
  2349. (assert (forall ((arg0@@90 T@U) ) (! (= (type (|Map#Items| arg0@@90)) (MapType0Type BoxType boolType))
  2350. :qid |funType:Map#Items|
  2351. :pattern ( (|Map#Items| arg0@@90))
  2352. )))
  2353. (assert (forall ((m@@13 T@U) ) (! (let ((V@@5 (MapTypeInv1 (type m@@13))))
  2354. (let ((U@@6 (MapTypeInv0 (type m@@13))))
  2355. (=> (= (type m@@13) (MapType U@@6 V@@5)) (= (|Set#Card| (|Map#Items| m@@13)) (|Map#Card| m@@13)))))
  2356. :qid |funwiths.1412:20|
  2357. :skolemid |271|
  2358. :pattern ( (|Set#Card| (|Map#Items| m@@13)))
  2359. )))
  2360. (assert (and (forall ((arg0@@91 T@U) ) (! (= (type (_System.Tuple2._0 arg0@@91)) BoxType)
  2361. :qid |funType:_System.Tuple2._0|
  2362. :pattern ( (_System.Tuple2._0 arg0@@91))
  2363. )) (forall ((arg0@@92 T@U) ) (! (= (type (_System.Tuple2._1 arg0@@92)) BoxType)
  2364. :qid |funType:_System.Tuple2._1|
  2365. :pattern ( (_System.Tuple2._1 arg0@@92))
  2366. ))))
  2367. (assert (forall ((m@@14 T@U) (item T@U) ) (! (=> (and (= (type m@@14) (MapType BoxType BoxType)) (= (type item) BoxType)) (and (=> (U_2_bool (MapType0Select (|Map#Items| m@@14) item)) (and (U_2_bool (MapType0Select (|Map#Domain| m@@14) (_System.Tuple2._0 ($Unbox DatatypeTypeType item)))) (= (MapType0Select (|Map#Elements| m@@14) (_System.Tuple2._0 ($Unbox DatatypeTypeType item))) (_System.Tuple2._1 ($Unbox DatatypeTypeType item))))) (=> (and (U_2_bool (MapType0Select (|Map#Domain| m@@14) (_System.Tuple2._0 ($Unbox DatatypeTypeType item)))) (= (MapType0Select (|Map#Elements| m@@14) (_System.Tuple2._0 ($Unbox DatatypeTypeType item))) (_System.Tuple2._1 ($Unbox DatatypeTypeType item)))) (U_2_bool (MapType0Select (|Map#Items| m@@14) item)))))
  2368. :qid |funwiths.1416:15|
  2369. :skolemid |272|
  2370. :pattern ( (MapType0Select (|Map#Items| m@@14) item))
  2371. )))
  2372. (assert (forall ((U@@7 T@T) (V@@6 T@T) ) (! (= (type (|Map#Empty| U@@7 V@@6)) (MapType U@@7 V@@6))
  2373. :qid |funType:Map#Empty|
  2374. :pattern ( (|Map#Empty| U@@7 V@@6))
  2375. )))
  2376. (assert (forall ((u@@7 T@U) (V@@7 T@T) ) (! (let ((U@@8 (type u@@7)))
  2377. (not (U_2_bool (MapType0Select (|Map#Domain| (|Map#Empty| U@@8 V@@7)) u@@7))))
  2378. :qid |funwiths.1425:20|
  2379. :skolemid |273|
  2380. :pattern ( (let ((U@@8 (type u@@7)))
  2381. (MapType0Select (|Map#Domain| (|Map#Empty| U@@8 V@@7)) u@@7)))
  2382. )))
  2383. (assert (forall ((m@@15 T@U) ) (! (let ((V@@8 (MapTypeInv1 (type m@@15))))
  2384. (let ((U@@9 (MapTypeInv0 (type m@@15))))
  2385. (=> (= (type m@@15) (MapType U@@9 V@@8)) (and (and (=> (= (|Map#Card| m@@15) 0) (= m@@15 (|Map#Empty| U@@9 V@@8))) (=> (= m@@15 (|Map#Empty| U@@9 V@@8)) (= (|Map#Card| m@@15) 0))) (=> (not (= (|Map#Card| m@@15) 0)) (exists ((x@@40 T@U) ) (! (and (= (type x@@40) U@@9) (U_2_bool (MapType0Select (|Map#Domain| m@@15) x@@40)))
  2386. :qid |funwiths.1432:39|
  2387. :skolemid |274|
  2388. :no-pattern (type x@@40)
  2389. :no-pattern (U_2_int x@@40)
  2390. :no-pattern (U_2_bool x@@40)
  2391. )))))))
  2392. :qid |funwiths.1429:20|
  2393. :skolemid |275|
  2394. :pattern ( (|Map#Card| m@@15))
  2395. )))
  2396. (assert (forall ((arg0@@93 T@U) (arg1@@40 T@U) (arg2@@2 T@U) ) (! (let ((V@@9 (MapType0TypeInv1 (type arg1@@40))))
  2397. (let ((U@@10 (MapType0TypeInv0 (type arg0@@93))))
  2398. (= (type (|Map#Glue| arg0@@93 arg1@@40 arg2@@2)) (MapType U@@10 V@@9))))
  2399. :qid |funType:Map#Glue|
  2400. :pattern ( (|Map#Glue| arg0@@93 arg1@@40 arg2@@2))
  2401. )))
  2402. (assert (forall ((a@@73 T@U) (b@@52 T@U) (t@@30 T@U) ) (! (let ((V@@10 (MapType0TypeInv1 (type b@@52))))
  2403. (let ((U@@11 (MapType0TypeInv0 (type a@@73))))
  2404. (=> (and (and (= (type a@@73) (MapType0Type U@@11 boolType)) (= (type b@@52) (MapType0Type U@@11 V@@10))) (= (type t@@30) TyType)) (= (|Map#Domain| (|Map#Glue| a@@73 b@@52 t@@30)) a@@73))))
  2405. :qid |funwiths.1436:20|
  2406. :skolemid |276|
  2407. :pattern ( (|Map#Domain| (|Map#Glue| a@@73 b@@52 t@@30)))
  2408. )))
  2409. (assert (forall ((a@@74 T@U) (b@@53 T@U) (t@@31 T@U) ) (! (let ((V@@11 (MapType0TypeInv1 (type b@@53))))
  2410. (let ((U@@12 (MapType0TypeInv0 (type a@@74))))
  2411. (=> (and (and (= (type a@@74) (MapType0Type U@@12 boolType)) (= (type b@@53) (MapType0Type U@@12 V@@11))) (= (type t@@31) TyType)) (= (|Map#Elements| (|Map#Glue| a@@74 b@@53 t@@31)) b@@53))))
  2412. :qid |funwiths.1440:20|
  2413. :skolemid |277|
  2414. :pattern ( (|Map#Elements| (|Map#Glue| a@@74 b@@53 t@@31)))
  2415. )))
  2416. (assert (forall ((a@@75 T@U) (b@@54 T@U) (t@@32 T@U) ) (! (let ((V@@12 (MapType0TypeInv1 (type b@@54))))
  2417. (let ((U@@13 (MapType0TypeInv0 (type a@@75))))
  2418. (=> (and (and (= (type a@@75) (MapType0Type U@@13 boolType)) (= (type b@@54) (MapType0Type U@@13 V@@12))) (= (type t@@32) TyType)) ($Is (|Map#Glue| a@@75 b@@54 t@@32) t@@32))))
  2419. :qid |funwiths.1444:20|
  2420. :skolemid |278|
  2421. :pattern ( ($Is (|Map#Glue| a@@75 b@@54 t@@32) t@@32))
  2422. )))
  2423. (assert (forall ((arg0@@94 T@U) (arg1@@41 T@U) (arg2@@3 T@U) ) (! (let ((V@@13 (type arg2@@3)))
  2424. (let ((U@@14 (type arg1@@41)))
  2425. (= (type (|Map#Build| arg0@@94 arg1@@41 arg2@@3)) (MapType U@@14 V@@13))))
  2426. :qid |funType:Map#Build|
  2427. :pattern ( (|Map#Build| arg0@@94 arg1@@41 arg2@@3))
  2428. )))
  2429. (assert (forall ((m@@16 T@U) (u@@8 T@U) (|u'| T@U) (v@@39 T@U) ) (! (let ((V@@14 (type v@@39)))
  2430. (let ((U@@15 (type u@@8)))
  2431. (=> (and (= (type m@@16) (MapType U@@15 V@@14)) (= (type |u'|) U@@15)) (and (=> (= |u'| u@@8) (and (U_2_bool (MapType0Select (|Map#Domain| (|Map#Build| m@@16 u@@8 v@@39)) |u'|)) (= (MapType0Select (|Map#Elements| (|Map#Build| m@@16 u@@8 v@@39)) |u'|) v@@39))) (=> (not (= |u'| u@@8)) (and (and (=> (U_2_bool (MapType0Select (|Map#Domain| (|Map#Build| m@@16 u@@8 v@@39)) |u'|)) (U_2_bool (MapType0Select (|Map#Domain| m@@16) |u'|))) (=> (U_2_bool (MapType0Select (|Map#Domain| m@@16) |u'|)) (U_2_bool (MapType0Select (|Map#Domain| (|Map#Build| m@@16 u@@8 v@@39)) |u'|)))) (= (MapType0Select (|Map#Elements| (|Map#Build| m@@16 u@@8 v@@39)) |u'|) (MapType0Select (|Map#Elements| m@@16) |u'|))))))))
  2432. :qid |funwiths.1450:20|
  2433. :skolemid |279|
  2434. :pattern ( (MapType0Select (|Map#Domain| (|Map#Build| m@@16 u@@8 v@@39)) |u'|))
  2435. :pattern ( (MapType0Select (|Map#Elements| (|Map#Build| m@@16 u@@8 v@@39)) |u'|))
  2436. )))
  2437. (assert (forall ((m@@17 T@U) (u@@9 T@U) (v@@40 T@U) ) (! (let ((V@@15 (type v@@40)))
  2438. (let ((U@@16 (type u@@9)))
  2439. (=> (and (= (type m@@17) (MapType U@@16 V@@15)) (U_2_bool (MapType0Select (|Map#Domain| m@@17) u@@9))) (= (|Map#Card| (|Map#Build| m@@17 u@@9 v@@40)) (|Map#Card| m@@17)))))
  2440. :qid |funwiths.1458:20|
  2441. :skolemid |280|
  2442. :pattern ( (|Map#Card| (|Map#Build| m@@17 u@@9 v@@40)))
  2443. )))
  2444. (assert (forall ((m@@18 T@U) (u@@10 T@U) (v@@41 T@U) ) (! (let ((V@@16 (type v@@41)))
  2445. (let ((U@@17 (type u@@10)))
  2446. (=> (and (= (type m@@18) (MapType U@@17 V@@16)) (not (U_2_bool (MapType0Select (|Map#Domain| m@@18) u@@10)))) (= (|Map#Card| (|Map#Build| m@@18 u@@10 v@@41)) (+ (|Map#Card| m@@18) 1)))))
  2447. :qid |funwiths.1462:20|
  2448. :skolemid |281|
  2449. :pattern ( (|Map#Card| (|Map#Build| m@@18 u@@10 v@@41)))
  2450. )))
  2451. (assert (forall ((m@@19 T@U) (|m'| T@U) ) (! (let ((V@@17 (MapTypeInv1 (type m@@19))))
  2452. (let ((U@@18 (MapTypeInv0 (type m@@19))))
  2453. (=> (and (= (type m@@19) (MapType U@@18 V@@17)) (= (type |m'|) (MapType U@@18 V@@17))) (and (=> (|Map#Equal| m@@19 |m'|) (and (forall ((u@@11 T@U) ) (! (=> (= (type u@@11) U@@18) (and (=> (U_2_bool (MapType0Select (|Map#Domain| m@@19) u@@11)) (U_2_bool (MapType0Select (|Map#Domain| |m'|) u@@11))) (=> (U_2_bool (MapType0Select (|Map#Domain| |m'|) u@@11)) (U_2_bool (MapType0Select (|Map#Domain| m@@19) u@@11)))))
  2454. :qid |funwiths.1471:19|
  2455. :skolemid |282|
  2456. :no-pattern (type u@@11)
  2457. :no-pattern (U_2_int u@@11)
  2458. :no-pattern (U_2_bool u@@11)
  2459. )) (forall ((u@@12 T@U) ) (! (=> (and (= (type u@@12) U@@18) (U_2_bool (MapType0Select (|Map#Domain| m@@19) u@@12))) (= (MapType0Select (|Map#Elements| m@@19) u@@12) (MapType0Select (|Map#Elements| |m'|) u@@12)))
  2460. :qid |funwiths.1472:19|
  2461. :skolemid |283|
  2462. :no-pattern (type u@@12)
  2463. :no-pattern (U_2_int u@@12)
  2464. :no-pattern (U_2_bool u@@12)
  2465. )))) (=> (and (forall ((u@@13 T@U) ) (! (=> (= (type u@@13) U@@18) (and (=> (U_2_bool (MapType0Select (|Map#Domain| m@@19) u@@13)) (U_2_bool (MapType0Select (|Map#Domain| |m'|) u@@13))) (=> (U_2_bool (MapType0Select (|Map#Domain| |m'|) u@@13)) (U_2_bool (MapType0Select (|Map#Domain| m@@19) u@@13)))))
  2466. :qid |funwiths.1471:19|
  2467. :skolemid |282|
  2468. :no-pattern (type u@@13)
  2469. :no-pattern (U_2_int u@@13)
  2470. :no-pattern (U_2_bool u@@13)
  2471. )) (forall ((u@@14 T@U) ) (! (=> (and (= (type u@@14) U@@18) (U_2_bool (MapType0Select (|Map#Domain| m@@19) u@@14))) (= (MapType0Select (|Map#Elements| m@@19) u@@14) (MapType0Select (|Map#Elements| |m'|) u@@14)))
  2472. :qid |funwiths.1472:19|
  2473. :skolemid |283|
  2474. :no-pattern (type u@@14)
  2475. :no-pattern (U_2_int u@@14)
  2476. :no-pattern (U_2_bool u@@14)
  2477. ))) (|Map#Equal| m@@19 |m'|))))))
  2478. :qid |funwiths.1468:20|
  2479. :skolemid |284|
  2480. :pattern ( (|Map#Equal| m@@19 |m'|))
  2481. )))
  2482. (assert (forall ((m@@20 T@U) (|m'@@0| T@U) ) (! (let ((V@@18 (MapTypeInv1 (type m@@20))))
  2483. (let ((U@@19 (MapTypeInv0 (type m@@20))))
  2484. (=> (and (and (= (type m@@20) (MapType U@@19 V@@18)) (= (type |m'@@0|) (MapType U@@19 V@@18))) (|Map#Equal| m@@20 |m'@@0|)) (= m@@20 |m'@@0|))))
  2485. :qid |funwiths.1474:20|
  2486. :skolemid |285|
  2487. :pattern ( (|Map#Equal| m@@20 |m'@@0|))
  2488. )))
  2489. (assert (forall ((m@@21 T@U) (|m'@@1| T@U) ) (! (let ((V@@19 (MapTypeInv1 (type m@@21))))
  2490. (let ((U@@20 (MapTypeInv0 (type m@@21))))
  2491. (=> (and (= (type m@@21) (MapType U@@20 V@@19)) (= (type |m'@@1|) (MapType U@@20 V@@19))) (and (=> (|Map#Disjoint| m@@21 |m'@@1|) (forall ((o@@53 T@U) ) (! (=> (= (type o@@53) U@@20) (or (not (U_2_bool (MapType0Select (|Map#Domain| m@@21) o@@53))) (not (U_2_bool (MapType0Select (|Map#Domain| |m'@@1|) o@@53)))))
  2492. :qid |funwiths.1483:19|
  2493. :skolemid |286|
  2494. :pattern ( (MapType0Select (|Map#Domain| m@@21) o@@53))
  2495. :pattern ( (MapType0Select (|Map#Domain| |m'@@1|) o@@53))
  2496. ))) (=> (forall ((o@@54 T@U) ) (! (=> (= (type o@@54) U@@20) (or (not (U_2_bool (MapType0Select (|Map#Domain| m@@21) o@@54))) (not (U_2_bool (MapType0Select (|Map#Domain| |m'@@1|) o@@54)))))
  2497. :qid |funwiths.1483:19|
  2498. :skolemid |286|
  2499. :pattern ( (MapType0Select (|Map#Domain| m@@21) o@@54))
  2500. :pattern ( (MapType0Select (|Map#Domain| |m'@@1|) o@@54))
  2501. )) (|Map#Disjoint| m@@21 |m'@@1|))))))
  2502. :qid |funwiths.1480:20|
  2503. :skolemid |287|
  2504. :pattern ( (|Map#Disjoint| m@@21 |m'@@1|))
  2505. )))
  2506. (assert (forall ((arg0@@95 T@U) ) (! (let ((V@@20 (IMapTypeInv1 (type arg0@@95))))
  2507. (= (type (|IMap#Values| arg0@@95)) (MapType0Type V@@20 boolType)))
  2508. :qid |funType:IMap#Values|
  2509. :pattern ( (|IMap#Values| arg0@@95))
  2510. )))
  2511. (assert (forall ((m@@22 T@U) (v@@42 T@U) ) (! (let ((V@@21 (type v@@42)))
  2512. (let ((U@@21 (IMapTypeInv0 (type m@@22))))
  2513. (=> (= (type m@@22) (IMapType U@@21 V@@21)) (and (=> (U_2_bool (MapType0Select (|IMap#Values| m@@22) v@@42)) (exists ((u@@15 T@U) ) (! (and (= (type u@@15) U@@21) (and (U_2_bool (MapType0Select (|IMap#Domain| m@@22) u@@15)) (= v@@42 (MapType0Select (|IMap#Elements| m@@22) u@@15))))
  2514. :qid |funwiths.1498:17|
  2515. :skolemid |288|
  2516. :pattern ( (MapType0Select (|IMap#Domain| m@@22) u@@15))
  2517. :pattern ( (MapType0Select (|IMap#Elements| m@@22) u@@15))
  2518. ))) (=> (exists ((u@@16 T@U) ) (! (and (= (type u@@16) U@@21) (and (U_2_bool (MapType0Select (|IMap#Domain| m@@22) u@@16)) (= v@@42 (MapType0Select (|IMap#Elements| m@@22) u@@16))))
  2519. :qid |funwiths.1498:17|
  2520. :skolemid |288|
  2521. :pattern ( (MapType0Select (|IMap#Domain| m@@22) u@@16))
  2522. :pattern ( (MapType0Select (|IMap#Elements| m@@22) u@@16))
  2523. )) (U_2_bool (MapType0Select (|IMap#Values| m@@22) v@@42)))))))
  2524. :qid |funwiths.1495:20|
  2525. :skolemid |289|
  2526. :pattern ( (MapType0Select (|IMap#Values| m@@22) v@@42))
  2527. )))
  2528. (assert (forall ((arg0@@96 T@U) ) (! (= (type (|IMap#Items| arg0@@96)) (MapType0Type BoxType boolType))
  2529. :qid |funType:IMap#Items|
  2530. :pattern ( (|IMap#Items| arg0@@96))
  2531. )))
  2532. (assert (forall ((m@@23 T@U) (item@@0 T@U) ) (! (=> (and (= (type m@@23) (IMapType BoxType BoxType)) (= (type item@@0) BoxType)) (and (=> (U_2_bool (MapType0Select (|IMap#Items| m@@23) item@@0)) (and (U_2_bool (MapType0Select (|IMap#Domain| m@@23) (_System.Tuple2._0 ($Unbox DatatypeTypeType item@@0)))) (= (MapType0Select (|IMap#Elements| m@@23) (_System.Tuple2._0 ($Unbox DatatypeTypeType item@@0))) (_System.Tuple2._1 ($Unbox DatatypeTypeType item@@0))))) (=> (and (U_2_bool (MapType0Select (|IMap#Domain| m@@23) (_System.Tuple2._0 ($Unbox DatatypeTypeType item@@0)))) (= (MapType0Select (|IMap#Elements| m@@23) (_System.Tuple2._0 ($Unbox DatatypeTypeType item@@0))) (_System.Tuple2._1 ($Unbox DatatypeTypeType item@@0)))) (U_2_bool (MapType0Select (|IMap#Items| m@@23) item@@0)))))
  2533. :qid |funwiths.1504:15|
  2534. :skolemid |290|
  2535. :pattern ( (MapType0Select (|IMap#Items| m@@23) item@@0))
  2536. )))
  2537. (assert (forall ((U@@22 T@T) (V@@22 T@T) ) (! (= (type (|IMap#Empty| U@@22 V@@22)) (IMapType U@@22 V@@22))
  2538. :qid |funType:IMap#Empty|
  2539. :pattern ( (|IMap#Empty| U@@22 V@@22))
  2540. )))
  2541. (assert (forall ((u@@17 T@U) (V@@23 T@T) ) (! (let ((U@@23 (type u@@17)))
  2542. (not (U_2_bool (MapType0Select (|IMap#Domain| (|IMap#Empty| U@@23 V@@23)) u@@17))))
  2543. :qid |funwiths.1513:20|
  2544. :skolemid |291|
  2545. :pattern ( (let ((U@@23 (type u@@17)))
  2546. (MapType0Select (|IMap#Domain| (|IMap#Empty| U@@23 V@@23)) u@@17)))
  2547. )))
  2548. (assert (forall ((arg0@@97 T@U) (arg1@@42 T@U) (arg2@@4 T@U) ) (! (let ((V@@24 (MapType0TypeInv1 (type arg1@@42))))
  2549. (let ((U@@24 (MapType0TypeInv0 (type arg0@@97))))
  2550. (= (type (|IMap#Glue| arg0@@97 arg1@@42 arg2@@4)) (IMapType U@@24 V@@24))))
  2551. :qid |funType:IMap#Glue|
  2552. :pattern ( (|IMap#Glue| arg0@@97 arg1@@42 arg2@@4))
  2553. )))
  2554. (assert (forall ((a@@76 T@U) (b@@55 T@U) (t@@33 T@U) ) (! (let ((V@@25 (MapType0TypeInv1 (type b@@55))))
  2555. (let ((U@@25 (MapType0TypeInv0 (type a@@76))))
  2556. (=> (and (and (= (type a@@76) (MapType0Type U@@25 boolType)) (= (type b@@55) (MapType0Type U@@25 V@@25))) (= (type t@@33) TyType)) (= (|IMap#Domain| (|IMap#Glue| a@@76 b@@55 t@@33)) a@@76))))
  2557. :qid |funwiths.1519:20|
  2558. :skolemid |292|
  2559. :pattern ( (|IMap#Domain| (|IMap#Glue| a@@76 b@@55 t@@33)))
  2560. )))
  2561. (assert (forall ((a@@77 T@U) (b@@56 T@U) (t@@34 T@U) ) (! (let ((V@@26 (MapType0TypeInv1 (type b@@56))))
  2562. (let ((U@@26 (MapType0TypeInv0 (type a@@77))))
  2563. (=> (and (and (= (type a@@77) (MapType0Type U@@26 boolType)) (= (type b@@56) (MapType0Type U@@26 V@@26))) (= (type t@@34) TyType)) (= (|IMap#Elements| (|IMap#Glue| a@@77 b@@56 t@@34)) b@@56))))
  2564. :qid |funwiths.1523:20|
  2565. :skolemid |293|
  2566. :pattern ( (|IMap#Elements| (|IMap#Glue| a@@77 b@@56 t@@34)))
  2567. )))
  2568. (assert (forall ((a@@78 T@U) (b@@57 T@U) (t@@35 T@U) ) (! (let ((V@@27 (MapType0TypeInv1 (type b@@57))))
  2569. (let ((U@@27 (MapType0TypeInv0 (type a@@78))))
  2570. (=> (and (and (= (type a@@78) (MapType0Type U@@27 boolType)) (= (type b@@57) (MapType0Type U@@27 V@@27))) (= (type t@@35) TyType)) ($Is (|IMap#Glue| a@@78 b@@57 t@@35) t@@35))))
  2571. :qid |funwiths.1527:20|
  2572. :skolemid |294|
  2573. :pattern ( ($Is (|IMap#Glue| a@@78 b@@57 t@@35) t@@35))
  2574. )))
  2575. (assert (forall ((arg0@@98 T@U) (arg1@@43 T@U) (arg2@@5 T@U) ) (! (let ((V@@28 (type arg2@@5)))
  2576. (let ((U@@28 (type arg1@@43)))
  2577. (= (type (|IMap#Build| arg0@@98 arg1@@43 arg2@@5)) (IMapType U@@28 V@@28))))
  2578. :qid |funType:IMap#Build|
  2579. :pattern ( (|IMap#Build| arg0@@98 arg1@@43 arg2@@5))
  2580. )))
  2581. (assert (forall ((m@@24 T@U) (u@@18 T@U) (|u'@@0| T@U) (v@@43 T@U) ) (! (let ((V@@29 (type v@@43)))
  2582. (let ((U@@29 (type u@@18)))
  2583. (=> (and (= (type m@@24) (IMapType U@@29 V@@29)) (= (type |u'@@0|) U@@29)) (and (=> (= |u'@@0| u@@18) (and (U_2_bool (MapType0Select (|IMap#Domain| (|IMap#Build| m@@24 u@@18 v@@43)) |u'@@0|)) (= (MapType0Select (|IMap#Elements| (|IMap#Build| m@@24 u@@18 v@@43)) |u'@@0|) v@@43))) (=> (not (= |u'@@0| u@@18)) (and (and (=> (U_2_bool (MapType0Select (|IMap#Domain| (|IMap#Build| m@@24 u@@18 v@@43)) |u'@@0|)) (U_2_bool (MapType0Select (|IMap#Domain| m@@24) |u'@@0|))) (=> (U_2_bool (MapType0Select (|IMap#Domain| m@@24) |u'@@0|)) (U_2_bool (MapType0Select (|IMap#Domain| (|IMap#Build| m@@24 u@@18 v@@43)) |u'@@0|)))) (= (MapType0Select (|IMap#Elements| (|IMap#Build| m@@24 u@@18 v@@43)) |u'@@0|) (MapType0Select (|IMap#Elements| m@@24) |u'@@0|))))))))
  2584. :qid |funwiths.1533:20|
  2585. :skolemid |295|
  2586. :pattern ( (MapType0Select (|IMap#Domain| (|IMap#Build| m@@24 u@@18 v@@43)) |u'@@0|))
  2587. :pattern ( (MapType0Select (|IMap#Elements| (|IMap#Build| m@@24 u@@18 v@@43)) |u'@@0|))
  2588. )))
  2589. (assert (forall ((m@@25 T@U) (|m'@@2| T@U) ) (! (let ((V@@30 (IMapTypeInv1 (type m@@25))))
  2590. (let ((U@@30 (IMapTypeInv0 (type m@@25))))
  2591. (=> (and (= (type m@@25) (IMapType U@@30 V@@30)) (= (type |m'@@2|) (IMapType U@@30 V@@30))) (and (=> (|IMap#Equal| m@@25 |m'@@2|) (and (forall ((u@@19 T@U) ) (! (=> (= (type u@@19) U@@30) (and (=> (U_2_bool (MapType0Select (|IMap#Domain| m@@25) u@@19)) (U_2_bool (MapType0Select (|IMap#Domain| |m'@@2|) u@@19))) (=> (U_2_bool (MapType0Select (|IMap#Domain| |m'@@2|) u@@19)) (U_2_bool (MapType0Select (|IMap#Domain| m@@25) u@@19)))))
  2592. :qid |funwiths.1548:19|
  2593. :skolemid |296|
  2594. :no-pattern (type u@@19)
  2595. :no-pattern (U_2_int u@@19)
  2596. :no-pattern (U_2_bool u@@19)
  2597. )) (forall ((u@@20 T@U) ) (! (=> (and (= (type u@@20) U@@30) (U_2_bool (MapType0Select (|IMap#Domain| m@@25) u@@20))) (= (MapType0Select (|IMap#Elements| m@@25) u@@20) (MapType0Select (|IMap#Elements| |m'@@2|) u@@20)))
  2598. :qid |funwiths.1549:19|
  2599. :skolemid |297|
  2600. :no-pattern (type u@@20)
  2601. :no-pattern (U_2_int u@@20)
  2602. :no-pattern (U_2_bool u@@20)
  2603. )))) (=> (and (forall ((u@@21 T@U) ) (! (=> (= (type u@@21) U@@30) (and (=> (U_2_bool (MapType0Select (|IMap#Domain| m@@25) u@@21)) (U_2_bool (MapType0Select (|IMap#Domain| |m'@@2|) u@@21))) (=> (U_2_bool (MapType0Select (|IMap#Domain| |m'@@2|) u@@21)) (U_2_bool (MapType0Select (|IMap#Domain| m@@25) u@@21)))))
  2604. :qid |funwiths.1548:19|
  2605. :skolemid |296|
  2606. :no-pattern (type u@@21)
  2607. :no-pattern (U_2_int u@@21)
  2608. :no-pattern (U_2_bool u@@21)
  2609. )) (forall ((u@@22 T@U) ) (! (=> (and (= (type u@@22) U@@30) (U_2_bool (MapType0Select (|IMap#Domain| m@@25) u@@22))) (= (MapType0Select (|IMap#Elements| m@@25) u@@22) (MapType0Select (|IMap#Elements| |m'@@2|) u@@22)))
  2610. :qid |funwiths.1549:19|
  2611. :skolemid |297|
  2612. :no-pattern (type u@@22)
  2613. :no-pattern (U_2_int u@@22)
  2614. :no-pattern (U_2_bool u@@22)
  2615. ))) (|IMap#Equal| m@@25 |m'@@2|))))))
  2616. :qid |funwiths.1545:20|
  2617. :skolemid |298|
  2618. :pattern ( (|IMap#Equal| m@@25 |m'@@2|))
  2619. )))
  2620. (assert (forall ((m@@26 T@U) (|m'@@3| T@U) ) (! (let ((V@@31 (IMapTypeInv1 (type m@@26))))
  2621. (let ((U@@31 (IMapTypeInv0 (type m@@26))))
  2622. (=> (and (and (= (type m@@26) (IMapType U@@31 V@@31)) (= (type |m'@@3|) (IMapType U@@31 V@@31))) (|IMap#Equal| m@@26 |m'@@3|)) (= m@@26 |m'@@3|))))
  2623. :qid |funwiths.1552:20|
  2624. :skolemid |299|
  2625. :pattern ( (|IMap#Equal| m@@26 |m'@@3|))
  2626. )))
  2627. (assert (forall ((x@@41 Int) (y@@12 Int) ) (! (= (INTERNAL_add_boogie x@@41 y@@12) (+ x@@41 y@@12))
  2628. :qid |funwiths.1558:15|
  2629. :skolemid |300|
  2630. :pattern ( (INTERNAL_add_boogie x@@41 y@@12))
  2631. )))
  2632. (assert (forall ((x@@42 Int) (y@@13 Int) ) (! (= (INTERNAL_sub_boogie x@@42 y@@13) (- x@@42 y@@13))
  2633. :qid |funwiths.1564:15|
  2634. :skolemid |301|
  2635. :pattern ( (INTERNAL_sub_boogie x@@42 y@@13))
  2636. )))
  2637. (assert (forall ((x@@43 Int) (y@@14 Int) ) (! (= (INTERNAL_mul_boogie x@@43 y@@14) (* x@@43 y@@14))
  2638. :qid |funwiths.1570:15|
  2639. :skolemid |302|
  2640. :pattern ( (INTERNAL_mul_boogie x@@43 y@@14))
  2641. )))
  2642. (assert (forall ((x@@44 Int) (y@@15 Int) ) (! (= (INTERNAL_div_boogie x@@44 y@@15) (div x@@44 y@@15))
  2643. :qid |funwiths.1576:15|
  2644. :skolemid |303|
  2645. :pattern ( (INTERNAL_div_boogie x@@44 y@@15))
  2646. )))
  2647. (assert (forall ((x@@45 Int) (y@@16 Int) ) (! (= (INTERNAL_mod_boogie x@@45 y@@16) (mod x@@45 y@@16))
  2648. :qid |funwiths.1582:15|
  2649. :skolemid |304|
  2650. :pattern ( (INTERNAL_mod_boogie x@@45 y@@16))
  2651. )))
  2652. (assert (forall ((x@@46 Int) (y@@17 Int) ) (! (and (=> (INTERNAL_lt_boogie x@@46 y@@17) (< x@@46 y@@17)) (=> (< x@@46 y@@17) (INTERNAL_lt_boogie x@@46 y@@17)))
  2653. :qid |funwiths.1588:15|
  2654. :skolemid |305|
  2655. :pattern ( (INTERNAL_lt_boogie x@@46 y@@17))
  2656. )))
  2657. (assert (forall ((x@@47 Int) (y@@18 Int) ) (! (and (=> (INTERNAL_le_boogie x@@47 y@@18) (<= x@@47 y@@18)) (=> (<= x@@47 y@@18) (INTERNAL_le_boogie x@@47 y@@18)))
  2658. :qid |funwiths.1594:15|
  2659. :skolemid |306|
  2660. :pattern ( (INTERNAL_le_boogie x@@47 y@@18))
  2661. )))
  2662. (assert (forall ((x@@48 Int) (y@@19 Int) ) (! (and (=> (INTERNAL_gt_boogie x@@48 y@@19) (> x@@48 y@@19)) (=> (> x@@48 y@@19) (INTERNAL_gt_boogie x@@48 y@@19)))
  2663. :qid |funwiths.1600:15|
  2664. :skolemid |307|
  2665. :pattern ( (INTERNAL_gt_boogie x@@48 y@@19))
  2666. )))
  2667. (assert (forall ((x@@49 Int) (y@@20 Int) ) (! (and (=> (INTERNAL_ge_boogie x@@49 y@@20) (>= x@@49 y@@20)) (=> (>= x@@49 y@@20) (INTERNAL_ge_boogie x@@49 y@@20)))
  2668. :qid |funwiths.1606:15|
  2669. :skolemid |308|
  2670. :pattern ( (INTERNAL_ge_boogie x@@49 y@@20))
  2671. )))
  2672. (assert (forall ((x@@50 Int) (y@@21 Int) ) (! (= (Mul x@@50 y@@21) (* x@@50 y@@21))
  2673. :qid |funwiths.1612:15|
  2674. :skolemid |309|
  2675. :pattern ( (Mul x@@50 y@@21))
  2676. )))
  2677. (assert (forall ((x@@51 Int) (y@@22 Int) ) (! (= (Div x@@51 y@@22) (div x@@51 y@@22))
  2678. :qid |funwiths.1616:15|
  2679. :skolemid |310|
  2680. :pattern ( (Div x@@51 y@@22))
  2681. )))
  2682. (assert (forall ((x@@52 Int) (y@@23 Int) ) (! (= (Mod x@@52 y@@23) (mod x@@52 y@@23))
  2683. :qid |funwiths.1620:15|
  2684. :skolemid |311|
  2685. :pattern ( (Mod x@@52 y@@23))
  2686. )))
  2687. (assert (forall ((x@@53 Int) (y@@24 Int) ) (! (= (Add x@@53 y@@24) (+ x@@53 y@@24))
  2688. :qid |funwiths.1624:15|
  2689. :skolemid |312|
  2690. :pattern ( (Add x@@53 y@@24))
  2691. )))
  2692. (assert (forall ((x@@54 Int) (y@@25 Int) ) (! (= (Sub x@@54 y@@25) (- x@@54 y@@25))
  2693. :qid |funwiths.1628:15|
  2694. :skolemid |313|
  2695. :pattern ( (Sub x@@54 y@@25))
  2696. )))
  2697. (assert (= (type Tclass._System.nat) TyType))
  2698. (assert (= (Tag Tclass._System.nat) Tagclass._System.nat))
  2699. (assert (forall ((bx@@34 T@U) ) (! (=> (and (= (type bx@@34) BoxType) ($IsBox bx@@34 Tclass._System.nat)) (and (= ($Box ($Unbox intType bx@@34)) bx@@34) ($Is ($Unbox intType bx@@34) Tclass._System.nat)))
  2700. :qid |funwiths.1638:15|
  2701. :skolemid |314|
  2702. :pattern ( ($IsBox bx@@34 Tclass._System.nat))
  2703. )))
  2704. (assert (forall ((|x#0| T@U) ) (! (=> (= (type |x#0|) intType) (and (=> ($Is |x#0| Tclass._System.nat) (<= (LitInt 0) (U_2_int |x#0|))) (=> (<= (LitInt 0) (U_2_int |x#0|)) ($Is |x#0| Tclass._System.nat))))
  2705. :qid |funwiths.1644:15|
  2706. :skolemid |315|
  2707. :pattern ( ($Is |x#0| Tclass._System.nat))
  2708. )))
  2709. (assert (forall ((|x#0@@0| T@U) ($h T@U) ) (! (=> (and (= (type |x#0@@0|) intType) (= (type $h) (MapType0Type refType MapType1Type))) ($IsAlloc |x#0@@0| Tclass._System.nat $h))
  2710. :qid |funwiths.1649:15|
  2711. :skolemid |316|
  2712. :pattern ( ($IsAlloc |x#0@@0| Tclass._System.nat $h))
  2713. )))
  2714. (assert (= (Tag Tclass._System.object?) Tagclass._System.object?))
  2715. (assert (forall ((bx@@35 T@U) ) (! (=> (and (= (type bx@@35) BoxType) ($IsBox bx@@35 Tclass._System.object?)) (and (= ($Box ($Unbox refType bx@@35)) bx@@35) ($Is ($Unbox refType bx@@35) Tclass._System.object?)))
  2716. :qid |funwiths.1661:15|
  2717. :skolemid |317|
  2718. :pattern ( ($IsBox bx@@35 Tclass._System.object?))
  2719. )))
  2720. (assert (forall (($o T@U) ) (! (=> (= (type $o) refType) ($Is $o Tclass._System.object?))
  2721. :qid |funwiths.1667:15|
  2722. :skolemid |318|
  2723. :pattern ( ($Is $o Tclass._System.object?))
  2724. )))
  2725. (assert (= (type null) refType))
  2726. (assert (forall (($o@@0 T@U) ($h@@0 T@U) ) (! (=> (and (= (type $o@@0) refType) (= (type $h@@0) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc $o@@0 Tclass._System.object? $h@@0) (or (= $o@@0 null) (U_2_bool (MapType1Select (MapType0Select $h@@0 $o@@0) alloc)))) (=> (or (= $o@@0 null) (U_2_bool (MapType1Select (MapType0Select $h@@0 $o@@0) alloc))) ($IsAlloc $o@@0 Tclass._System.object? $h@@0))))
  2727. :qid |funwiths.1672:15|
  2728. :skolemid |319|
  2729. :pattern ( ($IsAlloc $o@@0 Tclass._System.object? $h@@0))
  2730. )))
  2731. (assert (= (type Tclass._System.object) TyType))
  2732. (assert (= (Tag Tclass._System.object) Tagclass._System.object))
  2733. (assert (forall ((bx@@36 T@U) ) (! (=> (and (= (type bx@@36) BoxType) ($IsBox bx@@36 Tclass._System.object)) (and (= ($Box ($Unbox refType bx@@36)) bx@@36) ($Is ($Unbox refType bx@@36) Tclass._System.object)))
  2734. :qid |funwiths.1687:15|
  2735. :skolemid |320|
  2736. :pattern ( ($IsBox bx@@36 Tclass._System.object))
  2737. )))
  2738. (assert (forall ((|c#0| T@U) ) (! (=> (= (type |c#0|) refType) (and (=> ($Is |c#0| Tclass._System.object) (and ($Is |c#0| Tclass._System.object?) (not (= |c#0| null)))) (=> (and ($Is |c#0| Tclass._System.object?) (not (= |c#0| null))) ($Is |c#0| Tclass._System.object))))
  2739. :qid |funwiths.1693:15|
  2740. :skolemid |321|
  2741. :pattern ( ($Is |c#0| Tclass._System.object))
  2742. )))
  2743. (assert (forall ((|c#0@@0| T@U) ($h@@1 T@U) ) (! (=> (and (= (type |c#0@@0|) refType) (= (type $h@@1) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc |c#0@@0| Tclass._System.object $h@@1) ($IsAlloc |c#0@@0| Tclass._System.object? $h@@1)) (=> ($IsAlloc |c#0@@0| Tclass._System.object? $h@@1) ($IsAlloc |c#0@@0| Tclass._System.object $h@@1))))
  2744. :qid |funwiths.1699:15|
  2745. :skolemid |322|
  2746. :pattern ( ($IsAlloc |c#0@@0| Tclass._System.object $h@@1))
  2747. )))
  2748. (assert (forall ((arg0@@99 T@U) ) (! (= (type (Tclass._System.array? arg0@@99)) TyType)
  2749. :qid |funType:Tclass._System.array?|
  2750. :pattern ( (Tclass._System.array? arg0@@99))
  2751. )))
  2752. (assert (forall ((|#$arg| T@U) ) (! (=> (= (type |#$arg|) TyType) (= (Tag (Tclass._System.array? |#$arg|)) Tagclass._System.array?))
  2753. :qid |funwiths.1709:15|
  2754. :skolemid |323|
  2755. :pattern ( (Tclass._System.array? |#$arg|))
  2756. )))
  2757. (assert (forall ((arg0@@100 T@U) ) (! (= (type (Tclass._System.array?_0 arg0@@100)) TyType)
  2758. :qid |funType:Tclass._System.array?_0|
  2759. :pattern ( (Tclass._System.array?_0 arg0@@100))
  2760. )))
  2761. (assert (forall ((|#$arg@@0| T@U) ) (! (=> (= (type |#$arg@@0|) TyType) (= (Tclass._System.array?_0 (Tclass._System.array? |#$arg@@0|)) |#$arg@@0|))
  2762. :qid |funwiths.1716:15|
  2763. :skolemid |324|
  2764. :pattern ( (Tclass._System.array? |#$arg@@0|))
  2765. )))
  2766. (assert (forall ((|#$arg@@1| T@U) (bx@@37 T@U) ) (! (=> (and (and (= (type |#$arg@@1|) TyType) (= (type bx@@37) BoxType)) ($IsBox bx@@37 (Tclass._System.array? |#$arg@@1|))) (and (= ($Box ($Unbox refType bx@@37)) bx@@37) ($Is ($Unbox refType bx@@37) (Tclass._System.array? |#$arg@@1|))))
  2767. :qid |funwiths.1723:15|
  2768. :skolemid |325|
  2769. :pattern ( ($IsBox bx@@37 (Tclass._System.array? |#$arg@@1|)))
  2770. )))
  2771. (assert (forall ((arg0@@101 T@U) ) (! (= (type (dtype arg0@@101)) TyType)
  2772. :qid |funType:dtype|
  2773. :pattern ( (dtype arg0@@101))
  2774. )))
  2775. (assert (forall ((|#$arg@@2| T@U) ($h@@2 T@U) ($o@@1 T@U) ($i0 Int) ) (! (=> (and (and (= (type |#$arg@@2|) TyType) (= (type $h@@2) (MapType0Type refType MapType1Type))) (= (type $o@@1) refType)) (=> (and (and (and (and ($IsGoodHeap $h@@2) (not (= $o@@1 null))) (= (dtype $o@@1) (Tclass._System.array? |#$arg@@2|))) (<= 0 $i0)) (< $i0 (_System.array.Length $o@@1))) ($IsBox (MapType1Select (MapType0Select $h@@2 $o@@1) (IndexField $i0)) |#$arg@@2|)))
  2776. :qid |funwiths.1730:15|
  2777. :skolemid |326|
  2778. :pattern ( (MapType1Select (MapType0Select $h@@2 $o@@1) (IndexField $i0)) (Tclass._System.array? |#$arg@@2|))
  2779. )))
  2780. (assert (forall ((|#$arg@@3| T@U) ($h@@3 T@U) ($o@@2 T@U) ($i0@@0 Int) ) (! (=> (and (and (= (type |#$arg@@3|) TyType) (= (type $h@@3) (MapType0Type refType MapType1Type))) (= (type $o@@2) refType)) (=> (and (and (and (and (and ($IsGoodHeap $h@@3) (not (= $o@@2 null))) (= (dtype $o@@2) (Tclass._System.array? |#$arg@@3|))) (<= 0 $i0@@0)) (< $i0@@0 (_System.array.Length $o@@2))) (U_2_bool (MapType1Select (MapType0Select $h@@3 $o@@2) alloc))) ($IsAllocBox (MapType1Select (MapType0Select $h@@3 $o@@2) (IndexField $i0@@0)) |#$arg@@3| $h@@3)))
  2781. :qid |funwiths.1742:15|
  2782. :skolemid |327|
  2783. :pattern ( (MapType1Select (MapType0Select $h@@3 $o@@2) (IndexField $i0@@0)) (Tclass._System.array? |#$arg@@3|))
  2784. )))
  2785. (assert (forall ((|#$arg@@4| T@U) ($o@@3 T@U) ) (! (=> (and (= (type |#$arg@@4|) TyType) (= (type $o@@3) refType)) (and (=> ($Is $o@@3 (Tclass._System.array? |#$arg@@4|)) (or (= $o@@3 null) (= (dtype $o@@3) (Tclass._System.array? |#$arg@@4|)))) (=> (or (= $o@@3 null) (= (dtype $o@@3) (Tclass._System.array? |#$arg@@4|))) ($Is $o@@3 (Tclass._System.array? |#$arg@@4|)))))
  2786. :qid |funwiths.1755:15|
  2787. :skolemid |328|
  2788. :pattern ( ($Is $o@@3 (Tclass._System.array? |#$arg@@4|)))
  2789. )))
  2790. (assert (forall ((|#$arg@@5| T@U) ($o@@4 T@U) ($h@@4 T@U) ) (! (=> (and (and (= (type |#$arg@@5|) TyType) (= (type $o@@4) refType)) (= (type $h@@4) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc $o@@4 (Tclass._System.array? |#$arg@@5|) $h@@4) (or (= $o@@4 null) (U_2_bool (MapType1Select (MapType0Select $h@@4 $o@@4) alloc)))) (=> (or (= $o@@4 null) (U_2_bool (MapType1Select (MapType0Select $h@@4 $o@@4) alloc))) ($IsAlloc $o@@4 (Tclass._System.array? |#$arg@@5|) $h@@4))))
  2791. :qid |funwiths.1761:15|
  2792. :skolemid |329|
  2793. :pattern ( ($IsAlloc $o@@4 (Tclass._System.array? |#$arg@@5|) $h@@4))
  2794. )))
  2795. (assert (forall ((|#$arg@@6| T@U) ($o@@5 T@U) ) (! (=> (and (and (= (type |#$arg@@6|) TyType) (= (type $o@@5) refType)) (and (not (= $o@@5 null)) (= (dtype $o@@5) (Tclass._System.array? |#$arg@@6|)))) ($Is (int_2_U (_System.array.Length $o@@5)) TInt))
  2796. :qid |funwiths.1767:15|
  2797. :skolemid |330|
  2798. :pattern ( (_System.array.Length $o@@5) (Tclass._System.array? |#$arg@@6|))
  2799. )))
  2800. (assert (forall ((|#$arg@@7| T@U) ($h@@5 T@U) ($o@@6 T@U) ) (! (=> (and (and (= (type |#$arg@@7|) TyType) (= (type $h@@5) (MapType0Type refType MapType1Type))) (= (type $o@@6) refType)) (=> (and (and (and ($IsGoodHeap $h@@5) (not (= $o@@6 null))) (= (dtype $o@@6) (Tclass._System.array? |#$arg@@7|))) (U_2_bool (MapType1Select (MapType0Select $h@@5 $o@@6) alloc))) ($IsAlloc (int_2_U (_System.array.Length $o@@6)) TInt $h@@5)))
  2801. :qid |funwiths.1773:15|
  2802. :skolemid |331|
  2803. :pattern ( (_System.array.Length $o@@6) (MapType1Select (MapType0Select $h@@5 $o@@6) alloc) (Tclass._System.array? |#$arg@@7|))
  2804. )))
  2805. (assert (forall ((arg0@@102 T@U) ) (! (= (type (Tclass._System.array arg0@@102)) TyType)
  2806. :qid |funType:Tclass._System.array|
  2807. :pattern ( (Tclass._System.array arg0@@102))
  2808. )))
  2809. (assert (forall ((_System.array$arg T@U) ) (! (=> (= (type _System.array$arg) TyType) (= (Tag (Tclass._System.array _System.array$arg)) Tagclass._System.array))
  2810. :qid |funwiths.1785:15|
  2811. :skolemid |332|
  2812. :pattern ( (Tclass._System.array _System.array$arg))
  2813. )))
  2814. (assert (forall ((arg0@@103 T@U) ) (! (= (type (Tclass._System.array_0 arg0@@103)) TyType)
  2815. :qid |funType:Tclass._System.array_0|
  2816. :pattern ( (Tclass._System.array_0 arg0@@103))
  2817. )))
  2818. (assert (forall ((_System.array$arg@@0 T@U) ) (! (=> (= (type _System.array$arg@@0) TyType) (= (Tclass._System.array_0 (Tclass._System.array _System.array$arg@@0)) _System.array$arg@@0))
  2819. :qid |funwiths.1792:15|
  2820. :skolemid |333|
  2821. :pattern ( (Tclass._System.array _System.array$arg@@0))
  2822. )))
  2823. (assert (forall ((_System.array$arg@@1 T@U) (bx@@38 T@U) ) (! (=> (and (and (= (type _System.array$arg@@1) TyType) (= (type bx@@38) BoxType)) ($IsBox bx@@38 (Tclass._System.array _System.array$arg@@1))) (and (= ($Box ($Unbox refType bx@@38)) bx@@38) ($Is ($Unbox refType bx@@38) (Tclass._System.array _System.array$arg@@1))))
  2824. :qid |funwiths.1800:15|
  2825. :skolemid |334|
  2826. :pattern ( ($IsBox bx@@38 (Tclass._System.array _System.array$arg@@1)))
  2827. )))
  2828. (assert (forall ((_System.array$arg@@2 T@U) (|c#0@@1| T@U) ) (! (=> (and (= (type _System.array$arg@@2) TyType) (= (type |c#0@@1|) refType)) (and (=> ($Is |c#0@@1| (Tclass._System.array _System.array$arg@@2)) (and ($Is |c#0@@1| (Tclass._System.array? _System.array$arg@@2)) (not (= |c#0@@1| null)))) (=> (and ($Is |c#0@@1| (Tclass._System.array? _System.array$arg@@2)) (not (= |c#0@@1| null))) ($Is |c#0@@1| (Tclass._System.array _System.array$arg@@2)))))
  2829. :qid |funwiths.1807:15|
  2830. :skolemid |335|
  2831. :pattern ( ($Is |c#0@@1| (Tclass._System.array _System.array$arg@@2)))
  2832. )))
  2833. (assert (forall ((_System.array$arg@@3 T@U) (|c#0@@2| T@U) ($h@@6 T@U) ) (! (=> (and (and (= (type _System.array$arg@@3) TyType) (= (type |c#0@@2|) refType)) (= (type $h@@6) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc |c#0@@2| (Tclass._System.array _System.array$arg@@3) $h@@6) ($IsAlloc |c#0@@2| (Tclass._System.array? _System.array$arg@@3) $h@@6)) (=> ($IsAlloc |c#0@@2| (Tclass._System.array? _System.array$arg@@3) $h@@6) ($IsAlloc |c#0@@2| (Tclass._System.array _System.array$arg@@3) $h@@6))))
  2834. :qid |funwiths.1813:15|
  2835. :skolemid |336|
  2836. :pattern ( ($IsAlloc |c#0@@2| (Tclass._System.array _System.array$arg@@3) $h@@6))
  2837. )))
  2838. (assert (forall ((arg0@@104 T@U) ) (! (= (type (Tclass._System.___hFunc0 arg0@@104)) TyType)
  2839. :qid |funType:Tclass._System.___hFunc0|
  2840. :pattern ( (Tclass._System.___hFunc0 arg0@@104))
  2841. )))
  2842. (assert (forall ((|#$R| T@U) ) (! (=> (= (type |#$R|) TyType) (= (Tag (Tclass._System.___hFunc0 |#$R|)) Tagclass._System.___hFunc0))
  2843. :qid |funwiths.1821:15|
  2844. :skolemid |337|
  2845. :pattern ( (Tclass._System.___hFunc0 |#$R|))
  2846. )))
  2847. (assert (forall ((arg0@@105 T@U) ) (! (= (type (Tclass._System.___hFunc0_0 arg0@@105)) TyType)
  2848. :qid |funType:Tclass._System.___hFunc0_0|
  2849. :pattern ( (Tclass._System.___hFunc0_0 arg0@@105))
  2850. )))
  2851. (assert (forall ((|#$R@@0| T@U) ) (! (=> (= (type |#$R@@0|) TyType) (= (Tclass._System.___hFunc0_0 (Tclass._System.___hFunc0 |#$R@@0|)) |#$R@@0|))
  2852. :qid |funwiths.1828:15|
  2853. :skolemid |338|
  2854. :pattern ( (Tclass._System.___hFunc0 |#$R@@0|))
  2855. )))
  2856. (assert (= (Ctor HandleTypeType) 19))
  2857. (assert (forall ((|#$R@@1| T@U) (bx@@39 T@U) ) (! (=> (and (and (= (type |#$R@@1|) TyType) (= (type bx@@39) BoxType)) ($IsBox bx@@39 (Tclass._System.___hFunc0 |#$R@@1|))) (and (= ($Box ($Unbox HandleTypeType bx@@39)) bx@@39) ($Is ($Unbox HandleTypeType bx@@39) (Tclass._System.___hFunc0 |#$R@@1|))))
  2858. :qid |funwiths.1835:15|
  2859. :skolemid |339|
  2860. :pattern ( ($IsBox bx@@39 (Tclass._System.___hFunc0 |#$R@@1|)))
  2861. )))
  2862. (assert (and (forall ((arg0@@106 T@U) (arg1@@44 T@U) (arg2@@6 T@U) ) (! (= (type (Apply0 arg0@@106 arg1@@44 arg2@@6)) BoxType)
  2863. :qid |funType:Apply0|
  2864. :pattern ( (Apply0 arg0@@106 arg1@@44 arg2@@6))
  2865. )) (forall ((arg0@@107 T@U) (arg1@@45 T@U) (arg2@@7 T@U) ) (! (= (type (Handle0 arg0@@107 arg1@@45 arg2@@7)) HandleTypeType)
  2866. :qid |funType:Handle0|
  2867. :pattern ( (Handle0 arg0@@107 arg1@@45 arg2@@7))
  2868. ))))
  2869. (assert (forall ((t0@@12 T@U) (heap T@U) (h@@20 T@U) (r@@6 T@U) (rd T@U) ) (! (=> (and (and (and (and (= (type t0@@12) TyType) (= (type heap) (MapType0Type refType MapType1Type))) (= (type h@@20) (MapType0Type (MapType0Type refType MapType1Type) BoxType))) (= (type r@@6) (MapType0Type (MapType0Type refType MapType1Type) boolType))) (= (type rd) (MapType0Type (MapType0Type refType MapType1Type) (MapType0Type BoxType boolType)))) (= (Apply0 t0@@12 heap (Handle0 h@@20 r@@6 rd)) (MapType0Select h@@20 heap)))
  2870. :qid |funwiths.1849:15|
  2871. :skolemid |340|
  2872. :pattern ( (Apply0 t0@@12 heap (Handle0 h@@20 r@@6 rd)))
  2873. )))
  2874. (assert (forall ((t0@@13 T@U) (heap@@0 T@U) (h@@21 T@U) (r@@7 T@U) (rd@@0 T@U) ) (! (=> (and (and (and (and (and (= (type t0@@13) TyType) (= (type heap@@0) (MapType0Type refType MapType1Type))) (= (type h@@21) (MapType0Type (MapType0Type refType MapType1Type) BoxType))) (= (type r@@7) (MapType0Type (MapType0Type refType MapType1Type) boolType))) (= (type rd@@0) (MapType0Type (MapType0Type refType MapType1Type) (MapType0Type BoxType boolType)))) (U_2_bool (MapType0Select r@@7 heap@@0))) (Requires0 t0@@13 heap@@0 (Handle0 h@@21 r@@7 rd@@0)))
  2875. :qid |funwiths.1853:15|
  2876. :skolemid |341|
  2877. :pattern ( (Requires0 t0@@13 heap@@0 (Handle0 h@@21 r@@7 rd@@0)))
  2878. )))
  2879. (assert (forall ((arg0@@108 T@U) (arg1@@46 T@U) (arg2@@8 T@U) ) (! (= (type (Reads0 arg0@@108 arg1@@46 arg2@@8)) (MapType0Type BoxType boolType))
  2880. :qid |funType:Reads0|
  2881. :pattern ( (Reads0 arg0@@108 arg1@@46 arg2@@8))
  2882. )))
  2883. (assert (forall ((t0@@14 T@U) (heap@@1 T@U) (h@@22 T@U) (r@@8 T@U) (rd@@1 T@U) (bx@@40 T@U) ) (! (=> (and (and (and (and (and (= (type t0@@14) TyType) (= (type heap@@1) (MapType0Type refType MapType1Type))) (= (type h@@22) (MapType0Type (MapType0Type refType MapType1Type) BoxType))) (= (type r@@8) (MapType0Type (MapType0Type refType MapType1Type) boolType))) (= (type rd@@1) (MapType0Type (MapType0Type refType MapType1Type) (MapType0Type BoxType boolType)))) (= (type bx@@40) BoxType)) (and (=> (U_2_bool (MapType0Select (Reads0 t0@@14 heap@@1 (Handle0 h@@22 r@@8 rd@@1)) bx@@40)) (U_2_bool (MapType0Select (MapType0Select rd@@1 heap@@1) bx@@40))) (=> (U_2_bool (MapType0Select (MapType0Select rd@@1 heap@@1) bx@@40)) (U_2_bool (MapType0Select (Reads0 t0@@14 heap@@1 (Handle0 h@@22 r@@8 rd@@1)) bx@@40)))))
  2884. :qid |funwiths.1857:15|
  2885. :skolemid |342|
  2886. :pattern ( (MapType0Select (Reads0 t0@@14 heap@@1 (Handle0 h@@22 r@@8 rd@@1)) bx@@40))
  2887. )))
  2888. (assert (forall ((t0@@15 T@U) (h0@@0 T@U) (h1@@0 T@U) (f@@3 T@U) ) (! (=> (and (and (and (= (type t0@@15) TyType) (= (type h0@@0) (MapType0Type refType MapType1Type))) (= (type h1@@0) (MapType0Type refType MapType1Type))) (= (type f@@3) HandleTypeType)) (=> (and (and (and (and ($HeapSucc h0@@0 h1@@0) ($IsGoodHeap h0@@0)) ($IsGoodHeap h1@@0)) ($Is f@@3 (Tclass._System.___hFunc0 t0@@15))) (forall ((o@@55 T@U) (fld T@U) ) (! (let ((a@@79 (FieldTypeInv0 (type fld))))
  2889. (=> (and (and (= (type o@@55) refType) (= (type fld) (FieldType a@@79))) (and (not (= o@@55 null)) (U_2_bool (MapType0Select (Reads0 t0@@15 h0@@0 f@@3) ($Box o@@55))))) (= (MapType1Select (MapType0Select h0@@0 o@@55) fld) (MapType1Select (MapType0Select h1@@0 o@@55) fld))))
  2890. :qid |funwiths.1879:22|
  2891. :skolemid |343|
  2892. :no-pattern (type o@@55)
  2893. :no-pattern (type fld)
  2894. :no-pattern (U_2_int o@@55)
  2895. :no-pattern (U_2_bool o@@55)
  2896. :no-pattern (U_2_int fld)
  2897. :no-pattern (U_2_bool fld)
  2898. ))) (= (Reads0 t0@@15 h0@@0 f@@3) (Reads0 t0@@15 h1@@0 f@@3))))
  2899. :qid |funwiths.1872:15|
  2900. :skolemid |344|
  2901. :pattern ( ($HeapSucc h0@@0 h1@@0) (Reads0 t0@@15 h1@@0 f@@3))
  2902. )))
  2903. (assert (forall ((t0@@16 T@U) (h0@@1 T@U) (h1@@1 T@U) (f@@4 T@U) ) (! (=> (and (and (and (= (type t0@@16) TyType) (= (type h0@@1) (MapType0Type refType MapType1Type))) (= (type h1@@1) (MapType0Type refType MapType1Type))) (= (type f@@4) HandleTypeType)) (=> (and (and (and (and ($HeapSucc h0@@1 h1@@1) ($IsGoodHeap h0@@1)) ($IsGoodHeap h1@@1)) ($Is f@@4 (Tclass._System.___hFunc0 t0@@16))) (forall ((o@@56 T@U) (fld@@0 T@U) ) (! (let ((a@@80 (FieldTypeInv0 (type fld@@0))))
  2904. (=> (and (and (= (type o@@56) refType) (= (type fld@@0) (FieldType a@@80))) (and (not (= o@@56 null)) (U_2_bool (MapType0Select (Reads0 t0@@16 h1@@1 f@@4) ($Box o@@56))))) (= (MapType1Select (MapType0Select h0@@1 o@@56) fld@@0) (MapType1Select (MapType0Select h1@@1 o@@56) fld@@0))))
  2905. :qid |funwiths.1891:22|
  2906. :skolemid |345|
  2907. :no-pattern (type o@@56)
  2908. :no-pattern (type fld@@0)
  2909. :no-pattern (U_2_int o@@56)
  2910. :no-pattern (U_2_bool o@@56)
  2911. :no-pattern (U_2_int fld@@0)
  2912. :no-pattern (U_2_bool fld@@0)
  2913. ))) (= (Reads0 t0@@16 h0@@1 f@@4) (Reads0 t0@@16 h1@@1 f@@4))))
  2914. :qid |funwiths.1884:15|
  2915. :skolemid |346|
  2916. :pattern ( ($HeapSucc h0@@1 h1@@1) (Reads0 t0@@16 h1@@1 f@@4))
  2917. )))
  2918. (assert (forall ((t0@@17 T@U) (h0@@2 T@U) (h1@@2 T@U) (f@@5 T@U) ) (! (=> (and (and (and (= (type t0@@17) TyType) (= (type h0@@2) (MapType0Type refType MapType1Type))) (= (type h1@@2) (MapType0Type refType MapType1Type))) (= (type f@@5) HandleTypeType)) (=> (and (and (and (and ($HeapSucc h0@@2 h1@@2) ($IsGoodHeap h0@@2)) ($IsGoodHeap h1@@2)) ($Is f@@5 (Tclass._System.___hFunc0 t0@@17))) (forall ((o@@57 T@U) (fld@@1 T@U) ) (! (let ((a@@81 (FieldTypeInv0 (type fld@@1))))
  2919. (=> (and (and (= (type o@@57) refType) (= (type fld@@1) (FieldType a@@81))) (and (not (= o@@57 null)) (U_2_bool (MapType0Select (Reads0 t0@@17 h0@@2 f@@5) ($Box o@@57))))) (= (MapType1Select (MapType0Select h0@@2 o@@57) fld@@1) (MapType1Select (MapType0Select h1@@2 o@@57) fld@@1))))
  2920. :qid |funwiths.1903:22|
  2921. :skolemid |347|
  2922. :no-pattern (type o@@57)
  2923. :no-pattern (type fld@@1)
  2924. :no-pattern (U_2_int o@@57)
  2925. :no-pattern (U_2_bool o@@57)
  2926. :no-pattern (U_2_int fld@@1)
  2927. :no-pattern (U_2_bool fld@@1)
  2928. ))) (and (=> (Requires0 t0@@17 h0@@2 f@@5) (Requires0 t0@@17 h1@@2 f@@5)) (=> (Requires0 t0@@17 h1@@2 f@@5) (Requires0 t0@@17 h0@@2 f@@5)))))
  2929. :qid |funwiths.1896:15|
  2930. :skolemid |348|
  2931. :pattern ( ($HeapSucc h0@@2 h1@@2) (Requires0 t0@@17 h1@@2 f@@5))
  2932. )))
  2933. (assert (forall ((t0@@18 T@U) (h0@@3 T@U) (h1@@3 T@U) (f@@6 T@U) ) (! (=> (and (and (and (= (type t0@@18) TyType) (= (type h0@@3) (MapType0Type refType MapType1Type))) (= (type h1@@3) (MapType0Type refType MapType1Type))) (= (type f@@6) HandleTypeType)) (=> (and (and (and (and ($HeapSucc h0@@3 h1@@3) ($IsGoodHeap h0@@3)) ($IsGoodHeap h1@@3)) ($Is f@@6 (Tclass._System.___hFunc0 t0@@18))) (forall ((o@@58 T@U) (fld@@2 T@U) ) (! (let ((a@@82 (FieldTypeInv0 (type fld@@2))))
  2934. (=> (and (and (= (type o@@58) refType) (= (type fld@@2) (FieldType a@@82))) (and (not (= o@@58 null)) (U_2_bool (MapType0Select (Reads0 t0@@18 h1@@3 f@@6) ($Box o@@58))))) (= (MapType1Select (MapType0Select h0@@3 o@@58) fld@@2) (MapType1Select (MapType0Select h1@@3 o@@58) fld@@2))))
  2935. :qid |funwiths.1915:22|
  2936. :skolemid |349|
  2937. :no-pattern (type o@@58)
  2938. :no-pattern (type fld@@2)
  2939. :no-pattern (U_2_int o@@58)
  2940. :no-pattern (U_2_bool o@@58)
  2941. :no-pattern (U_2_int fld@@2)
  2942. :no-pattern (U_2_bool fld@@2)
  2943. ))) (and (=> (Requires0 t0@@18 h0@@3 f@@6) (Requires0 t0@@18 h1@@3 f@@6)) (=> (Requires0 t0@@18 h1@@3 f@@6) (Requires0 t0@@18 h0@@3 f@@6)))))
  2944. :qid |funwiths.1908:15|
  2945. :skolemid |350|
  2946. :pattern ( ($HeapSucc h0@@3 h1@@3) (Requires0 t0@@18 h1@@3 f@@6))
  2947. )))
  2948. (assert (forall ((t0@@19 T@U) (h0@@4 T@U) (h1@@4 T@U) (f@@7 T@U) ) (! (=> (and (and (and (= (type t0@@19) TyType) (= (type h0@@4) (MapType0Type refType MapType1Type))) (= (type h1@@4) (MapType0Type refType MapType1Type))) (= (type f@@7) HandleTypeType)) (=> (and (and (and (and ($HeapSucc h0@@4 h1@@4) ($IsGoodHeap h0@@4)) ($IsGoodHeap h1@@4)) ($Is f@@7 (Tclass._System.___hFunc0 t0@@19))) (forall ((o@@59 T@U) (fld@@3 T@U) ) (! (let ((a@@83 (FieldTypeInv0 (type fld@@3))))
  2949. (=> (and (and (= (type o@@59) refType) (= (type fld@@3) (FieldType a@@83))) (and (not (= o@@59 null)) (U_2_bool (MapType0Select (Reads0 t0@@19 h0@@4 f@@7) ($Box o@@59))))) (= (MapType1Select (MapType0Select h0@@4 o@@59) fld@@3) (MapType1Select (MapType0Select h1@@4 o@@59) fld@@3))))
  2950. :qid |funwiths.1927:22|
  2951. :skolemid |351|
  2952. :no-pattern (type o@@59)
  2953. :no-pattern (type fld@@3)
  2954. :no-pattern (U_2_int o@@59)
  2955. :no-pattern (U_2_bool o@@59)
  2956. :no-pattern (U_2_int fld@@3)
  2957. :no-pattern (U_2_bool fld@@3)
  2958. ))) (= (Apply0 t0@@19 h0@@4 f@@7) (Apply0 t0@@19 h1@@4 f@@7))))
  2959. :qid |funwiths.1920:15|
  2960. :skolemid |352|
  2961. :pattern ( ($HeapSucc h0@@4 h1@@4) (Apply0 t0@@19 h1@@4 f@@7))
  2962. )))
  2963. (assert (forall ((t0@@20 T@U) (h0@@5 T@U) (h1@@5 T@U) (f@@8 T@U) ) (! (=> (and (and (and (= (type t0@@20) TyType) (= (type h0@@5) (MapType0Type refType MapType1Type))) (= (type h1@@5) (MapType0Type refType MapType1Type))) (= (type f@@8) HandleTypeType)) (=> (and (and (and (and ($HeapSucc h0@@5 h1@@5) ($IsGoodHeap h0@@5)) ($IsGoodHeap h1@@5)) ($Is f@@8 (Tclass._System.___hFunc0 t0@@20))) (forall ((o@@60 T@U) (fld@@4 T@U) ) (! (let ((a@@84 (FieldTypeInv0 (type fld@@4))))
  2964. (=> (and (and (= (type o@@60) refType) (= (type fld@@4) (FieldType a@@84))) (and (not (= o@@60 null)) (U_2_bool (MapType0Select (Reads0 t0@@20 h1@@5 f@@8) ($Box o@@60))))) (= (MapType1Select (MapType0Select h0@@5 o@@60) fld@@4) (MapType1Select (MapType0Select h1@@5 o@@60) fld@@4))))
  2965. :qid |funwiths.1939:22|
  2966. :skolemid |353|
  2967. :no-pattern (type o@@60)
  2968. :no-pattern (type fld@@4)
  2969. :no-pattern (U_2_int o@@60)
  2970. :no-pattern (U_2_bool o@@60)
  2971. :no-pattern (U_2_int fld@@4)
  2972. :no-pattern (U_2_bool fld@@4)
  2973. ))) (= (Apply0 t0@@20 h0@@5 f@@8) (Apply0 t0@@20 h1@@5 f@@8))))
  2974. :qid |funwiths.1932:15|
  2975. :skolemid |354|
  2976. :pattern ( ($HeapSucc h0@@5 h1@@5) (Apply0 t0@@20 h1@@5 f@@8))
  2977. )))
  2978. (assert (forall ((t0@@21 T@U) (heap@@2 T@U) (f@@9 T@U) ) (! (=> (and (and (and (= (type t0@@21) TyType) (= (type heap@@2) (MapType0Type refType MapType1Type))) (= (type f@@9) HandleTypeType)) (and ($IsGoodHeap heap@@2) ($Is f@@9 (Tclass._System.___hFunc0 t0@@21)))) (and (=> (|Set#Equal| (Reads0 t0@@21 $OneHeap f@@9) (|Set#Empty| BoxType)) (|Set#Equal| (Reads0 t0@@21 heap@@2 f@@9) (|Set#Empty| BoxType))) (=> (|Set#Equal| (Reads0 t0@@21 heap@@2 f@@9) (|Set#Empty| BoxType)) (|Set#Equal| (Reads0 t0@@21 $OneHeap f@@9) (|Set#Empty| BoxType)))))
  2979. :qid |funwiths.1944:15|
  2980. :skolemid |355|
  2981. :pattern ( (Reads0 t0@@21 $OneHeap f@@9) ($IsGoodHeap heap@@2))
  2982. :pattern ( (Reads0 t0@@21 heap@@2 f@@9))
  2983. )))
  2984. (assert (forall ((t0@@22 T@U) (heap@@3 T@U) (f@@10 T@U) ) (! (=> (and (and (and (= (type t0@@22) TyType) (= (type heap@@3) (MapType0Type refType MapType1Type))) (= (type f@@10) HandleTypeType)) (and (and ($IsGoodHeap heap@@3) ($Is f@@10 (Tclass._System.___hFunc0 t0@@22))) (|Set#Equal| (Reads0 t0@@22 $OneHeap f@@10) (|Set#Empty| BoxType)))) (and (=> (Requires0 t0@@22 $OneHeap f@@10) (Requires0 t0@@22 heap@@3 f@@10)) (=> (Requires0 t0@@22 heap@@3 f@@10) (Requires0 t0@@22 $OneHeap f@@10))))
  2985. :qid |funwiths.1951:15|
  2986. :skolemid |356|
  2987. :pattern ( (Requires0 t0@@22 $OneHeap f@@10) ($IsGoodHeap heap@@3))
  2988. :pattern ( (Requires0 t0@@22 heap@@3 f@@10))
  2989. )))
  2990. (assert (forall ((f@@11 T@U) (t0@@23 T@U) ) (! (=> (and (= (type f@@11) HandleTypeType) (= (type t0@@23) TyType)) (and (=> ($Is f@@11 (Tclass._System.___hFunc0 t0@@23)) (forall ((h@@23 T@U) ) (! (=> (= (type h@@23) (MapType0Type refType MapType1Type)) (=> (and ($IsGoodHeap h@@23) (Requires0 t0@@23 h@@23 f@@11)) ($IsBox (Apply0 t0@@23 h@@23 f@@11) t0@@23)))
  2991. :qid |funwiths.1961:19|
  2992. :skolemid |357|
  2993. :pattern ( (Apply0 t0@@23 h@@23 f@@11))
  2994. ))) (=> (forall ((h@@24 T@U) ) (! (=> (= (type h@@24) (MapType0Type refType MapType1Type)) (=> (and ($IsGoodHeap h@@24) (Requires0 t0@@23 h@@24 f@@11)) ($IsBox (Apply0 t0@@23 h@@24 f@@11) t0@@23)))
  2995. :qid |funwiths.1961:19|
  2996. :skolemid |357|
  2997. :pattern ( (Apply0 t0@@23 h@@24 f@@11))
  2998. )) ($Is f@@11 (Tclass._System.___hFunc0 t0@@23)))))
  2999. :qid |funwiths.1958:15|
  3000. :skolemid |358|
  3001. :pattern ( ($Is f@@11 (Tclass._System.___hFunc0 t0@@23)))
  3002. )))
  3003. (assert (forall ((f@@12 T@U) (t0@@24 T@U) (u0 T@U) ) (! (=> (and (and (and (= (type f@@12) HandleTypeType) (= (type t0@@24) TyType)) (= (type u0) TyType)) (and ($Is f@@12 (Tclass._System.___hFunc0 t0@@24)) (forall ((bx@@41 T@U) ) (! (=> (and (= (type bx@@41) BoxType) ($IsBox bx@@41 t0@@24)) ($IsBox bx@@41 u0))
  3004. :qid |funwiths.1968:19|
  3005. :skolemid |359|
  3006. :pattern ( ($IsBox bx@@41 t0@@24))
  3007. :pattern ( ($IsBox bx@@41 u0))
  3008. )))) ($Is f@@12 (Tclass._System.___hFunc0 u0)))
  3009. :qid |funwiths.1965:15|
  3010. :skolemid |360|
  3011. :pattern ( ($Is f@@12 (Tclass._System.___hFunc0 t0@@24)) ($Is f@@12 (Tclass._System.___hFunc0 u0)))
  3012. )))
  3013. (assert (forall ((f@@13 T@U) (t0@@25 T@U) (h@@25 T@U) ) (! (=> (and (and (and (= (type f@@13) HandleTypeType) (= (type t0@@25) TyType)) (= (type h@@25) (MapType0Type refType MapType1Type))) ($IsGoodHeap h@@25)) (and (=> ($IsAlloc f@@13 (Tclass._System.___hFunc0 t0@@25) h@@25) (=> (Requires0 t0@@25 h@@25 f@@13) (forall ((r@@9 T@U) ) (! (=> (= (type r@@9) refType) (=> (and (not (= r@@9 null)) (U_2_bool (MapType0Select (Reads0 t0@@25 h@@25 f@@13) ($Box r@@9)))) (U_2_bool (MapType1Select (MapType0Select h@@25 r@@9) alloc))))
  3014. :qid |funwiths.1978:22|
  3015. :skolemid |361|
  3016. :pattern ( (MapType0Select (Reads0 t0@@25 h@@25 f@@13) ($Box r@@9)))
  3017. )))) (=> (=> (Requires0 t0@@25 h@@25 f@@13) (forall ((r@@10 T@U) ) (! (=> (= (type r@@10) refType) (=> (and (not (= r@@10 null)) (U_2_bool (MapType0Select (Reads0 t0@@25 h@@25 f@@13) ($Box r@@10)))) (U_2_bool (MapType1Select (MapType0Select h@@25 r@@10) alloc))))
  3018. :qid |funwiths.1978:22|
  3019. :skolemid |361|
  3020. :pattern ( (MapType0Select (Reads0 t0@@25 h@@25 f@@13) ($Box r@@10)))
  3021. ))) ($IsAlloc f@@13 (Tclass._System.___hFunc0 t0@@25) h@@25))))
  3022. :qid |funwiths.1973:15|
  3023. :skolemid |362|
  3024. :pattern ( ($IsAlloc f@@13 (Tclass._System.___hFunc0 t0@@25) h@@25))
  3025. )))
  3026. (assert (forall ((f@@14 T@U) (t0@@26 T@U) (h@@26 T@U) ) (! (=> (and (and (and (and (= (type f@@14) HandleTypeType) (= (type t0@@26) TyType)) (= (type h@@26) (MapType0Type refType MapType1Type))) (and ($IsGoodHeap h@@26) ($IsAlloc f@@14 (Tclass._System.___hFunc0 t0@@26) h@@26))) (Requires0 t0@@26 h@@26 f@@14)) ($IsAllocBox (Apply0 t0@@26 h@@26 f@@14) t0@@26 h@@26))
  3027. :qid |funwiths.1982:15|
  3028. :skolemid |363|
  3029. :pattern ( ($IsAlloc f@@14 (Tclass._System.___hFunc0 t0@@26) h@@26))
  3030. )))
  3031. (assert (forall ((arg0@@109 T@U) ) (! (= (type (Tclass._System.___hPartialFunc0 arg0@@109)) TyType)
  3032. :qid |funType:Tclass._System.___hPartialFunc0|
  3033. :pattern ( (Tclass._System.___hPartialFunc0 arg0@@109))
  3034. )))
  3035. (assert (forall ((|#$R@@2| T@U) ) (! (=> (= (type |#$R@@2|) TyType) (= (Tag (Tclass._System.___hPartialFunc0 |#$R@@2|)) Tagclass._System.___hPartialFunc0))
  3036. :qid |funwiths.1992:15|
  3037. :skolemid |364|
  3038. :pattern ( (Tclass._System.___hPartialFunc0 |#$R@@2|))
  3039. )))
  3040. (assert (forall ((arg0@@110 T@U) ) (! (= (type (Tclass._System.___hPartialFunc0_0 arg0@@110)) TyType)
  3041. :qid |funType:Tclass._System.___hPartialFunc0_0|
  3042. :pattern ( (Tclass._System.___hPartialFunc0_0 arg0@@110))
  3043. )))
  3044. (assert (forall ((|#$R@@3| T@U) ) (! (=> (= (type |#$R@@3|) TyType) (= (Tclass._System.___hPartialFunc0_0 (Tclass._System.___hPartialFunc0 |#$R@@3|)) |#$R@@3|))
  3045. :qid |funwiths.1999:15|
  3046. :skolemid |365|
  3047. :pattern ( (Tclass._System.___hPartialFunc0 |#$R@@3|))
  3048. )))
  3049. (assert (forall ((|#$R@@4| T@U) (bx@@42 T@U) ) (! (=> (and (and (= (type |#$R@@4|) TyType) (= (type bx@@42) BoxType)) ($IsBox bx@@42 (Tclass._System.___hPartialFunc0 |#$R@@4|))) (and (= ($Box ($Unbox HandleTypeType bx@@42)) bx@@42) ($Is ($Unbox HandleTypeType bx@@42) (Tclass._System.___hPartialFunc0 |#$R@@4|))))
  3050. :qid |funwiths.2006:15|
  3051. :skolemid |366|
  3052. :pattern ( ($IsBox bx@@42 (Tclass._System.___hPartialFunc0 |#$R@@4|)))
  3053. )))
  3054. (assert (forall ((|#$R@@5| T@U) (|f#0| T@U) ) (! (=> (and (= (type |#$R@@5|) TyType) (= (type |f#0|) HandleTypeType)) (and (=> ($Is |f#0| (Tclass._System.___hPartialFunc0 |#$R@@5|)) (and ($Is |f#0| (Tclass._System.___hFunc0 |#$R@@5|)) (|Set#Equal| (Reads0 |#$R@@5| $OneHeap |f#0|) (|Set#Empty| BoxType)))) (=> (and ($Is |f#0| (Tclass._System.___hFunc0 |#$R@@5|)) (|Set#Equal| (Reads0 |#$R@@5| $OneHeap |f#0|) (|Set#Empty| BoxType))) ($Is |f#0| (Tclass._System.___hPartialFunc0 |#$R@@5|)))))
  3055. :qid |funwiths.2013:15|
  3056. :skolemid |367|
  3057. :pattern ( ($Is |f#0| (Tclass._System.___hPartialFunc0 |#$R@@5|)))
  3058. )))
  3059. (assert (forall ((|#$R@@6| T@U) (|f#0@@0| T@U) ($h@@7 T@U) ) (! (=> (and (and (= (type |#$R@@6|) TyType) (= (type |f#0@@0|) HandleTypeType)) (= (type $h@@7) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc |f#0@@0| (Tclass._System.___hPartialFunc0 |#$R@@6|) $h@@7) ($IsAlloc |f#0@@0| (Tclass._System.___hFunc0 |#$R@@6|) $h@@7)) (=> ($IsAlloc |f#0@@0| (Tclass._System.___hFunc0 |#$R@@6|) $h@@7) ($IsAlloc |f#0@@0| (Tclass._System.___hPartialFunc0 |#$R@@6|) $h@@7))))
  3060. :qid |funwiths.2020:15|
  3061. :skolemid |368|
  3062. :pattern ( ($IsAlloc |f#0@@0| (Tclass._System.___hPartialFunc0 |#$R@@6|) $h@@7))
  3063. )))
  3064. (assert (forall ((arg0@@111 T@U) ) (! (= (type (Tclass._System.___hTotalFunc0 arg0@@111)) TyType)
  3065. :qid |funType:Tclass._System.___hTotalFunc0|
  3066. :pattern ( (Tclass._System.___hTotalFunc0 arg0@@111))
  3067. )))
  3068. (assert (forall ((|#$R@@7| T@U) ) (! (=> (= (type |#$R@@7|) TyType) (= (Tag (Tclass._System.___hTotalFunc0 |#$R@@7|)) Tagclass._System.___hTotalFunc0))
  3069. :qid |funwiths.2028:15|
  3070. :skolemid |369|
  3071. :pattern ( (Tclass._System.___hTotalFunc0 |#$R@@7|))
  3072. )))
  3073. (assert (forall ((arg0@@112 T@U) ) (! (= (type (Tclass._System.___hTotalFunc0_0 arg0@@112)) TyType)
  3074. :qid |funType:Tclass._System.___hTotalFunc0_0|
  3075. :pattern ( (Tclass._System.___hTotalFunc0_0 arg0@@112))
  3076. )))
  3077. (assert (forall ((|#$R@@8| T@U) ) (! (=> (= (type |#$R@@8|) TyType) (= (Tclass._System.___hTotalFunc0_0 (Tclass._System.___hTotalFunc0 |#$R@@8|)) |#$R@@8|))
  3078. :qid |funwiths.2035:15|
  3079. :skolemid |370|
  3080. :pattern ( (Tclass._System.___hTotalFunc0 |#$R@@8|))
  3081. )))
  3082. (assert (forall ((|#$R@@9| T@U) (bx@@43 T@U) ) (! (=> (and (and (= (type |#$R@@9|) TyType) (= (type bx@@43) BoxType)) ($IsBox bx@@43 (Tclass._System.___hTotalFunc0 |#$R@@9|))) (and (= ($Box ($Unbox HandleTypeType bx@@43)) bx@@43) ($Is ($Unbox HandleTypeType bx@@43) (Tclass._System.___hTotalFunc0 |#$R@@9|))))
  3083. :qid |funwiths.2042:15|
  3084. :skolemid |371|
  3085. :pattern ( ($IsBox bx@@43 (Tclass._System.___hTotalFunc0 |#$R@@9|)))
  3086. )))
  3087. (assert (forall ((|#$R@@10| T@U) (|f#0@@1| T@U) ) (! (=> (and (= (type |#$R@@10|) TyType) (= (type |f#0@@1|) HandleTypeType)) (and (=> ($Is |f#0@@1| (Tclass._System.___hTotalFunc0 |#$R@@10|)) (and ($Is |f#0@@1| (Tclass._System.___hPartialFunc0 |#$R@@10|)) (Requires0 |#$R@@10| $OneHeap |f#0@@1|))) (=> (and ($Is |f#0@@1| (Tclass._System.___hPartialFunc0 |#$R@@10|)) (Requires0 |#$R@@10| $OneHeap |f#0@@1|)) ($Is |f#0@@1| (Tclass._System.___hTotalFunc0 |#$R@@10|)))))
  3088. :qid |funwiths.2049:15|
  3089. :skolemid |372|
  3090. :pattern ( ($Is |f#0@@1| (Tclass._System.___hTotalFunc0 |#$R@@10|)))
  3091. )))
  3092. (assert (forall ((|#$R@@11| T@U) (|f#0@@2| T@U) ($h@@8 T@U) ) (! (=> (and (and (= (type |#$R@@11|) TyType) (= (type |f#0@@2|) HandleTypeType)) (= (type $h@@8) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc |f#0@@2| (Tclass._System.___hTotalFunc0 |#$R@@11|) $h@@8) ($IsAlloc |f#0@@2| (Tclass._System.___hPartialFunc0 |#$R@@11|) $h@@8)) (=> ($IsAlloc |f#0@@2| (Tclass._System.___hPartialFunc0 |#$R@@11|) $h@@8) ($IsAlloc |f#0@@2| (Tclass._System.___hTotalFunc0 |#$R@@11|) $h@@8))))
  3093. :qid |funwiths.2055:15|
  3094. :skolemid |373|
  3095. :pattern ( ($IsAlloc |f#0@@2| (Tclass._System.___hTotalFunc0 |#$R@@11|) $h@@8))
  3096. )))
  3097. (assert (and (forall ((arg0@@113 T@U) (arg1@@47 T@U) ) (! (= (type (|#_System._tuple#2._#Make2| arg0@@113 arg1@@47)) DatatypeTypeType)
  3098. :qid |funType:#_System._tuple#2._#Make2|
  3099. :pattern ( (|#_System._tuple#2._#Make2| arg0@@113 arg1@@47))
  3100. )) (forall ((arg0@@114 T@U) ) (! (= (type (DatatypeCtorId arg0@@114)) DtCtorIdType)
  3101. :qid |funType:DatatypeCtorId|
  3102. :pattern ( (DatatypeCtorId arg0@@114))
  3103. ))))
  3104. (assert (forall ((|a#0#0#0| T@U) (|a#0#1#0| T@U) ) (! (=> (and (= (type |a#0#0#0|) BoxType) (= (type |a#0#1#0|) BoxType)) (= (DatatypeCtorId (|#_System._tuple#2._#Make2| |a#0#0#0| |a#0#1#0|)) |##_System._tuple#2._#Make2|))
  3105. :qid |funwiths.2068:15|
  3106. :skolemid |374|
  3107. :pattern ( (|#_System._tuple#2._#Make2| |a#0#0#0| |a#0#1#0|))
  3108. )))
  3109. (assert (forall ((d@@0 T@U) ) (! (=> (= (type d@@0) DatatypeTypeType) (and (=> (_System.Tuple2.___hMake2_q d@@0) (= (DatatypeCtorId d@@0) |##_System._tuple#2._#Make2|)) (=> (= (DatatypeCtorId d@@0) |##_System._tuple#2._#Make2|) (_System.Tuple2.___hMake2_q d@@0))))
  3110. :qid |funwiths.2076:15|
  3111. :skolemid |375|
  3112. :pattern ( (_System.Tuple2.___hMake2_q d@@0))
  3113. )))
  3114. (assert (forall ((d@@1 T@U) ) (! (=> (and (= (type d@@1) DatatypeTypeType) (_System.Tuple2.___hMake2_q d@@1)) (exists ((|a#1#0#0| T@U) (|a#1#1#0| T@U) ) (! (and (and (= (type |a#1#0#0|) BoxType) (= (type |a#1#1#0|) BoxType)) (= d@@1 (|#_System._tuple#2._#Make2| |a#1#0#0| |a#1#1#0|)))
  3115. :qid |funwiths.2085:18|
  3116. :skolemid |376|
  3117. :no-pattern (type |a#1#0#0|)
  3118. :no-pattern (type |a#1#1#0|)
  3119. :no-pattern (U_2_int |a#1#0#0|)
  3120. :no-pattern (U_2_bool |a#1#0#0|)
  3121. :no-pattern (U_2_int |a#1#1#0|)
  3122. :no-pattern (U_2_bool |a#1#1#0|)
  3123. )))
  3124. :qid |funwiths.2082:15|
  3125. :skolemid |377|
  3126. :pattern ( (_System.Tuple2.___hMake2_q d@@1))
  3127. )))
  3128. (assert (forall ((arg0@@115 T@U) (arg1@@48 T@U) ) (! (= (type (Tclass._System.Tuple2 arg0@@115 arg1@@48)) TyType)
  3129. :qid |funType:Tclass._System.Tuple2|
  3130. :pattern ( (Tclass._System.Tuple2 arg0@@115 arg1@@48))
  3131. )))
  3132. (assert (forall ((|#$T0| T@U) (|#$T1| T@U) ) (! (=> (and (= (type |#$T0|) TyType) (= (type |#$T1|) TyType)) (= (Tag (Tclass._System.Tuple2 |#$T0| |#$T1|)) Tagclass._System.Tuple2))
  3133. :qid |funwiths.2091:15|
  3134. :skolemid |378|
  3135. :pattern ( (Tclass._System.Tuple2 |#$T0| |#$T1|))
  3136. )))
  3137. (assert (forall ((arg0@@116 T@U) ) (! (= (type (Tclass._System.Tuple2_0 arg0@@116)) TyType)
  3138. :qid |funType:Tclass._System.Tuple2_0|
  3139. :pattern ( (Tclass._System.Tuple2_0 arg0@@116))
  3140. )))
  3141. (assert (forall ((|#$T0@@0| T@U) (|#$T1@@0| T@U) ) (! (=> (and (= (type |#$T0@@0|) TyType) (= (type |#$T1@@0|) TyType)) (= (Tclass._System.Tuple2_0 (Tclass._System.Tuple2 |#$T0@@0| |#$T1@@0|)) |#$T0@@0|))
  3142. :qid |funwiths.2098:15|
  3143. :skolemid |379|
  3144. :pattern ( (Tclass._System.Tuple2 |#$T0@@0| |#$T1@@0|))
  3145. )))
  3146. (assert (forall ((arg0@@117 T@U) ) (! (= (type (Tclass._System.Tuple2_1 arg0@@117)) TyType)
  3147. :qid |funType:Tclass._System.Tuple2_1|
  3148. :pattern ( (Tclass._System.Tuple2_1 arg0@@117))
  3149. )))
  3150. (assert (forall ((|#$T0@@1| T@U) (|#$T1@@1| T@U) ) (! (=> (and (= (type |#$T0@@1|) TyType) (= (type |#$T1@@1|) TyType)) (= (Tclass._System.Tuple2_1 (Tclass._System.Tuple2 |#$T0@@1| |#$T1@@1|)) |#$T1@@1|))
  3151. :qid |funwiths.2105:15|
  3152. :skolemid |380|
  3153. :pattern ( (Tclass._System.Tuple2 |#$T0@@1| |#$T1@@1|))
  3154. )))
  3155. (assert (forall ((|#$T0@@2| T@U) (|#$T1@@2| T@U) (bx@@44 T@U) ) (! (=> (and (and (and (= (type |#$T0@@2|) TyType) (= (type |#$T1@@2|) TyType)) (= (type bx@@44) BoxType)) ($IsBox bx@@44 (Tclass._System.Tuple2 |#$T0@@2| |#$T1@@2|))) (and (= ($Box ($Unbox DatatypeTypeType bx@@44)) bx@@44) ($Is ($Unbox DatatypeTypeType bx@@44) (Tclass._System.Tuple2 |#$T0@@2| |#$T1@@2|))))
  3156. :qid |funwiths.2112:15|
  3157. :skolemid |381|
  3158. :pattern ( ($IsBox bx@@44 (Tclass._System.Tuple2 |#$T0@@2| |#$T1@@2|)))
  3159. )))
  3160. (assert (forall ((|#$T0@@3| T@U) (|#$T1@@3| T@U) (|a#2#0#0| T@U) (|a#2#1#0| T@U) ) (! (=> (and (and (and (= (type |#$T0@@3|) TyType) (= (type |#$T1@@3|) TyType)) (= (type |a#2#0#0|) BoxType)) (= (type |a#2#1#0|) BoxType)) (and (=> ($Is (|#_System._tuple#2._#Make2| |a#2#0#0| |a#2#1#0|) (Tclass._System.Tuple2 |#$T0@@3| |#$T1@@3|)) (and ($IsBox |a#2#0#0| |#$T0@@3|) ($IsBox |a#2#1#0| |#$T1@@3|))) (=> (and ($IsBox |a#2#0#0| |#$T0@@3|) ($IsBox |a#2#1#0| |#$T1@@3|)) ($Is (|#_System._tuple#2._#Make2| |a#2#0#0| |a#2#1#0|) (Tclass._System.Tuple2 |#$T0@@3| |#$T1@@3|)))))
  3161. :qid |funwiths.2119:15|
  3162. :skolemid |382|
  3163. :pattern ( ($Is (|#_System._tuple#2._#Make2| |a#2#0#0| |a#2#1#0|) (Tclass._System.Tuple2 |#$T0@@3| |#$T1@@3|)))
  3164. )))
  3165. (assert (forall ((|#$T0@@4| T@U) (|#$T1@@4| T@U) (|a#3#0#0| T@U) (|a#3#1#0| T@U) ($h@@9 T@U) ) (! (=> (and (and (and (and (and (= (type |#$T0@@4|) TyType) (= (type |#$T1@@4|) TyType)) (= (type |a#3#0#0|) BoxType)) (= (type |a#3#1#0|) BoxType)) (= (type $h@@9) (MapType0Type refType MapType1Type))) ($IsGoodHeap $h@@9)) (and (=> ($IsAlloc (|#_System._tuple#2._#Make2| |a#3#0#0| |a#3#1#0|) (Tclass._System.Tuple2 |#$T0@@4| |#$T1@@4|) $h@@9) (and ($IsAllocBox |a#3#0#0| |#$T0@@4| $h@@9) ($IsAllocBox |a#3#1#0| |#$T1@@4| $h@@9))) (=> (and ($IsAllocBox |a#3#0#0| |#$T0@@4| $h@@9) ($IsAllocBox |a#3#1#0| |#$T1@@4| $h@@9)) ($IsAlloc (|#_System._tuple#2._#Make2| |a#3#0#0| |a#3#1#0|) (Tclass._System.Tuple2 |#$T0@@4| |#$T1@@4|) $h@@9))))
  3166. :qid |funwiths.2125:15|
  3167. :skolemid |383|
  3168. :pattern ( ($IsAlloc (|#_System._tuple#2._#Make2| |a#3#0#0| |a#3#1#0|) (Tclass._System.Tuple2 |#$T0@@4| |#$T1@@4|) $h@@9))
  3169. )))
  3170. (assert (forall ((d@@2 T@U) (|#$T0@@5| T@U) ($h@@10 T@U) ) (! (=> (and (and (and (= (type d@@2) DatatypeTypeType) (= (type |#$T0@@5|) TyType)) (= (type $h@@10) (MapType0Type refType MapType1Type))) (and (and ($IsGoodHeap $h@@10) (_System.Tuple2.___hMake2_q d@@2)) (exists ((|#$T1@@5| T@U) ) (! (and (= (type |#$T1@@5|) TyType) ($IsAlloc d@@2 (Tclass._System.Tuple2 |#$T0@@5| |#$T1@@5|) $h@@10))
  3171. :qid |funwiths.2141:19|
  3172. :skolemid |384|
  3173. :pattern ( ($IsAlloc d@@2 (Tclass._System.Tuple2 |#$T0@@5| |#$T1@@5|) $h@@10))
  3174. )))) ($IsAllocBox (_System.Tuple2._0 d@@2) |#$T0@@5| $h@@10))
  3175. :qid |funwiths.2136:15|
  3176. :skolemid |385|
  3177. :pattern ( ($IsAllocBox (_System.Tuple2._0 d@@2) |#$T0@@5| $h@@10))
  3178. )))
  3179. (assert (forall ((d@@3 T@U) (|#$T1@@6| T@U) ($h@@11 T@U) ) (! (=> (and (and (and (= (type d@@3) DatatypeTypeType) (= (type |#$T1@@6|) TyType)) (= (type $h@@11) (MapType0Type refType MapType1Type))) (and (and ($IsGoodHeap $h@@11) (_System.Tuple2.___hMake2_q d@@3)) (exists ((|#$T0@@6| T@U) ) (! (and (= (type |#$T0@@6|) TyType) ($IsAlloc d@@3 (Tclass._System.Tuple2 |#$T0@@6| |#$T1@@6|) $h@@11))
  3180. :qid |funwiths.2152:19|
  3181. :skolemid |386|
  3182. :pattern ( ($IsAlloc d@@3 (Tclass._System.Tuple2 |#$T0@@6| |#$T1@@6|) $h@@11))
  3183. )))) ($IsAllocBox (_System.Tuple2._1 d@@3) |#$T1@@6| $h@@11))
  3184. :qid |funwiths.2147:15|
  3185. :skolemid |387|
  3186. :pattern ( ($IsAllocBox (_System.Tuple2._1 d@@3) |#$T1@@6| $h@@11))
  3187. )))
  3188. (assert (forall ((|a#4#0#0| T@U) (|a#4#1#0| T@U) ) (! (=> (and (= (type |a#4#0#0|) BoxType) (= (type |a#4#1#0|) BoxType)) (= (|#_System._tuple#2._#Make2| (Lit |a#4#0#0|) (Lit |a#4#1#0|)) (Lit (|#_System._tuple#2._#Make2| |a#4#0#0| |a#4#1#0|))))
  3189. :qid |funwiths.2158:15|
  3190. :skolemid |388|
  3191. :pattern ( (|#_System._tuple#2._#Make2| (Lit |a#4#0#0|) (Lit |a#4#1#0|)))
  3192. )))
  3193. (assert (forall ((|a#5#0#0| T@U) (|a#5#1#0| T@U) ) (! (=> (and (= (type |a#5#0#0|) BoxType) (= (type |a#5#1#0|) BoxType)) (= (_System.Tuple2._0 (|#_System._tuple#2._#Make2| |a#5#0#0| |a#5#1#0|)) |a#5#0#0|))
  3194. :qid |funwiths.2164:15|
  3195. :skolemid |389|
  3196. :pattern ( (|#_System._tuple#2._#Make2| |a#5#0#0| |a#5#1#0|))
  3197. )))
  3198. (assert (forall ((|a#6#0#0| T@U) (|a#6#1#0| T@U) ) (! (=> (and (= (type |a#6#0#0|) BoxType) (= (type |a#6#1#0|) BoxType)) (< (BoxRank |a#6#0#0|) (DtRank (|#_System._tuple#2._#Make2| |a#6#0#0| |a#6#1#0|))))
  3199. :qid |funwiths.2169:15|
  3200. :skolemid |390|
  3201. :pattern ( (|#_System._tuple#2._#Make2| |a#6#0#0| |a#6#1#0|))
  3202. )))
  3203. (assert (forall ((|a#7#0#0| T@U) (|a#7#1#0| T@U) ) (! (=> (and (= (type |a#7#0#0|) BoxType) (= (type |a#7#1#0|) BoxType)) (= (_System.Tuple2._1 (|#_System._tuple#2._#Make2| |a#7#0#0| |a#7#1#0|)) |a#7#1#0|))
  3204. :qid |funwiths.2174:15|
  3205. :skolemid |391|
  3206. :pattern ( (|#_System._tuple#2._#Make2| |a#7#0#0| |a#7#1#0|))
  3207. )))
  3208. (assert (forall ((|a#8#0#0| T@U) (|a#8#1#0| T@U) ) (! (=> (and (= (type |a#8#0#0|) BoxType) (= (type |a#8#1#0|) BoxType)) (< (BoxRank |a#8#1#0|) (DtRank (|#_System._tuple#2._#Make2| |a#8#0#0| |a#8#1#0|))))
  3209. :qid |funwiths.2179:15|
  3210. :skolemid |392|
  3211. :pattern ( (|#_System._tuple#2._#Make2| |a#8#0#0| |a#8#1#0|))
  3212. )))
  3213. (assert (forall ((d@@4 T@U) ) (! (=> (and (= (type d@@4) DatatypeTypeType) (|$IsA#_System.Tuple2| d@@4)) (_System.Tuple2.___hMake2_q d@@4))
  3214. :qid |funwiths.2187:15|
  3215. :skolemid |393|
  3216. :pattern ( (|$IsA#_System.Tuple2| d@@4))
  3217. )))
  3218. (assert (forall ((|#$T0@@7| T@U) (|#$T1@@7| T@U) (d@@5 T@U) ) (! (=> (and (and (and (= (type |#$T0@@7|) TyType) (= (type |#$T1@@7|) TyType)) (= (type d@@5) DatatypeTypeType)) ($Is d@@5 (Tclass._System.Tuple2 |#$T0@@7| |#$T1@@7|))) (_System.Tuple2.___hMake2_q d@@5))
  3219. :qid |funwiths.2192:15|
  3220. :skolemid |394|
  3221. :pattern ( (_System.Tuple2.___hMake2_q d@@5) ($Is d@@5 (Tclass._System.Tuple2 |#$T0@@7| |#$T1@@7|)))
  3222. )))
  3223. (assert (forall ((a@@85 T@U) (b@@58 T@U) ) (! (=> (and (and (= (type a@@85) DatatypeTypeType) (= (type b@@58) DatatypeTypeType)) true) (and (=> (|_System.Tuple2#Equal| a@@85 b@@58) (and (= (_System.Tuple2._0 a@@85) (_System.Tuple2._0 b@@58)) (= (_System.Tuple2._1 a@@85) (_System.Tuple2._1 b@@58)))) (=> (and (= (_System.Tuple2._0 a@@85) (_System.Tuple2._0 b@@58)) (= (_System.Tuple2._1 a@@85) (_System.Tuple2._1 b@@58))) (|_System.Tuple2#Equal| a@@85 b@@58))))
  3224. :qid |funwiths.2200:15|
  3225. :skolemid |395|
  3226. :pattern ( (|_System.Tuple2#Equal| a@@85 b@@58))
  3227. )))
  3228. (assert (forall ((a@@86 T@U) (b@@59 T@U) ) (! (=> (and (= (type a@@86) DatatypeTypeType) (= (type b@@59) DatatypeTypeType)) (and (=> (|_System.Tuple2#Equal| a@@86 b@@59) (= a@@86 b@@59)) (=> (= a@@86 b@@59) (|_System.Tuple2#Equal| a@@86 b@@59))))
  3229. :qid |funwiths.2208:15|
  3230. :skolemid |396|
  3231. :pattern ( (|_System.Tuple2#Equal| a@@86 b@@59))
  3232. )))
  3233. (assert (forall ((arg0@@118 T@U) (arg1@@49 T@U) ) (! (= (type (Tclass._System.___hFunc1 arg0@@118 arg1@@49)) TyType)
  3234. :qid |funType:Tclass._System.___hFunc1|
  3235. :pattern ( (Tclass._System.___hFunc1 arg0@@118 arg1@@49))
  3236. )))
  3237. (assert (forall ((|#$T0@@8| T@U) (|#$R@@12| T@U) ) (! (=> (and (= (type |#$T0@@8|) TyType) (= (type |#$R@@12|) TyType)) (= (Tag (Tclass._System.___hFunc1 |#$T0@@8| |#$R@@12|)) Tagclass._System.___hFunc1))
  3238. :qid |funwiths.2215:15|
  3239. :skolemid |397|
  3240. :pattern ( (Tclass._System.___hFunc1 |#$T0@@8| |#$R@@12|))
  3241. )))
  3242. (assert (forall ((arg0@@119 T@U) ) (! (= (type (Tclass._System.___hFunc1_0 arg0@@119)) TyType)
  3243. :qid |funType:Tclass._System.___hFunc1_0|
  3244. :pattern ( (Tclass._System.___hFunc1_0 arg0@@119))
  3245. )))
  3246. (assert (forall ((|#$T0@@9| T@U) (|#$R@@13| T@U) ) (! (=> (and (= (type |#$T0@@9|) TyType) (= (type |#$R@@13|) TyType)) (= (Tclass._System.___hFunc1_0 (Tclass._System.___hFunc1 |#$T0@@9| |#$R@@13|)) |#$T0@@9|))
  3247. :qid |funwiths.2222:15|
  3248. :skolemid |398|
  3249. :pattern ( (Tclass._System.___hFunc1 |#$T0@@9| |#$R@@13|))
  3250. )))
  3251. (assert (forall ((arg0@@120 T@U) ) (! (= (type (Tclass._System.___hFunc1_1 arg0@@120)) TyType)
  3252. :qid |funType:Tclass._System.___hFunc1_1|
  3253. :pattern ( (Tclass._System.___hFunc1_1 arg0@@120))
  3254. )))
  3255. (assert (forall ((|#$T0@@10| T@U) (|#$R@@14| T@U) ) (! (=> (and (= (type |#$T0@@10|) TyType) (= (type |#$R@@14|) TyType)) (= (Tclass._System.___hFunc1_1 (Tclass._System.___hFunc1 |#$T0@@10| |#$R@@14|)) |#$R@@14|))
  3256. :qid |funwiths.2229:15|
  3257. :skolemid |399|
  3258. :pattern ( (Tclass._System.___hFunc1 |#$T0@@10| |#$R@@14|))
  3259. )))
  3260. (assert (forall ((|#$T0@@11| T@U) (|#$R@@15| T@U) (bx@@45 T@U) ) (! (=> (and (and (and (= (type |#$T0@@11|) TyType) (= (type |#$R@@15|) TyType)) (= (type bx@@45) BoxType)) ($IsBox bx@@45 (Tclass._System.___hFunc1 |#$T0@@11| |#$R@@15|))) (and (= ($Box ($Unbox HandleTypeType bx@@45)) bx@@45) ($Is ($Unbox HandleTypeType bx@@45) (Tclass._System.___hFunc1 |#$T0@@11| |#$R@@15|))))
  3261. :qid |funwiths.2236:15|
  3262. :skolemid |400|
  3263. :pattern ( ($IsBox bx@@45 (Tclass._System.___hFunc1 |#$T0@@11| |#$R@@15|)))
  3264. )))
  3265. (assert (and (and (and (and (and (and (and (and (and (forall ((arg0@@121 T@T) (arg1@@50 T@T) (arg2@@9 T@T) ) (! (= (Ctor (MapType2Type arg0@@121 arg1@@50 arg2@@9)) 20)
  3266. :qid |ctor:MapType2Type|
  3267. )) (forall ((arg0@@122 T@T) (arg1@@51 T@T) (arg2@@10 T@T) ) (! (= (MapType2TypeInv0 (MapType2Type arg0@@122 arg1@@51 arg2@@10)) arg0@@122)
  3268. :qid |typeInv:MapType2TypeInv0|
  3269. :pattern ( (MapType2Type arg0@@122 arg1@@51 arg2@@10))
  3270. ))) (forall ((arg0@@123 T@T) (arg1@@52 T@T) (arg2@@11 T@T) ) (! (= (MapType2TypeInv1 (MapType2Type arg0@@123 arg1@@52 arg2@@11)) arg1@@52)
  3271. :qid |typeInv:MapType2TypeInv1|
  3272. :pattern ( (MapType2Type arg0@@123 arg1@@52 arg2@@11))
  3273. ))) (forall ((arg0@@124 T@T) (arg1@@53 T@T) (arg2@@12 T@T) ) (! (= (MapType2TypeInv2 (MapType2Type arg0@@124 arg1@@53 arg2@@12)) arg2@@12)
  3274. :qid |typeInv:MapType2TypeInv2|
  3275. :pattern ( (MapType2Type arg0@@124 arg1@@53 arg2@@12))
  3276. ))) (forall ((arg0@@125 T@U) (arg1@@54 T@U) (arg2@@13 T@U) ) (! (let ((aVar2 (MapType2TypeInv2 (type arg0@@125))))
  3277. (= (type (MapType2Select arg0@@125 arg1@@54 arg2@@13)) aVar2))
  3278. :qid |funType:MapType2Select|
  3279. :pattern ( (MapType2Select arg0@@125 arg1@@54 arg2@@13))
  3280. ))) (forall ((arg0@@126 T@U) (arg1@@55 T@U) (arg2@@14 T@U) (arg3 T@U) ) (! (let ((aVar2@@0 (type arg3)))
  3281. (let ((aVar1@@2 (type arg2@@14)))
  3282. (let ((aVar0@@0 (type arg1@@55)))
  3283. (= (type (MapType2Store arg0@@126 arg1@@55 arg2@@14 arg3)) (MapType2Type aVar0@@0 aVar1@@2 aVar2@@0)))))
  3284. :qid |funType:MapType2Store|
  3285. :pattern ( (MapType2Store arg0@@126 arg1@@55 arg2@@14 arg3))
  3286. ))) (forall ((m@@27 T@U) (x0@@5 T@U) (x1 T@U) (val@@6 T@U) ) (! (let ((aVar2@@1 (MapType2TypeInv2 (type m@@27))))
  3287. (=> (= (type val@@6) aVar2@@1) (= (MapType2Select (MapType2Store m@@27 x0@@5 x1 val@@6) x0@@5 x1) val@@6)))
  3288. :qid |mapAx0:MapType2Select|
  3289. :weight 0
  3290. ))) (and (and (forall ((val@@7 T@U) (m@@28 T@U) (x0@@6 T@U) (x1@@0 T@U) (y0@@3 T@U) (y1 T@U) ) (! (or (= x0@@6 y0@@3) (= (MapType2Select (MapType2Store m@@28 x0@@6 x1@@0 val@@7) y0@@3 y1) (MapType2Select m@@28 y0@@3 y1)))
  3291. :qid |mapAx1:MapType2Select:0|
  3292. :weight 0
  3293. )) (forall ((val@@8 T@U) (m@@29 T@U) (x0@@7 T@U) (x1@@1 T@U) (y0@@4 T@U) (y1@@0 T@U) ) (! (or (= x1@@1 y1@@0) (= (MapType2Select (MapType2Store m@@29 x0@@7 x1@@1 val@@8) y0@@4 y1@@0) (MapType2Select m@@29 y0@@4 y1@@0)))
  3294. :qid |mapAx1:MapType2Select:1|
  3295. :weight 0
  3296. ))) (forall ((val@@9 T@U) (m@@30 T@U) (x0@@8 T@U) (x1@@2 T@U) (y0@@5 T@U) (y1@@1 T@U) ) (! (or true (= (MapType2Select (MapType2Store m@@30 x0@@8 x1@@2 val@@9) y0@@5 y1@@1) (MapType2Select m@@30 y0@@5 y1@@1)))
  3297. :qid |mapAx2:MapType2Select|
  3298. :weight 0
  3299. )))) (forall ((arg0@@127 T@U) (arg1@@56 T@U) (arg2@@15 T@U) (arg3@@0 T@U) (arg4 T@U) ) (! (= (type (Apply1 arg0@@127 arg1@@56 arg2@@15 arg3@@0 arg4)) BoxType)
  3300. :qid |funType:Apply1|
  3301. :pattern ( (Apply1 arg0@@127 arg1@@56 arg2@@15 arg3@@0 arg4))
  3302. ))) (forall ((arg0@@128 T@U) (arg1@@57 T@U) (arg2@@16 T@U) ) (! (= (type (Handle1 arg0@@128 arg1@@57 arg2@@16)) HandleTypeType)
  3303. :qid |funType:Handle1|
  3304. :pattern ( (Handle1 arg0@@128 arg1@@57 arg2@@16))
  3305. ))))
  3306. (assert (forall ((t0@@27 T@U) (t1@@3 T@U) (heap@@4 T@U) (h@@27 T@U) (r@@11 T@U) (rd@@2 T@U) (bx0 T@U) ) (! (=> (and (and (and (and (and (and (= (type t0@@27) TyType) (= (type t1@@3) TyType)) (= (type heap@@4) (MapType0Type refType MapType1Type))) (= (type h@@27) (MapType2Type (MapType0Type refType MapType1Type) BoxType BoxType))) (= (type r@@11) (MapType2Type (MapType0Type refType MapType1Type) BoxType boolType))) (= (type rd@@2) (MapType2Type (MapType0Type refType MapType1Type) BoxType (MapType0Type BoxType boolType)))) (= (type bx0) BoxType)) (= (Apply1 t0@@27 t1@@3 heap@@4 (Handle1 h@@27 r@@11 rd@@2) bx0) (MapType2Select h@@27 heap@@4 bx0)))
  3307. :qid |funwiths.2250:15|
  3308. :skolemid |401|
  3309. :pattern ( (Apply1 t0@@27 t1@@3 heap@@4 (Handle1 h@@27 r@@11 rd@@2) bx0))
  3310. )))
  3311. (assert (forall ((t0@@28 T@U) (t1@@4 T@U) (heap@@5 T@U) (h@@28 T@U) (r@@12 T@U) (rd@@3 T@U) (bx0@@0 T@U) ) (! (=> (and (and (and (and (and (and (and (= (type t0@@28) TyType) (= (type t1@@4) TyType)) (= (type heap@@5) (MapType0Type refType MapType1Type))) (= (type h@@28) (MapType2Type (MapType0Type refType MapType1Type) BoxType BoxType))) (= (type r@@12) (MapType2Type (MapType0Type refType MapType1Type) BoxType boolType))) (= (type rd@@3) (MapType2Type (MapType0Type refType MapType1Type) BoxType (MapType0Type BoxType boolType)))) (= (type bx0@@0) BoxType)) (U_2_bool (MapType2Select r@@12 heap@@5 bx0@@0))) (Requires1 t0@@28 t1@@4 heap@@5 (Handle1 h@@28 r@@12 rd@@3) bx0@@0))
  3312. :qid |funwiths.2260:15|
  3313. :skolemid |402|
  3314. :pattern ( (Requires1 t0@@28 t1@@4 heap@@5 (Handle1 h@@28 r@@12 rd@@3) bx0@@0))
  3315. )))
  3316. (assert (forall ((arg0@@129 T@U) (arg1@@58 T@U) (arg2@@17 T@U) (arg3@@1 T@U) (arg4@@0 T@U) ) (! (= (type (Reads1 arg0@@129 arg1@@58 arg2@@17 arg3@@1 arg4@@0)) (MapType0Type BoxType boolType))
  3317. :qid |funType:Reads1|
  3318. :pattern ( (Reads1 arg0@@129 arg1@@58 arg2@@17 arg3@@1 arg4@@0))
  3319. )))
  3320. (assert (forall ((t0@@29 T@U) (t1@@5 T@U) (heap@@6 T@U) (h@@29 T@U) (r@@13 T@U) (rd@@4 T@U) (bx0@@1 T@U) (bx@@46 T@U) ) (! (=> (and (and (and (and (and (and (and (= (type t0@@29) TyType) (= (type t1@@5) TyType)) (= (type heap@@6) (MapType0Type refType MapType1Type))) (= (type h@@29) (MapType2Type (MapType0Type refType MapType1Type) BoxType BoxType))) (= (type r@@13) (MapType2Type (MapType0Type refType MapType1Type) BoxType boolType))) (= (type rd@@4) (MapType2Type (MapType0Type refType MapType1Type) BoxType (MapType0Type BoxType boolType)))) (= (type bx0@@1) BoxType)) (= (type bx@@46) BoxType)) (and (=> (U_2_bool (MapType0Select (Reads1 t0@@29 t1@@5 heap@@6 (Handle1 h@@29 r@@13 rd@@4) bx0@@1) bx@@46)) (U_2_bool (MapType0Select (MapType2Select rd@@4 heap@@6 bx0@@1) bx@@46))) (=> (U_2_bool (MapType0Select (MapType2Select rd@@4 heap@@6 bx0@@1) bx@@46)) (U_2_bool (MapType0Select (Reads1 t0@@29 t1@@5 heap@@6 (Handle1 h@@29 r@@13 rd@@4) bx0@@1) bx@@46)))))
  3321. :qid |funwiths.2270:15|
  3322. :skolemid |403|
  3323. :pattern ( (MapType0Select (Reads1 t0@@29 t1@@5 heap@@6 (Handle1 h@@29 r@@13 rd@@4) bx0@@1) bx@@46))
  3324. )))
  3325. (assert (forall ((t0@@30 T@U) (t1@@6 T@U) (h0@@6 T@U) (h1@@6 T@U) (f@@15 T@U) (bx0@@2 T@U) ) (! (=> (and (and (and (and (and (and (= (type t0@@30) TyType) (= (type t1@@6) TyType)) (= (type h0@@6) (MapType0Type refType MapType1Type))) (= (type h1@@6) (MapType0Type refType MapType1Type))) (= (type f@@15) HandleTypeType)) (= (type bx0@@2) BoxType)) (and (and (and (and (and ($HeapSucc h0@@6 h1@@6) ($IsGoodHeap h0@@6)) ($IsGoodHeap h1@@6)) ($IsBox bx0@@2 t0@@30)) ($Is f@@15 (Tclass._System.___hFunc1 t0@@30 t1@@6))) (forall ((o@@61 T@U) (fld@@5 T@U) ) (! (let ((a@@87 (FieldTypeInv0 (type fld@@5))))
  3326. (=> (and (and (= (type o@@61) refType) (= (type fld@@5) (FieldType a@@87))) (and (not (= o@@61 null)) (U_2_bool (MapType0Select (Reads1 t0@@30 t1@@6 h0@@6 f@@15 bx0@@2) ($Box o@@61))))) (= (MapType1Select (MapType0Select h0@@6 o@@61) fld@@5) (MapType1Select (MapType0Select h1@@6 o@@61) fld@@5))))
  3327. :qid |funwiths.2301:22|
  3328. :skolemid |404|
  3329. :no-pattern (type o@@61)
  3330. :no-pattern (type fld@@5)
  3331. :no-pattern (U_2_int o@@61)
  3332. :no-pattern (U_2_bool o@@61)
  3333. :no-pattern (U_2_int fld@@5)
  3334. :no-pattern (U_2_bool fld@@5)
  3335. )))) (= (Reads1 t0@@30 t1@@6 h0@@6 f@@15 bx0@@2) (Reads1 t0@@30 t1@@6 h1@@6 f@@15 bx0@@2)))
  3336. :qid |funwiths.2292:15|
  3337. :skolemid |405|
  3338. :pattern ( ($HeapSucc h0@@6 h1@@6) (Reads1 t0@@30 t1@@6 h1@@6 f@@15 bx0@@2))
  3339. )))
  3340. (assert (forall ((t0@@31 T@U) (t1@@7 T@U) (h0@@7 T@U) (h1@@7 T@U) (f@@16 T@U) (bx0@@3 T@U) ) (! (=> (and (and (and (and (and (and (= (type t0@@31) TyType) (= (type t1@@7) TyType)) (= (type h0@@7) (MapType0Type refType MapType1Type))) (= (type h1@@7) (MapType0Type refType MapType1Type))) (= (type f@@16) HandleTypeType)) (= (type bx0@@3) BoxType)) (and (and (and (and (and ($HeapSucc h0@@7 h1@@7) ($IsGoodHeap h0@@7)) ($IsGoodHeap h1@@7)) ($IsBox bx0@@3 t0@@31)) ($Is f@@16 (Tclass._System.___hFunc1 t0@@31 t1@@7))) (forall ((o@@62 T@U) (fld@@6 T@U) ) (! (let ((a@@88 (FieldTypeInv0 (type fld@@6))))
  3341. (=> (and (and (= (type o@@62) refType) (= (type fld@@6) (FieldType a@@88))) (and (not (= o@@62 null)) (U_2_bool (MapType0Select (Reads1 t0@@31 t1@@7 h1@@7 f@@16 bx0@@3) ($Box o@@62))))) (= (MapType1Select (MapType0Select h0@@7 o@@62) fld@@6) (MapType1Select (MapType0Select h1@@7 o@@62) fld@@6))))
  3342. :qid |funwiths.2316:22|
  3343. :skolemid |406|
  3344. :no-pattern (type o@@62)
  3345. :no-pattern (type fld@@6)
  3346. :no-pattern (U_2_int o@@62)
  3347. :no-pattern (U_2_bool o@@62)
  3348. :no-pattern (U_2_int fld@@6)
  3349. :no-pattern (U_2_bool fld@@6)
  3350. )))) (= (Reads1 t0@@31 t1@@7 h0@@7 f@@16 bx0@@3) (Reads1 t0@@31 t1@@7 h1@@7 f@@16 bx0@@3)))
  3351. :qid |funwiths.2307:15|
  3352. :skolemid |407|
  3353. :pattern ( ($HeapSucc h0@@7 h1@@7) (Reads1 t0@@31 t1@@7 h1@@7 f@@16 bx0@@3))
  3354. )))
  3355. (assert (forall ((t0@@32 T@U) (t1@@8 T@U) (h0@@8 T@U) (h1@@8 T@U) (f@@17 T@U) (bx0@@4 T@U) ) (! (=> (and (and (and (and (and (and (= (type t0@@32) TyType) (= (type t1@@8) TyType)) (= (type h0@@8) (MapType0Type refType MapType1Type))) (= (type h1@@8) (MapType0Type refType MapType1Type))) (= (type f@@17) HandleTypeType)) (= (type bx0@@4) BoxType)) (and (and (and (and (and ($HeapSucc h0@@8 h1@@8) ($IsGoodHeap h0@@8)) ($IsGoodHeap h1@@8)) ($IsBox bx0@@4 t0@@32)) ($Is f@@17 (Tclass._System.___hFunc1 t0@@32 t1@@8))) (forall ((o@@63 T@U) (fld@@7 T@U) ) (! (let ((a@@89 (FieldTypeInv0 (type fld@@7))))
  3356. (=> (and (and (= (type o@@63) refType) (= (type fld@@7) (FieldType a@@89))) (and (not (= o@@63 null)) (U_2_bool (MapType0Select (Reads1 t0@@32 t1@@8 h0@@8 f@@17 bx0@@4) ($Box o@@63))))) (= (MapType1Select (MapType0Select h0@@8 o@@63) fld@@7) (MapType1Select (MapType0Select h1@@8 o@@63) fld@@7))))
  3357. :qid |funwiths.2331:22|
  3358. :skolemid |408|
  3359. :no-pattern (type o@@63)
  3360. :no-pattern (type fld@@7)
  3361. :no-pattern (U_2_int o@@63)
  3362. :no-pattern (U_2_bool o@@63)
  3363. :no-pattern (U_2_int fld@@7)
  3364. :no-pattern (U_2_bool fld@@7)
  3365. )))) (and (=> (Requires1 t0@@32 t1@@8 h0@@8 f@@17 bx0@@4) (Requires1 t0@@32 t1@@8 h1@@8 f@@17 bx0@@4)) (=> (Requires1 t0@@32 t1@@8 h1@@8 f@@17 bx0@@4) (Requires1 t0@@32 t1@@8 h0@@8 f@@17 bx0@@4))))
  3366. :qid |funwiths.2322:15|
  3367. :skolemid |409|
  3368. :pattern ( ($HeapSucc h0@@8 h1@@8) (Requires1 t0@@32 t1@@8 h1@@8 f@@17 bx0@@4))
  3369. )))
  3370. (assert (forall ((t0@@33 T@U) (t1@@9 T@U) (h0@@9 T@U) (h1@@9 T@U) (f@@18 T@U) (bx0@@5 T@U) ) (! (=> (and (and (and (and (and (and (= (type t0@@33) TyType) (= (type t1@@9) TyType)) (= (type h0@@9) (MapType0Type refType MapType1Type))) (= (type h1@@9) (MapType0Type refType MapType1Type))) (= (type f@@18) HandleTypeType)) (= (type bx0@@5) BoxType)) (and (and (and (and (and ($HeapSucc h0@@9 h1@@9) ($IsGoodHeap h0@@9)) ($IsGoodHeap h1@@9)) ($IsBox bx0@@5 t0@@33)) ($Is f@@18 (Tclass._System.___hFunc1 t0@@33 t1@@9))) (forall ((o@@64 T@U) (fld@@8 T@U) ) (! (let ((a@@90 (FieldTypeInv0 (type fld@@8))))
  3371. (=> (and (and (= (type o@@64) refType) (= (type fld@@8) (FieldType a@@90))) (and (not (= o@@64 null)) (U_2_bool (MapType0Select (Reads1 t0@@33 t1@@9 h1@@9 f@@18 bx0@@5) ($Box o@@64))))) (= (MapType1Select (MapType0Select h0@@9 o@@64) fld@@8) (MapType1Select (MapType0Select h1@@9 o@@64) fld@@8))))
  3372. :qid |funwiths.2346:22|
  3373. :skolemid |410|
  3374. :no-pattern (type o@@64)
  3375. :no-pattern (type fld@@8)
  3376. :no-pattern (U_2_int o@@64)
  3377. :no-pattern (U_2_bool o@@64)
  3378. :no-pattern (U_2_int fld@@8)
  3379. :no-pattern (U_2_bool fld@@8)
  3380. )))) (and (=> (Requires1 t0@@33 t1@@9 h0@@9 f@@18 bx0@@5) (Requires1 t0@@33 t1@@9 h1@@9 f@@18 bx0@@5)) (=> (Requires1 t0@@33 t1@@9 h1@@9 f@@18 bx0@@5) (Requires1 t0@@33 t1@@9 h0@@9 f@@18 bx0@@5))))
  3381. :qid |funwiths.2337:15|
  3382. :skolemid |411|
  3383. :pattern ( ($HeapSucc h0@@9 h1@@9) (Requires1 t0@@33 t1@@9 h1@@9 f@@18 bx0@@5))
  3384. )))
  3385. (assert (forall ((t0@@34 T@U) (t1@@10 T@U) (h0@@10 T@U) (h1@@10 T@U) (f@@19 T@U) (bx0@@6 T@U) ) (! (=> (and (and (and (and (and (and (= (type t0@@34) TyType) (= (type t1@@10) TyType)) (= (type h0@@10) (MapType0Type refType MapType1Type))) (= (type h1@@10) (MapType0Type refType MapType1Type))) (= (type f@@19) HandleTypeType)) (= (type bx0@@6) BoxType)) (and (and (and (and (and ($HeapSucc h0@@10 h1@@10) ($IsGoodHeap h0@@10)) ($IsGoodHeap h1@@10)) ($IsBox bx0@@6 t0@@34)) ($Is f@@19 (Tclass._System.___hFunc1 t0@@34 t1@@10))) (forall ((o@@65 T@U) (fld@@9 T@U) ) (! (let ((a@@91 (FieldTypeInv0 (type fld@@9))))
  3386. (=> (and (and (= (type o@@65) refType) (= (type fld@@9) (FieldType a@@91))) (and (not (= o@@65 null)) (U_2_bool (MapType0Select (Reads1 t0@@34 t1@@10 h0@@10 f@@19 bx0@@6) ($Box o@@65))))) (= (MapType1Select (MapType0Select h0@@10 o@@65) fld@@9) (MapType1Select (MapType0Select h1@@10 o@@65) fld@@9))))
  3387. :qid |funwiths.2361:22|
  3388. :skolemid |412|
  3389. :no-pattern (type o@@65)
  3390. :no-pattern (type fld@@9)
  3391. :no-pattern (U_2_int o@@65)
  3392. :no-pattern (U_2_bool o@@65)
  3393. :no-pattern (U_2_int fld@@9)
  3394. :no-pattern (U_2_bool fld@@9)
  3395. )))) (= (Apply1 t0@@34 t1@@10 h0@@10 f@@19 bx0@@6) (Apply1 t0@@34 t1@@10 h1@@10 f@@19 bx0@@6)))
  3396. :qid |funwiths.2352:15|
  3397. :skolemid |413|
  3398. :pattern ( ($HeapSucc h0@@10 h1@@10) (Apply1 t0@@34 t1@@10 h1@@10 f@@19 bx0@@6))
  3399. )))
  3400. (assert (forall ((t0@@35 T@U) (t1@@11 T@U) (h0@@11 T@U) (h1@@11 T@U) (f@@20 T@U) (bx0@@7 T@U) ) (! (=> (and (and (and (and (and (and (= (type t0@@35) TyType) (= (type t1@@11) TyType)) (= (type h0@@11) (MapType0Type refType MapType1Type))) (= (type h1@@11) (MapType0Type refType MapType1Type))) (= (type f@@20) HandleTypeType)) (= (type bx0@@7) BoxType)) (and (and (and (and (and ($HeapSucc h0@@11 h1@@11) ($IsGoodHeap h0@@11)) ($IsGoodHeap h1@@11)) ($IsBox bx0@@7 t0@@35)) ($Is f@@20 (Tclass._System.___hFunc1 t0@@35 t1@@11))) (forall ((o@@66 T@U) (fld@@10 T@U) ) (! (let ((a@@92 (FieldTypeInv0 (type fld@@10))))
  3401. (=> (and (and (= (type o@@66) refType) (= (type fld@@10) (FieldType a@@92))) (and (not (= o@@66 null)) (U_2_bool (MapType0Select (Reads1 t0@@35 t1@@11 h1@@11 f@@20 bx0@@7) ($Box o@@66))))) (= (MapType1Select (MapType0Select h0@@11 o@@66) fld@@10) (MapType1Select (MapType0Select h1@@11 o@@66) fld@@10))))
  3402. :qid |funwiths.2376:22|
  3403. :skolemid |414|
  3404. :no-pattern (type o@@66)
  3405. :no-pattern (type fld@@10)
  3406. :no-pattern (U_2_int o@@66)
  3407. :no-pattern (U_2_bool o@@66)
  3408. :no-pattern (U_2_int fld@@10)
  3409. :no-pattern (U_2_bool fld@@10)
  3410. )))) (= (Apply1 t0@@35 t1@@11 h0@@11 f@@20 bx0@@7) (Apply1 t0@@35 t1@@11 h1@@11 f@@20 bx0@@7)))
  3411. :qid |funwiths.2367:15|
  3412. :skolemid |415|
  3413. :pattern ( ($HeapSucc h0@@11 h1@@11) (Apply1 t0@@35 t1@@11 h1@@11 f@@20 bx0@@7))
  3414. )))
  3415. (assert (forall ((t0@@36 T@U) (t1@@12 T@U) (heap@@7 T@U) (f@@21 T@U) (bx0@@8 T@U) ) (! (=> (and (and (and (and (and (= (type t0@@36) TyType) (= (type t1@@12) TyType)) (= (type heap@@7) (MapType0Type refType MapType1Type))) (= (type f@@21) HandleTypeType)) (= (type bx0@@8) BoxType)) (and (and ($IsGoodHeap heap@@7) ($IsBox bx0@@8 t0@@36)) ($Is f@@21 (Tclass._System.___hFunc1 t0@@36 t1@@12)))) (and (=> (|Set#Equal| (Reads1 t0@@36 t1@@12 $OneHeap f@@21 bx0@@8) (|Set#Empty| BoxType)) (|Set#Equal| (Reads1 t0@@36 t1@@12 heap@@7 f@@21 bx0@@8) (|Set#Empty| BoxType))) (=> (|Set#Equal| (Reads1 t0@@36 t1@@12 heap@@7 f@@21 bx0@@8) (|Set#Empty| BoxType)) (|Set#Equal| (Reads1 t0@@36 t1@@12 $OneHeap f@@21 bx0@@8) (|Set#Empty| BoxType)))))
  3416. :qid |funwiths.2382:15|
  3417. :skolemid |416|
  3418. :pattern ( (Reads1 t0@@36 t1@@12 $OneHeap f@@21 bx0@@8) ($IsGoodHeap heap@@7))
  3419. :pattern ( (Reads1 t0@@36 t1@@12 heap@@7 f@@21 bx0@@8))
  3420. )))
  3421. (assert (forall ((t0@@37 T@U) (t1@@13 T@U) (heap@@8 T@U) (f@@22 T@U) (bx0@@9 T@U) ) (! (=> (and (and (and (and (and (= (type t0@@37) TyType) (= (type t1@@13) TyType)) (= (type heap@@8) (MapType0Type refType MapType1Type))) (= (type f@@22) HandleTypeType)) (= (type bx0@@9) BoxType)) (and (and (and ($IsGoodHeap heap@@8) ($IsBox bx0@@9 t0@@37)) ($Is f@@22 (Tclass._System.___hFunc1 t0@@37 t1@@13))) (|Set#Equal| (Reads1 t0@@37 t1@@13 $OneHeap f@@22 bx0@@9) (|Set#Empty| BoxType)))) (and (=> (Requires1 t0@@37 t1@@13 $OneHeap f@@22 bx0@@9) (Requires1 t0@@37 t1@@13 heap@@8 f@@22 bx0@@9)) (=> (Requires1 t0@@37 t1@@13 heap@@8 f@@22 bx0@@9) (Requires1 t0@@37 t1@@13 $OneHeap f@@22 bx0@@9))))
  3422. :qid |funwiths.2390:15|
  3423. :skolemid |417|
  3424. :pattern ( (Requires1 t0@@37 t1@@13 $OneHeap f@@22 bx0@@9) ($IsGoodHeap heap@@8))
  3425. :pattern ( (Requires1 t0@@37 t1@@13 heap@@8 f@@22 bx0@@9))
  3426. )))
  3427. (assert (forall ((f@@23 T@U) (t0@@38 T@U) (t1@@14 T@U) ) (! (=> (and (and (= (type f@@23) HandleTypeType) (= (type t0@@38) TyType)) (= (type t1@@14) TyType)) (and (=> ($Is f@@23 (Tclass._System.___hFunc1 t0@@38 t1@@14)) (forall ((h@@30 T@U) (bx0@@10 T@U) ) (! (=> (and (= (type h@@30) (MapType0Type refType MapType1Type)) (= (type bx0@@10) BoxType)) (=> (and (and ($IsGoodHeap h@@30) ($IsBox bx0@@10 t0@@38)) (Requires1 t0@@38 t1@@14 h@@30 f@@23 bx0@@10)) ($IsBox (Apply1 t0@@38 t1@@14 h@@30 f@@23 bx0@@10) t1@@14)))
  3428. :qid |funwiths.2403:19|
  3429. :skolemid |418|
  3430. :pattern ( (Apply1 t0@@38 t1@@14 h@@30 f@@23 bx0@@10))
  3431. ))) (=> (forall ((h@@31 T@U) (bx0@@11 T@U) ) (! (=> (and (= (type h@@31) (MapType0Type refType MapType1Type)) (= (type bx0@@11) BoxType)) (=> (and (and ($IsGoodHeap h@@31) ($IsBox bx0@@11 t0@@38)) (Requires1 t0@@38 t1@@14 h@@31 f@@23 bx0@@11)) ($IsBox (Apply1 t0@@38 t1@@14 h@@31 f@@23 bx0@@11) t1@@14)))
  3432. :qid |funwiths.2403:19|
  3433. :skolemid |418|
  3434. :pattern ( (Apply1 t0@@38 t1@@14 h@@31 f@@23 bx0@@11))
  3435. )) ($Is f@@23 (Tclass._System.___hFunc1 t0@@38 t1@@14)))))
  3436. :qid |funwiths.2400:15|
  3437. :skolemid |419|
  3438. :pattern ( ($Is f@@23 (Tclass._System.___hFunc1 t0@@38 t1@@14)))
  3439. )))
  3440. (assert (forall ((f@@24 T@U) (t0@@39 T@U) (t1@@15 T@U) (u0@@0 T@U) (u1 T@U) ) (! (=> (and (and (and (and (and (= (type f@@24) HandleTypeType) (= (type t0@@39) TyType)) (= (type t1@@15) TyType)) (= (type u0@@0) TyType)) (= (type u1) TyType)) (and (and ($Is f@@24 (Tclass._System.___hFunc1 t0@@39 t1@@15)) (forall ((bx@@47 T@U) ) (! (=> (and (= (type bx@@47) BoxType) ($IsBox bx@@47 u0@@0)) ($IsBox bx@@47 t0@@39))
  3441. :qid |funwiths.2411:19|
  3442. :skolemid |420|
  3443. :pattern ( ($IsBox bx@@47 u0@@0))
  3444. :pattern ( ($IsBox bx@@47 t0@@39))
  3445. ))) (forall ((bx@@48 T@U) ) (! (=> (and (= (type bx@@48) BoxType) ($IsBox bx@@48 t1@@15)) ($IsBox bx@@48 u1))
  3446. :qid |funwiths.2414:19|
  3447. :skolemid |421|
  3448. :pattern ( ($IsBox bx@@48 t1@@15))
  3449. :pattern ( ($IsBox bx@@48 u1))
  3450. )))) ($Is f@@24 (Tclass._System.___hFunc1 u0@@0 u1)))
  3451. :qid |funwiths.2408:15|
  3452. :skolemid |422|
  3453. :pattern ( ($Is f@@24 (Tclass._System.___hFunc1 t0@@39 t1@@15)) ($Is f@@24 (Tclass._System.___hFunc1 u0@@0 u1)))
  3454. )))
  3455. (assert (forall ((f@@25 T@U) (t0@@40 T@U) (t1@@16 T@U) (h@@32 T@U) ) (! (=> (and (and (and (and (= (type f@@25) HandleTypeType) (= (type t0@@40) TyType)) (= (type t1@@16) TyType)) (= (type h@@32) (MapType0Type refType MapType1Type))) ($IsGoodHeap h@@32)) (and (=> ($IsAlloc f@@25 (Tclass._System.___hFunc1 t0@@40 t1@@16) h@@32) (forall ((bx0@@12 T@U) ) (! (=> (= (type bx0@@12) BoxType) (=> (and (and ($IsBox bx0@@12 t0@@40) ($IsAllocBox bx0@@12 t0@@40 h@@32)) (Requires1 t0@@40 t1@@16 h@@32 f@@25 bx0@@12)) (forall ((r@@14 T@U) ) (! (=> (= (type r@@14) refType) (=> (and (not (= r@@14 null)) (U_2_bool (MapType0Select (Reads1 t0@@40 t1@@16 h@@32 f@@25 bx0@@12) ($Box r@@14)))) (U_2_bool (MapType1Select (MapType0Select h@@32 r@@14) alloc))))
  3456. :qid |funwiths.2426:24|
  3457. :skolemid |423|
  3458. :pattern ( (MapType0Select (Reads1 t0@@40 t1@@16 h@@32 f@@25 bx0@@12) ($Box r@@14)))
  3459. ))))
  3460. :qid |funwiths.2423:21|
  3461. :skolemid |424|
  3462. :pattern ( (Apply1 t0@@40 t1@@16 h@@32 f@@25 bx0@@12))
  3463. :pattern ( (Reads1 t0@@40 t1@@16 h@@32 f@@25 bx0@@12))
  3464. ))) (=> (forall ((bx0@@13 T@U) ) (! (=> (= (type bx0@@13) BoxType) (=> (and (and ($IsBox bx0@@13 t0@@40) ($IsAllocBox bx0@@13 t0@@40 h@@32)) (Requires1 t0@@40 t1@@16 h@@32 f@@25 bx0@@13)) (forall ((r@@15 T@U) ) (! (=> (= (type r@@15) refType) (=> (and (not (= r@@15 null)) (U_2_bool (MapType0Select (Reads1 t0@@40 t1@@16 h@@32 f@@25 bx0@@13) ($Box r@@15)))) (U_2_bool (MapType1Select (MapType0Select h@@32 r@@15) alloc))))
  3465. :qid |funwiths.2426:24|
  3466. :skolemid |423|
  3467. :pattern ( (MapType0Select (Reads1 t0@@40 t1@@16 h@@32 f@@25 bx0@@13) ($Box r@@15)))
  3468. ))))
  3469. :qid |funwiths.2423:21|
  3470. :skolemid |424|
  3471. :pattern ( (Apply1 t0@@40 t1@@16 h@@32 f@@25 bx0@@13))
  3472. :pattern ( (Reads1 t0@@40 t1@@16 h@@32 f@@25 bx0@@13))
  3473. )) ($IsAlloc f@@25 (Tclass._System.___hFunc1 t0@@40 t1@@16) h@@32))))
  3474. :qid |funwiths.2419:15|
  3475. :skolemid |425|
  3476. :pattern ( ($IsAlloc f@@25 (Tclass._System.___hFunc1 t0@@40 t1@@16) h@@32))
  3477. )))
  3478. (assert (forall ((f@@26 T@U) (t0@@41 T@U) (t1@@17 T@U) (h@@33 T@U) ) (! (=> (and (and (and (and (= (type f@@26) HandleTypeType) (= (type t0@@41) TyType)) (= (type t1@@17) TyType)) (= (type h@@33) (MapType0Type refType MapType1Type))) (and ($IsGoodHeap h@@33) ($IsAlloc f@@26 (Tclass._System.___hFunc1 t0@@41 t1@@17) h@@33))) (forall ((bx0@@14 T@U) ) (! (=> (= (type bx0@@14) BoxType) (=> (and ($IsAllocBox bx0@@14 t0@@41 h@@33) (Requires1 t0@@41 t1@@17 h@@33 f@@26 bx0@@14)) ($IsAllocBox (Apply1 t0@@41 t1@@17 h@@33 f@@26 bx0@@14) t1@@17 h@@33)))
  3479. :qid |funwiths.2433:18|
  3480. :skolemid |426|
  3481. :pattern ( (Apply1 t0@@41 t1@@17 h@@33 f@@26 bx0@@14))
  3482. )))
  3483. :qid |funwiths.2430:15|
  3484. :skolemid |427|
  3485. :pattern ( ($IsAlloc f@@26 (Tclass._System.___hFunc1 t0@@41 t1@@17) h@@33))
  3486. )))
  3487. (assert (forall ((arg0@@130 T@U) (arg1@@59 T@U) ) (! (= (type (Tclass._System.___hPartialFunc1 arg0@@130 arg1@@59)) TyType)
  3488. :qid |funType:Tclass._System.___hPartialFunc1|
  3489. :pattern ( (Tclass._System.___hPartialFunc1 arg0@@130 arg1@@59))
  3490. )))
  3491. (assert (forall ((|#$T0@@12| T@U) (|#$R@@16| T@U) ) (! (=> (and (= (type |#$T0@@12|) TyType) (= (type |#$R@@16|) TyType)) (= (Tag (Tclass._System.___hPartialFunc1 |#$T0@@12| |#$R@@16|)) Tagclass._System.___hPartialFunc1))
  3492. :qid |funwiths.2441:15|
  3493. :skolemid |428|
  3494. :pattern ( (Tclass._System.___hPartialFunc1 |#$T0@@12| |#$R@@16|))
  3495. )))
  3496. (assert (forall ((arg0@@131 T@U) ) (! (= (type (Tclass._System.___hPartialFunc1_0 arg0@@131)) TyType)
  3497. :qid |funType:Tclass._System.___hPartialFunc1_0|
  3498. :pattern ( (Tclass._System.___hPartialFunc1_0 arg0@@131))
  3499. )))
  3500. (assert (forall ((|#$T0@@13| T@U) (|#$R@@17| T@U) ) (! (=> (and (= (type |#$T0@@13|) TyType) (= (type |#$R@@17|) TyType)) (= (Tclass._System.___hPartialFunc1_0 (Tclass._System.___hPartialFunc1 |#$T0@@13| |#$R@@17|)) |#$T0@@13|))
  3501. :qid |funwiths.2449:15|
  3502. :skolemid |429|
  3503. :pattern ( (Tclass._System.___hPartialFunc1 |#$T0@@13| |#$R@@17|))
  3504. )))
  3505. (assert (forall ((arg0@@132 T@U) ) (! (= (type (Tclass._System.___hPartialFunc1_1 arg0@@132)) TyType)
  3506. :qid |funType:Tclass._System.___hPartialFunc1_1|
  3507. :pattern ( (Tclass._System.___hPartialFunc1_1 arg0@@132))
  3508. )))
  3509. (assert (forall ((|#$T0@@14| T@U) (|#$R@@18| T@U) ) (! (=> (and (= (type |#$T0@@14|) TyType) (= (type |#$R@@18|) TyType)) (= (Tclass._System.___hPartialFunc1_1 (Tclass._System.___hPartialFunc1 |#$T0@@14| |#$R@@18|)) |#$R@@18|))
  3510. :qid |funwiths.2457:15|
  3511. :skolemid |430|
  3512. :pattern ( (Tclass._System.___hPartialFunc1 |#$T0@@14| |#$R@@18|))
  3513. )))
  3514. (assert (forall ((|#$T0@@15| T@U) (|#$R@@19| T@U) (bx@@49 T@U) ) (! (=> (and (and (and (= (type |#$T0@@15|) TyType) (= (type |#$R@@19|) TyType)) (= (type bx@@49) BoxType)) ($IsBox bx@@49 (Tclass._System.___hPartialFunc1 |#$T0@@15| |#$R@@19|))) (and (= ($Box ($Unbox HandleTypeType bx@@49)) bx@@49) ($Is ($Unbox HandleTypeType bx@@49) (Tclass._System.___hPartialFunc1 |#$T0@@15| |#$R@@19|))))
  3515. :qid |funwiths.2465:15|
  3516. :skolemid |431|
  3517. :pattern ( ($IsBox bx@@49 (Tclass._System.___hPartialFunc1 |#$T0@@15| |#$R@@19|)))
  3518. )))
  3519. (assert (forall ((|#$T0@@16| T@U) (|#$R@@20| T@U) (|f#0@@3| T@U) ) (! (=> (and (and (= (type |#$T0@@16|) TyType) (= (type |#$R@@20|) TyType)) (= (type |f#0@@3|) HandleTypeType)) (and (=> ($Is |f#0@@3| (Tclass._System.___hPartialFunc1 |#$T0@@16| |#$R@@20|)) (and ($Is |f#0@@3| (Tclass._System.___hFunc1 |#$T0@@16| |#$R@@20|)) (forall ((|x0#0| T@U) ) (! (=> (and (= (type |x0#0|) BoxType) ($IsBox |x0#0| |#$T0@@16|)) (|Set#Equal| (Reads1 |#$T0@@16| |#$R@@20| $OneHeap |f#0@@3| |x0#0|) (|Set#Empty| BoxType)))
  3520. :qid |funwiths.2476:19|
  3521. :skolemid |432|
  3522. :no-pattern (type |x0#0|)
  3523. :no-pattern (U_2_int |x0#0|)
  3524. :no-pattern (U_2_bool |x0#0|)
  3525. )))) (=> (and ($Is |f#0@@3| (Tclass._System.___hFunc1 |#$T0@@16| |#$R@@20|)) (forall ((|x0#0@@0| T@U) ) (! (=> (and (= (type |x0#0@@0|) BoxType) ($IsBox |x0#0@@0| |#$T0@@16|)) (|Set#Equal| (Reads1 |#$T0@@16| |#$R@@20| $OneHeap |f#0@@3| |x0#0@@0|) (|Set#Empty| BoxType)))
  3526. :qid |funwiths.2476:19|
  3527. :skolemid |432|
  3528. :no-pattern (type |x0#0@@0|)
  3529. :no-pattern (U_2_int |x0#0@@0|)
  3530. :no-pattern (U_2_bool |x0#0@@0|)
  3531. ))) ($Is |f#0@@3| (Tclass._System.___hPartialFunc1 |#$T0@@16| |#$R@@20|)))))
  3532. :qid |funwiths.2472:15|
  3533. :skolemid |433|
  3534. :pattern ( ($Is |f#0@@3| (Tclass._System.___hPartialFunc1 |#$T0@@16| |#$R@@20|)))
  3535. )))
  3536. (assert (forall ((|#$T0@@17| T@U) (|#$R@@21| T@U) (|f#0@@4| T@U) ($h@@12 T@U) ) (! (=> (and (and (and (= (type |#$T0@@17|) TyType) (= (type |#$R@@21|) TyType)) (= (type |f#0@@4|) HandleTypeType)) (= (type $h@@12) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc |f#0@@4| (Tclass._System.___hPartialFunc1 |#$T0@@17| |#$R@@21|) $h@@12) ($IsAlloc |f#0@@4| (Tclass._System.___hFunc1 |#$T0@@17| |#$R@@21|) $h@@12)) (=> ($IsAlloc |f#0@@4| (Tclass._System.___hFunc1 |#$T0@@17| |#$R@@21|) $h@@12) ($IsAlloc |f#0@@4| (Tclass._System.___hPartialFunc1 |#$T0@@17| |#$R@@21|) $h@@12))))
  3537. :qid |funwiths.2481:15|
  3538. :skolemid |434|
  3539. :pattern ( ($IsAlloc |f#0@@4| (Tclass._System.___hPartialFunc1 |#$T0@@17| |#$R@@21|) $h@@12))
  3540. )))
  3541. (assert (forall ((arg0@@133 T@U) (arg1@@60 T@U) ) (! (= (type (Tclass._System.___hTotalFunc1 arg0@@133 arg1@@60)) TyType)
  3542. :qid |funType:Tclass._System.___hTotalFunc1|
  3543. :pattern ( (Tclass._System.___hTotalFunc1 arg0@@133 arg1@@60))
  3544. )))
  3545. (assert (forall ((|#$T0@@18| T@U) (|#$R@@22| T@U) ) (! (=> (and (= (type |#$T0@@18|) TyType) (= (type |#$R@@22|) TyType)) (= (Tag (Tclass._System.___hTotalFunc1 |#$T0@@18| |#$R@@22|)) Tagclass._System.___hTotalFunc1))
  3546. :qid |funwiths.2489:15|
  3547. :skolemid |435|
  3548. :pattern ( (Tclass._System.___hTotalFunc1 |#$T0@@18| |#$R@@22|))
  3549. )))
  3550. (assert (forall ((arg0@@134 T@U) ) (! (= (type (Tclass._System.___hTotalFunc1_0 arg0@@134)) TyType)
  3551. :qid |funType:Tclass._System.___hTotalFunc1_0|
  3552. :pattern ( (Tclass._System.___hTotalFunc1_0 arg0@@134))
  3553. )))
  3554. (assert (forall ((|#$T0@@19| T@U) (|#$R@@23| T@U) ) (! (=> (and (= (type |#$T0@@19|) TyType) (= (type |#$R@@23|) TyType)) (= (Tclass._System.___hTotalFunc1_0 (Tclass._System.___hTotalFunc1 |#$T0@@19| |#$R@@23|)) |#$T0@@19|))
  3555. :qid |funwiths.2496:15|
  3556. :skolemid |436|
  3557. :pattern ( (Tclass._System.___hTotalFunc1 |#$T0@@19| |#$R@@23|))
  3558. )))
  3559. (assert (forall ((arg0@@135 T@U) ) (! (= (type (Tclass._System.___hTotalFunc1_1 arg0@@135)) TyType)
  3560. :qid |funType:Tclass._System.___hTotalFunc1_1|
  3561. :pattern ( (Tclass._System.___hTotalFunc1_1 arg0@@135))
  3562. )))
  3563. (assert (forall ((|#$T0@@20| T@U) (|#$R@@24| T@U) ) (! (=> (and (= (type |#$T0@@20|) TyType) (= (type |#$R@@24|) TyType)) (= (Tclass._System.___hTotalFunc1_1 (Tclass._System.___hTotalFunc1 |#$T0@@20| |#$R@@24|)) |#$R@@24|))
  3564. :qid |funwiths.2504:15|
  3565. :skolemid |437|
  3566. :pattern ( (Tclass._System.___hTotalFunc1 |#$T0@@20| |#$R@@24|))
  3567. )))
  3568. (assert (forall ((|#$T0@@21| T@U) (|#$R@@25| T@U) (bx@@50 T@U) ) (! (=> (and (and (and (= (type |#$T0@@21|) TyType) (= (type |#$R@@25|) TyType)) (= (type bx@@50) BoxType)) ($IsBox bx@@50 (Tclass._System.___hTotalFunc1 |#$T0@@21| |#$R@@25|))) (and (= ($Box ($Unbox HandleTypeType bx@@50)) bx@@50) ($Is ($Unbox HandleTypeType bx@@50) (Tclass._System.___hTotalFunc1 |#$T0@@21| |#$R@@25|))))
  3569. :qid |funwiths.2511:15|
  3570. :skolemid |438|
  3571. :pattern ( ($IsBox bx@@50 (Tclass._System.___hTotalFunc1 |#$T0@@21| |#$R@@25|)))
  3572. )))
  3573. (assert (forall ((|#$T0@@22| T@U) (|#$R@@26| T@U) (|f#0@@5| T@U) ) (! (=> (and (and (= (type |#$T0@@22|) TyType) (= (type |#$R@@26|) TyType)) (= (type |f#0@@5|) HandleTypeType)) (and (=> ($Is |f#0@@5| (Tclass._System.___hTotalFunc1 |#$T0@@22| |#$R@@26|)) (and ($Is |f#0@@5| (Tclass._System.___hPartialFunc1 |#$T0@@22| |#$R@@26|)) (forall ((|x0#0@@1| T@U) ) (! (=> (and (= (type |x0#0@@1|) BoxType) ($IsBox |x0#0@@1| |#$T0@@22|)) (Requires1 |#$T0@@22| |#$R@@26| $OneHeap |f#0@@5| |x0#0@@1|))
  3574. :qid |funwiths.2522:19|
  3575. :skolemid |439|
  3576. :no-pattern (type |x0#0@@1|)
  3577. :no-pattern (U_2_int |x0#0@@1|)
  3578. :no-pattern (U_2_bool |x0#0@@1|)
  3579. )))) (=> (and ($Is |f#0@@5| (Tclass._System.___hPartialFunc1 |#$T0@@22| |#$R@@26|)) (forall ((|x0#0@@2| T@U) ) (! (=> (and (= (type |x0#0@@2|) BoxType) ($IsBox |x0#0@@2| |#$T0@@22|)) (Requires1 |#$T0@@22| |#$R@@26| $OneHeap |f#0@@5| |x0#0@@2|))
  3580. :qid |funwiths.2522:19|
  3581. :skolemid |439|
  3582. :no-pattern (type |x0#0@@2|)
  3583. :no-pattern (U_2_int |x0#0@@2|)
  3584. :no-pattern (U_2_bool |x0#0@@2|)
  3585. ))) ($Is |f#0@@5| (Tclass._System.___hTotalFunc1 |#$T0@@22| |#$R@@26|)))))
  3586. :qid |funwiths.2518:15|
  3587. :skolemid |440|
  3588. :pattern ( ($Is |f#0@@5| (Tclass._System.___hTotalFunc1 |#$T0@@22| |#$R@@26|)))
  3589. )))
  3590. (assert (forall ((|#$T0@@23| T@U) (|#$R@@27| T@U) (|f#0@@6| T@U) ($h@@13 T@U) ) (! (=> (and (and (and (= (type |#$T0@@23|) TyType) (= (type |#$R@@27|) TyType)) (= (type |f#0@@6|) HandleTypeType)) (= (type $h@@13) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc |f#0@@6| (Tclass._System.___hTotalFunc1 |#$T0@@23| |#$R@@27|) $h@@13) ($IsAlloc |f#0@@6| (Tclass._System.___hPartialFunc1 |#$T0@@23| |#$R@@27|) $h@@13)) (=> ($IsAlloc |f#0@@6| (Tclass._System.___hPartialFunc1 |#$T0@@23| |#$R@@27|) $h@@13) ($IsAlloc |f#0@@6| (Tclass._System.___hTotalFunc1 |#$T0@@23| |#$R@@27|) $h@@13))))
  3591. :qid |funwiths.2526:15|
  3592. :skolemid |441|
  3593. :pattern ( ($IsAlloc |f#0@@6| (Tclass._System.___hTotalFunc1 |#$T0@@23| |#$R@@27|) $h@@13))
  3594. )))
  3595. (assert (= (type |#_System._tuple#0._#Make0|) DatatypeTypeType))
  3596. (assert (= (DatatypeCtorId |#_System._tuple#0._#Make0|) |##_System._tuple#0._#Make0|))
  3597. (assert (forall ((d@@6 T@U) ) (! (=> (= (type d@@6) DatatypeTypeType) (and (=> (_System.Tuple0.___hMake0_q d@@6) (= (DatatypeCtorId d@@6) |##_System._tuple#0._#Make0|)) (=> (= (DatatypeCtorId d@@6) |##_System._tuple#0._#Make0|) (_System.Tuple0.___hMake0_q d@@6))))
  3598. :qid |funwiths.2544:15|
  3599. :skolemid |442|
  3600. :pattern ( (_System.Tuple0.___hMake0_q d@@6))
  3601. )))
  3602. (assert (forall ((d@@7 T@U) ) (! (=> (and (= (type d@@7) DatatypeTypeType) (_System.Tuple0.___hMake0_q d@@7)) (= d@@7 |#_System._tuple#0._#Make0|))
  3603. :qid |funwiths.2550:15|
  3604. :skolemid |443|
  3605. :pattern ( (_System.Tuple0.___hMake0_q d@@7))
  3606. )))
  3607. (assert (= (type Tclass._System.Tuple0) TyType))
  3608. (assert (= (Tag Tclass._System.Tuple0) Tagclass._System.Tuple0))
  3609. (assert (forall ((bx@@51 T@U) ) (! (=> (and (= (type bx@@51) BoxType) ($IsBox bx@@51 Tclass._System.Tuple0)) (and (= ($Box ($Unbox DatatypeTypeType bx@@51)) bx@@51) ($Is ($Unbox DatatypeTypeType bx@@51) Tclass._System.Tuple0)))
  3610. :qid |funwiths.2562:15|
  3611. :skolemid |444|
  3612. :pattern ( ($IsBox bx@@51 Tclass._System.Tuple0))
  3613. )))
  3614. (assert ($Is |#_System._tuple#0._#Make0| Tclass._System.Tuple0))
  3615. (assert (forall (($h@@14 T@U) ) (! (=> (and (= (type $h@@14) (MapType0Type refType MapType1Type)) ($IsGoodHeap $h@@14)) ($IsAlloc |#_System._tuple#0._#Make0| Tclass._System.Tuple0 $h@@14))
  3616. :qid |funwiths.2572:15|
  3617. :skolemid |445|
  3618. :pattern ( ($IsAlloc |#_System._tuple#0._#Make0| Tclass._System.Tuple0 $h@@14))
  3619. )))
  3620. (assert (= |#_System._tuple#0._#Make0| (Lit |#_System._tuple#0._#Make0|)))
  3621. (assert (forall ((d@@8 T@U) ) (! (=> (and (= (type d@@8) DatatypeTypeType) (|$IsA#_System.Tuple0| d@@8)) (_System.Tuple0.___hMake0_q d@@8))
  3622. :qid |funwiths.2584:15|
  3623. :skolemid |446|
  3624. :pattern ( (|$IsA#_System.Tuple0| d@@8))
  3625. )))
  3626. (assert (forall ((d@@9 T@U) ) (! (=> (and (= (type d@@9) DatatypeTypeType) ($Is d@@9 Tclass._System.Tuple0)) (_System.Tuple0.___hMake0_q d@@9))
  3627. :qid |funwiths.2589:15|
  3628. :skolemid |447|
  3629. :pattern ( (_System.Tuple0.___hMake0_q d@@9) ($Is d@@9 Tclass._System.Tuple0))
  3630. )))
  3631. (assert (forall ((a@@93 T@U) (b@@60 T@U) ) (! (=> (and (and (= (type a@@93) DatatypeTypeType) (= (type b@@60) DatatypeTypeType)) true) (and (=> (|_System.Tuple0#Equal| a@@93 b@@60) true) (=> true (|_System.Tuple0#Equal| a@@93 b@@60))))
  3632. :qid |funwiths.2597:15|
  3633. :skolemid |448|
  3634. :pattern ( (|_System.Tuple0#Equal| a@@93 b@@60))
  3635. )))
  3636. (assert (forall ((a@@94 T@U) (b@@61 T@U) ) (! (=> (and (= (type a@@94) DatatypeTypeType) (= (type b@@61) DatatypeTypeType)) (and (=> (|_System.Tuple0#Equal| a@@94 b@@61) (= a@@94 b@@61)) (=> (= a@@94 b@@61) (|_System.Tuple0#Equal| a@@94 b@@61))))
  3637. :qid |funwiths.2602:15|
  3638. :skolemid |449|
  3639. :pattern ( (|_System.Tuple0#Equal| a@@94 b@@61))
  3640. )))
  3641. (assert (= (type Tclass._module.__default) TyType))
  3642. (assert (= (Tag Tclass._module.__default) Tagclass._module.__default))
  3643. (assert (forall ((bx@@52 T@U) ) (! (=> (and (= (type bx@@52) BoxType) ($IsBox bx@@52 Tclass._module.__default)) (and (= ($Box ($Unbox refType bx@@52)) bx@@52) ($Is ($Unbox refType bx@@52) Tclass._module.__default)))
  3644. :qid |funwiths.2616:15|
  3645. :skolemid |450|
  3646. :pattern ( ($IsBox bx@@52 Tclass._module.__default))
  3647. )))
  3648. (assert (forall (($o@@7 T@U) ) (! (=> (= (type $o@@7) refType) (and (=> ($Is $o@@7 Tclass._module.__default) (or (= $o@@7 null) (= (dtype $o@@7) Tclass._module.__default))) (=> (or (= $o@@7 null) (= (dtype $o@@7) Tclass._module.__default)) ($Is $o@@7 Tclass._module.__default))))
  3649. :qid |funwiths.2622:15|
  3650. :skolemid |451|
  3651. :pattern ( ($Is $o@@7 Tclass._module.__default))
  3652. )))
  3653. (assert (forall (($o@@8 T@U) ($h@@15 T@U) ) (! (=> (and (= (type $o@@8) refType) (= (type $h@@15) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc $o@@8 Tclass._module.__default $h@@15) (or (= $o@@8 null) (U_2_bool (MapType1Select (MapType0Select $h@@15 $o@@8) alloc)))) (=> (or (= $o@@8 null) (U_2_bool (MapType1Select (MapType0Select $h@@15 $o@@8) alloc))) ($IsAlloc $o@@8 Tclass._module.__default $h@@15))))
  3654. :qid |funwiths.2628:15|
  3655. :skolemid |452|
  3656. :pattern ( ($IsAlloc $o@@8 Tclass._module.__default $h@@15))
  3657. )))
  3658. (assert (and (and (and (and (and (and (and (forall ((arg0@@136 T@T) (arg1@@61 T@T) ) (! (= (Ctor (MapType3Type arg0@@136 arg1@@61)) 21)
  3659. :qid |ctor:MapType3Type|
  3660. )) (forall ((arg0@@137 T@T) (arg1@@62 T@T) ) (! (= (MapType3TypeInv0 (MapType3Type arg0@@137 arg1@@62)) arg0@@137)
  3661. :qid |typeInv:MapType3TypeInv0|
  3662. :pattern ( (MapType3Type arg0@@137 arg1@@62))
  3663. ))) (forall ((arg0@@138 T@T) (arg1@@63 T@T) ) (! (= (MapType3TypeInv1 (MapType3Type arg0@@138 arg1@@63)) arg1@@63)
  3664. :qid |typeInv:MapType3TypeInv1|
  3665. :pattern ( (MapType3Type arg0@@138 arg1@@63))
  3666. ))) (forall ((arg0@@139 T@U) (arg1@@64 T@U) (arg2@@18 T@U) ) (! (let ((aVar1@@3 (MapType3TypeInv1 (type arg0@@139))))
  3667. (= (type (MapType3Select arg0@@139 arg1@@64 arg2@@18)) aVar1@@3))
  3668. :qid |funType:MapType3Select|
  3669. :pattern ( (MapType3Select arg0@@139 arg1@@64 arg2@@18))
  3670. ))) (forall ((arg0@@140 T@U) (arg1@@65 T@U) (arg2@@19 T@U) (arg3@@2 T@U) ) (! (let ((aVar1@@4 (type arg3@@2)))
  3671. (let ((aVar0@@1 (type arg1@@65)))
  3672. (= (type (MapType3Store arg0@@140 arg1@@65 arg2@@19 arg3@@2)) (MapType3Type aVar0@@1 aVar1@@4))))
  3673. :qid |funType:MapType3Store|
  3674. :pattern ( (MapType3Store arg0@@140 arg1@@65 arg2@@19 arg3@@2))
  3675. ))) (forall ((m@@31 T@U) (x0@@9 T@U) (x1@@3 T@U) (val@@10 T@U) ) (! (let ((aVar1@@5 (MapType3TypeInv1 (type m@@31))))
  3676. (=> (= (type val@@10) aVar1@@5) (= (MapType3Select (MapType3Store m@@31 x0@@9 x1@@3 val@@10) x0@@9 x1@@3) val@@10)))
  3677. :qid |mapAx0:MapType3Select|
  3678. :weight 0
  3679. ))) (and (and (forall ((val@@11 T@U) (m@@32 T@U) (x0@@10 T@U) (x1@@4 T@U) (y0@@6 T@U) (y1@@2 T@U) ) (! (or (= x0@@10 y0@@6) (= (MapType3Select (MapType3Store m@@32 x0@@10 x1@@4 val@@11) y0@@6 y1@@2) (MapType3Select m@@32 y0@@6 y1@@2)))
  3680. :qid |mapAx1:MapType3Select:0|
  3681. :weight 0
  3682. )) (forall ((val@@12 T@U) (m@@33 T@U) (x0@@11 T@U) (x1@@5 T@U) (y0@@7 T@U) (y1@@3 T@U) ) (! (or (= x1@@5 y1@@3) (= (MapType3Select (MapType3Store m@@33 x0@@11 x1@@5 val@@12) y0@@7 y1@@3) (MapType3Select m@@33 y0@@7 y1@@3)))
  3683. :qid |mapAx1:MapType3Select:1|
  3684. :weight 0
  3685. ))) (forall ((val@@13 T@U) (m@@34 T@U) (x0@@12 T@U) (x1@@6 T@U) (y0@@8 T@U) (y1@@4 T@U) ) (! (or true (= (MapType3Select (MapType3Store m@@34 x0@@12 x1@@6 val@@13) y0@@8 y1@@4) (MapType3Select m@@34 y0@@8 y1@@4)))
  3686. :qid |mapAx2:MapType3Select|
  3687. :weight 0
  3688. )))) (forall ((arg0@@141 T@U) (arg1@@66 T@U) (arg2@@20 T@U) (arg3@@3 T@U) ) (! (= (type (|lambda#0| arg0@@141 arg1@@66 arg2@@20 arg3@@3)) (MapType3Type refType boolType))
  3689. :qid |funType:lambda#0|
  3690. :pattern ( (|lambda#0| arg0@@141 arg1@@66 arg2@@20 arg3@@3))
  3691. ))))
  3692. (assert (forall (($o@@9 T@U) ($f T@U) (|a#0| T@U) (null@@0 T@U) ($Heap T@U) (alloc@@0 T@U) ) (! (let ((alpha@@6 (FieldTypeInv0 (type $f))))
  3693. (=> (and (and (and (and (and (= (type $o@@9) refType) (= (type $f) (FieldType alpha@@6))) (= (type |a#0|) refType)) (= (type null@@0) refType)) (= (type $Heap) (MapType0Type refType MapType1Type))) (= (type alloc@@0) (FieldType boolType))) (= (U_2_bool (MapType3Select (|lambda#0| |a#0| null@@0 $Heap alloc@@0) $o@@9 $f)) (=> (and (not (= $o@@9 null@@0)) (U_2_bool (MapType1Select (MapType0Select $Heap $o@@9) alloc@@0))) (= $o@@9 |a#0|)))))
  3694. :qid |funwiths.2651:31|
  3695. :skolemid |458|
  3696. :pattern ( (MapType3Select (|lambda#0| |a#0| null@@0 $Heap alloc@@0) $o@@9 $f))
  3697. )))
  3698. (assert (forall ((arg0@@142 T@U) (arg1@@67 T@U) (arg2@@21 T@U) (arg3@@4 T@U) ) (! (= (type (|lambda#1| arg0@@142 arg1@@67 arg2@@21 arg3@@4)) (MapType3Type refType boolType))
  3699. :qid |funType:lambda#1|
  3700. :pattern ( (|lambda#1| arg0@@142 arg1@@67 arg2@@21 arg3@@4))
  3701. )))
  3702. (assert (forall (($o@@10 T@U) ($f@@0 T@U) (|a#0@@0| T@U) (null@@1 T@U) ($Heap@@0 T@U) (alloc@@1 T@U) ) (! (let ((alpha@@7 (FieldTypeInv0 (type $f@@0))))
  3703. (=> (and (and (and (and (and (= (type $o@@10) refType) (= (type $f@@0) (FieldType alpha@@7))) (= (type |a#0@@0|) refType)) (= (type null@@1) refType)) (= (type $Heap@@0) (MapType0Type refType MapType1Type))) (= (type alloc@@1) (FieldType boolType))) (= (U_2_bool (MapType3Select (|lambda#1| |a#0@@0| null@@1 $Heap@@0 alloc@@1) $o@@10 $f@@0)) (=> (and (not (= $o@@10 null@@1)) (U_2_bool (MapType1Select (MapType0Select $Heap@@0 $o@@10) alloc@@1))) (= $o@@10 |a#0@@0|)))))
  3704. :qid |funwiths.2743:31|
  3705. :skolemid |459|
  3706. :pattern ( (MapType3Select (|lambda#1| |a#0@@0| null@@1 $Heap@@0 alloc@@1) $o@@10 $f@@0))
  3707. )))
  3708. (declare-fun $_Frame@0 () T@U)
  3709. (declare-fun |a#0@@1| () T@U)
  3710. (declare-fun $Heap@@1 () T@U)
  3711. (declare-fun |s#0| () T@U)
  3712. (declare-fun $Heap@0 () T@U)
  3713. (declare-fun _module._default.seqIntoArray$A () T@U)
  3714. (declare-fun %lbl%+0 () Bool)
  3715. (declare-fun %lbl%@1 () Bool)
  3716. (declare-fun |index#0| () Int)
  3717. (declare-fun $IsHeapAnchor (T@U) Bool)
  3718. (declare-fun %lbl%@2 () Bool)
  3719. (declare-fun %lbl%@3 () Bool)
  3720. (declare-fun %lbl%@4 () Bool)
  3721. (declare-fun %lbl%@5 () Bool)
  3722. (declare-fun %lbl%@6 () Bool)
  3723. (declare-fun %lbl%@7 () Bool)
  3724. (declare-fun %lbl%+8 () Bool)
  3725. (declare-fun $FunctionContextHeight () Int)
  3726. (assert (and (and (and (and (and (= (type $_Frame@0) (MapType3Type refType boolType)) (= (type |a#0@@1|) refType)) (= (type $Heap@@1) (MapType0Type refType MapType1Type))) (= (type |s#0|) (SeqType BoxType))) (= (type $Heap@0) (MapType0Type refType MapType1Type))) (= (type _module._default.seqIntoArray$A) TyType)))
  3727. (push 1)
  3728. (set-info :boogie-vc-id CheckWellformed$$_module.__default.seqIntoArray)
  3729. (assert (not
  3730. (let ((anon0_correct (=> (! (and %lbl%+0 true) :lblpos +0) (=> (= $_Frame@0 (|lambda#0| |a#0@@1| null $Heap@@1 alloc)) (and (! (or %lbl%@1 (not (= |a#0@@1| null))) :lblneg @1) (=> (not (= |a#0@@1| null)) (=> (<= (+ |index#0| (|Seq#Length| |s#0|)) (_System.array.Length |a#0@@1|)) (=> (and (and ($IsGoodHeap $Heap@0) ($IsHeapAnchor $Heap@0)) (and (forall (($o@@11 T@U) ) (! (=> (= (type $o@@11) refType) (=> (and (not (= $o@@11 null)) (U_2_bool (MapType1Select (MapType0Select $Heap@@1 $o@@11) alloc))) (or (= (MapType0Select $Heap@0 $o@@11) (MapType0Select $Heap@@1 $o@@11)) (= $o@@11 |a#0@@1|))))
  3731. :qid |funwiths.2657:20|
  3732. :skolemid |453|
  3733. :pattern ( (MapType0Select $Heap@0 $o@@11))
  3734. )) ($HeapSucc $Heap@@1 $Heap@0))) (and (! (or %lbl%@2 (not (= |a#0@@1| null))) :lblneg @2) (=> (not (= |a#0@@1| null)) (and (! (or %lbl%@3 (not (= |a#0@@1| null))) :lblneg @3) (=> (not (= |a#0@@1| null)) (and (! (or %lbl%@4 (and (<= 0 (LitInt 0)) (<= (LitInt 0) (_System.array.Length |a#0@@1|)))) :lblneg @4) (=> (and (<= 0 (LitInt 0)) (<= (LitInt 0) (_System.array.Length |a#0@@1|))) (and (! (or %lbl%@5 (and (<= (LitInt 0) |index#0|) (<= |index#0| (_System.array.Length |a#0@@1|)))) :lblneg @5) (=> (and (<= (LitInt 0) |index#0|) (<= |index#0| (_System.array.Length |a#0@@1|))) (and (! (or %lbl%@6 (not (= |a#0@@1| null))) :lblneg @6) (=> (not (= |a#0@@1| null)) (! (or %lbl%@7 (and (<= 0 (+ |index#0| (|Seq#Length| |s#0|))) (<= (+ |index#0| (|Seq#Length| |s#0|)) (_System.array.Length |a#0@@1|)))) :lblneg @7)))))))))))))))))))
  3735. (let ((PreconditionGeneratedEntry_correct (=> (! (and %lbl%+8 true) :lblpos +8) (=> (and (and (and ($IsGoodHeap $Heap@@1) ($IsHeapAnchor $Heap@@1)) (and ($Is |s#0| (TSeq _module._default.seqIntoArray$A)) ($IsAlloc |s#0| (TSeq _module._default.seqIntoArray$A) $Heap@@1))) (and (and ($Is |a#0@@1| (Tclass._System.array _module._default.seqIntoArray$A)) ($IsAlloc |a#0@@1| (Tclass._System.array _module._default.seqIntoArray$A) $Heap@@1)) (and (<= (LitInt 0) |index#0|) (= 2 $FunctionContextHeight)))) anon0_correct))))
  3736. PreconditionGeneratedEntry_correct))
  3737. ))
  3738. (check-sat)
  3739. (pop 1)
  3740. ; Valid
  3741. (reset)
  3742. (set-option :print-success false)
  3743. (set-info :smt-lib-version 2.0)
  3744. (set-option :AUTO_CONFIG false)
  3745. (set-option :pp.bv_literals false)
  3746. (set-option :MODEL.V2 true)
  3747. (set-option :smt.PHASE_SELECTION 0)
  3748. (set-option :smt.RESTART_STRATEGY 0)
  3749. (set-option :smt.RESTART_FACTOR |1.5|)
  3750. (set-option :smt.ARITH.RANDOM_INITIAL_VALUE true)
  3751. (set-option :smt.CASE_SPLIT 3)
  3752. (set-option :smt.DELAY_UNITS true)
  3753. (set-option :NNF.SK_HACK true)
  3754. (set-option :smt.MBQI false)
  3755. (set-option :smt.QI.EAGER_THRESHOLD 100)
  3756. (set-option :TYPE_CHECK true)
  3757. (set-option :smt.BV.REFLECT true)
  3758. (set-option :model_compress false)
  3759. ; done setting options
  3760.  
  3761.  
  3762. (set-info :category "industrial")
  3763. (declare-sort |T@U| 0)
  3764. (declare-sort |T@T| 0)
  3765. (declare-fun real_pow (Real Real) Real)
  3766. (declare-fun UOrdering2 (|T@U| |T@U|) Bool)
  3767. (declare-fun UOrdering3 (|T@T| |T@U| |T@U|) Bool)
  3768. (declare-fun tickleBool (Bool) Bool)
  3769. (assert (and (tickleBool true) (tickleBool false)))
  3770. (declare-fun Ctor (T@T) Int)
  3771. (declare-fun intType () T@T)
  3772. (declare-fun realType () T@T)
  3773. (declare-fun boolType () T@T)
  3774. (declare-fun rmodeType () T@T)
  3775. (declare-fun int_2_U (Int) T@U)
  3776. (declare-fun U_2_int (T@U) Int)
  3777. (declare-fun type (T@U) T@T)
  3778. (declare-fun real_2_U (Real) T@U)
  3779. (declare-fun U_2_real (T@U) Real)
  3780. (declare-fun bool_2_U (Bool) T@U)
  3781. (declare-fun U_2_bool (T@U) Bool)
  3782. (declare-fun rmode_2_U (RoundingMode) T@U)
  3783. (declare-fun U_2_rmode (T@U) RoundingMode)
  3784. (declare-fun TyType () T@T)
  3785. (declare-fun TBool () T@U)
  3786. (declare-fun TChar () T@U)
  3787. (declare-fun TInt () T@U)
  3788. (declare-fun TReal () T@U)
  3789. (declare-fun TORDINAL () T@U)
  3790. (declare-fun TyTagType () T@T)
  3791. (declare-fun TagBool () T@U)
  3792. (declare-fun TagChar () T@U)
  3793. (declare-fun TagInt () T@U)
  3794. (declare-fun TagReal () T@U)
  3795. (declare-fun TagORDINAL () T@U)
  3796. (declare-fun TagSet () T@U)
  3797. (declare-fun TagISet () T@U)
  3798. (declare-fun TagMultiSet () T@U)
  3799. (declare-fun TagSeq () T@U)
  3800. (declare-fun TagMap () T@U)
  3801. (declare-fun TagIMap () T@U)
  3802. (declare-fun TagClass () T@U)
  3803. (declare-fun ClassNameType () T@T)
  3804. (declare-fun NoTraitAtAll () T@U)
  3805. (declare-fun class._System.int () T@U)
  3806. (declare-fun class._System.bool () T@U)
  3807. (declare-fun class._System.set () T@U)
  3808. (declare-fun class._System.seq () T@U)
  3809. (declare-fun class._System.multiset () T@U)
  3810. (declare-fun FieldType (T@T) T@T)
  3811. (declare-fun FieldTypeInv0 (T@T) T@T)
  3812. (declare-fun alloc () T@U)
  3813. (declare-fun NameFamilyType () T@T)
  3814. (declare-fun allocName () T@U)
  3815. (declare-fun Tagclass._System.nat () T@U)
  3816. (declare-fun class._System.object? () T@U)
  3817. (declare-fun Tagclass._System.object? () T@U)
  3818. (declare-fun Tagclass._System.object () T@U)
  3819. (declare-fun class._System.array? () T@U)
  3820. (declare-fun Tagclass._System.array? () T@U)
  3821. (declare-fun Tagclass._System.array () T@U)
  3822. (declare-fun Tagclass._System.___hFunc0 () T@U)
  3823. (declare-fun Tagclass._System.___hPartialFunc0 () T@U)
  3824. (declare-fun Tagclass._System.___hTotalFunc0 () T@U)
  3825. (declare-fun class._System.Tuple2 () T@U)
  3826. (declare-fun DtCtorIdType () T@T)
  3827. (declare-fun |##_System._tuple#2._#Make2| () T@U)
  3828. (declare-fun Tagclass._System.Tuple2 () T@U)
  3829. (declare-fun Tagclass._System.___hFunc1 () T@U)
  3830. (declare-fun Tagclass._System.___hPartialFunc1 () T@U)
  3831. (declare-fun Tagclass._System.___hTotalFunc1 () T@U)
  3832. (declare-fun class._System.Tuple0 () T@U)
  3833. (declare-fun |##_System._tuple#0._#Make0| () T@U)
  3834. (declare-fun Tagclass._System.Tuple0 () T@U)
  3835. (declare-fun class._module.__default () T@U)
  3836. (declare-fun Tagclass._module.__default () T@U)
  3837. (declare-fun $$Language$Dafny () Bool)
  3838. (declare-fun TBitvector (Int) T@U)
  3839. (declare-fun Inv0_TBitvector (T@U) Int)
  3840. (declare-fun TSet (T@U) T@U)
  3841. (declare-fun Inv0_TSet (T@U) T@U)
  3842. (declare-fun TISet (T@U) T@U)
  3843. (declare-fun Inv0_TISet (T@U) T@U)
  3844. (declare-fun TSeq (T@U) T@U)
  3845. (declare-fun Inv0_TSeq (T@U) T@U)
  3846. (declare-fun TMultiSet (T@U) T@U)
  3847. (declare-fun Inv0_TMultiSet (T@U) T@U)
  3848. (declare-fun TMap (T@U T@U) T@U)
  3849. (declare-fun Inv0_TMap (T@U) T@U)
  3850. (declare-fun Inv1_TMap (T@U) T@U)
  3851. (declare-fun TIMap (T@U T@U) T@U)
  3852. (declare-fun Inv0_TIMap (T@U) T@U)
  3853. (declare-fun Inv1_TIMap (T@U) T@U)
  3854. (declare-fun Tag (T@U) T@U)
  3855. (declare-fun LitInt (Int) Int)
  3856. (declare-fun BoxType () T@T)
  3857. (declare-fun $Box (T@U) T@U)
  3858. (declare-fun Lit (T@U) T@U)
  3859. (declare-fun LitReal (Real) Real)
  3860. (declare-fun charType () T@T)
  3861. (declare-fun |char#FromInt| (Int) T@U)
  3862. (declare-fun |char#ToInt| (T@U) Int)
  3863. (declare-fun |char#Plus| (T@U T@U) T@U)
  3864. (declare-fun |char#Minus| (T@U T@U) T@U)
  3865. (declare-fun $Unbox (T@T T@U) T@U)
  3866. (declare-fun $IsBox (T@U T@U) Bool)
  3867. (declare-fun $Is (T@U T@U) Bool)
  3868. (declare-fun MapType0Type (T@T T@T) T@T)
  3869. (declare-fun MapType0TypeInv0 (T@T) T@T)
  3870. (declare-fun MapType0TypeInv1 (T@T) T@T)
  3871. (declare-fun MapType0Select (T@U T@U) T@U)
  3872. (declare-fun MapType0Store (T@U T@U T@U) T@U)
  3873. (declare-fun SeqType (T@T) T@T)
  3874. (declare-fun SeqTypeInv0 (T@T) T@T)
  3875. (declare-fun MapType (T@T T@T) T@T)
  3876. (declare-fun MapTypeInv0 (T@T) T@T)
  3877. (declare-fun MapTypeInv1 (T@T) T@T)
  3878. (declare-fun IMapType (T@T T@T) T@T)
  3879. (declare-fun IMapTypeInv0 (T@T) T@T)
  3880. (declare-fun IMapTypeInv1 (T@T) T@T)
  3881. (declare-fun MapType1Select (T@U T@U) T@U)
  3882. (declare-fun MapType1Type () T@T)
  3883. (declare-fun MapType1Store (T@U T@U T@U) T@U)
  3884. (declare-fun refType () T@T)
  3885. (declare-fun $IsAllocBox (T@U T@U T@U) Bool)
  3886. (declare-fun $IsAlloc (T@U T@U T@U) Bool)
  3887. (declare-fun $IsGoodMultiSet (T@U) Bool)
  3888. (declare-fun |Seq#Index| (T@U Int) T@U)
  3889. (declare-fun |Seq#Length| (T@U) Int)
  3890. (declare-fun |Map#Elements| (T@U) T@U)
  3891. (declare-fun |Map#Domain| (T@U) T@U)
  3892. (declare-fun |IMap#Elements| (T@U) T@U)
  3893. (declare-fun |IMap#Domain| (T@U) T@U)
  3894. (declare-fun TypeTuple (T@U T@U) T@U)
  3895. (declare-fun TypeTupleCar (T@U) T@U)
  3896. (declare-fun TypeTupleCdr (T@U) T@U)
  3897. (declare-fun SetRef_to_SetBox (T@U) T@U)
  3898. (declare-fun Tclass._System.object? () T@U)
  3899. (declare-fun DatatypeTypeType () T@T)
  3900. (declare-fun BoxRank (T@U) Int)
  3901. (declare-fun DtRank (T@U) Int)
  3902. (declare-fun |ORD#Offset| (T@U) Int)
  3903. (declare-fun |ORD#FromNat| (Int) T@U)
  3904. (declare-fun |ORD#IsNat| (T@U) Bool)
  3905. (declare-fun |ORD#Less| (T@U T@U) Bool)
  3906. (declare-fun |ORD#LessThanLimit| (T@U T@U) Bool)
  3907. (declare-fun |ORD#Plus| (T@U T@U) T@U)
  3908. (declare-fun |ORD#Minus| (T@U T@U) T@U)
  3909. (declare-fun IndexField (Int) T@U)
  3910. (declare-fun FDim (T@U) Int)
  3911. (declare-fun IndexField_Inverse (T@U) Int)
  3912. (declare-fun MultiIndexField (T@U Int) T@U)
  3913. (declare-fun MultiIndexField_Inverse0 (T@U) T@U)
  3914. (declare-fun MultiIndexField_Inverse1 (T@U) Int)
  3915. (declare-fun FieldOfDecl (T@T T@U T@U) T@U)
  3916. (declare-fun DeclType (T@U) T@U)
  3917. (declare-fun DeclName (T@U) T@U)
  3918. (declare-fun $HeapSucc (T@U T@U) Bool)
  3919. (declare-fun $IsGhostField (T@U) Bool)
  3920. (declare-fun _System.array.Length (T@U) Int)
  3921. (declare-fun q@Int (Real) Int)
  3922. (declare-fun q@Real (Int) Real)
  3923. (declare-fun $OneHeap () T@U)
  3924. (declare-fun $IsGoodHeap (T@U) Bool)
  3925. (declare-fun $HeapSuccGhost (T@U T@U) Bool)
  3926. (declare-fun |Set#Card| (T@U) Int)
  3927. (declare-fun |Set#Empty| (T@T) T@U)
  3928. (declare-fun |Set#Singleton| (T@U) T@U)
  3929. (declare-fun |Set#UnionOne| (T@U T@U) T@U)
  3930. (declare-fun |Set#Union| (T@U T@U) T@U)
  3931. (declare-fun |Set#Difference| (T@U T@U) T@U)
  3932. (declare-fun |Set#Disjoint| (T@U T@U) Bool)
  3933. (declare-fun |Set#Intersection| (T@U T@U) T@U)
  3934. (declare-fun |Set#Subset| (T@U T@U) Bool)
  3935. (declare-fun |Set#Equal| (T@U T@U) Bool)
  3936. (declare-fun |ISet#Empty| (T@T) T@U)
  3937. (declare-fun |ISet#UnionOne| (T@U T@U) T@U)
  3938. (declare-fun |ISet#Union| (T@U T@U) T@U)
  3939. (declare-fun |ISet#Difference| (T@U T@U) T@U)
  3940. (declare-fun |ISet#Disjoint| (T@U T@U) Bool)
  3941. (declare-fun |ISet#Intersection| (T@U T@U) T@U)
  3942. (declare-fun |ISet#Subset| (T@U T@U) Bool)
  3943. (declare-fun |ISet#Equal| (T@U T@U) Bool)
  3944. (declare-fun |Math#min| (Int Int) Int)
  3945. (declare-fun |Math#clip| (Int) Int)
  3946. (declare-fun |MultiSet#Card| (T@U) Int)
  3947. (declare-fun |MultiSet#Empty| (T@T) T@U)
  3948. (declare-fun |MultiSet#Singleton| (T@U) T@U)
  3949. (declare-fun |MultiSet#UnionOne| (T@U T@U) T@U)
  3950. (declare-fun |MultiSet#Union| (T@U T@U) T@U)
  3951. (declare-fun |MultiSet#Intersection| (T@U T@U) T@U)
  3952. (declare-fun |MultiSet#Difference| (T@U T@U) T@U)
  3953. (declare-fun |MultiSet#Subset| (T@U T@U) Bool)
  3954. (declare-fun |MultiSet#Equal| (T@U T@U) Bool)
  3955. (declare-fun |MultiSet#Disjoint| (T@U T@U) Bool)
  3956. (declare-fun |MultiSet#FromSet| (T@U) T@U)
  3957. (declare-fun |MultiSet#FromSeq| (T@U) T@U)
  3958. (declare-fun |Seq#Build| (T@U T@U) T@U)
  3959. (declare-fun |Seq#Empty| (T@T) T@U)
  3960. (declare-fun |Seq#Append| (T@U T@U) T@U)
  3961. (declare-fun |Seq#Update| (T@U Int T@U) T@U)
  3962. (declare-fun |Seq#Singleton| (T@U) T@U)
  3963. (declare-fun |Seq#Build_inv0| (T@U) T@U)
  3964. (declare-fun |Seq#Build_inv1| (T@U) T@U)
  3965. (declare-fun |Seq#Contains| (T@U T@U) Bool)
  3966. (declare-fun |Seq#Take| (T@U Int) T@U)
  3967. (declare-fun |Seq#Drop| (T@U Int) T@U)
  3968. (declare-fun |Seq#Equal| (T@U T@U) Bool)
  3969. (declare-fun |Seq#SameUntil| (T@U T@U Int) Bool)
  3970. (declare-fun |Seq#FromArray| (T@U T@U) T@U)
  3971. (declare-fun |Seq#Rank| (T@U) Int)
  3972. (declare-fun |Map#Card| (T@U) Int)
  3973. (declare-fun |Map#Values| (T@U) T@U)
  3974. (declare-fun |Map#Items| (T@U) T@U)
  3975. (declare-fun _System.Tuple2._0 (T@U) T@U)
  3976. (declare-fun _System.Tuple2._1 (T@U) T@U)
  3977. (declare-fun |Map#Empty| (T@T T@T) T@U)
  3978. (declare-fun |Map#Glue| (T@U T@U T@U) T@U)
  3979. (declare-fun |Map#Build| (T@U T@U T@U) T@U)
  3980. (declare-fun |Map#Equal| (T@U T@U) Bool)
  3981. (declare-fun |Map#Disjoint| (T@U T@U) Bool)
  3982. (declare-fun |IMap#Values| (T@U) T@U)
  3983. (declare-fun |IMap#Items| (T@U) T@U)
  3984. (declare-fun |IMap#Empty| (T@T T@T) T@U)
  3985. (declare-fun |IMap#Glue| (T@U T@U T@U) T@U)
  3986. (declare-fun |IMap#Build| (T@U T@U T@U) T@U)
  3987. (declare-fun |IMap#Equal| (T@U T@U) Bool)
  3988. (declare-fun INTERNAL_add_boogie (Int Int) Int)
  3989. (declare-fun INTERNAL_sub_boogie (Int Int) Int)
  3990. (declare-fun INTERNAL_mul_boogie (Int Int) Int)
  3991. (declare-fun INTERNAL_div_boogie (Int Int) Int)
  3992. (declare-fun INTERNAL_mod_boogie (Int Int) Int)
  3993. (declare-fun INTERNAL_lt_boogie (Int Int) Bool)
  3994. (declare-fun INTERNAL_le_boogie (Int Int) Bool)
  3995. (declare-fun INTERNAL_gt_boogie (Int Int) Bool)
  3996. (declare-fun INTERNAL_ge_boogie (Int Int) Bool)
  3997. (declare-fun Mul (Int Int) Int)
  3998. (declare-fun Div (Int Int) Int)
  3999. (declare-fun Mod (Int Int) Int)
  4000. (declare-fun Add (Int Int) Int)
  4001. (declare-fun Sub (Int Int) Int)
  4002. (declare-fun Tclass._System.nat () T@U)
  4003. (declare-fun null () T@U)
  4004. (declare-fun Tclass._System.object () T@U)
  4005. (declare-fun Tclass._System.array? (T@U) T@U)
  4006. (declare-fun Tclass._System.array?_0 (T@U) T@U)
  4007. (declare-fun dtype (T@U) T@U)
  4008. (declare-fun Tclass._System.array (T@U) T@U)
  4009. (declare-fun Tclass._System.array_0 (T@U) T@U)
  4010. (declare-fun Tclass._System.___hFunc0 (T@U) T@U)
  4011. (declare-fun Tclass._System.___hFunc0_0 (T@U) T@U)
  4012. (declare-fun HandleTypeType () T@T)
  4013. (declare-fun Apply0 (T@U T@U T@U) T@U)
  4014. (declare-fun Handle0 (T@U T@U T@U) T@U)
  4015. (declare-fun Requires0 (T@U T@U T@U) Bool)
  4016. (declare-fun Reads0 (T@U T@U T@U) T@U)
  4017. (declare-fun Tclass._System.___hPartialFunc0 (T@U) T@U)
  4018. (declare-fun Tclass._System.___hPartialFunc0_0 (T@U) T@U)
  4019. (declare-fun Tclass._System.___hTotalFunc0 (T@U) T@U)
  4020. (declare-fun Tclass._System.___hTotalFunc0_0 (T@U) T@U)
  4021. (declare-fun |#_System._tuple#2._#Make2| (T@U T@U) T@U)
  4022. (declare-fun DatatypeCtorId (T@U) T@U)
  4023. (declare-fun _System.Tuple2.___hMake2_q (T@U) Bool)
  4024. (declare-fun Tclass._System.Tuple2 (T@U T@U) T@U)
  4025. (declare-fun Tclass._System.Tuple2_0 (T@U) T@U)
  4026. (declare-fun Tclass._System.Tuple2_1 (T@U) T@U)
  4027. (declare-fun |$IsA#_System.Tuple2| (T@U) Bool)
  4028. (declare-fun |_System.Tuple2#Equal| (T@U T@U) Bool)
  4029. (declare-fun Tclass._System.___hFunc1 (T@U T@U) T@U)
  4030. (declare-fun Tclass._System.___hFunc1_0 (T@U) T@U)
  4031. (declare-fun Tclass._System.___hFunc1_1 (T@U) T@U)
  4032. (declare-fun MapType2Type (T@T T@T T@T) T@T)
  4033. (declare-fun MapType2TypeInv0 (T@T) T@T)
  4034. (declare-fun MapType2TypeInv1 (T@T) T@T)
  4035. (declare-fun MapType2TypeInv2 (T@T) T@T)
  4036. (declare-fun MapType2Select (T@U T@U T@U) T@U)
  4037. (declare-fun MapType2Store (T@U T@U T@U T@U) T@U)
  4038. (declare-fun Apply1 (T@U T@U T@U T@U T@U) T@U)
  4039. (declare-fun Handle1 (T@U T@U T@U) T@U)
  4040. (declare-fun Requires1 (T@U T@U T@U T@U T@U) Bool)
  4041. (declare-fun Reads1 (T@U T@U T@U T@U T@U) T@U)
  4042. (declare-fun Tclass._System.___hPartialFunc1 (T@U T@U) T@U)
  4043. (declare-fun Tclass._System.___hPartialFunc1_0 (T@U) T@U)
  4044. (declare-fun Tclass._System.___hPartialFunc1_1 (T@U) T@U)
  4045. (declare-fun Tclass._System.___hTotalFunc1 (T@U T@U) T@U)
  4046. (declare-fun Tclass._System.___hTotalFunc1_0 (T@U) T@U)
  4047. (declare-fun Tclass._System.___hTotalFunc1_1 (T@U) T@U)
  4048. (declare-fun |#_System._tuple#0._#Make0| () T@U)
  4049. (declare-fun _System.Tuple0.___hMake0_q (T@U) Bool)
  4050. (declare-fun Tclass._System.Tuple0 () T@U)
  4051. (declare-fun |$IsA#_System.Tuple0| (T@U) Bool)
  4052. (declare-fun |_System.Tuple0#Equal| (T@U T@U) Bool)
  4053. (declare-fun Tclass._module.__default () T@U)
  4054. (declare-fun MapType3Type (T@T T@T) T@T)
  4055. (declare-fun MapType3TypeInv0 (T@T) T@T)
  4056. (declare-fun MapType3TypeInv1 (T@T) T@T)
  4057. (declare-fun MapType3Select (T@U T@U T@U) T@U)
  4058. (declare-fun MapType3Store (T@U T@U T@U T@U) T@U)
  4059. (declare-fun |lambda#0| (T@U T@U T@U T@U) T@U)
  4060. (declare-fun |lambda#1| (T@U T@U T@U T@U) T@U)
  4061. (assert (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (= (Ctor intType) 0) (= (Ctor realType) 1)) (= (Ctor boolType) 2)) (= (Ctor rmodeType) 3)) (forall ((arg0 Int) ) (! (= (U_2_int (int_2_U arg0)) arg0)
  4062. :qid |typeInv:U_2_int|
  4063. :pattern ( (int_2_U arg0))
  4064. ))) (forall ((x T@U) ) (! (=> (= (type x) intType) (= (int_2_U (U_2_int x)) x))
  4065. :qid |cast:U_2_int|
  4066. :pattern ( (U_2_int x))
  4067. ))) (forall ((arg0@@0 Int) ) (! (= (type (int_2_U arg0@@0)) intType)
  4068. :qid |funType:int_2_U|
  4069. :pattern ( (int_2_U arg0@@0))
  4070. ))) (forall ((arg0@@1 Real) ) (! (= (U_2_real (real_2_U arg0@@1)) arg0@@1)
  4071. :qid |typeInv:U_2_real|
  4072. :pattern ( (real_2_U arg0@@1))
  4073. ))) (forall ((x@@0 T@U) ) (! (=> (= (type x@@0) realType) (= (real_2_U (U_2_real x@@0)) x@@0))
  4074. :qid |cast:U_2_real|
  4075. :pattern ( (U_2_real x@@0))
  4076. ))) (forall ((arg0@@2 Real) ) (! (= (type (real_2_U arg0@@2)) realType)
  4077. :qid |funType:real_2_U|
  4078. :pattern ( (real_2_U arg0@@2))
  4079. ))) (forall ((arg0@@3 Bool) ) (! (= (U_2_bool (bool_2_U arg0@@3)) arg0@@3)
  4080. :qid |typeInv:U_2_bool|
  4081. :pattern ( (bool_2_U arg0@@3))
  4082. ))) (forall ((x@@1 T@U) ) (! (=> (= (type x@@1) boolType) (= (bool_2_U (U_2_bool x@@1)) x@@1))
  4083. :qid |cast:U_2_bool|
  4084. :pattern ( (U_2_bool x@@1))
  4085. ))) (forall ((arg0@@4 Bool) ) (! (= (type (bool_2_U arg0@@4)) boolType)
  4086. :qid |funType:bool_2_U|
  4087. :pattern ( (bool_2_U arg0@@4))
  4088. ))) (forall ((arg0@@5 RoundingMode) ) (! (= (U_2_rmode (rmode_2_U arg0@@5)) arg0@@5)
  4089. :qid |typeInv:U_2_rmode|
  4090. :pattern ( (rmode_2_U arg0@@5))
  4091. ))) (forall ((x@@2 T@U) ) (! (=> (= (type x@@2) rmodeType) (= (rmode_2_U (U_2_rmode x@@2)) x@@2))
  4092. :qid |cast:U_2_rmode|
  4093. :pattern ( (U_2_rmode x@@2))
  4094. ))) (forall ((arg0@@6 RoundingMode) ) (! (= (type (rmode_2_U arg0@@6)) rmodeType)
  4095. :qid |funType:rmode_2_U|
  4096. :pattern ( (rmode_2_U arg0@@6))
  4097. ))))
  4098. (assert (forall ((x@@3 T@U) ) (! (UOrdering2 x@@3 x@@3)
  4099. :qid |bg:subtype-refl|
  4100. :no-pattern (U_2_int x@@3)
  4101. :no-pattern (U_2_bool x@@3)
  4102. )))
  4103. (assert (forall ((x@@4 T@U) (y T@U) (z T@U) ) (! (let ((alpha (type x@@4)))
  4104. (=> (and (and (= (type y) alpha) (= (type z) alpha)) (and (UOrdering2 x@@4 y) (UOrdering2 y z))) (UOrdering2 x@@4 z)))
  4105. :qid |bg:subtype-trans|
  4106. :pattern ( (UOrdering2 x@@4 y) (UOrdering2 y z))
  4107. )))
  4108. (assert (forall ((x@@5 T@U) (y@@0 T@U) ) (! (let ((alpha@@0 (type x@@5)))
  4109. (=> (= (type y@@0) alpha@@0) (=> (and (UOrdering2 x@@5 y@@0) (UOrdering2 y@@0 x@@5)) (= x@@5 y@@0))))
  4110. :qid |bg:subtype-antisymm|
  4111. :pattern ( (UOrdering2 x@@5 y@@0) (UOrdering2 y@@0 x@@5))
  4112. )))
  4113. (assert (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (= (Ctor TyType) 4) (= (type TBool) TyType)) (= (type TChar) TyType)) (= (type TInt) TyType)) (= (type TReal) TyType)) (= (type TORDINAL) TyType)) (= (Ctor TyTagType) 5)) (= (type TagBool) TyTagType)) (= (type TagChar) TyTagType)) (= (type TagInt) TyTagType)) (= (type TagReal) TyTagType)) (= (type TagORDINAL) TyTagType)) (= (type TagSet) TyTagType)) (= (type TagISet) TyTagType)) (= (type TagMultiSet) TyTagType)) (= (type TagSeq) TyTagType)) (= (type TagMap) TyTagType)) (= (type TagIMap) TyTagType)) (= (type TagClass) TyTagType)) (= (Ctor ClassNameType) 6)) (= (type NoTraitAtAll) ClassNameType)) (= (type class._System.int) ClassNameType)) (= (type class._System.bool) ClassNameType)) (= (type class._System.set) ClassNameType)) (= (type class._System.seq) ClassNameType)) (= (type class._System.multiset) ClassNameType)) (forall ((arg0@@7 T@T) ) (! (= (Ctor (FieldType arg0@@7)) 7)
  4114. :qid |ctor:FieldType|
  4115. ))) (forall ((arg0@@8 T@T) ) (! (= (FieldTypeInv0 (FieldType arg0@@8)) arg0@@8)
  4116. :qid |typeInv:FieldTypeInv0|
  4117. :pattern ( (FieldType arg0@@8))
  4118. ))) (= (type alloc) (FieldType boolType))) (= (Ctor NameFamilyType) 8)) (= (type allocName) NameFamilyType)) (= (type Tagclass._System.nat) TyTagType)) (= (type class._System.object?) ClassNameType)) (= (type Tagclass._System.object?) TyTagType)) (= (type Tagclass._System.object) TyTagType)) (= (type class._System.array?) ClassNameType)) (= (type Tagclass._System.array?) TyTagType)) (= (type Tagclass._System.array) TyTagType)) (= (type Tagclass._System.___hFunc0) TyTagType)) (= (type Tagclass._System.___hPartialFunc0) TyTagType)) (= (type Tagclass._System.___hTotalFunc0) TyTagType)) (= (type class._System.Tuple2) ClassNameType)) (= (Ctor DtCtorIdType) 9)) (= (type |##_System._tuple#2._#Make2|) DtCtorIdType)) (= (type Tagclass._System.Tuple2) TyTagType)) (= (type Tagclass._System.___hFunc1) TyTagType)) (= (type Tagclass._System.___hPartialFunc1) TyTagType)) (= (type Tagclass._System.___hTotalFunc1) TyTagType)) (= (type class._System.Tuple0) ClassNameType)) (= (type |##_System._tuple#0._#Make0|) DtCtorIdType)) (= (type Tagclass._System.Tuple0) TyTagType)) (= (type class._module.__default) ClassNameType)) (= (type Tagclass._module.__default) TyTagType)))
  4119. (assert (distinct TBool TChar TInt TReal TORDINAL TagBool TagChar TagInt TagReal TagORDINAL TagSet TagISet TagMultiSet TagSeq TagMap TagIMap TagClass NoTraitAtAll class._System.int class._System.bool class._System.set class._System.seq class._System.multiset alloc allocName Tagclass._System.nat class._System.object? Tagclass._System.object? Tagclass._System.object class._System.array? Tagclass._System.array? Tagclass._System.array Tagclass._System.___hFunc0 Tagclass._System.___hPartialFunc0 Tagclass._System.___hTotalFunc0 class._System.Tuple2 |##_System._tuple#2._#Make2| Tagclass._System.Tuple2 Tagclass._System.___hFunc1 Tagclass._System.___hPartialFunc1 Tagclass._System.___hTotalFunc1 class._System.Tuple0 |##_System._tuple#0._#Make0| Tagclass._System.Tuple0 class._module.__default Tagclass._module.__default)
  4120. )
  4121. (assert $$Language$Dafny)
  4122. (assert (forall ((arg0@@9 Int) ) (! (= (type (TBitvector arg0@@9)) TyType)
  4123. :qid |funType:TBitvector|
  4124. :pattern ( (TBitvector arg0@@9))
  4125. )))
  4126. (assert (forall ((w Int) ) (! (= (Inv0_TBitvector (TBitvector w)) w)
  4127. :qid |funwiths.38:15|
  4128. :skolemid |0|
  4129. :pattern ( (TBitvector w))
  4130. )))
  4131. (assert (and (forall ((arg0@@10 T@U) ) (! (= (type (TSet arg0@@10)) TyType)
  4132. :qid |funType:TSet|
  4133. :pattern ( (TSet arg0@@10))
  4134. )) (forall ((arg0@@11 T@U) ) (! (= (type (Inv0_TSet arg0@@11)) TyType)
  4135. :qid |funType:Inv0_TSet|
  4136. :pattern ( (Inv0_TSet arg0@@11))
  4137. ))))
  4138. (assert (forall ((t T@U) ) (! (=> (= (type t) TyType) (= (Inv0_TSet (TSet t)) t))
  4139. :qid |funwiths.42:15|
  4140. :skolemid |1|
  4141. :pattern ( (TSet t))
  4142. )))
  4143. (assert (and (forall ((arg0@@12 T@U) ) (! (= (type (TISet arg0@@12)) TyType)
  4144. :qid |funType:TISet|
  4145. :pattern ( (TISet arg0@@12))
  4146. )) (forall ((arg0@@13 T@U) ) (! (= (type (Inv0_TISet arg0@@13)) TyType)
  4147. :qid |funType:Inv0_TISet|
  4148. :pattern ( (Inv0_TISet arg0@@13))
  4149. ))))
  4150. (assert (forall ((t@@0 T@U) ) (! (=> (= (type t@@0) TyType) (= (Inv0_TISet (TISet t@@0)) t@@0))
  4151. :qid |funwiths.46:15|
  4152. :skolemid |2|
  4153. :pattern ( (TISet t@@0))
  4154. )))
  4155. (assert (and (forall ((arg0@@14 T@U) ) (! (= (type (TSeq arg0@@14)) TyType)
  4156. :qid |funType:TSeq|
  4157. :pattern ( (TSeq arg0@@14))
  4158. )) (forall ((arg0@@15 T@U) ) (! (= (type (Inv0_TSeq arg0@@15)) TyType)
  4159. :qid |funType:Inv0_TSeq|
  4160. :pattern ( (Inv0_TSeq arg0@@15))
  4161. ))))
  4162. (assert (forall ((t@@1 T@U) ) (! (=> (= (type t@@1) TyType) (= (Inv0_TSeq (TSeq t@@1)) t@@1))
  4163. :qid |funwiths.50:15|
  4164. :skolemid |3|
  4165. :pattern ( (TSeq t@@1))
  4166. )))
  4167. (assert (and (forall ((arg0@@16 T@U) ) (! (= (type (TMultiSet arg0@@16)) TyType)
  4168. :qid |funType:TMultiSet|
  4169. :pattern ( (TMultiSet arg0@@16))
  4170. )) (forall ((arg0@@17 T@U) ) (! (= (type (Inv0_TMultiSet arg0@@17)) TyType)
  4171. :qid |funType:Inv0_TMultiSet|
  4172. :pattern ( (Inv0_TMultiSet arg0@@17))
  4173. ))))
  4174. (assert (forall ((t@@2 T@U) ) (! (=> (= (type t@@2) TyType) (= (Inv0_TMultiSet (TMultiSet t@@2)) t@@2))
  4175. :qid |funwiths.54:15|
  4176. :skolemid |4|
  4177. :pattern ( (TMultiSet t@@2))
  4178. )))
  4179. (assert (and (forall ((arg0@@18 T@U) (arg1 T@U) ) (! (= (type (TMap arg0@@18 arg1)) TyType)
  4180. :qid |funType:TMap|
  4181. :pattern ( (TMap arg0@@18 arg1))
  4182. )) (forall ((arg0@@19 T@U) ) (! (= (type (Inv0_TMap arg0@@19)) TyType)
  4183. :qid |funType:Inv0_TMap|
  4184. :pattern ( (Inv0_TMap arg0@@19))
  4185. ))))
  4186. (assert (forall ((t@@3 T@U) (u T@U) ) (! (=> (and (= (type t@@3) TyType) (= (type u) TyType)) (= (Inv0_TMap (TMap t@@3 u)) t@@3))
  4187. :qid |funwiths.60:15|
  4188. :skolemid |5|
  4189. :pattern ( (TMap t@@3 u))
  4190. )))
  4191. (assert (forall ((arg0@@20 T@U) ) (! (= (type (Inv1_TMap arg0@@20)) TyType)
  4192. :qid |funType:Inv1_TMap|
  4193. :pattern ( (Inv1_TMap arg0@@20))
  4194. )))
  4195. (assert (forall ((t@@4 T@U) (u@@0 T@U) ) (! (=> (and (= (type t@@4) TyType) (= (type u@@0) TyType)) (= (Inv1_TMap (TMap t@@4 u@@0)) u@@0))
  4196. :qid |funwiths.62:15|
  4197. :skolemid |6|
  4198. :pattern ( (TMap t@@4 u@@0))
  4199. )))
  4200. (assert (and (forall ((arg0@@21 T@U) (arg1@@0 T@U) ) (! (= (type (TIMap arg0@@21 arg1@@0)) TyType)
  4201. :qid |funType:TIMap|
  4202. :pattern ( (TIMap arg0@@21 arg1@@0))
  4203. )) (forall ((arg0@@22 T@U) ) (! (= (type (Inv0_TIMap arg0@@22)) TyType)
  4204. :qid |funType:Inv0_TIMap|
  4205. :pattern ( (Inv0_TIMap arg0@@22))
  4206. ))))
  4207. (assert (forall ((t@@5 T@U) (u@@1 T@U) ) (! (=> (and (= (type t@@5) TyType) (= (type u@@1) TyType)) (= (Inv0_TIMap (TIMap t@@5 u@@1)) t@@5))
  4208. :qid |funwiths.68:15|
  4209. :skolemid |7|
  4210. :pattern ( (TIMap t@@5 u@@1))
  4211. )))
  4212. (assert (forall ((arg0@@23 T@U) ) (! (= (type (Inv1_TIMap arg0@@23)) TyType)
  4213. :qid |funType:Inv1_TIMap|
  4214. :pattern ( (Inv1_TIMap arg0@@23))
  4215. )))
  4216. (assert (forall ((t@@6 T@U) (u@@2 T@U) ) (! (=> (and (= (type t@@6) TyType) (= (type u@@2) TyType)) (= (Inv1_TIMap (TIMap t@@6 u@@2)) u@@2))
  4217. :qid |funwiths.70:15|
  4218. :skolemid |8|
  4219. :pattern ( (TIMap t@@6 u@@2))
  4220. )))
  4221. (assert (forall ((arg0@@24 T@U) ) (! (= (type (Tag arg0@@24)) TyTagType)
  4222. :qid |funType:Tag|
  4223. :pattern ( (Tag arg0@@24))
  4224. )))
  4225. (assert (= (Tag TBool) TagBool))
  4226. (assert (= (Tag TChar) TagChar))
  4227. (assert (= (Tag TInt) TagInt))
  4228. (assert (= (Tag TReal) TagReal))
  4229. (assert (= (Tag TORDINAL) TagORDINAL))
  4230. (assert (forall ((t@@7 T@U) ) (! (=> (= (type t@@7) TyType) (= (Tag (TSet t@@7)) TagSet))
  4231. :qid |funwiths.110:15|
  4232. :skolemid |9|
  4233. :pattern ( (TSet t@@7))
  4234. )))
  4235. (assert (forall ((t@@8 T@U) ) (! (=> (= (type t@@8) TyType) (= (Tag (TISet t@@8)) TagISet))
  4236. :qid |funwiths.112:15|
  4237. :skolemid |10|
  4238. :pattern ( (TISet t@@8))
  4239. )))
  4240. (assert (forall ((t@@9 T@U) ) (! (=> (= (type t@@9) TyType) (= (Tag (TMultiSet t@@9)) TagMultiSet))
  4241. :qid |funwiths.114:15|
  4242. :skolemid |11|
  4243. :pattern ( (TMultiSet t@@9))
  4244. )))
  4245. (assert (forall ((t@@10 T@U) ) (! (=> (= (type t@@10) TyType) (= (Tag (TSeq t@@10)) TagSeq))
  4246. :qid |funwiths.116:15|
  4247. :skolemid |12|
  4248. :pattern ( (TSeq t@@10))
  4249. )))
  4250. (assert (forall ((t@@11 T@U) (u@@3 T@U) ) (! (=> (and (= (type t@@11) TyType) (= (type u@@3) TyType)) (= (Tag (TMap t@@11 u@@3)) TagMap))
  4251. :qid |funwiths.118:15|
  4252. :skolemid |13|
  4253. :pattern ( (TMap t@@11 u@@3))
  4254. )))
  4255. (assert (forall ((t@@12 T@U) (u@@4 T@U) ) (! (=> (and (= (type t@@12) TyType) (= (type u@@4) TyType)) (= (Tag (TIMap t@@12 u@@4)) TagIMap))
  4256. :qid |funwiths.120:15|
  4257. :skolemid |14|
  4258. :pattern ( (TIMap t@@12 u@@4))
  4259. )))
  4260. (assert (forall ((x@@6 Int) ) (! (= (LitInt x@@6) x@@6)
  4261. :qid |funwiths.124:15|
  4262. :skolemid |15|
  4263. :pattern ( (LitInt x@@6))
  4264. )))
  4265. (assert (and (and (= (Ctor BoxType) 10) (forall ((arg0@@25 T@U) ) (! (= (type ($Box arg0@@25)) BoxType)
  4266. :qid |funType:$Box|
  4267. :pattern ( ($Box arg0@@25))
  4268. ))) (forall ((arg0@@26 T@U) ) (! (let ((T (type arg0@@26)))
  4269. (= (type (Lit arg0@@26)) T))
  4270. :qid |funType:Lit|
  4271. :pattern ( (Lit arg0@@26))
  4272. ))))
  4273. (assert (forall ((x@@7 Int) ) (! (= ($Box (int_2_U (LitInt x@@7))) (Lit ($Box (int_2_U x@@7))))
  4274. :qid |funwiths.126:15|
  4275. :skolemid |16|
  4276. :pattern ( ($Box (int_2_U (LitInt x@@7))))
  4277. )))
  4278. (assert (forall ((x@@8 Real) ) (! (= (LitReal x@@8) x@@8)
  4279. :qid |funwiths.130:15|
  4280. :skolemid |17|
  4281. :pattern ( (LitReal x@@8))
  4282. )))
  4283. (assert (forall ((x@@9 Real) ) (! (= ($Box (real_2_U (LitReal x@@9))) (Lit ($Box (real_2_U x@@9))))
  4284. :qid |funwiths.132:15|
  4285. :skolemid |18|
  4286. :pattern ( ($Box (real_2_U (LitReal x@@9))))
  4287. )))
  4288. (assert (forall ((x@@10 T@U) ) (! (= (Lit x@@10) x@@10)
  4289. :qid |funwiths.136:18|
  4290. :skolemid |19|
  4291. :pattern ( (Lit x@@10))
  4292. )))
  4293. (assert (forall ((x@@11 T@U) ) (! (= ($Box (Lit x@@11)) (Lit ($Box x@@11)))
  4294. :qid |funwiths.138:18|
  4295. :skolemid |20|
  4296. :pattern ( ($Box (Lit x@@11)))
  4297. )))
  4298. (assert (and (= (Ctor charType) 11) (forall ((arg0@@27 Int) ) (! (= (type (|char#FromInt| arg0@@27)) charType)
  4299. :qid |funType:char#FromInt|
  4300. :pattern ( (|char#FromInt| arg0@@27))
  4301. ))))
  4302. (assert (forall ((ch T@U) ) (! (=> (= (type ch) charType) (and (and (= (|char#FromInt| (|char#ToInt| ch)) ch) (<= 0 (|char#ToInt| ch))) (< (|char#ToInt| ch) 65536)))
  4303. :qid |funwiths.146:15|
  4304. :skolemid |21|
  4305. :pattern ( (|char#ToInt| ch))
  4306. )))
  4307. (assert (forall ((n Int) ) (! (=> (and (<= 0 n) (< n 65536)) (= (|char#ToInt| (|char#FromInt| n)) n))
  4308. :qid |funwiths.152:15|
  4309. :skolemid |22|
  4310. :pattern ( (|char#FromInt| n))
  4311. )))
  4312. (assert (forall ((arg0@@28 T@U) (arg1@@1 T@U) ) (! (= (type (|char#Plus| arg0@@28 arg1@@1)) charType)
  4313. :qid |funType:char#Plus|
  4314. :pattern ( (|char#Plus| arg0@@28 arg1@@1))
  4315. )))
  4316. (assert (forall ((a T@U) (b T@U) ) (! (=> (and (= (type a) charType) (= (type b) charType)) (= (|char#Plus| a b) (|char#FromInt| (+ (|char#ToInt| a) (|char#ToInt| b)))))
  4317. :qid |funwiths.160:15|
  4318. :skolemid |23|
  4319. :pattern ( (|char#Plus| a b))
  4320. )))
  4321. (assert (forall ((arg0@@29 T@U) (arg1@@2 T@U) ) (! (= (type (|char#Minus| arg0@@29 arg1@@2)) charType)
  4322. :qid |funType:char#Minus|
  4323. :pattern ( (|char#Minus| arg0@@29 arg1@@2))
  4324. )))
  4325. (assert (forall ((a@@0 T@U) (b@@0 T@U) ) (! (=> (and (= (type a@@0) charType) (= (type b@@0) charType)) (= (|char#Minus| a@@0 b@@0) (|char#FromInt| (- (|char#ToInt| a@@0) (|char#ToInt| b@@0)))))
  4326. :qid |funwiths.164:15|
  4327. :skolemid |24|
  4328. :pattern ( (|char#Minus| a@@0 b@@0))
  4329. )))
  4330. (assert (forall ((T@@0 T@T) (arg0@@30 T@U) ) (! (= (type ($Unbox T@@0 arg0@@30)) T@@0)
  4331. :qid |funType:$Unbox|
  4332. :pattern ( ($Unbox T@@0 arg0@@30))
  4333. )))
  4334. (assert (forall ((x@@12 T@U) ) (! (let ((T@@1 (type x@@12)))
  4335. (= ($Unbox T@@1 ($Box x@@12)) x@@12))
  4336. :qid |funwiths.184:18|
  4337. :skolemid |25|
  4338. :pattern ( ($Box x@@12))
  4339. )))
  4340. (assert (forall ((bx T@U) ) (! (=> (and (= (type bx) BoxType) ($IsBox bx TInt)) (and (= ($Box ($Unbox intType bx)) bx) ($Is ($Unbox intType bx) TInt)))
  4341. :qid |funwiths.186:15|
  4342. :skolemid |26|
  4343. :pattern ( ($IsBox bx TInt))
  4344. )))
  4345. (assert (forall ((bx@@0 T@U) ) (! (=> (and (= (type bx@@0) BoxType) ($IsBox bx@@0 TReal)) (and (= ($Box ($Unbox realType bx@@0)) bx@@0) ($Is ($Unbox realType bx@@0) TReal)))
  4346. :qid |funwiths.190:15|
  4347. :skolemid |27|
  4348. :pattern ( ($IsBox bx@@0 TReal))
  4349. )))
  4350. (assert (forall ((bx@@1 T@U) ) (! (=> (and (= (type bx@@1) BoxType) ($IsBox bx@@1 TBool)) (and (= ($Box ($Unbox boolType bx@@1)) bx@@1) ($Is ($Unbox boolType bx@@1) TBool)))
  4351. :qid |funwiths.195:15|
  4352. :skolemid |28|
  4353. :pattern ( ($IsBox bx@@1 TBool))
  4354. )))
  4355. (assert (forall ((bx@@2 T@U) ) (! (=> (and (= (type bx@@2) BoxType) ($IsBox bx@@2 TChar)) (and (= ($Box ($Unbox charType bx@@2)) bx@@2) ($Is ($Unbox charType bx@@2) TChar)))
  4356. :qid |funwiths.200:15|
  4357. :skolemid |29|
  4358. :pattern ( ($IsBox bx@@2 TChar))
  4359. )))
  4360. (assert (and (and (and (and (and (and (forall ((arg0@@31 T@T) (arg1@@3 T@T) ) (! (= (Ctor (MapType0Type arg0@@31 arg1@@3)) 12)
  4361. :qid |ctor:MapType0Type|
  4362. )) (forall ((arg0@@32 T@T) (arg1@@4 T@T) ) (! (= (MapType0TypeInv0 (MapType0Type arg0@@32 arg1@@4)) arg0@@32)
  4363. :qid |typeInv:MapType0TypeInv0|
  4364. :pattern ( (MapType0Type arg0@@32 arg1@@4))
  4365. ))) (forall ((arg0@@33 T@T) (arg1@@5 T@T) ) (! (= (MapType0TypeInv1 (MapType0Type arg0@@33 arg1@@5)) arg1@@5)
  4366. :qid |typeInv:MapType0TypeInv1|
  4367. :pattern ( (MapType0Type arg0@@33 arg1@@5))
  4368. ))) (forall ((arg0@@34 T@U) (arg1@@6 T@U) ) (! (let ((aVar1 (MapType0TypeInv1 (type arg0@@34))))
  4369. (= (type (MapType0Select arg0@@34 arg1@@6)) aVar1))
  4370. :qid |funType:MapType0Select|
  4371. :pattern ( (MapType0Select arg0@@34 arg1@@6))
  4372. ))) (forall ((arg0@@35 T@U) (arg1@@7 T@U) (arg2 T@U) ) (! (let ((aVar1@@0 (type arg2)))
  4373. (let ((aVar0 (type arg1@@7)))
  4374. (= (type (MapType0Store arg0@@35 arg1@@7 arg2)) (MapType0Type aVar0 aVar1@@0))))
  4375. :qid |funType:MapType0Store|
  4376. :pattern ( (MapType0Store arg0@@35 arg1@@7 arg2))
  4377. ))) (forall ((m T@U) (x0 T@U) (val T@U) ) (! (let ((aVar1@@1 (MapType0TypeInv1 (type m))))
  4378. (=> (= (type val) aVar1@@1) (= (MapType0Select (MapType0Store m x0 val) x0) val)))
  4379. :qid |mapAx0:MapType0Select|
  4380. :weight 0
  4381. ))) (and (forall ((val@@0 T@U) (m@@0 T@U) (x0@@0 T@U) (y0 T@U) ) (! (or (= x0@@0 y0) (= (MapType0Select (MapType0Store m@@0 x0@@0 val@@0) y0) (MapType0Select m@@0 y0)))
  4382. :qid |mapAx1:MapType0Select:0|
  4383. :weight 0
  4384. )) (forall ((val@@1 T@U) (m@@1 T@U) (x0@@1 T@U) (y0@@0 T@U) ) (! (or true (= (MapType0Select (MapType0Store m@@1 x0@@1 val@@1) y0@@0) (MapType0Select m@@1 y0@@0)))
  4385. :qid |mapAx2:MapType0Select|
  4386. :weight 0
  4387. )))))
  4388. (assert (forall ((bx@@3 T@U) (t@@13 T@U) ) (! (=> (and (and (= (type bx@@3) BoxType) (= (type t@@13) TyType)) ($IsBox bx@@3 (TSet t@@13))) (and (= ($Box ($Unbox (MapType0Type BoxType boolType) bx@@3)) bx@@3) ($Is ($Unbox (MapType0Type BoxType boolType) bx@@3) (TSet t@@13))))
  4389. :qid |funwiths.205:15|
  4390. :skolemid |30|
  4391. :pattern ( ($IsBox bx@@3 (TSet t@@13)))
  4392. )))
  4393. (assert (forall ((bx@@4 T@U) (t@@14 T@U) ) (! (=> (and (and (= (type bx@@4) BoxType) (= (type t@@14) TyType)) ($IsBox bx@@4 (TISet t@@14))) (and (= ($Box ($Unbox (MapType0Type BoxType boolType) bx@@4)) bx@@4) ($Is ($Unbox (MapType0Type BoxType boolType) bx@@4) (TISet t@@14))))
  4394. :qid |funwiths.210:15|
  4395. :skolemid |31|
  4396. :pattern ( ($IsBox bx@@4 (TISet t@@14)))
  4397. )))
  4398. (assert (forall ((bx@@5 T@U) (t@@15 T@U) ) (! (=> (and (and (= (type bx@@5) BoxType) (= (type t@@15) TyType)) ($IsBox bx@@5 (TMultiSet t@@15))) (and (= ($Box ($Unbox (MapType0Type BoxType intType) bx@@5)) bx@@5) ($Is ($Unbox (MapType0Type BoxType intType) bx@@5) (TMultiSet t@@15))))
  4399. :qid |funwiths.215:15|
  4400. :skolemid |32|
  4401. :pattern ( ($IsBox bx@@5 (TMultiSet t@@15)))
  4402. )))
  4403. (assert (and (forall ((arg0@@36 T@T) ) (! (= (Ctor (SeqType arg0@@36)) 13)
  4404. :qid |ctor:SeqType|
  4405. )) (forall ((arg0@@37 T@T) ) (! (= (SeqTypeInv0 (SeqType arg0@@37)) arg0@@37)
  4406. :qid |typeInv:SeqTypeInv0|
  4407. :pattern ( (SeqType arg0@@37))
  4408. ))))
  4409. (assert (forall ((bx@@6 T@U) (t@@16 T@U) ) (! (=> (and (and (= (type bx@@6) BoxType) (= (type t@@16) TyType)) ($IsBox bx@@6 (TSeq t@@16))) (and (= ($Box ($Unbox (SeqType BoxType) bx@@6)) bx@@6) ($Is ($Unbox (SeqType BoxType) bx@@6) (TSeq t@@16))))
  4410. :qid |funwiths.221:15|
  4411. :skolemid |33|
  4412. :pattern ( ($IsBox bx@@6 (TSeq t@@16)))
  4413. )))
  4414. (assert (and (and (forall ((arg0@@38 T@T) (arg1@@8 T@T) ) (! (= (Ctor (MapType arg0@@38 arg1@@8)) 14)
  4415. :qid |ctor:MapType|
  4416. )) (forall ((arg0@@39 T@T) (arg1@@9 T@T) ) (! (= (MapTypeInv0 (MapType arg0@@39 arg1@@9)) arg0@@39)
  4417. :qid |typeInv:MapTypeInv0|
  4418. :pattern ( (MapType arg0@@39 arg1@@9))
  4419. ))) (forall ((arg0@@40 T@T) (arg1@@10 T@T) ) (! (= (MapTypeInv1 (MapType arg0@@40 arg1@@10)) arg1@@10)
  4420. :qid |typeInv:MapTypeInv1|
  4421. :pattern ( (MapType arg0@@40 arg1@@10))
  4422. ))))
  4423. (assert (forall ((bx@@7 T@U) (s T@U) (t@@17 T@U) ) (! (=> (and (and (and (= (type bx@@7) BoxType) (= (type s) TyType)) (= (type t@@17) TyType)) ($IsBox bx@@7 (TMap s t@@17))) (and (= ($Box ($Unbox (MapType BoxType BoxType) bx@@7)) bx@@7) ($Is ($Unbox (MapType BoxType BoxType) bx@@7) (TMap s t@@17))))
  4424. :qid |funwiths.226:15|
  4425. :skolemid |34|
  4426. :pattern ( ($IsBox bx@@7 (TMap s t@@17)))
  4427. )))
  4428. (assert (and (and (forall ((arg0@@41 T@T) (arg1@@11 T@T) ) (! (= (Ctor (IMapType arg0@@41 arg1@@11)) 15)
  4429. :qid |ctor:IMapType|
  4430. )) (forall ((arg0@@42 T@T) (arg1@@12 T@T) ) (! (= (IMapTypeInv0 (IMapType arg0@@42 arg1@@12)) arg0@@42)
  4431. :qid |typeInv:IMapTypeInv0|
  4432. :pattern ( (IMapType arg0@@42 arg1@@12))
  4433. ))) (forall ((arg0@@43 T@T) (arg1@@13 T@T) ) (! (= (IMapTypeInv1 (IMapType arg0@@43 arg1@@13)) arg1@@13)
  4434. :qid |typeInv:IMapTypeInv1|
  4435. :pattern ( (IMapType arg0@@43 arg1@@13))
  4436. ))))
  4437. (assert (forall ((bx@@8 T@U) (s@@0 T@U) (t@@18 T@U) ) (! (=> (and (and (and (= (type bx@@8) BoxType) (= (type s@@0) TyType)) (= (type t@@18) TyType)) ($IsBox bx@@8 (TIMap s@@0 t@@18))) (and (= ($Box ($Unbox (IMapType BoxType BoxType) bx@@8)) bx@@8) ($Is ($Unbox (IMapType BoxType BoxType) bx@@8) (TIMap s@@0 t@@18))))
  4438. :qid |funwiths.231:15|
  4439. :skolemid |35|
  4440. :pattern ( ($IsBox bx@@8 (TIMap s@@0 t@@18)))
  4441. )))
  4442. (assert (forall ((v T@U) (t@@19 T@U) ) (! (=> (= (type t@@19) TyType) (and (=> ($IsBox ($Box v) t@@19) ($Is v t@@19)) (=> ($Is v t@@19) ($IsBox ($Box v) t@@19))))
  4443. :qid |funwiths.237:18|
  4444. :skolemid |36|
  4445. :pattern ( ($IsBox ($Box v) t@@19))
  4446. )))
  4447. (assert (and (and (and (and (and (forall ((arg0@@44 T@U) (arg1@@14 T@U) ) (! (let ((alpha@@1 (FieldTypeInv0 (type arg1@@14))))
  4448. (= (type (MapType1Select arg0@@44 arg1@@14)) alpha@@1))
  4449. :qid |funType:MapType1Select|
  4450. :pattern ( (MapType1Select arg0@@44 arg1@@14))
  4451. )) (= (Ctor MapType1Type) 16)) (forall ((arg0@@45 T@U) (arg1@@15 T@U) (arg2@@0 T@U) ) (! (= (type (MapType1Store arg0@@45 arg1@@15 arg2@@0)) MapType1Type)
  4452. :qid |funType:MapType1Store|
  4453. :pattern ( (MapType1Store arg0@@45 arg1@@15 arg2@@0))
  4454. ))) (forall ((m@@2 T@U) (x0@@2 T@U) (val@@2 T@U) ) (! (let ((alpha@@2 (FieldTypeInv0 (type x0@@2))))
  4455. (=> (= (type val@@2) alpha@@2) (= (MapType1Select (MapType1Store m@@2 x0@@2 val@@2) x0@@2) val@@2)))
  4456. :qid |mapAx0:MapType1Select|
  4457. :weight 0
  4458. ))) (and (forall ((val@@3 T@U) (m@@3 T@U) (x0@@3 T@U) (y0@@1 T@U) ) (! (or (= x0@@3 y0@@1) (= (MapType1Select (MapType1Store m@@3 x0@@3 val@@3) y0@@1) (MapType1Select m@@3 y0@@1)))
  4459. :qid |mapAx1:MapType1Select:0|
  4460. :weight 0
  4461. )) (forall ((val@@4 T@U) (m@@4 T@U) (x0@@4 T@U) (y0@@2 T@U) ) (! (or true (= (MapType1Select (MapType1Store m@@4 x0@@4 val@@4) y0@@2) (MapType1Select m@@4 y0@@2)))
  4462. :qid |mapAx2:MapType1Select|
  4463. :weight 0
  4464. )))) (= (Ctor refType) 17)))
  4465. (assert (forall ((v@@0 T@U) (t@@20 T@U) (h T@U) ) (! (=> (and (= (type t@@20) TyType) (= (type h) (MapType0Type refType MapType1Type))) (and (=> ($IsAllocBox ($Box v@@0) t@@20 h) ($IsAlloc v@@0 t@@20 h)) (=> ($IsAlloc v@@0 t@@20 h) ($IsAllocBox ($Box v@@0) t@@20 h))))
  4466. :qid |funwiths.241:18|
  4467. :skolemid |37|
  4468. :pattern ( ($IsAllocBox ($Box v@@0) t@@20 h))
  4469. )))
  4470. (assert (forall ((v@@1 T@U) ) (! (=> (= (type v@@1) intType) ($Is v@@1 TInt))
  4471. :qid |funwiths.253:15|
  4472. :skolemid |38|
  4473. :pattern ( ($Is v@@1 TInt))
  4474. )))
  4475. (assert (forall ((v@@2 T@U) ) (! (=> (= (type v@@2) realType) ($Is v@@2 TReal))
  4476. :qid |funwiths.255:15|
  4477. :skolemid |39|
  4478. :pattern ( ($Is v@@2 TReal))
  4479. )))
  4480. (assert (forall ((v@@3 T@U) ) (! (=> (= (type v@@3) boolType) ($Is v@@3 TBool))
  4481. :qid |funwiths.257:15|
  4482. :skolemid |40|
  4483. :pattern ( ($Is v@@3 TBool))
  4484. )))
  4485. (assert (forall ((v@@4 T@U) ) (! (=> (= (type v@@4) charType) ($Is v@@4 TChar))
  4486. :qid |funwiths.259:15|
  4487. :skolemid |41|
  4488. :pattern ( ($Is v@@4 TChar))
  4489. )))
  4490. (assert (forall ((v@@5 T@U) ) (! (=> (= (type v@@5) BoxType) ($Is v@@5 TORDINAL))
  4491. :qid |funwiths.261:15|
  4492. :skolemid |42|
  4493. :pattern ( ($Is v@@5 TORDINAL))
  4494. )))
  4495. (assert (forall ((h@@0 T@U) (v@@6 T@U) ) (! (=> (and (= (type h@@0) (MapType0Type refType MapType1Type)) (= (type v@@6) intType)) ($IsAlloc v@@6 TInt h@@0))
  4496. :qid |funwiths.263:15|
  4497. :skolemid |43|
  4498. :pattern ( ($IsAlloc v@@6 TInt h@@0))
  4499. )))
  4500. (assert (forall ((h@@1 T@U) (v@@7 T@U) ) (! (=> (and (= (type h@@1) (MapType0Type refType MapType1Type)) (= (type v@@7) realType)) ($IsAlloc v@@7 TReal h@@1))
  4501. :qid |funwiths.265:15|
  4502. :skolemid |44|
  4503. :pattern ( ($IsAlloc v@@7 TReal h@@1))
  4504. )))
  4505. (assert (forall ((h@@2 T@U) (v@@8 T@U) ) (! (=> (and (= (type h@@2) (MapType0Type refType MapType1Type)) (= (type v@@8) boolType)) ($IsAlloc v@@8 TBool h@@2))
  4506. :qid |funwiths.267:15|
  4507. :skolemid |45|
  4508. :pattern ( ($IsAlloc v@@8 TBool h@@2))
  4509. )))
  4510. (assert (forall ((h@@3 T@U) (v@@9 T@U) ) (! (=> (and (= (type h@@3) (MapType0Type refType MapType1Type)) (= (type v@@9) charType)) ($IsAlloc v@@9 TChar h@@3))
  4511. :qid |funwiths.269:15|
  4512. :skolemid |46|
  4513. :pattern ( ($IsAlloc v@@9 TChar h@@3))
  4514. )))
  4515. (assert (forall ((h@@4 T@U) (v@@10 T@U) ) (! (=> (and (= (type h@@4) (MapType0Type refType MapType1Type)) (= (type v@@10) BoxType)) ($IsAlloc v@@10 TORDINAL h@@4))
  4516. :qid |funwiths.271:15|
  4517. :skolemid |47|
  4518. :pattern ( ($IsAlloc v@@10 TORDINAL h@@4))
  4519. )))
  4520. (assert (forall ((v@@11 T@U) (t0 T@U) ) (! (=> (and (= (type v@@11) (MapType0Type BoxType boolType)) (= (type t0) TyType)) (and (=> ($Is v@@11 (TSet t0)) (forall ((bx@@9 T@U) ) (! (=> (and (= (type bx@@9) BoxType) (U_2_bool (MapType0Select v@@11 bx@@9))) ($IsBox bx@@9 t0))
  4521. :qid |funwiths.277:33|
  4522. :skolemid |48|
  4523. :pattern ( (MapType0Select v@@11 bx@@9))
  4524. ))) (=> (forall ((bx@@10 T@U) ) (! (=> (and (= (type bx@@10) BoxType) (U_2_bool (MapType0Select v@@11 bx@@10))) ($IsBox bx@@10 t0))
  4525. :qid |funwiths.277:33|
  4526. :skolemid |48|
  4527. :pattern ( (MapType0Select v@@11 bx@@10))
  4528. )) ($Is v@@11 (TSet t0)))))
  4529. :qid |funwiths.275:15|
  4530. :skolemid |49|
  4531. :pattern ( ($Is v@@11 (TSet t0)))
  4532. )))
  4533. (assert (forall ((v@@12 T@U) (t0@@0 T@U) ) (! (=> (and (= (type v@@12) (MapType0Type BoxType boolType)) (= (type t0@@0) TyType)) (and (=> ($Is v@@12 (TISet t0@@0)) (forall ((bx@@11 T@U) ) (! (=> (and (= (type bx@@11) BoxType) (U_2_bool (MapType0Select v@@12 bx@@11))) ($IsBox bx@@11 t0@@0))
  4534. :qid |funwiths.281:34|
  4535. :skolemid |50|
  4536. :pattern ( (MapType0Select v@@12 bx@@11))
  4537. ))) (=> (forall ((bx@@12 T@U) ) (! (=> (and (= (type bx@@12) BoxType) (U_2_bool (MapType0Select v@@12 bx@@12))) ($IsBox bx@@12 t0@@0))
  4538. :qid |funwiths.281:34|
  4539. :skolemid |50|
  4540. :pattern ( (MapType0Select v@@12 bx@@12))
  4541. )) ($Is v@@12 (TISet t0@@0)))))
  4542. :qid |funwiths.279:15|
  4543. :skolemid |51|
  4544. :pattern ( ($Is v@@12 (TISet t0@@0)))
  4545. )))
  4546. (assert (forall ((v@@13 T@U) (t0@@1 T@U) ) (! (=> (and (= (type v@@13) (MapType0Type BoxType intType)) (= (type t0@@1) TyType)) (and (=> ($Is v@@13 (TMultiSet t0@@1)) (forall ((bx@@13 T@U) ) (! (=> (and (= (type bx@@13) BoxType) (< 0 (U_2_int (MapType0Select v@@13 bx@@13)))) ($IsBox bx@@13 t0@@1))
  4547. :qid |funwiths.286:19|
  4548. :skolemid |52|
  4549. :pattern ( (MapType0Select v@@13 bx@@13))
  4550. ))) (=> (forall ((bx@@14 T@U) ) (! (=> (and (= (type bx@@14) BoxType) (< 0 (U_2_int (MapType0Select v@@13 bx@@14)))) ($IsBox bx@@14 t0@@1))
  4551. :qid |funwiths.286:19|
  4552. :skolemid |52|
  4553. :pattern ( (MapType0Select v@@13 bx@@14))
  4554. )) ($Is v@@13 (TMultiSet t0@@1)))))
  4555. :qid |funwiths.283:15|
  4556. :skolemid |53|
  4557. :pattern ( ($Is v@@13 (TMultiSet t0@@1)))
  4558. )))
  4559. (assert (forall ((v@@14 T@U) (t0@@2 T@U) ) (! (=> (and (and (= (type v@@14) (MapType0Type BoxType intType)) (= (type t0@@2) TyType)) ($Is v@@14 (TMultiSet t0@@2))) ($IsGoodMultiSet v@@14))
  4560. :qid |funwiths.288:15|
  4561. :skolemid |54|
  4562. :pattern ( ($Is v@@14 (TMultiSet t0@@2)))
  4563. )))
  4564. (assert (forall ((arg0@@46 T@U) (arg1@@16 Int) ) (! (let ((T@@2 (SeqTypeInv0 (type arg0@@46))))
  4565. (= (type (|Seq#Index| arg0@@46 arg1@@16)) T@@2))
  4566. :qid |funType:Seq#Index|
  4567. :pattern ( (|Seq#Index| arg0@@46 arg1@@16))
  4568. )))
  4569. (assert (forall ((v@@15 T@U) (t0@@3 T@U) ) (! (=> (and (= (type v@@15) (SeqType BoxType)) (= (type t0@@3) TyType)) (and (=> ($Is v@@15 (TSeq t0@@3)) (forall ((i Int) ) (! (=> (and (<= 0 i) (< i (|Seq#Length| v@@15))) ($IsBox (|Seq#Index| v@@15 i) t0@@3))
  4570. :qid |funwiths.295:19|
  4571. :skolemid |55|
  4572. :pattern ( (|Seq#Index| v@@15 i))
  4573. ))) (=> (forall ((i@@0 Int) ) (! (=> (and (<= 0 i@@0) (< i@@0 (|Seq#Length| v@@15))) ($IsBox (|Seq#Index| v@@15 i@@0) t0@@3))
  4574. :qid |funwiths.295:19|
  4575. :skolemid |55|
  4576. :pattern ( (|Seq#Index| v@@15 i@@0))
  4577. )) ($Is v@@15 (TSeq t0@@3)))))
  4578. :qid |funwiths.292:15|
  4579. :skolemid |56|
  4580. :pattern ( ($Is v@@15 (TSeq t0@@3)))
  4581. )))
  4582. (assert (forall ((v@@16 T@U) (t0@@4 T@U) (h@@5 T@U) ) (! (=> (and (and (= (type v@@16) (MapType0Type BoxType boolType)) (= (type t0@@4) TyType)) (= (type h@@5) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc v@@16 (TSet t0@@4) h@@5) (forall ((bx@@15 T@U) ) (! (=> (and (= (type bx@@15) BoxType) (U_2_bool (MapType0Select v@@16 bx@@15))) ($IsAllocBox bx@@15 t0@@4 h@@5))
  4583. :qid |funwiths.302:19|
  4584. :skolemid |57|
  4585. :pattern ( (MapType0Select v@@16 bx@@15))
  4586. ))) (=> (forall ((bx@@16 T@U) ) (! (=> (and (= (type bx@@16) BoxType) (U_2_bool (MapType0Select v@@16 bx@@16))) ($IsAllocBox bx@@16 t0@@4 h@@5))
  4587. :qid |funwiths.302:19|
  4588. :skolemid |57|
  4589. :pattern ( (MapType0Select v@@16 bx@@16))
  4590. )) ($IsAlloc v@@16 (TSet t0@@4) h@@5))))
  4591. :qid |funwiths.299:15|
  4592. :skolemid |58|
  4593. :pattern ( ($IsAlloc v@@16 (TSet t0@@4) h@@5))
  4594. )))
  4595. (assert (forall ((v@@17 T@U) (t0@@5 T@U) (h@@6 T@U) ) (! (=> (and (and (= (type v@@17) (MapType0Type BoxType boolType)) (= (type t0@@5) TyType)) (= (type h@@6) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc v@@17 (TISet t0@@5) h@@6) (forall ((bx@@17 T@U) ) (! (=> (and (= (type bx@@17) BoxType) (U_2_bool (MapType0Select v@@17 bx@@17))) ($IsAllocBox bx@@17 t0@@5 h@@6))
  4596. :qid |funwiths.307:19|
  4597. :skolemid |59|
  4598. :pattern ( (MapType0Select v@@17 bx@@17))
  4599. ))) (=> (forall ((bx@@18 T@U) ) (! (=> (and (= (type bx@@18) BoxType) (U_2_bool (MapType0Select v@@17 bx@@18))) ($IsAllocBox bx@@18 t0@@5 h@@6))
  4600. :qid |funwiths.307:19|
  4601. :skolemid |59|
  4602. :pattern ( (MapType0Select v@@17 bx@@18))
  4603. )) ($IsAlloc v@@17 (TISet t0@@5) h@@6))))
  4604. :qid |funwiths.304:15|
  4605. :skolemid |60|
  4606. :pattern ( ($IsAlloc v@@17 (TISet t0@@5) h@@6))
  4607. )))
  4608. (assert (forall ((v@@18 T@U) (t0@@6 T@U) (h@@7 T@U) ) (! (=> (and (and (= (type v@@18) (MapType0Type BoxType intType)) (= (type t0@@6) TyType)) (= (type h@@7) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc v@@18 (TMultiSet t0@@6) h@@7) (forall ((bx@@19 T@U) ) (! (=> (and (= (type bx@@19) BoxType) (< 0 (U_2_int (MapType0Select v@@18 bx@@19)))) ($IsAllocBox bx@@19 t0@@6 h@@7))
  4609. :qid |funwiths.312:19|
  4610. :skolemid |61|
  4611. :pattern ( (MapType0Select v@@18 bx@@19))
  4612. ))) (=> (forall ((bx@@20 T@U) ) (! (=> (and (= (type bx@@20) BoxType) (< 0 (U_2_int (MapType0Select v@@18 bx@@20)))) ($IsAllocBox bx@@20 t0@@6 h@@7))
  4613. :qid |funwiths.312:19|
  4614. :skolemid |61|
  4615. :pattern ( (MapType0Select v@@18 bx@@20))
  4616. )) ($IsAlloc v@@18 (TMultiSet t0@@6) h@@7))))
  4617. :qid |funwiths.309:15|
  4618. :skolemid |62|
  4619. :pattern ( ($IsAlloc v@@18 (TMultiSet t0@@6) h@@7))
  4620. )))
  4621. (assert (forall ((v@@19 T@U) (t0@@7 T@U) (h@@8 T@U) ) (! (=> (and (and (= (type v@@19) (SeqType BoxType)) (= (type t0@@7) TyType)) (= (type h@@8) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc v@@19 (TSeq t0@@7) h@@8) (forall ((i@@1 Int) ) (! (=> (and (<= 0 i@@1) (< i@@1 (|Seq#Length| v@@19))) ($IsAllocBox (|Seq#Index| v@@19 i@@1) t0@@7 h@@8))
  4622. :qid |funwiths.317:19|
  4623. :skolemid |63|
  4624. :pattern ( (|Seq#Index| v@@19 i@@1))
  4625. ))) (=> (forall ((i@@2 Int) ) (! (=> (and (<= 0 i@@2) (< i@@2 (|Seq#Length| v@@19))) ($IsAllocBox (|Seq#Index| v@@19 i@@2) t0@@7 h@@8))
  4626. :qid |funwiths.317:19|
  4627. :skolemid |63|
  4628. :pattern ( (|Seq#Index| v@@19 i@@2))
  4629. )) ($IsAlloc v@@19 (TSeq t0@@7) h@@8))))
  4630. :qid |funwiths.314:15|
  4631. :skolemid |64|
  4632. :pattern ( ($IsAlloc v@@19 (TSeq t0@@7) h@@8))
  4633. )))
  4634. (assert (and (forall ((arg0@@47 T@U) ) (! (let ((V (MapTypeInv1 (type arg0@@47))))
  4635. (let ((U (MapTypeInv0 (type arg0@@47))))
  4636. (= (type (|Map#Elements| arg0@@47)) (MapType0Type U V))))
  4637. :qid |funType:Map#Elements|
  4638. :pattern ( (|Map#Elements| arg0@@47))
  4639. )) (forall ((arg0@@48 T@U) ) (! (let ((U@@0 (MapTypeInv0 (type arg0@@48))))
  4640. (= (type (|Map#Domain| arg0@@48)) (MapType0Type U@@0 boolType)))
  4641. :qid |funType:Map#Domain|
  4642. :pattern ( (|Map#Domain| arg0@@48))
  4643. ))))
  4644. (assert (forall ((v@@20 T@U) (t0@@8 T@U) (t1 T@U) ) (! (=> (and (and (= (type v@@20) (MapType BoxType BoxType)) (= (type t0@@8) TyType)) (= (type t1) TyType)) (and (=> ($Is v@@20 (TMap t0@@8 t1)) (forall ((bx@@21 T@U) ) (! (=> (and (= (type bx@@21) BoxType) (U_2_bool (MapType0Select (|Map#Domain| v@@20) bx@@21))) (and ($IsBox (MapType0Select (|Map#Elements| v@@20) bx@@21) t1) ($IsBox bx@@21 t0@@8)))
  4645. :qid |funwiths.324:19|
  4646. :skolemid |65|
  4647. :pattern ( (MapType0Select (|Map#Elements| v@@20) bx@@21))
  4648. :pattern ( (MapType0Select (|Map#Domain| v@@20) bx@@21))
  4649. ))) (=> (forall ((bx@@22 T@U) ) (! (=> (and (= (type bx@@22) BoxType) (U_2_bool (MapType0Select (|Map#Domain| v@@20) bx@@22))) (and ($IsBox (MapType0Select (|Map#Elements| v@@20) bx@@22) t1) ($IsBox bx@@22 t0@@8)))
  4650. :qid |funwiths.324:19|
  4651. :skolemid |65|
  4652. :pattern ( (MapType0Select (|Map#Elements| v@@20) bx@@22))
  4653. :pattern ( (MapType0Select (|Map#Domain| v@@20) bx@@22))
  4654. )) ($Is v@@20 (TMap t0@@8 t1)))))
  4655. :qid |funwiths.321:15|
  4656. :skolemid |66|
  4657. :pattern ( ($Is v@@20 (TMap t0@@8 t1)))
  4658. )))
  4659. (assert (forall ((v@@21 T@U) (t0@@9 T@U) (t1@@0 T@U) (h@@9 T@U) ) (! (=> (and (and (and (= (type v@@21) (MapType BoxType BoxType)) (= (type t0@@9) TyType)) (= (type t1@@0) TyType)) (= (type h@@9) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc v@@21 (TMap t0@@9 t1@@0) h@@9) (forall ((bx@@23 T@U) ) (! (=> (and (= (type bx@@23) BoxType) (U_2_bool (MapType0Select (|Map#Domain| v@@21) bx@@23))) (and ($IsAllocBox (MapType0Select (|Map#Elements| v@@21) bx@@23) t1@@0 h@@9) ($IsAllocBox bx@@23 t0@@9 h@@9)))
  4660. :qid |funwiths.331:19|
  4661. :skolemid |67|
  4662. :pattern ( (MapType0Select (|Map#Elements| v@@21) bx@@23))
  4663. :pattern ( (MapType0Select (|Map#Domain| v@@21) bx@@23))
  4664. ))) (=> (forall ((bx@@24 T@U) ) (! (=> (and (= (type bx@@24) BoxType) (U_2_bool (MapType0Select (|Map#Domain| v@@21) bx@@24))) (and ($IsAllocBox (MapType0Select (|Map#Elements| v@@21) bx@@24) t1@@0 h@@9) ($IsAllocBox bx@@24 t0@@9 h@@9)))
  4665. :qid |funwiths.331:19|
  4666. :skolemid |67|
  4667. :pattern ( (MapType0Select (|Map#Elements| v@@21) bx@@24))
  4668. :pattern ( (MapType0Select (|Map#Domain| v@@21) bx@@24))
  4669. )) ($IsAlloc v@@21 (TMap t0@@9 t1@@0) h@@9))))
  4670. :qid |funwiths.328:15|
  4671. :skolemid |68|
  4672. :pattern ( ($IsAlloc v@@21 (TMap t0@@9 t1@@0) h@@9))
  4673. )))
  4674. (assert (and (forall ((arg0@@49 T@U) ) (! (let ((V@@0 (IMapTypeInv1 (type arg0@@49))))
  4675. (let ((U@@1 (IMapTypeInv0 (type arg0@@49))))
  4676. (= (type (|IMap#Elements| arg0@@49)) (MapType0Type U@@1 V@@0))))
  4677. :qid |funType:IMap#Elements|
  4678. :pattern ( (|IMap#Elements| arg0@@49))
  4679. )) (forall ((arg0@@50 T@U) ) (! (let ((U@@2 (IMapTypeInv0 (type arg0@@50))))
  4680. (= (type (|IMap#Domain| arg0@@50)) (MapType0Type U@@2 boolType)))
  4681. :qid |funType:IMap#Domain|
  4682. :pattern ( (|IMap#Domain| arg0@@50))
  4683. ))))
  4684. (assert (forall ((v@@22 T@U) (t0@@10 T@U) (t1@@1 T@U) ) (! (=> (and (and (= (type v@@22) (IMapType BoxType BoxType)) (= (type t0@@10) TyType)) (= (type t1@@1) TyType)) (and (=> ($Is v@@22 (TIMap t0@@10 t1@@1)) (forall ((bx@@25 T@U) ) (! (=> (and (= (type bx@@25) BoxType) (U_2_bool (MapType0Select (|IMap#Domain| v@@22) bx@@25))) (and ($IsBox (MapType0Select (|IMap#Elements| v@@22) bx@@25) t1@@1) ($IsBox bx@@25 t0@@10)))
  4685. :qid |funwiths.339:19|
  4686. :skolemid |69|
  4687. :pattern ( (MapType0Select (|IMap#Elements| v@@22) bx@@25))
  4688. :pattern ( (MapType0Select (|IMap#Domain| v@@22) bx@@25))
  4689. ))) (=> (forall ((bx@@26 T@U) ) (! (=> (and (= (type bx@@26) BoxType) (U_2_bool (MapType0Select (|IMap#Domain| v@@22) bx@@26))) (and ($IsBox (MapType0Select (|IMap#Elements| v@@22) bx@@26) t1@@1) ($IsBox bx@@26 t0@@10)))
  4690. :qid |funwiths.339:19|
  4691. :skolemid |69|
  4692. :pattern ( (MapType0Select (|IMap#Elements| v@@22) bx@@26))
  4693. :pattern ( (MapType0Select (|IMap#Domain| v@@22) bx@@26))
  4694. )) ($Is v@@22 (TIMap t0@@10 t1@@1)))))
  4695. :qid |funwiths.336:15|
  4696. :skolemid |70|
  4697. :pattern ( ($Is v@@22 (TIMap t0@@10 t1@@1)))
  4698. )))
  4699. (assert (forall ((v@@23 T@U) (t0@@11 T@U) (t1@@2 T@U) (h@@10 T@U) ) (! (=> (and (and (and (= (type v@@23) (IMapType BoxType BoxType)) (= (type t0@@11) TyType)) (= (type t1@@2) TyType)) (= (type h@@10) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc v@@23 (TIMap t0@@11 t1@@2) h@@10) (forall ((bx@@27 T@U) ) (! (=> (and (= (type bx@@27) BoxType) (U_2_bool (MapType0Select (|IMap#Domain| v@@23) bx@@27))) (and ($IsAllocBox (MapType0Select (|IMap#Elements| v@@23) bx@@27) t1@@2 h@@10) ($IsAllocBox bx@@27 t0@@11 h@@10)))
  4700. :qid |funwiths.346:19|
  4701. :skolemid |71|
  4702. :pattern ( (MapType0Select (|IMap#Elements| v@@23) bx@@27))
  4703. :pattern ( (MapType0Select (|IMap#Domain| v@@23) bx@@27))
  4704. ))) (=> (forall ((bx@@28 T@U) ) (! (=> (and (= (type bx@@28) BoxType) (U_2_bool (MapType0Select (|IMap#Domain| v@@23) bx@@28))) (and ($IsAllocBox (MapType0Select (|IMap#Elements| v@@23) bx@@28) t1@@2 h@@10) ($IsAllocBox bx@@28 t0@@11 h@@10)))
  4705. :qid |funwiths.346:19|
  4706. :skolemid |71|
  4707. :pattern ( (MapType0Select (|IMap#Elements| v@@23) bx@@28))
  4708. :pattern ( (MapType0Select (|IMap#Domain| v@@23) bx@@28))
  4709. )) ($IsAlloc v@@23 (TIMap t0@@11 t1@@2) h@@10))))
  4710. :qid |funwiths.343:15|
  4711. :skolemid |72|
  4712. :pattern ( ($IsAlloc v@@23 (TIMap t0@@11 t1@@2) h@@10))
  4713. )))
  4714. (assert (and (and (forall ((arg0@@51 T@U) (arg1@@17 T@U) ) (! (= (type (TypeTuple arg0@@51 arg1@@17)) ClassNameType)
  4715. :qid |funType:TypeTuple|
  4716. :pattern ( (TypeTuple arg0@@51 arg1@@17))
  4717. )) (forall ((arg0@@52 T@U) ) (! (= (type (TypeTupleCar arg0@@52)) ClassNameType)
  4718. :qid |funType:TypeTupleCar|
  4719. :pattern ( (TypeTupleCar arg0@@52))
  4720. ))) (forall ((arg0@@53 T@U) ) (! (= (type (TypeTupleCdr arg0@@53)) ClassNameType)
  4721. :qid |funType:TypeTupleCdr|
  4722. :pattern ( (TypeTupleCdr arg0@@53))
  4723. ))))
  4724. (assert (forall ((a@@1 T@U) (b@@1 T@U) ) (! (=> (and (= (type a@@1) ClassNameType) (= (type b@@1) ClassNameType)) (and (= (TypeTupleCar (TypeTuple a@@1 b@@1)) a@@1) (= (TypeTupleCdr (TypeTuple a@@1 b@@1)) b@@1)))
  4725. :qid |funwiths.373:15|
  4726. :skolemid |73|
  4727. :pattern ( (TypeTuple a@@1 b@@1))
  4728. )))
  4729. (assert (forall ((arg0@@54 T@U) ) (! (= (type (SetRef_to_SetBox arg0@@54)) (MapType0Type BoxType boolType))
  4730. :qid |funType:SetRef_to_SetBox|
  4731. :pattern ( (SetRef_to_SetBox arg0@@54))
  4732. )))
  4733. (assert (forall ((s@@1 T@U) (bx@@29 T@U) ) (! (=> (and (= (type s@@1) (MapType0Type refType boolType)) (= (type bx@@29) BoxType)) (and (=> (U_2_bool (MapType0Select (SetRef_to_SetBox s@@1) bx@@29)) (U_2_bool (MapType0Select s@@1 ($Unbox refType bx@@29)))) (=> (U_2_bool (MapType0Select s@@1 ($Unbox refType bx@@29))) (U_2_bool (MapType0Select (SetRef_to_SetBox s@@1) bx@@29)))))
  4734. :qid |funwiths.381:15|
  4735. :skolemid |74|
  4736. :pattern ( (MapType0Select (SetRef_to_SetBox s@@1) bx@@29))
  4737. )))
  4738. (assert (= (type Tclass._System.object?) TyType))
  4739. (assert (forall ((s@@2 T@U) ) (! (=> (= (type s@@2) (MapType0Type refType boolType)) ($Is (SetRef_to_SetBox s@@2) (TSet Tclass._System.object?)))
  4740. :qid |funwiths.385:15|
  4741. :skolemid |75|
  4742. :pattern ( (SetRef_to_SetBox s@@2))
  4743. )))
  4744. (assert (= (Ctor DatatypeTypeType) 18))
  4745. (assert (forall ((d T@U) ) (! (=> (= (type d) DatatypeTypeType) (= (BoxRank ($Box d)) (DtRank d)))
  4746. :qid |funwiths.399:15|
  4747. :skolemid |76|
  4748. :pattern ( (BoxRank ($Box d)))
  4749. )))
  4750. (assert (forall ((o T@U) ) (! (=> (= (type o) BoxType) (<= 0 (|ORD#Offset| o)))
  4751. :qid |funwiths.407:15|
  4752. :skolemid |77|
  4753. :pattern ( (|ORD#Offset| o))
  4754. )))
  4755. (assert (forall ((arg0@@55 Int) ) (! (= (type (|ORD#FromNat| arg0@@55)) BoxType)
  4756. :qid |funType:ORD#FromNat|
  4757. :pattern ( (|ORD#FromNat| arg0@@55))
  4758. )))
  4759. (assert (forall ((n@@0 Int) ) (! (=> (<= 0 n@@0) (and (|ORD#IsNat| (|ORD#FromNat| n@@0)) (= (|ORD#Offset| (|ORD#FromNat| n@@0)) n@@0)))
  4760. :qid |funwiths.421:15|
  4761. :skolemid |78|
  4762. :pattern ( (|ORD#FromNat| n@@0))
  4763. )))
  4764. (assert (forall ((o@@0 T@U) ) (! (=> (and (= (type o@@0) BoxType) (|ORD#IsNat| o@@0)) (= o@@0 (|ORD#FromNat| (|ORD#Offset| o@@0))))
  4765. :qid |funwiths.425:15|
  4766. :skolemid |79|
  4767. :pattern ( (|ORD#Offset| o@@0))
  4768. :pattern ( (|ORD#IsNat| o@@0))
  4769. )))
  4770. (assert (forall ((o@@1 T@U) (p T@U) ) (! (=> (and (= (type o@@1) BoxType) (= (type p) BoxType)) (and (and (=> (|ORD#Less| o@@1 p) (not (= o@@1 p))) (=> (and (|ORD#IsNat| o@@1) (not (|ORD#IsNat| p))) (|ORD#Less| o@@1 p))) (=> (and (|ORD#IsNat| o@@1) (|ORD#IsNat| p)) (and (=> (|ORD#Less| o@@1 p) (< (|ORD#Offset| o@@1) (|ORD#Offset| p))) (=> (< (|ORD#Offset| o@@1) (|ORD#Offset| p)) (|ORD#Less| o@@1 p))))))
  4771. :qid |funwiths.431:15|
  4772. :skolemid |80|
  4773. :pattern ( (|ORD#Less| o@@1 p))
  4774. )))
  4775. (assert (forall ((o@@2 T@U) (p@@0 T@U) ) (! (=> (and (and (= (type o@@2) BoxType) (= (type p@@0) BoxType)) (|ORD#Less| o@@2 p@@0)) (not (= o@@2 p@@0)))
  4776. :qid |funwiths.438:15|
  4777. :skolemid |81|
  4778. :pattern ( (|ORD#Less| o@@2 p@@0))
  4779. )))
  4780. (assert (forall ((o@@3 T@U) (p@@1 T@U) ) (! (=> (and (= (type o@@3) BoxType) (= (type p@@1) BoxType)) (or (or (|ORD#Less| o@@3 p@@1) (= o@@3 p@@1)) (|ORD#Less| p@@1 o@@3)))
  4781. :qid |funwiths.440:15|
  4782. :skolemid |82|
  4783. :pattern ( (|ORD#Less| o@@3 p@@1) (|ORD#Less| p@@1 o@@3))
  4784. )))
  4785. (assert (forall ((o@@4 T@U) (p@@2 T@U) (r T@U) ) (! (=> (and (and (and (= (type o@@4) BoxType) (= (type p@@2) BoxType)) (= (type r) BoxType)) (and (|ORD#Less| o@@4 p@@2) (|ORD#Less| p@@2 r))) (|ORD#Less| o@@4 r))
  4786. :qid |funwiths.444:15|
  4787. :skolemid |83|
  4788. :pattern ( (|ORD#Less| o@@4 p@@2) (|ORD#Less| p@@2 r))
  4789. :pattern ( (|ORD#Less| o@@4 p@@2) (|ORD#Less| o@@4 r))
  4790. )))
  4791. (assert (forall ((o@@5 T@U) (p@@3 T@U) ) (! (=> (and (= (type o@@5) BoxType) (= (type p@@3) BoxType)) (and (=> (|ORD#LessThanLimit| o@@5 p@@3) (|ORD#Less| o@@5 p@@3)) (=> (|ORD#Less| o@@5 p@@3) (|ORD#LessThanLimit| o@@5 p@@3))))
  4792. :qid |funwiths.450:15|
  4793. :skolemid |84|
  4794. :pattern ( (|ORD#LessThanLimit| o@@5 p@@3))
  4795. )))
  4796. (assert (forall ((arg0@@56 T@U) (arg1@@18 T@U) ) (! (= (type (|ORD#Plus| arg0@@56 arg1@@18)) BoxType)
  4797. :qid |funType:ORD#Plus|
  4798. :pattern ( (|ORD#Plus| arg0@@56 arg1@@18))
  4799. )))
  4800. (assert (forall ((o@@6 T@U) (p@@4 T@U) ) (! (=> (and (= (type o@@6) BoxType) (= (type p@@4) BoxType)) (and (=> (|ORD#IsNat| (|ORD#Plus| o@@6 p@@4)) (and (|ORD#IsNat| o@@6) (|ORD#IsNat| p@@4))) (=> (|ORD#IsNat| p@@4) (and (and (=> (|ORD#IsNat| (|ORD#Plus| o@@6 p@@4)) (|ORD#IsNat| o@@6)) (=> (|ORD#IsNat| o@@6) (|ORD#IsNat| (|ORD#Plus| o@@6 p@@4)))) (= (|ORD#Offset| (|ORD#Plus| o@@6 p@@4)) (+ (|ORD#Offset| o@@6) (|ORD#Offset| p@@4)))))))
  4801. :qid |funwiths.456:15|
  4802. :skolemid |85|
  4803. :pattern ( (|ORD#Plus| o@@6 p@@4))
  4804. )))
  4805. (assert (forall ((o@@7 T@U) (p@@5 T@U) ) (! (=> (and (= (type o@@7) BoxType) (= (type p@@5) BoxType)) (and (or (= o@@7 (|ORD#Plus| o@@7 p@@5)) (|ORD#Less| o@@7 (|ORD#Plus| o@@7 p@@5))) (or (= p@@5 (|ORD#Plus| o@@7 p@@5)) (|ORD#Less| p@@5 (|ORD#Plus| o@@7 p@@5)))))
  4806. :qid |funwiths.463:15|
  4807. :skolemid |86|
  4808. :pattern ( (|ORD#Plus| o@@7 p@@5))
  4809. )))
  4810. (assert (forall ((o@@8 T@U) (p@@6 T@U) ) (! (=> (and (= (type o@@8) BoxType) (= (type p@@6) BoxType)) (and (=> (= o@@8 (|ORD#FromNat| 0)) (= (|ORD#Plus| o@@8 p@@6) p@@6)) (=> (= p@@6 (|ORD#FromNat| 0)) (= (|ORD#Plus| o@@8 p@@6) o@@8))))
  4811. :qid |funwiths.468:15|
  4812. :skolemid |87|
  4813. :pattern ( (|ORD#Plus| o@@8 p@@6))
  4814. )))
  4815. (assert (forall ((arg0@@57 T@U) (arg1@@19 T@U) ) (! (= (type (|ORD#Minus| arg0@@57 arg1@@19)) BoxType)
  4816. :qid |funType:ORD#Minus|
  4817. :pattern ( (|ORD#Minus| arg0@@57 arg1@@19))
  4818. )))
  4819. (assert (forall ((o@@9 T@U) (p@@7 T@U) ) (! (=> (and (and (= (type o@@9) BoxType) (= (type p@@7) BoxType)) (and (|ORD#IsNat| p@@7) (<= (|ORD#Offset| p@@7) (|ORD#Offset| o@@9)))) (and (and (=> (|ORD#IsNat| (|ORD#Minus| o@@9 p@@7)) (|ORD#IsNat| o@@9)) (=> (|ORD#IsNat| o@@9) (|ORD#IsNat| (|ORD#Minus| o@@9 p@@7)))) (= (|ORD#Offset| (|ORD#Minus| o@@9 p@@7)) (- (|ORD#Offset| o@@9) (|ORD#Offset| p@@7)))))
  4820. :qid |funwiths.475:15|
  4821. :skolemid |88|
  4822. :pattern ( (|ORD#Minus| o@@9 p@@7))
  4823. )))
  4824. (assert (forall ((o@@10 T@U) (p@@8 T@U) ) (! (=> (and (and (= (type o@@10) BoxType) (= (type p@@8) BoxType)) (and (|ORD#IsNat| p@@8) (<= (|ORD#Offset| p@@8) (|ORD#Offset| o@@10)))) (or (and (= p@@8 (|ORD#FromNat| 0)) (= (|ORD#Minus| o@@10 p@@8) o@@10)) (and (not (= p@@8 (|ORD#FromNat| 0))) (|ORD#Less| (|ORD#Minus| o@@10 p@@8) o@@10))))
  4825. :qid |funwiths.481:15|
  4826. :skolemid |89|
  4827. :pattern ( (|ORD#Minus| o@@10 p@@8))
  4828. )))
  4829. (assert (forall ((o@@11 T@U) (m@@5 Int) (n@@1 Int) ) (! (=> (= (type o@@11) BoxType) (=> (and (<= 0 m@@5) (<= 0 n@@1)) (= (|ORD#Plus| (|ORD#Plus| o@@11 (|ORD#FromNat| m@@5)) (|ORD#FromNat| n@@1)) (|ORD#Plus| o@@11 (|ORD#FromNat| (+ m@@5 n@@1))))))
  4830. :qid |funwiths.487:15|
  4831. :skolemid |90|
  4832. :pattern ( (|ORD#Plus| (|ORD#Plus| o@@11 (|ORD#FromNat| m@@5)) (|ORD#FromNat| n@@1)))
  4833. )))
  4834. (assert (forall ((o@@12 T@U) (m@@6 Int) (n@@2 Int) ) (! (=> (= (type o@@12) BoxType) (=> (and (and (<= 0 m@@6) (<= 0 n@@2)) (<= (+ m@@6 n@@2) (|ORD#Offset| o@@12))) (= (|ORD#Minus| (|ORD#Minus| o@@12 (|ORD#FromNat| m@@6)) (|ORD#FromNat| n@@2)) (|ORD#Minus| o@@12 (|ORD#FromNat| (+ m@@6 n@@2))))))
  4835. :qid |funwiths.493:15|
  4836. :skolemid |91|
  4837. :pattern ( (|ORD#Minus| (|ORD#Minus| o@@12 (|ORD#FromNat| m@@6)) (|ORD#FromNat| n@@2)))
  4838. )))
  4839. (assert (forall ((o@@13 T@U) (m@@7 Int) (n@@3 Int) ) (! (=> (= (type o@@13) BoxType) (=> (and (and (<= 0 m@@7) (<= 0 n@@3)) (<= n@@3 (+ (|ORD#Offset| o@@13) m@@7))) (and (=> (<= 0 (- m@@7 n@@3)) (= (|ORD#Minus| (|ORD#Plus| o@@13 (|ORD#FromNat| m@@7)) (|ORD#FromNat| n@@3)) (|ORD#Plus| o@@13 (|ORD#FromNat| (- m@@7 n@@3))))) (=> (<= (- m@@7 n@@3) 0) (= (|ORD#Minus| (|ORD#Plus| o@@13 (|ORD#FromNat| m@@7)) (|ORD#FromNat| n@@3)) (|ORD#Minus| o@@13 (|ORD#FromNat| (- n@@3 m@@7))))))))
  4840. :qid |funwiths.499:15|
  4841. :skolemid |92|
  4842. :pattern ( (|ORD#Minus| (|ORD#Plus| o@@13 (|ORD#FromNat| m@@7)) (|ORD#FromNat| n@@3)))
  4843. )))
  4844. (assert (forall ((o@@14 T@U) (m@@8 Int) (n@@4 Int) ) (! (=> (= (type o@@14) BoxType) (=> (and (and (<= 0 m@@8) (<= 0 n@@4)) (<= n@@4 (+ (|ORD#Offset| o@@14) m@@8))) (and (=> (<= 0 (- m@@8 n@@4)) (= (|ORD#Plus| (|ORD#Minus| o@@14 (|ORD#FromNat| m@@8)) (|ORD#FromNat| n@@4)) (|ORD#Minus| o@@14 (|ORD#FromNat| (- m@@8 n@@4))))) (=> (<= (- m@@8 n@@4) 0) (= (|ORD#Plus| (|ORD#Minus| o@@14 (|ORD#FromNat| m@@8)) (|ORD#FromNat| n@@4)) (|ORD#Plus| o@@14 (|ORD#FromNat| (- n@@4 m@@8))))))))
  4845. :qid |funwiths.509:15|
  4846. :skolemid |93|
  4847. :pattern ( (|ORD#Plus| (|ORD#Minus| o@@14 (|ORD#FromNat| m@@8)) (|ORD#FromNat| n@@4)))
  4848. )))
  4849. (assert (forall ((arg0@@58 Int) ) (! (= (type (IndexField arg0@@58)) (FieldType BoxType))
  4850. :qid |funType:IndexField|
  4851. :pattern ( (IndexField arg0@@58))
  4852. )))
  4853. (assert (forall ((i@@3 Int) ) (! (= (FDim (IndexField i@@3)) 1)
  4854. :qid |funwiths.537:15|
  4855. :skolemid |94|
  4856. :pattern ( (IndexField i@@3))
  4857. )))
  4858. (assert (forall ((i@@4 Int) ) (! (= (IndexField_Inverse (IndexField i@@4)) i@@4)
  4859. :qid |funwiths.541:15|
  4860. :skolemid |95|
  4861. :pattern ( (IndexField i@@4))
  4862. )))
  4863. (assert (forall ((arg0@@59 T@U) (arg1@@20 Int) ) (! (= (type (MultiIndexField arg0@@59 arg1@@20)) (FieldType BoxType))
  4864. :qid |funType:MultiIndexField|
  4865. :pattern ( (MultiIndexField arg0@@59 arg1@@20))
  4866. )))
  4867. (assert (forall ((f T@U) (i@@5 Int) ) (! (=> (= (type f) (FieldType BoxType)) (= (FDim (MultiIndexField f i@@5)) (+ (FDim f) 1)))
  4868. :qid |funwiths.545:15|
  4869. :skolemid |96|
  4870. :pattern ( (MultiIndexField f i@@5))
  4871. )))
  4872. (assert (forall ((arg0@@60 T@U) ) (! (let ((T@@3 (FieldTypeInv0 (type arg0@@60))))
  4873. (= (type (MultiIndexField_Inverse0 arg0@@60)) (FieldType T@@3)))
  4874. :qid |funType:MultiIndexField_Inverse0|
  4875. :pattern ( (MultiIndexField_Inverse0 arg0@@60))
  4876. )))
  4877. (assert (forall ((f@@0 T@U) (i@@6 Int) ) (! (=> (= (type f@@0) (FieldType BoxType)) (and (= (MultiIndexField_Inverse0 (MultiIndexField f@@0 i@@6)) f@@0) (= (MultiIndexField_Inverse1 (MultiIndexField f@@0 i@@6)) i@@6)))
  4878. :qid |funwiths.553:15|
  4879. :skolemid |97|
  4880. :pattern ( (MultiIndexField f@@0 i@@6))
  4881. )))
  4882. (assert (and (and (forall ((alpha@@3 T@T) (arg0@@61 T@U) (arg1@@21 T@U) ) (! (= (type (FieldOfDecl alpha@@3 arg0@@61 arg1@@21)) (FieldType alpha@@3))
  4883. :qid |funType:FieldOfDecl|
  4884. :pattern ( (FieldOfDecl alpha@@3 arg0@@61 arg1@@21))
  4885. )) (forall ((arg0@@62 T@U) ) (! (= (type (DeclType arg0@@62)) ClassNameType)
  4886. :qid |funType:DeclType|
  4887. :pattern ( (DeclType arg0@@62))
  4888. ))) (forall ((arg0@@63 T@U) ) (! (= (type (DeclName arg0@@63)) NameFamilyType)
  4889. :qid |funType:DeclName|
  4890. :pattern ( (DeclName arg0@@63))
  4891. ))))
  4892. (assert (forall ((cl T@U) (nm T@U) (T@@4 T@T) ) (! (=> (and (= (type cl) ClassNameType) (= (type nm) NameFamilyType)) (and (= (DeclType (FieldOfDecl T@@4 cl nm)) cl) (= (DeclName (FieldOfDecl T@@4 cl nm)) nm)))
  4893. :qid |funwiths.566:18|
  4894. :skolemid |98|
  4895. :pattern ( (FieldOfDecl T@@4 cl nm))
  4896. )))
  4897. (assert (forall ((h@@11 T@U) (k T@U) (v@@24 T@U) (t@@21 T@U) ) (! (=> (and (and (and (and (= (type h@@11) (MapType0Type refType MapType1Type)) (= (type k) (MapType0Type refType MapType1Type))) (= (type t@@21) TyType)) ($HeapSucc h@@11 k)) ($IsAlloc v@@24 t@@21 h@@11)) ($IsAlloc v@@24 t@@21 k))
  4898. :qid |funwiths.573:18|
  4899. :skolemid |99|
  4900. :pattern ( ($HeapSucc h@@11 k) ($IsAlloc v@@24 t@@21 h@@11))
  4901. )))
  4902. (assert (forall ((h@@12 T@U) (k@@0 T@U) (bx@@30 T@U) (t@@22 T@U) ) (! (=> (and (and (and (and (and (= (type h@@12) (MapType0Type refType MapType1Type)) (= (type k@@0) (MapType0Type refType MapType1Type))) (= (type bx@@30) BoxType)) (= (type t@@22) TyType)) ($HeapSucc h@@12 k@@0)) ($IsAllocBox bx@@30 t@@22 h@@12)) ($IsAllocBox bx@@30 t@@22 k@@0))
  4903. :qid |funwiths.577:15|
  4904. :skolemid |100|
  4905. :pattern ( ($HeapSucc h@@12 k@@0) ($IsAllocBox bx@@30 t@@22 h@@12))
  4906. )))
  4907. (assert (= (FDim alloc) 0))
  4908. (assert (= (DeclName alloc) allocName))
  4909. (assert (not ($IsGhostField alloc)))
  4910. (assert (forall ((o@@15 T@U) ) (! (=> (= (type o@@15) refType) (<= 0 (_System.array.Length o@@15)))
  4911. :qid |funwiths.589:15|
  4912. :skolemid |101|
  4913. :no-pattern (type o@@15)
  4914. :no-pattern (U_2_int o@@15)
  4915. :no-pattern (U_2_bool o@@15)
  4916. )))
  4917. (assert (forall ((x@@13 Real) ) (! (= (q@Int x@@13) (to_int x@@13))
  4918. :qid |funwiths.593:15|
  4919. :skolemid |102|
  4920. :pattern ( (q@Int x@@13))
  4921. )))
  4922. (assert (forall ((x@@14 Int) ) (! (= (q@Real x@@14) (to_real x@@14))
  4923. :qid |funwiths.597:15|
  4924. :skolemid |103|
  4925. :pattern ( (q@Real x@@14))
  4926. )))
  4927. (assert (forall ((i@@7 Int) ) (! (= (q@Int (q@Real i@@7)) i@@7)
  4928. :qid |funwiths.599:15|
  4929. :skolemid |104|
  4930. :pattern ( (q@Int (q@Real i@@7)))
  4931. )))
  4932. (assert (= (type $OneHeap) (MapType0Type refType MapType1Type)))
  4933. (assert ($IsGoodHeap $OneHeap))
  4934. (assert (forall ((h@@13 T@U) (r@@0 T@U) (f@@1 T@U) (x@@15 T@U) ) (! (let ((alpha@@4 (type x@@15)))
  4935. (=> (and (and (and (= (type h@@13) (MapType0Type refType MapType1Type)) (= (type r@@0) refType)) (= (type f@@1) (FieldType alpha@@4))) ($IsGoodHeap (MapType0Store h@@13 r@@0 (MapType1Store (MapType0Select h@@13 r@@0) f@@1 x@@15)))) ($HeapSucc h@@13 (MapType0Store h@@13 r@@0 (MapType1Store (MapType0Select h@@13 r@@0) f@@1 x@@15)))))
  4936. :qid |funwiths.630:22|
  4937. :skolemid |105|
  4938. :pattern ( (MapType0Store h@@13 r@@0 (MapType1Store (MapType0Select h@@13 r@@0) f@@1 x@@15)))
  4939. )))
  4940. (assert (forall ((a@@2 T@U) (b@@2 T@U) (c T@U) ) (! (=> (and (and (and (and (= (type a@@2) (MapType0Type refType MapType1Type)) (= (type b@@2) (MapType0Type refType MapType1Type))) (= (type c) (MapType0Type refType MapType1Type))) (not (= a@@2 c))) (and ($HeapSucc a@@2 b@@2) ($HeapSucc b@@2 c))) ($HeapSucc a@@2 c))
  4941. :qid |funwiths.634:15|
  4942. :skolemid |106|
  4943. :pattern ( ($HeapSucc a@@2 b@@2) ($HeapSucc b@@2 c))
  4944. )))
  4945. (assert (forall ((h@@14 T@U) (k@@1 T@U) ) (! (=> (and (and (= (type h@@14) (MapType0Type refType MapType1Type)) (= (type k@@1) (MapType0Type refType MapType1Type))) ($HeapSucc h@@14 k@@1)) (forall ((o@@16 T@U) ) (! (=> (and (= (type o@@16) refType) (U_2_bool (MapType1Select (MapType0Select h@@14 o@@16) alloc))) (U_2_bool (MapType1Select (MapType0Select k@@1 o@@16) alloc)))
  4946. :qid |funwiths.641:18|
  4947. :skolemid |107|
  4948. :pattern ( (MapType1Select (MapType0Select k@@1 o@@16) alloc))
  4949. )))
  4950. :qid |funwiths.638:15|
  4951. :skolemid |108|
  4952. :pattern ( ($HeapSucc h@@14 k@@1))
  4953. )))
  4954. (assert (forall ((h@@15 T@U) (k@@2 T@U) ) (! (=> (and (and (= (type h@@15) (MapType0Type refType MapType1Type)) (= (type k@@2) (MapType0Type refType MapType1Type))) ($HeapSuccGhost h@@15 k@@2)) (and ($HeapSucc h@@15 k@@2) (forall ((o@@17 T@U) (f@@2 T@U) ) (! (let ((alpha@@5 (FieldTypeInv0 (type f@@2))))
  4955. (=> (and (and (= (type o@@17) refType) (= (type f@@2) (FieldType alpha@@5))) (not ($IsGhostField f@@2))) (= (MapType1Select (MapType0Select h@@15 o@@17) f@@2) (MapType1Select (MapType0Select k@@2 o@@17) f@@2))))
  4956. :qid |funwiths.649:26|
  4957. :skolemid |109|
  4958. :pattern ( (MapType1Select (MapType0Select k@@2 o@@17) f@@2))
  4959. ))))
  4960. :qid |funwiths.645:15|
  4961. :skolemid |110|
  4962. :pattern ( ($HeapSuccGhost h@@15 k@@2))
  4963. )))
  4964. (assert (forall ((s@@3 T@U) ) (! (let ((T@@5 (MapType0TypeInv0 (type s@@3))))
  4965. (=> (= (type s@@3) (MapType0Type T@@5 boolType)) (<= 0 (|Set#Card| s@@3))))
  4966. :qid |funwiths.711:18|
  4967. :skolemid |115|
  4968. :pattern ( (|Set#Card| s@@3))
  4969. )))
  4970. (assert (forall ((T@@6 T@T) ) (! (= (type (|Set#Empty| T@@6)) (MapType0Type T@@6 boolType))
  4971. :qid |funType:Set#Empty|
  4972. :pattern ( (|Set#Empty| T@@6))
  4973. )))
  4974. (assert (forall ((o@@18 T@U) ) (! (let ((T@@7 (type o@@18)))
  4975. (not (U_2_bool (MapType0Select (|Set#Empty| T@@7) o@@18))))
  4976. :qid |funwiths.715:18|
  4977. :skolemid |116|
  4978. :pattern ( (let ((T@@7 (type o@@18)))
  4979. (MapType0Select (|Set#Empty| T@@7) o@@18)))
  4980. )))
  4981. (assert (forall ((s@@4 T@U) ) (! (let ((T@@8 (MapType0TypeInv0 (type s@@4))))
  4982. (=> (= (type s@@4) (MapType0Type T@@8 boolType)) (and (and (=> (= (|Set#Card| s@@4) 0) (= s@@4 (|Set#Empty| T@@8))) (=> (= s@@4 (|Set#Empty| T@@8)) (= (|Set#Card| s@@4) 0))) (=> (not (= (|Set#Card| s@@4) 0)) (exists ((x@@16 T@U) ) (! (and (= (type x@@16) T@@8) (U_2_bool (MapType0Select s@@4 x@@16)))
  4983. :qid |funwiths.720:39|
  4984. :skolemid |117|
  4985. :no-pattern (type x@@16)
  4986. :no-pattern (U_2_int x@@16)
  4987. :no-pattern (U_2_bool x@@16)
  4988. ))))))
  4989. :qid |funwiths.717:18|
  4990. :skolemid |118|
  4991. :pattern ( (|Set#Card| s@@4))
  4992. )))
  4993. (assert (forall ((arg0@@64 T@U) ) (! (let ((T@@9 (type arg0@@64)))
  4994. (= (type (|Set#Singleton| arg0@@64)) (MapType0Type T@@9 boolType)))
  4995. :qid |funType:Set#Singleton|
  4996. :pattern ( (|Set#Singleton| arg0@@64))
  4997. )))
  4998. (assert (forall ((r@@1 T@U) ) (! (U_2_bool (MapType0Select (|Set#Singleton| r@@1) r@@1))
  4999. :qid |funwiths.724:18|
  5000. :skolemid |119|
  5001. :pattern ( (|Set#Singleton| r@@1))
  5002. )))
  5003. (assert (forall ((r@@2 T@U) (o@@19 T@U) ) (! (let ((T@@10 (type r@@2)))
  5004. (=> (= (type o@@19) T@@10) (and (=> (U_2_bool (MapType0Select (|Set#Singleton| r@@2) o@@19)) (= r@@2 o@@19)) (=> (= r@@2 o@@19) (U_2_bool (MapType0Select (|Set#Singleton| r@@2) o@@19))))))
  5005. :qid |funwiths.726:18|
  5006. :skolemid |120|
  5007. :pattern ( (MapType0Select (|Set#Singleton| r@@2) o@@19))
  5008. )))
  5009. (assert (forall ((r@@3 T@U) ) (! (= (|Set#Card| (|Set#Singleton| r@@3)) 1)
  5010. :qid |funwiths.730:18|
  5011. :skolemid |121|
  5012. :pattern ( (|Set#Card| (|Set#Singleton| r@@3)))
  5013. )))
  5014. (assert (forall ((arg0@@65 T@U) (arg1@@22 T@U) ) (! (let ((T@@11 (type arg1@@22)))
  5015. (= (type (|Set#UnionOne| arg0@@65 arg1@@22)) (MapType0Type T@@11 boolType)))
  5016. :qid |funType:Set#UnionOne|
  5017. :pattern ( (|Set#UnionOne| arg0@@65 arg1@@22))
  5018. )))
  5019. (assert (forall ((a@@3 T@U) (x@@17 T@U) (o@@20 T@U) ) (! (let ((T@@12 (type x@@17)))
  5020. (=> (and (= (type a@@3) (MapType0Type T@@12 boolType)) (= (type o@@20) T@@12)) (and (=> (U_2_bool (MapType0Select (|Set#UnionOne| a@@3 x@@17) o@@20)) (or (= o@@20 x@@17) (U_2_bool (MapType0Select a@@3 o@@20)))) (=> (or (= o@@20 x@@17) (U_2_bool (MapType0Select a@@3 o@@20))) (U_2_bool (MapType0Select (|Set#UnionOne| a@@3 x@@17) o@@20))))))
  5021. :qid |funwiths.736:18|
  5022. :skolemid |122|
  5023. :pattern ( (MapType0Select (|Set#UnionOne| a@@3 x@@17) o@@20))
  5024. )))
  5025. (assert (forall ((a@@4 T@U) (x@@18 T@U) ) (! (let ((T@@13 (type x@@18)))
  5026. (=> (= (type a@@4) (MapType0Type T@@13 boolType)) (U_2_bool (MapType0Select (|Set#UnionOne| a@@4 x@@18) x@@18))))
  5027. :qid |funwiths.740:18|
  5028. :skolemid |123|
  5029. :pattern ( (|Set#UnionOne| a@@4 x@@18))
  5030. )))
  5031. (assert (forall ((a@@5 T@U) (x@@19 T@U) (y@@1 T@U) ) (! (let ((T@@14 (type x@@19)))
  5032. (=> (and (and (= (type a@@5) (MapType0Type T@@14 boolType)) (= (type y@@1) T@@14)) (U_2_bool (MapType0Select a@@5 y@@1))) (U_2_bool (MapType0Select (|Set#UnionOne| a@@5 x@@19) y@@1))))
  5033. :qid |funwiths.742:18|
  5034. :skolemid |124|
  5035. :pattern ( (|Set#UnionOne| a@@5 x@@19) (MapType0Select a@@5 y@@1))
  5036. )))
  5037. (assert (forall ((a@@6 T@U) (x@@20 T@U) ) (! (let ((T@@15 (type x@@20)))
  5038. (=> (and (= (type a@@6) (MapType0Type T@@15 boolType)) (U_2_bool (MapType0Select a@@6 x@@20))) (= (|Set#Card| (|Set#UnionOne| a@@6 x@@20)) (|Set#Card| a@@6))))
  5039. :qid |funwiths.746:18|
  5040. :skolemid |125|
  5041. :pattern ( (|Set#Card| (|Set#UnionOne| a@@6 x@@20)))
  5042. )))
  5043. (assert (forall ((a@@7 T@U) (x@@21 T@U) ) (! (let ((T@@16 (type x@@21)))
  5044. (=> (and (= (type a@@7) (MapType0Type T@@16 boolType)) (not (U_2_bool (MapType0Select a@@7 x@@21)))) (= (|Set#Card| (|Set#UnionOne| a@@7 x@@21)) (+ (|Set#Card| a@@7) 1))))
  5045. :qid |funwiths.750:18|
  5046. :skolemid |126|
  5047. :pattern ( (|Set#Card| (|Set#UnionOne| a@@7 x@@21)))
  5048. )))
  5049. (assert (forall ((arg0@@66 T@U) (arg1@@23 T@U) ) (! (let ((T@@17 (MapType0TypeInv0 (type arg0@@66))))
  5050. (= (type (|Set#Union| arg0@@66 arg1@@23)) (MapType0Type T@@17 boolType)))
  5051. :qid |funType:Set#Union|
  5052. :pattern ( (|Set#Union| arg0@@66 arg1@@23))
  5053. )))
  5054. (assert (forall ((a@@8 T@U) (b@@3 T@U) (o@@21 T@U) ) (! (let ((T@@18 (type o@@21)))
  5055. (=> (and (= (type a@@8) (MapType0Type T@@18 boolType)) (= (type b@@3) (MapType0Type T@@18 boolType))) (and (=> (U_2_bool (MapType0Select (|Set#Union| a@@8 b@@3) o@@21)) (or (U_2_bool (MapType0Select a@@8 o@@21)) (U_2_bool (MapType0Select b@@3 o@@21)))) (=> (or (U_2_bool (MapType0Select a@@8 o@@21)) (U_2_bool (MapType0Select b@@3 o@@21))) (U_2_bool (MapType0Select (|Set#Union| a@@8 b@@3) o@@21))))))
  5056. :qid |funwiths.756:18|
  5057. :skolemid |127|
  5058. :pattern ( (MapType0Select (|Set#Union| a@@8 b@@3) o@@21))
  5059. )))
  5060. (assert (forall ((a@@9 T@U) (b@@4 T@U) (y@@2 T@U) ) (! (let ((T@@19 (type y@@2)))
  5061. (=> (and (and (= (type a@@9) (MapType0Type T@@19 boolType)) (= (type b@@4) (MapType0Type T@@19 boolType))) (U_2_bool (MapType0Select a@@9 y@@2))) (U_2_bool (MapType0Select (|Set#Union| a@@9 b@@4) y@@2))))
  5062. :qid |funwiths.760:18|
  5063. :skolemid |128|
  5064. :pattern ( (|Set#Union| a@@9 b@@4) (MapType0Select a@@9 y@@2))
  5065. )))
  5066. (assert (forall ((a@@10 T@U) (b@@5 T@U) (y@@3 T@U) ) (! (let ((T@@20 (type y@@3)))
  5067. (=> (and (and (= (type a@@10) (MapType0Type T@@20 boolType)) (= (type b@@5) (MapType0Type T@@20 boolType))) (U_2_bool (MapType0Select b@@5 y@@3))) (U_2_bool (MapType0Select (|Set#Union| a@@10 b@@5) y@@3))))
  5068. :qid |funwiths.764:18|
  5069. :skolemid |129|
  5070. :pattern ( (|Set#Union| a@@10 b@@5) (MapType0Select b@@5 y@@3))
  5071. )))
  5072. (assert (forall ((arg0@@67 T@U) (arg1@@24 T@U) ) (! (let ((T@@21 (MapType0TypeInv0 (type arg0@@67))))
  5073. (= (type (|Set#Difference| arg0@@67 arg1@@24)) (MapType0Type T@@21 boolType)))
  5074. :qid |funType:Set#Difference|
  5075. :pattern ( (|Set#Difference| arg0@@67 arg1@@24))
  5076. )))
  5077. (assert (forall ((a@@11 T@U) (b@@6 T@U) ) (! (let ((T@@22 (MapType0TypeInv0 (type a@@11))))
  5078. (=> (and (and (= (type a@@11) (MapType0Type T@@22 boolType)) (= (type b@@6) (MapType0Type T@@22 boolType))) (|Set#Disjoint| a@@11 b@@6)) (and (= (|Set#Difference| (|Set#Union| a@@11 b@@6) a@@11) b@@6) (= (|Set#Difference| (|Set#Union| a@@11 b@@6) b@@6) a@@11))))
  5079. :qid |funwiths.768:18|
  5080. :skolemid |130|
  5081. :pattern ( (|Set#Union| a@@11 b@@6))
  5082. )))
  5083. (assert (forall ((arg0@@68 T@U) (arg1@@25 T@U) ) (! (let ((T@@23 (MapType0TypeInv0 (type arg0@@68))))
  5084. (= (type (|Set#Intersection| arg0@@68 arg1@@25)) (MapType0Type T@@23 boolType)))
  5085. :qid |funType:Set#Intersection|
  5086. :pattern ( (|Set#Intersection| arg0@@68 arg1@@25))
  5087. )))
  5088. (assert (forall ((a@@12 T@U) (b@@7 T@U) (o@@22 T@U) ) (! (let ((T@@24 (type o@@22)))
  5089. (=> (and (= (type a@@12) (MapType0Type T@@24 boolType)) (= (type b@@7) (MapType0Type T@@24 boolType))) (and (=> (U_2_bool (MapType0Select (|Set#Intersection| a@@12 b@@7) o@@22)) (and (U_2_bool (MapType0Select a@@12 o@@22)) (U_2_bool (MapType0Select b@@7 o@@22)))) (=> (and (U_2_bool (MapType0Select a@@12 o@@22)) (U_2_bool (MapType0Select b@@7 o@@22))) (U_2_bool (MapType0Select (|Set#Intersection| a@@12 b@@7) o@@22))))))
  5090. :qid |funwiths.776:18|
  5091. :skolemid |131|
  5092. :pattern ( (MapType0Select (|Set#Intersection| a@@12 b@@7) o@@22))
  5093. )))
  5094. (assert (forall ((a@@13 T@U) (b@@8 T@U) ) (! (let ((T@@25 (MapType0TypeInv0 (type a@@13))))
  5095. (=> (and (= (type a@@13) (MapType0Type T@@25 boolType)) (= (type b@@8) (MapType0Type T@@25 boolType))) (= (|Set#Union| (|Set#Union| a@@13 b@@8) b@@8) (|Set#Union| a@@13 b@@8))))
  5096. :qid |funwiths.780:18|
  5097. :skolemid |132|
  5098. :pattern ( (|Set#Union| (|Set#Union| a@@13 b@@8) b@@8))
  5099. )))
  5100. (assert (forall ((a@@14 T@U) (b@@9 T@U) ) (! (let ((T@@26 (MapType0TypeInv0 (type a@@14))))
  5101. (=> (and (= (type a@@14) (MapType0Type T@@26 boolType)) (= (type b@@9) (MapType0Type T@@26 boolType))) (= (|Set#Union| a@@14 (|Set#Union| a@@14 b@@9)) (|Set#Union| a@@14 b@@9))))
  5102. :qid |funwiths.784:18|
  5103. :skolemid |133|
  5104. :pattern ( (|Set#Union| a@@14 (|Set#Union| a@@14 b@@9)))
  5105. )))
  5106. (assert (forall ((a@@15 T@U) (b@@10 T@U) ) (! (let ((T@@27 (MapType0TypeInv0 (type a@@15))))
  5107. (=> (and (= (type a@@15) (MapType0Type T@@27 boolType)) (= (type b@@10) (MapType0Type T@@27 boolType))) (= (|Set#Intersection| (|Set#Intersection| a@@15 b@@10) b@@10) (|Set#Intersection| a@@15 b@@10))))
  5108. :qid |funwiths.788:18|
  5109. :skolemid |134|
  5110. :pattern ( (|Set#Intersection| (|Set#Intersection| a@@15 b@@10) b@@10))
  5111. )))
  5112. (assert (forall ((a@@16 T@U) (b@@11 T@U) ) (! (let ((T@@28 (MapType0TypeInv0 (type a@@16))))
  5113. (=> (and (= (type a@@16) (MapType0Type T@@28 boolType)) (= (type b@@11) (MapType0Type T@@28 boolType))) (= (|Set#Intersection| a@@16 (|Set#Intersection| a@@16 b@@11)) (|Set#Intersection| a@@16 b@@11))))
  5114. :qid |funwiths.792:18|
  5115. :skolemid |135|
  5116. :pattern ( (|Set#Intersection| a@@16 (|Set#Intersection| a@@16 b@@11)))
  5117. )))
  5118. (assert (forall ((a@@17 T@U) (b@@12 T@U) ) (! (let ((T@@29 (MapType0TypeInv0 (type a@@17))))
  5119. (=> (and (= (type a@@17) (MapType0Type T@@29 boolType)) (= (type b@@12) (MapType0Type T@@29 boolType))) (= (+ (|Set#Card| (|Set#Union| a@@17 b@@12)) (|Set#Card| (|Set#Intersection| a@@17 b@@12))) (+ (|Set#Card| a@@17) (|Set#Card| b@@12)))))
  5120. :qid |funwiths.796:18|
  5121. :skolemid |136|
  5122. :pattern ( (|Set#Card| (|Set#Union| a@@17 b@@12)))
  5123. :pattern ( (|Set#Card| (|Set#Intersection| a@@17 b@@12)))
  5124. )))
  5125. (assert (forall ((a@@18 T@U) (b@@13 T@U) (o@@23 T@U) ) (! (let ((T@@30 (type o@@23)))
  5126. (=> (and (= (type a@@18) (MapType0Type T@@30 boolType)) (= (type b@@13) (MapType0Type T@@30 boolType))) (and (=> (U_2_bool (MapType0Select (|Set#Difference| a@@18 b@@13) o@@23)) (and (U_2_bool (MapType0Select a@@18 o@@23)) (not (U_2_bool (MapType0Select b@@13 o@@23))))) (=> (and (U_2_bool (MapType0Select a@@18 o@@23)) (not (U_2_bool (MapType0Select b@@13 o@@23)))) (U_2_bool (MapType0Select (|Set#Difference| a@@18 b@@13) o@@23))))))
  5127. :qid |funwiths.803:18|
  5128. :skolemid |137|
  5129. :pattern ( (MapType0Select (|Set#Difference| a@@18 b@@13) o@@23))
  5130. )))
  5131. (assert (forall ((a@@19 T@U) (b@@14 T@U) (y@@4 T@U) ) (! (let ((T@@31 (type y@@4)))
  5132. (=> (and (and (= (type a@@19) (MapType0Type T@@31 boolType)) (= (type b@@14) (MapType0Type T@@31 boolType))) (U_2_bool (MapType0Select b@@14 y@@4))) (not (U_2_bool (MapType0Select (|Set#Difference| a@@19 b@@14) y@@4)))))
  5133. :qid |funwiths.807:18|
  5134. :skolemid |138|
  5135. :pattern ( (|Set#Difference| a@@19 b@@14) (MapType0Select b@@14 y@@4))
  5136. )))
  5137. (assert (forall ((a@@20 T@U) (b@@15 T@U) ) (! (let ((T@@32 (MapType0TypeInv0 (type a@@20))))
  5138. (=> (and (= (type a@@20) (MapType0Type T@@32 boolType)) (= (type b@@15) (MapType0Type T@@32 boolType))) (and (= (+ (+ (|Set#Card| (|Set#Difference| a@@20 b@@15)) (|Set#Card| (|Set#Difference| b@@15 a@@20))) (|Set#Card| (|Set#Intersection| a@@20 b@@15))) (|Set#Card| (|Set#Union| a@@20 b@@15))) (= (|Set#Card| (|Set#Difference| a@@20 b@@15)) (- (|Set#Card| a@@20) (|Set#Card| (|Set#Intersection| a@@20 b@@15)))))))
  5139. :qid |funwiths.811:18|
  5140. :skolemid |139|
  5141. :pattern ( (|Set#Card| (|Set#Difference| a@@20 b@@15)))
  5142. )))
  5143. (assert (forall ((a@@21 T@U) (b@@16 T@U) ) (! (let ((T@@33 (MapType0TypeInv0 (type a@@21))))
  5144. (=> (and (= (type a@@21) (MapType0Type T@@33 boolType)) (= (type b@@16) (MapType0Type T@@33 boolType))) (and (=> (|Set#Subset| a@@21 b@@16) (forall ((o@@24 T@U) ) (! (=> (and (= (type o@@24) T@@33) (U_2_bool (MapType0Select a@@21 o@@24))) (U_2_bool (MapType0Select b@@16 o@@24)))
  5145. :qid |funwiths.823:33|
  5146. :skolemid |140|
  5147. :pattern ( (MapType0Select a@@21 o@@24))
  5148. :pattern ( (MapType0Select b@@16 o@@24))
  5149. ))) (=> (forall ((o@@25 T@U) ) (! (=> (and (= (type o@@25) T@@33) (U_2_bool (MapType0Select a@@21 o@@25))) (U_2_bool (MapType0Select b@@16 o@@25)))
  5150. :qid |funwiths.823:33|
  5151. :skolemid |140|
  5152. :pattern ( (MapType0Select a@@21 o@@25))
  5153. :pattern ( (MapType0Select b@@16 o@@25))
  5154. )) (|Set#Subset| a@@21 b@@16)))))
  5155. :qid |funwiths.821:18|
  5156. :skolemid |141|
  5157. :pattern ( (|Set#Subset| a@@21 b@@16))
  5158. )))
  5159. (assert (forall ((a@@22 T@U) (b@@17 T@U) ) (! (let ((T@@34 (MapType0TypeInv0 (type a@@22))))
  5160. (=> (and (= (type a@@22) (MapType0Type T@@34 boolType)) (= (type b@@17) (MapType0Type T@@34 boolType))) (and (=> (|Set#Equal| a@@22 b@@17) (forall ((o@@26 T@U) ) (! (=> (= (type o@@26) T@@34) (and (=> (U_2_bool (MapType0Select a@@22 o@@26)) (U_2_bool (MapType0Select b@@17 o@@26))) (=> (U_2_bool (MapType0Select b@@17 o@@26)) (U_2_bool (MapType0Select a@@22 o@@26)))))
  5161. :qid |funwiths.829:32|
  5162. :skolemid |142|
  5163. :pattern ( (MapType0Select a@@22 o@@26))
  5164. :pattern ( (MapType0Select b@@17 o@@26))
  5165. ))) (=> (forall ((o@@27 T@U) ) (! (=> (= (type o@@27) T@@34) (and (=> (U_2_bool (MapType0Select a@@22 o@@27)) (U_2_bool (MapType0Select b@@17 o@@27))) (=> (U_2_bool (MapType0Select b@@17 o@@27)) (U_2_bool (MapType0Select a@@22 o@@27)))))
  5166. :qid |funwiths.829:32|
  5167. :skolemid |142|
  5168. :pattern ( (MapType0Select a@@22 o@@27))
  5169. :pattern ( (MapType0Select b@@17 o@@27))
  5170. )) (|Set#Equal| a@@22 b@@17)))))
  5171. :qid |funwiths.827:18|
  5172. :skolemid |143|
  5173. :pattern ( (|Set#Equal| a@@22 b@@17))
  5174. )))
  5175. (assert (forall ((a@@23 T@U) (b@@18 T@U) ) (! (let ((T@@35 (MapType0TypeInv0 (type a@@23))))
  5176. (=> (and (and (= (type a@@23) (MapType0Type T@@35 boolType)) (= (type b@@18) (MapType0Type T@@35 boolType))) (|Set#Equal| a@@23 b@@18)) (= a@@23 b@@18)))
  5177. :qid |funwiths.831:18|
  5178. :skolemid |144|
  5179. :pattern ( (|Set#Equal| a@@23 b@@18))
  5180. )))
  5181. (assert (forall ((a@@24 T@U) (b@@19 T@U) ) (! (let ((T@@36 (MapType0TypeInv0 (type a@@24))))
  5182. (=> (and (= (type a@@24) (MapType0Type T@@36 boolType)) (= (type b@@19) (MapType0Type T@@36 boolType))) (and (=> (|Set#Disjoint| a@@24 b@@19) (forall ((o@@28 T@U) ) (! (=> (= (type o@@28) T@@36) (or (not (U_2_bool (MapType0Select a@@24 o@@28))) (not (U_2_bool (MapType0Select b@@19 o@@28)))))
  5183. :qid |funwiths.837:35|
  5184. :skolemid |145|
  5185. :pattern ( (MapType0Select a@@24 o@@28))
  5186. :pattern ( (MapType0Select b@@19 o@@28))
  5187. ))) (=> (forall ((o@@29 T@U) ) (! (=> (= (type o@@29) T@@36) (or (not (U_2_bool (MapType0Select a@@24 o@@29))) (not (U_2_bool (MapType0Select b@@19 o@@29)))))
  5188. :qid |funwiths.837:35|
  5189. :skolemid |145|
  5190. :pattern ( (MapType0Select a@@24 o@@29))
  5191. :pattern ( (MapType0Select b@@19 o@@29))
  5192. )) (|Set#Disjoint| a@@24 b@@19)))))
  5193. :qid |funwiths.835:18|
  5194. :skolemid |146|
  5195. :pattern ( (|Set#Disjoint| a@@24 b@@19))
  5196. )))
  5197. (assert (forall ((T@@37 T@T) ) (! (= (type (|ISet#Empty| T@@37)) (MapType0Type T@@37 boolType))
  5198. :qid |funType:ISet#Empty|
  5199. :pattern ( (|ISet#Empty| T@@37))
  5200. )))
  5201. (assert (forall ((o@@30 T@U) ) (! (let ((T@@38 (type o@@30)))
  5202. (not (U_2_bool (MapType0Select (|ISet#Empty| T@@38) o@@30))))
  5203. :qid |funwiths.843:18|
  5204. :skolemid |147|
  5205. :pattern ( (let ((T@@38 (type o@@30)))
  5206. (MapType0Select (|ISet#Empty| T@@38) o@@30)))
  5207. )))
  5208. (assert (forall ((arg0@@69 T@U) (arg1@@26 T@U) ) (! (let ((T@@39 (type arg1@@26)))
  5209. (= (type (|ISet#UnionOne| arg0@@69 arg1@@26)) (MapType0Type T@@39 boolType)))
  5210. :qid |funType:ISet#UnionOne|
  5211. :pattern ( (|ISet#UnionOne| arg0@@69 arg1@@26))
  5212. )))
  5213. (assert (forall ((a@@25 T@U) (x@@22 T@U) (o@@31 T@U) ) (! (let ((T@@40 (type x@@22)))
  5214. (=> (and (= (type a@@25) (MapType0Type T@@40 boolType)) (= (type o@@31) T@@40)) (and (=> (U_2_bool (MapType0Select (|ISet#UnionOne| a@@25 x@@22) o@@31)) (or (= o@@31 x@@22) (U_2_bool (MapType0Select a@@25 o@@31)))) (=> (or (= o@@31 x@@22) (U_2_bool (MapType0Select a@@25 o@@31))) (U_2_bool (MapType0Select (|ISet#UnionOne| a@@25 x@@22) o@@31))))))
  5215. :qid |funwiths.847:18|
  5216. :skolemid |148|
  5217. :pattern ( (MapType0Select (|ISet#UnionOne| a@@25 x@@22) o@@31))
  5218. )))
  5219. (assert (forall ((a@@26 T@U) (x@@23 T@U) ) (! (let ((T@@41 (type x@@23)))
  5220. (=> (= (type a@@26) (MapType0Type T@@41 boolType)) (U_2_bool (MapType0Select (|ISet#UnionOne| a@@26 x@@23) x@@23))))
  5221. :qid |funwiths.851:18|
  5222. :skolemid |149|
  5223. :pattern ( (|ISet#UnionOne| a@@26 x@@23))
  5224. )))
  5225. (assert (forall ((a@@27 T@U) (x@@24 T@U) (y@@5 T@U) ) (! (let ((T@@42 (type x@@24)))
  5226. (=> (and (and (= (type a@@27) (MapType0Type T@@42 boolType)) (= (type y@@5) T@@42)) (U_2_bool (MapType0Select a@@27 y@@5))) (U_2_bool (MapType0Select (|ISet#UnionOne| a@@27 x@@24) y@@5))))
  5227. :qid |funwiths.853:18|
  5228. :skolemid |150|
  5229. :pattern ( (|ISet#UnionOne| a@@27 x@@24) (MapType0Select a@@27 y@@5))
  5230. )))
  5231. (assert (forall ((arg0@@70 T@U) (arg1@@27 T@U) ) (! (let ((T@@43 (MapType0TypeInv0 (type arg0@@70))))
  5232. (= (type (|ISet#Union| arg0@@70 arg1@@27)) (MapType0Type T@@43 boolType)))
  5233. :qid |funType:ISet#Union|
  5234. :pattern ( (|ISet#Union| arg0@@70 arg1@@27))
  5235. )))
  5236. (assert (forall ((a@@28 T@U) (b@@20 T@U) (o@@32 T@U) ) (! (let ((T@@44 (type o@@32)))
  5237. (=> (and (= (type a@@28) (MapType0Type T@@44 boolType)) (= (type b@@20) (MapType0Type T@@44 boolType))) (and (=> (U_2_bool (MapType0Select (|ISet#Union| a@@28 b@@20) o@@32)) (or (U_2_bool (MapType0Select a@@28 o@@32)) (U_2_bool (MapType0Select b@@20 o@@32)))) (=> (or (U_2_bool (MapType0Select a@@28 o@@32)) (U_2_bool (MapType0Select b@@20 o@@32))) (U_2_bool (MapType0Select (|ISet#Union| a@@28 b@@20) o@@32))))))
  5238. :qid |funwiths.859:18|
  5239. :skolemid |151|
  5240. :pattern ( (MapType0Select (|ISet#Union| a@@28 b@@20) o@@32))
  5241. )))
  5242. (assert (forall ((a@@29 T@U) (b@@21 T@U) (y@@6 T@U) ) (! (let ((T@@45 (type y@@6)))
  5243. (=> (and (and (= (type a@@29) (MapType0Type T@@45 boolType)) (= (type b@@21) (MapType0Type T@@45 boolType))) (U_2_bool (MapType0Select a@@29 y@@6))) (U_2_bool (MapType0Select (|ISet#Union| a@@29 b@@21) y@@6))))
  5244. :qid |funwiths.863:18|
  5245. :skolemid |152|
  5246. :pattern ( (|ISet#Union| a@@29 b@@21) (MapType0Select a@@29 y@@6))
  5247. )))
  5248. (assert (forall ((a@@30 T@U) (b@@22 T@U) (y@@7 T@U) ) (! (let ((T@@46 (type y@@7)))
  5249. (=> (and (and (= (type a@@30) (MapType0Type T@@46 boolType)) (= (type b@@22) (MapType0Type T@@46 boolType))) (U_2_bool (MapType0Select b@@22 y@@7))) (U_2_bool (MapType0Select (|ISet#Union| a@@30 b@@22) y@@7))))
  5250. :qid |funwiths.867:18|
  5251. :skolemid |153|
  5252. :pattern ( (|ISet#Union| a@@30 b@@22) (MapType0Select b@@22 y@@7))
  5253. )))
  5254. (assert (forall ((arg0@@71 T@U) (arg1@@28 T@U) ) (! (let ((T@@47 (MapType0TypeInv0 (type arg0@@71))))
  5255. (= (type (|ISet#Difference| arg0@@71 arg1@@28)) (MapType0Type T@@47 boolType)))
  5256. :qid |funType:ISet#Difference|
  5257. :pattern ( (|ISet#Difference| arg0@@71 arg1@@28))
  5258. )))
  5259. (assert (forall ((a@@31 T@U) (b@@23 T@U) ) (! (let ((T@@48 (MapType0TypeInv0 (type a@@31))))
  5260. (=> (and (and (= (type a@@31) (MapType0Type T@@48 boolType)) (= (type b@@23) (MapType0Type T@@48 boolType))) (|ISet#Disjoint| a@@31 b@@23)) (and (= (|ISet#Difference| (|ISet#Union| a@@31 b@@23) a@@31) b@@23) (= (|ISet#Difference| (|ISet#Union| a@@31 b@@23) b@@23) a@@31))))
  5261. :qid |funwiths.871:18|
  5262. :skolemid |154|
  5263. :pattern ( (|ISet#Union| a@@31 b@@23))
  5264. )))
  5265. (assert (forall ((arg0@@72 T@U) (arg1@@29 T@U) ) (! (let ((T@@49 (MapType0TypeInv0 (type arg0@@72))))
  5266. (= (type (|ISet#Intersection| arg0@@72 arg1@@29)) (MapType0Type T@@49 boolType)))
  5267. :qid |funType:ISet#Intersection|
  5268. :pattern ( (|ISet#Intersection| arg0@@72 arg1@@29))
  5269. )))
  5270. (assert (forall ((a@@32 T@U) (b@@24 T@U) (o@@33 T@U) ) (! (let ((T@@50 (type o@@33)))
  5271. (=> (and (= (type a@@32) (MapType0Type T@@50 boolType)) (= (type b@@24) (MapType0Type T@@50 boolType))) (and (=> (U_2_bool (MapType0Select (|ISet#Intersection| a@@32 b@@24) o@@33)) (and (U_2_bool (MapType0Select a@@32 o@@33)) (U_2_bool (MapType0Select b@@24 o@@33)))) (=> (and (U_2_bool (MapType0Select a@@32 o@@33)) (U_2_bool (MapType0Select b@@24 o@@33))) (U_2_bool (MapType0Select (|ISet#Intersection| a@@32 b@@24) o@@33))))))
  5272. :qid |funwiths.879:18|
  5273. :skolemid |155|
  5274. :pattern ( (MapType0Select (|ISet#Intersection| a@@32 b@@24) o@@33))
  5275. )))
  5276. (assert (forall ((a@@33 T@U) (b@@25 T@U) ) (! (let ((T@@51 (MapType0TypeInv0 (type a@@33))))
  5277. (=> (and (= (type a@@33) (MapType0Type T@@51 boolType)) (= (type b@@25) (MapType0Type T@@51 boolType))) (= (|ISet#Union| (|ISet#Union| a@@33 b@@25) b@@25) (|ISet#Union| a@@33 b@@25))))
  5278. :qid |funwiths.883:18|
  5279. :skolemid |156|
  5280. :pattern ( (|ISet#Union| (|ISet#Union| a@@33 b@@25) b@@25))
  5281. )))
  5282. (assert (forall ((a@@34 T@U) (b@@26 T@U) ) (! (let ((T@@52 (MapType0TypeInv0 (type a@@34))))
  5283. (=> (and (= (type a@@34) (MapType0Type T@@52 boolType)) (= (type b@@26) (MapType0Type T@@52 boolType))) (= (|ISet#Union| a@@34 (|ISet#Union| a@@34 b@@26)) (|ISet#Union| a@@34 b@@26))))
  5284. :qid |funwiths.887:18|
  5285. :skolemid |157|
  5286. :pattern ( (|ISet#Union| a@@34 (|ISet#Union| a@@34 b@@26)))
  5287. )))
  5288. (assert (forall ((a@@35 T@U) (b@@27 T@U) ) (! (let ((T@@53 (MapType0TypeInv0 (type a@@35))))
  5289. (=> (and (= (type a@@35) (MapType0Type T@@53 boolType)) (= (type b@@27) (MapType0Type T@@53 boolType))) (= (|ISet#Intersection| (|ISet#Intersection| a@@35 b@@27) b@@27) (|ISet#Intersection| a@@35 b@@27))))
  5290. :qid |funwiths.891:18|
  5291. :skolemid |158|
  5292. :pattern ( (|ISet#Intersection| (|ISet#Intersection| a@@35 b@@27) b@@27))
  5293. )))
  5294. (assert (forall ((a@@36 T@U) (b@@28 T@U) ) (! (let ((T@@54 (MapType0TypeInv0 (type a@@36))))
  5295. (=> (and (= (type a@@36) (MapType0Type T@@54 boolType)) (= (type b@@28) (MapType0Type T@@54 boolType))) (= (|ISet#Intersection| a@@36 (|ISet#Intersection| a@@36 b@@28)) (|ISet#Intersection| a@@36 b@@28))))
  5296. :qid |funwiths.895:18|
  5297. :skolemid |159|
  5298. :pattern ( (|ISet#Intersection| a@@36 (|ISet#Intersection| a@@36 b@@28)))
  5299. )))
  5300. (assert (forall ((a@@37 T@U) (b@@29 T@U) (o@@34 T@U) ) (! (let ((T@@55 (type o@@34)))
  5301. (=> (and (= (type a@@37) (MapType0Type T@@55 boolType)) (= (type b@@29) (MapType0Type T@@55 boolType))) (and (=> (U_2_bool (MapType0Select (|ISet#Difference| a@@37 b@@29) o@@34)) (and (U_2_bool (MapType0Select a@@37 o@@34)) (not (U_2_bool (MapType0Select b@@29 o@@34))))) (=> (and (U_2_bool (MapType0Select a@@37 o@@34)) (not (U_2_bool (MapType0Select b@@29 o@@34)))) (U_2_bool (MapType0Select (|ISet#Difference| a@@37 b@@29) o@@34))))))
  5302. :qid |funwiths.901:18|
  5303. :skolemid |160|
  5304. :pattern ( (MapType0Select (|ISet#Difference| a@@37 b@@29) o@@34))
  5305. )))
  5306. (assert (forall ((a@@38 T@U) (b@@30 T@U) (y@@8 T@U) ) (! (let ((T@@56 (type y@@8)))
  5307. (=> (and (and (= (type a@@38) (MapType0Type T@@56 boolType)) (= (type b@@30) (MapType0Type T@@56 boolType))) (U_2_bool (MapType0Select b@@30 y@@8))) (not (U_2_bool (MapType0Select (|ISet#Difference| a@@38 b@@30) y@@8)))))
  5308. :qid |funwiths.905:18|
  5309. :skolemid |161|
  5310. :pattern ( (|ISet#Difference| a@@38 b@@30) (MapType0Select b@@30 y@@8))
  5311. )))
  5312. (assert (forall ((a@@39 T@U) (b@@31 T@U) ) (! (let ((T@@57 (MapType0TypeInv0 (type a@@39))))
  5313. (=> (and (= (type a@@39) (MapType0Type T@@57 boolType)) (= (type b@@31) (MapType0Type T@@57 boolType))) (and (=> (|ISet#Subset| a@@39 b@@31) (forall ((o@@35 T@U) ) (! (=> (and (= (type o@@35) T@@57) (U_2_bool (MapType0Select a@@39 o@@35))) (U_2_bool (MapType0Select b@@31 o@@35)))
  5314. :qid |funwiths.913:34|
  5315. :skolemid |162|
  5316. :pattern ( (MapType0Select a@@39 o@@35))
  5317. :pattern ( (MapType0Select b@@31 o@@35))
  5318. ))) (=> (forall ((o@@36 T@U) ) (! (=> (and (= (type o@@36) T@@57) (U_2_bool (MapType0Select a@@39 o@@36))) (U_2_bool (MapType0Select b@@31 o@@36)))
  5319. :qid |funwiths.913:34|
  5320. :skolemid |162|
  5321. :pattern ( (MapType0Select a@@39 o@@36))
  5322. :pattern ( (MapType0Select b@@31 o@@36))
  5323. )) (|ISet#Subset| a@@39 b@@31)))))
  5324. :qid |funwiths.911:18|
  5325. :skolemid |163|
  5326. :pattern ( (|ISet#Subset| a@@39 b@@31))
  5327. )))
  5328. (assert (forall ((a@@40 T@U) (b@@32 T@U) ) (! (let ((T@@58 (MapType0TypeInv0 (type a@@40))))
  5329. (=> (and (= (type a@@40) (MapType0Type T@@58 boolType)) (= (type b@@32) (MapType0Type T@@58 boolType))) (and (=> (|ISet#Equal| a@@40 b@@32) (forall ((o@@37 T@U) ) (! (=> (= (type o@@37) T@@58) (and (=> (U_2_bool (MapType0Select a@@40 o@@37)) (U_2_bool (MapType0Select b@@32 o@@37))) (=> (U_2_bool (MapType0Select b@@32 o@@37)) (U_2_bool (MapType0Select a@@40 o@@37)))))
  5330. :qid |funwiths.919:33|
  5331. :skolemid |164|
  5332. :pattern ( (MapType0Select a@@40 o@@37))
  5333. :pattern ( (MapType0Select b@@32 o@@37))
  5334. ))) (=> (forall ((o@@38 T@U) ) (! (=> (= (type o@@38) T@@58) (and (=> (U_2_bool (MapType0Select a@@40 o@@38)) (U_2_bool (MapType0Select b@@32 o@@38))) (=> (U_2_bool (MapType0Select b@@32 o@@38)) (U_2_bool (MapType0Select a@@40 o@@38)))))
  5335. :qid |funwiths.919:33|
  5336. :skolemid |164|
  5337. :pattern ( (MapType0Select a@@40 o@@38))
  5338. :pattern ( (MapType0Select b@@32 o@@38))
  5339. )) (|ISet#Equal| a@@40 b@@32)))))
  5340. :qid |funwiths.917:18|
  5341. :skolemid |165|
  5342. :pattern ( (|ISet#Equal| a@@40 b@@32))
  5343. )))
  5344. (assert (forall ((a@@41 T@U) (b@@33 T@U) ) (! (let ((T@@59 (MapType0TypeInv0 (type a@@41))))
  5345. (=> (and (and (= (type a@@41) (MapType0Type T@@59 boolType)) (= (type b@@33) (MapType0Type T@@59 boolType))) (|ISet#Equal| a@@41 b@@33)) (= a@@41 b@@33)))
  5346. :qid |funwiths.921:18|
  5347. :skolemid |166|
  5348. :pattern ( (|ISet#Equal| a@@41 b@@33))
  5349. )))
  5350. (assert (forall ((a@@42 T@U) (b@@34 T@U) ) (! (let ((T@@60 (MapType0TypeInv0 (type a@@42))))
  5351. (=> (and (= (type a@@42) (MapType0Type T@@60 boolType)) (= (type b@@34) (MapType0Type T@@60 boolType))) (and (=> (|ISet#Disjoint| a@@42 b@@34) (forall ((o@@39 T@U) ) (! (=> (= (type o@@39) T@@60) (or (not (U_2_bool (MapType0Select a@@42 o@@39))) (not (U_2_bool (MapType0Select b@@34 o@@39)))))
  5352. :qid |funwiths.929:36|
  5353. :skolemid |167|
  5354. :pattern ( (MapType0Select a@@42 o@@39))
  5355. :pattern ( (MapType0Select b@@34 o@@39))
  5356. ))) (=> (forall ((o@@40 T@U) ) (! (=> (= (type o@@40) T@@60) (or (not (U_2_bool (MapType0Select a@@42 o@@40))) (not (U_2_bool (MapType0Select b@@34 o@@40)))))
  5357. :qid |funwiths.929:36|
  5358. :skolemid |167|
  5359. :pattern ( (MapType0Select a@@42 o@@40))
  5360. :pattern ( (MapType0Select b@@34 o@@40))
  5361. )) (|ISet#Disjoint| a@@42 b@@34)))))
  5362. :qid |funwiths.927:18|
  5363. :skolemid |168|
  5364. :pattern ( (|ISet#Disjoint| a@@42 b@@34))
  5365. )))
  5366. (assert (forall ((a@@43 Int) (b@@35 Int) ) (! (and (=> (<= a@@43 b@@35) (= (|Math#min| a@@43 b@@35) a@@43)) (=> (= (|Math#min| a@@43 b@@35) a@@43) (<= a@@43 b@@35)))
  5367. :qid |funwiths.933:15|
  5368. :skolemid |169|
  5369. :pattern ( (|Math#min| a@@43 b@@35))
  5370. )))
  5371. (assert (forall ((a@@44 Int) (b@@36 Int) ) (! (and (=> (<= b@@36 a@@44) (= (|Math#min| a@@44 b@@36) b@@36)) (=> (= (|Math#min| a@@44 b@@36) b@@36) (<= b@@36 a@@44)))
  5372. :qid |funwiths.935:15|
  5373. :skolemid |170|
  5374. :pattern ( (|Math#min| a@@44 b@@36))
  5375. )))
  5376. (assert (forall ((a@@45 Int) (b@@37 Int) ) (! (or (= (|Math#min| a@@45 b@@37) a@@45) (= (|Math#min| a@@45 b@@37) b@@37))
  5377. :qid |funwiths.937:15|
  5378. :skolemid |171|
  5379. :pattern ( (|Math#min| a@@45 b@@37))
  5380. )))
  5381. (assert (forall ((a@@46 Int) ) (! (=> (<= 0 a@@46) (= (|Math#clip| a@@46) a@@46))
  5382. :qid |funwiths.943:15|
  5383. :skolemid |172|
  5384. :pattern ( (|Math#clip| a@@46))
  5385. )))
  5386. (assert (forall ((a@@47 Int) ) (! (=> (< a@@47 0) (= (|Math#clip| a@@47) 0))
  5387. :qid |funwiths.945:15|
  5388. :skolemid |173|
  5389. :pattern ( (|Math#clip| a@@47))
  5390. )))
  5391. (assert (forall ((ms T@U) ) (! (let ((T@@61 (MapType0TypeInv0 (type ms))))
  5392. (=> (= (type ms) (MapType0Type T@@61 intType)) (and (=> ($IsGoodMultiSet ms) (forall ((bx@@31 T@U) ) (! (=> (= (type bx@@31) T@@61) (and (<= 0 (U_2_int (MapType0Select ms bx@@31))) (<= (U_2_int (MapType0Select ms bx@@31)) (|MultiSet#Card| ms))))
  5393. :qid |funwiths.954:19|
  5394. :skolemid |174|
  5395. :pattern ( (MapType0Select ms bx@@31))
  5396. ))) (=> (forall ((bx@@32 T@U) ) (! (=> (= (type bx@@32) T@@61) (and (<= 0 (U_2_int (MapType0Select ms bx@@32))) (<= (U_2_int (MapType0Select ms bx@@32)) (|MultiSet#Card| ms))))
  5397. :qid |funwiths.954:19|
  5398. :skolemid |174|
  5399. :pattern ( (MapType0Select ms bx@@32))
  5400. )) ($IsGoodMultiSet ms)))))
  5401. :qid |funwiths.951:18|
  5402. :skolemid |175|
  5403. :pattern ( ($IsGoodMultiSet ms))
  5404. )))
  5405. (assert (forall ((s@@5 T@U) ) (! (let ((T@@62 (MapType0TypeInv0 (type s@@5))))
  5406. (=> (= (type s@@5) (MapType0Type T@@62 intType)) (<= 0 (|MultiSet#Card| s@@5))))
  5407. :qid |funwiths.958:18|
  5408. :skolemid |176|
  5409. :pattern ( (|MultiSet#Card| s@@5))
  5410. )))
  5411. (assert (forall ((s@@6 T@U) (x@@25 T@U) (n@@5 T@U) ) (! (let ((T@@63 (type x@@25)))
  5412. (=> (and (and (= (type s@@6) (MapType0Type T@@63 intType)) (= (type n@@5) intType)) (<= 0 (U_2_int n@@5))) (= (|MultiSet#Card| (MapType0Store s@@6 x@@25 n@@5)) (+ (- (|MultiSet#Card| s@@6) (U_2_int (MapType0Select s@@6 x@@25))) (U_2_int n@@5)))))
  5413. :qid |funwiths.960:18|
  5414. :skolemid |177|
  5415. :pattern ( (|MultiSet#Card| (MapType0Store s@@6 x@@25 n@@5)))
  5416. )))
  5417. (assert (forall ((T@@64 T@T) ) (! (= (type (|MultiSet#Empty| T@@64)) (MapType0Type T@@64 intType))
  5418. :qid |funType:MultiSet#Empty|
  5419. :pattern ( (|MultiSet#Empty| T@@64))
  5420. )))
  5421. (assert (forall ((o@@41 T@U) ) (! (let ((T@@65 (type o@@41)))
  5422. (= (U_2_int (MapType0Select (|MultiSet#Empty| T@@65) o@@41)) 0))
  5423. :qid |funwiths.966:18|
  5424. :skolemid |178|
  5425. :pattern ( (let ((T@@65 (type o@@41)))
  5426. (MapType0Select (|MultiSet#Empty| T@@65) o@@41)))
  5427. )))
  5428. (assert (forall ((s@@7 T@U) ) (! (let ((T@@66 (MapType0TypeInv0 (type s@@7))))
  5429. (=> (= (type s@@7) (MapType0Type T@@66 intType)) (and (and (=> (= (|MultiSet#Card| s@@7) 0) (= s@@7 (|MultiSet#Empty| T@@66))) (=> (= s@@7 (|MultiSet#Empty| T@@66)) (= (|MultiSet#Card| s@@7) 0))) (=> (not (= (|MultiSet#Card| s@@7) 0)) (exists ((x@@26 T@U) ) (! (and (= (type x@@26) T@@66) (< 0 (U_2_int (MapType0Select s@@7 x@@26))))
  5430. :qid |funwiths.971:44|
  5431. :skolemid |179|
  5432. :no-pattern (type x@@26)
  5433. :no-pattern (U_2_int x@@26)
  5434. :no-pattern (U_2_bool x@@26)
  5435. ))))))
  5436. :qid |funwiths.968:18|
  5437. :skolemid |180|
  5438. :pattern ( (|MultiSet#Card| s@@7))
  5439. )))
  5440. (assert (forall ((arg0@@73 T@U) ) (! (let ((T@@67 (type arg0@@73)))
  5441. (= (type (|MultiSet#Singleton| arg0@@73)) (MapType0Type T@@67 intType)))
  5442. :qid |funType:MultiSet#Singleton|
  5443. :pattern ( (|MultiSet#Singleton| arg0@@73))
  5444. )))
  5445. (assert (forall ((r@@4 T@U) (o@@42 T@U) ) (! (let ((T@@68 (type r@@4)))
  5446. (=> (= (type o@@42) T@@68) (and (and (=> (= (U_2_int (MapType0Select (|MultiSet#Singleton| r@@4) o@@42)) 1) (= r@@4 o@@42)) (=> (= r@@4 o@@42) (= (U_2_int (MapType0Select (|MultiSet#Singleton| r@@4) o@@42)) 1))) (and (=> (= (U_2_int (MapType0Select (|MultiSet#Singleton| r@@4) o@@42)) 0) (not (= r@@4 o@@42))) (=> (not (= r@@4 o@@42)) (= (U_2_int (MapType0Select (|MultiSet#Singleton| r@@4) o@@42)) 0))))))
  5447. :qid |funwiths.975:18|
  5448. :skolemid |181|
  5449. :pattern ( (MapType0Select (|MultiSet#Singleton| r@@4) o@@42))
  5450. )))
  5451. (assert (forall ((arg0@@74 T@U) (arg1@@30 T@U) ) (! (let ((T@@69 (type arg1@@30)))
  5452. (= (type (|MultiSet#UnionOne| arg0@@74 arg1@@30)) (MapType0Type T@@69 intType)))
  5453. :qid |funType:MultiSet#UnionOne|
  5454. :pattern ( (|MultiSet#UnionOne| arg0@@74 arg1@@30))
  5455. )))
  5456. (assert (forall ((r@@5 T@U) ) (! (let ((T@@70 (type r@@5)))
  5457. (= (|MultiSet#Singleton| r@@5) (|MultiSet#UnionOne| (|MultiSet#Empty| T@@70) r@@5)))
  5458. :qid |funwiths.980:18|
  5459. :skolemid |182|
  5460. :pattern ( (|MultiSet#Singleton| r@@5))
  5461. )))
  5462. (assert (forall ((a@@48 T@U) (x@@27 T@U) (o@@43 T@U) ) (! (let ((T@@71 (type x@@27)))
  5463. (=> (and (= (type a@@48) (MapType0Type T@@71 intType)) (= (type o@@43) T@@71)) (and (=> (< 0 (U_2_int (MapType0Select (|MultiSet#UnionOne| a@@48 x@@27) o@@43))) (or (= o@@43 x@@27) (< 0 (U_2_int (MapType0Select a@@48 o@@43))))) (=> (or (= o@@43 x@@27) (< 0 (U_2_int (MapType0Select a@@48 o@@43)))) (< 0 (U_2_int (MapType0Select (|MultiSet#UnionOne| a@@48 x@@27) o@@43)))))))
  5464. :qid |funwiths.986:18|
  5465. :skolemid |183|
  5466. :pattern ( (MapType0Select (|MultiSet#UnionOne| a@@48 x@@27) o@@43))
  5467. )))
  5468. (assert (forall ((a@@49 T@U) (x@@28 T@U) ) (! (let ((T@@72 (type x@@28)))
  5469. (=> (= (type a@@49) (MapType0Type T@@72 intType)) (= (U_2_int (MapType0Select (|MultiSet#UnionOne| a@@49 x@@28) x@@28)) (+ (U_2_int (MapType0Select a@@49 x@@28)) 1))))
  5470. :qid |funwiths.990:18|
  5471. :skolemid |184|
  5472. :pattern ( (|MultiSet#UnionOne| a@@49 x@@28))
  5473. )))
  5474. (assert (forall ((a@@50 T@U) (x@@29 T@U) (y@@9 T@U) ) (! (let ((T@@73 (type x@@29)))
  5475. (=> (and (and (= (type a@@50) (MapType0Type T@@73 intType)) (= (type y@@9) T@@73)) (< 0 (U_2_int (MapType0Select a@@50 y@@9)))) (< 0 (U_2_int (MapType0Select (|MultiSet#UnionOne| a@@50 x@@29) y@@9)))))
  5476. :qid |funwiths.994:18|
  5477. :skolemid |185|
  5478. :pattern ( (|MultiSet#UnionOne| a@@50 x@@29) (MapType0Select a@@50 y@@9))
  5479. )))
  5480. (assert (forall ((a@@51 T@U) (x@@30 T@U) (y@@10 T@U) ) (! (let ((T@@74 (type x@@30)))
  5481. (=> (and (and (= (type a@@51) (MapType0Type T@@74 intType)) (= (type y@@10) T@@74)) (not (= x@@30 y@@10))) (= (U_2_int (MapType0Select a@@51 y@@10)) (U_2_int (MapType0Select (|MultiSet#UnionOne| a@@51 x@@30) y@@10)))))
  5482. :qid |funwiths.998:18|
  5483. :skolemid |186|
  5484. :pattern ( (|MultiSet#UnionOne| a@@51 x@@30) (MapType0Select a@@51 y@@10))
  5485. )))
  5486. (assert (forall ((a@@52 T@U) (x@@31 T@U) ) (! (let ((T@@75 (type x@@31)))
  5487. (=> (= (type a@@52) (MapType0Type T@@75 intType)) (= (|MultiSet#Card| (|MultiSet#UnionOne| a@@52 x@@31)) (+ (|MultiSet#Card| a@@52) 1))))
  5488. :qid |funwiths.1002:18|
  5489. :skolemid |187|
  5490. :pattern ( (|MultiSet#Card| (|MultiSet#UnionOne| a@@52 x@@31)))
  5491. )))
  5492. (assert (forall ((arg0@@75 T@U) (arg1@@31 T@U) ) (! (let ((T@@76 (MapType0TypeInv0 (type arg0@@75))))
  5493. (= (type (|MultiSet#Union| arg0@@75 arg1@@31)) (MapType0Type T@@76 intType)))
  5494. :qid |funType:MultiSet#Union|
  5495. :pattern ( (|MultiSet#Union| arg0@@75 arg1@@31))
  5496. )))
  5497. (assert (forall ((a@@53 T@U) (b@@38 T@U) (o@@44 T@U) ) (! (let ((T@@77 (type o@@44)))
  5498. (=> (and (= (type a@@53) (MapType0Type T@@77 intType)) (= (type b@@38) (MapType0Type T@@77 intType))) (= (U_2_int (MapType0Select (|MultiSet#Union| a@@53 b@@38) o@@44)) (+ (U_2_int (MapType0Select a@@53 o@@44)) (U_2_int (MapType0Select b@@38 o@@44))))))
  5499. :qid |funwiths.1008:18|
  5500. :skolemid |188|
  5501. :pattern ( (MapType0Select (|MultiSet#Union| a@@53 b@@38) o@@44))
  5502. )))
  5503. (assert (forall ((a@@54 T@U) (b@@39 T@U) ) (! (let ((T@@78 (MapType0TypeInv0 (type a@@54))))
  5504. (=> (and (= (type a@@54) (MapType0Type T@@78 intType)) (= (type b@@39) (MapType0Type T@@78 intType))) (= (|MultiSet#Card| (|MultiSet#Union| a@@54 b@@39)) (+ (|MultiSet#Card| a@@54) (|MultiSet#Card| b@@39)))))
  5505. :qid |funwiths.1012:18|
  5506. :skolemid |189|
  5507. :pattern ( (|MultiSet#Card| (|MultiSet#Union| a@@54 b@@39)))
  5508. )))
  5509. (assert (forall ((arg0@@76 T@U) (arg1@@32 T@U) ) (! (let ((T@@79 (MapType0TypeInv0 (type arg0@@76))))
  5510. (= (type (|MultiSet#Intersection| arg0@@76 arg1@@32)) (MapType0Type T@@79 intType)))
  5511. :qid |funType:MultiSet#Intersection|
  5512. :pattern ( (|MultiSet#Intersection| arg0@@76 arg1@@32))
  5513. )))
  5514. (assert (forall ((a@@55 T@U) (b@@40 T@U) (o@@45 T@U) ) (! (let ((T@@80 (type o@@45)))
  5515. (=> (and (= (type a@@55) (MapType0Type T@@80 intType)) (= (type b@@40) (MapType0Type T@@80 intType))) (= (U_2_int (MapType0Select (|MultiSet#Intersection| a@@55 b@@40) o@@45)) (|Math#min| (U_2_int (MapType0Select a@@55 o@@45)) (U_2_int (MapType0Select b@@40 o@@45))))))
  5516. :qid |funwiths.1018:18|
  5517. :skolemid |190|
  5518. :pattern ( (MapType0Select (|MultiSet#Intersection| a@@55 b@@40) o@@45))
  5519. )))
  5520. (assert (forall ((a@@56 T@U) (b@@41 T@U) ) (! (let ((T@@81 (MapType0TypeInv0 (type a@@56))))
  5521. (=> (and (= (type a@@56) (MapType0Type T@@81 intType)) (= (type b@@41) (MapType0Type T@@81 intType))) (= (|MultiSet#Intersection| (|MultiSet#Intersection| a@@56 b@@41) b@@41) (|MultiSet#Intersection| a@@56 b@@41))))
  5522. :qid |funwiths.1022:18|
  5523. :skolemid |191|
  5524. :pattern ( (|MultiSet#Intersection| (|MultiSet#Intersection| a@@56 b@@41) b@@41))
  5525. )))
  5526. (assert (forall ((a@@57 T@U) (b@@42 T@U) ) (! (let ((T@@82 (MapType0TypeInv0 (type a@@57))))
  5527. (=> (and (= (type a@@57) (MapType0Type T@@82 intType)) (= (type b@@42) (MapType0Type T@@82 intType))) (= (|MultiSet#Intersection| a@@57 (|MultiSet#Intersection| a@@57 b@@42)) (|MultiSet#Intersection| a@@57 b@@42))))
  5528. :qid |funwiths.1027:18|
  5529. :skolemid |192|
  5530. :pattern ( (|MultiSet#Intersection| a@@57 (|MultiSet#Intersection| a@@57 b@@42)))
  5531. )))
  5532. (assert (forall ((arg0@@77 T@U) (arg1@@33 T@U) ) (! (let ((T@@83 (MapType0TypeInv0 (type arg0@@77))))
  5533. (= (type (|MultiSet#Difference| arg0@@77 arg1@@33)) (MapType0Type T@@83 intType)))
  5534. :qid |funType:MultiSet#Difference|
  5535. :pattern ( (|MultiSet#Difference| arg0@@77 arg1@@33))
  5536. )))
  5537. (assert (forall ((a@@58 T@U) (b@@43 T@U) (o@@46 T@U) ) (! (let ((T@@84 (type o@@46)))
  5538. (=> (and (= (type a@@58) (MapType0Type T@@84 intType)) (= (type b@@43) (MapType0Type T@@84 intType))) (= (U_2_int (MapType0Select (|MultiSet#Difference| a@@58 b@@43) o@@46)) (|Math#clip| (- (U_2_int (MapType0Select a@@58 o@@46)) (U_2_int (MapType0Select b@@43 o@@46)))))))
  5539. :qid |funwiths.1034:18|
  5540. :skolemid |193|
  5541. :pattern ( (MapType0Select (|MultiSet#Difference| a@@58 b@@43) o@@46))
  5542. )))
  5543. (assert (forall ((a@@59 T@U) (b@@44 T@U) (y@@11 T@U) ) (! (let ((T@@85 (type y@@11)))
  5544. (=> (and (and (= (type a@@59) (MapType0Type T@@85 intType)) (= (type b@@44) (MapType0Type T@@85 intType))) (<= (U_2_int (MapType0Select a@@59 y@@11)) (U_2_int (MapType0Select b@@44 y@@11)))) (= (U_2_int (MapType0Select (|MultiSet#Difference| a@@59 b@@44) y@@11)) 0)))
  5545. :qid |funwiths.1038:18|
  5546. :skolemid |194|
  5547. :pattern ( (|MultiSet#Difference| a@@59 b@@44) (MapType0Select b@@44 y@@11) (MapType0Select a@@59 y@@11))
  5548. )))
  5549. (assert (forall ((a@@60 T@U) (b@@45 T@U) ) (! (let ((T@@86 (MapType0TypeInv0 (type a@@60))))
  5550. (=> (and (= (type a@@60) (MapType0Type T@@86 intType)) (= (type b@@45) (MapType0Type T@@86 intType))) (and (= (+ (+ (|MultiSet#Card| (|MultiSet#Difference| a@@60 b@@45)) (|MultiSet#Card| (|MultiSet#Difference| b@@45 a@@60))) (* 2 (|MultiSet#Card| (|MultiSet#Intersection| a@@60 b@@45)))) (|MultiSet#Card| (|MultiSet#Union| a@@60 b@@45))) (= (|MultiSet#Card| (|MultiSet#Difference| a@@60 b@@45)) (- (|MultiSet#Card| a@@60) (|MultiSet#Card| (|MultiSet#Intersection| a@@60 b@@45)))))))
  5551. :qid |funwiths.1042:18|
  5552. :skolemid |195|
  5553. :pattern ( (|MultiSet#Card| (|MultiSet#Difference| a@@60 b@@45)))
  5554. )))
  5555. (assert (forall ((a@@61 T@U) (b@@46 T@U) ) (! (let ((T@@87 (MapType0TypeInv0 (type a@@61))))
  5556. (=> (and (= (type a@@61) (MapType0Type T@@87 intType)) (= (type b@@46) (MapType0Type T@@87 intType))) (and (=> (|MultiSet#Subset| a@@61 b@@46) (forall ((o@@47 T@U) ) (! (=> (= (type o@@47) T@@87) (<= (U_2_int (MapType0Select a@@61 o@@47)) (U_2_int (MapType0Select b@@46 o@@47))))
  5557. :qid |funwiths.1055:38|
  5558. :skolemid |196|
  5559. :pattern ( (MapType0Select a@@61 o@@47))
  5560. :pattern ( (MapType0Select b@@46 o@@47))
  5561. ))) (=> (forall ((o@@48 T@U) ) (! (=> (= (type o@@48) T@@87) (<= (U_2_int (MapType0Select a@@61 o@@48)) (U_2_int (MapType0Select b@@46 o@@48))))
  5562. :qid |funwiths.1055:38|
  5563. :skolemid |196|
  5564. :pattern ( (MapType0Select a@@61 o@@48))
  5565. :pattern ( (MapType0Select b@@46 o@@48))
  5566. )) (|MultiSet#Subset| a@@61 b@@46)))))
  5567. :qid |funwiths.1053:18|
  5568. :skolemid |197|
  5569. :pattern ( (|MultiSet#Subset| a@@61 b@@46))
  5570. )))
  5571. (assert (forall ((a@@62 T@U) (b@@47 T@U) ) (! (let ((T@@88 (MapType0TypeInv0 (type a@@62))))
  5572. (=> (and (= (type a@@62) (MapType0Type T@@88 intType)) (= (type b@@47) (MapType0Type T@@88 intType))) (and (=> (|MultiSet#Equal| a@@62 b@@47) (forall ((o@@49 T@U) ) (! (=> (= (type o@@49) T@@88) (= (U_2_int (MapType0Select a@@62 o@@49)) (U_2_int (MapType0Select b@@47 o@@49))))
  5573. :qid |funwiths.1061:37|
  5574. :skolemid |198|
  5575. :pattern ( (MapType0Select a@@62 o@@49))
  5576. :pattern ( (MapType0Select b@@47 o@@49))
  5577. ))) (=> (forall ((o@@50 T@U) ) (! (=> (= (type o@@50) T@@88) (= (U_2_int (MapType0Select a@@62 o@@50)) (U_2_int (MapType0Select b@@47 o@@50))))
  5578. :qid |funwiths.1061:37|
  5579. :skolemid |198|
  5580. :pattern ( (MapType0Select a@@62 o@@50))
  5581. :pattern ( (MapType0Select b@@47 o@@50))
  5582. )) (|MultiSet#Equal| a@@62 b@@47)))))
  5583. :qid |funwiths.1059:18|
  5584. :skolemid |199|
  5585. :pattern ( (|MultiSet#Equal| a@@62 b@@47))
  5586. )))
  5587. (assert (forall ((a@@63 T@U) (b@@48 T@U) ) (! (let ((T@@89 (MapType0TypeInv0 (type a@@63))))
  5588. (=> (and (and (= (type a@@63) (MapType0Type T@@89 intType)) (= (type b@@48) (MapType0Type T@@89 intType))) (|MultiSet#Equal| a@@63 b@@48)) (= a@@63 b@@48)))
  5589. :qid |funwiths.1063:18|
  5590. :skolemid |200|
  5591. :pattern ( (|MultiSet#Equal| a@@63 b@@48))
  5592. )))
  5593. (assert (forall ((a@@64 T@U) (b@@49 T@U) ) (! (let ((T@@90 (MapType0TypeInv0 (type a@@64))))
  5594. (=> (and (= (type a@@64) (MapType0Type T@@90 intType)) (= (type b@@49) (MapType0Type T@@90 intType))) (and (=> (|MultiSet#Disjoint| a@@64 b@@49) (forall ((o@@51 T@U) ) (! (=> (= (type o@@51) T@@90) (or (= (U_2_int (MapType0Select a@@64 o@@51)) 0) (= (U_2_int (MapType0Select b@@49 o@@51)) 0)))
  5595. :qid |funwiths.1072:19|
  5596. :skolemid |201|
  5597. :pattern ( (MapType0Select a@@64 o@@51))
  5598. :pattern ( (MapType0Select b@@49 o@@51))
  5599. ))) (=> (forall ((o@@52 T@U) ) (! (=> (= (type o@@52) T@@90) (or (= (U_2_int (MapType0Select a@@64 o@@52)) 0) (= (U_2_int (MapType0Select b@@49 o@@52)) 0)))
  5600. :qid |funwiths.1072:19|
  5601. :skolemid |201|
  5602. :pattern ( (MapType0Select a@@64 o@@52))
  5603. :pattern ( (MapType0Select b@@49 o@@52))
  5604. )) (|MultiSet#Disjoint| a@@64 b@@49)))))
  5605. :qid |funwiths.1069:18|
  5606. :skolemid |202|
  5607. :pattern ( (|MultiSet#Disjoint| a@@64 b@@49))
  5608. )))
  5609. (assert (forall ((arg0@@78 T@U) ) (! (let ((T@@91 (MapType0TypeInv0 (type arg0@@78))))
  5610. (= (type (|MultiSet#FromSet| arg0@@78)) (MapType0Type T@@91 intType)))
  5611. :qid |funType:MultiSet#FromSet|
  5612. :pattern ( (|MultiSet#FromSet| arg0@@78))
  5613. )))
  5614. (assert (forall ((s@@8 T@U) (a@@65 T@U) ) (! (let ((T@@92 (type a@@65)))
  5615. (=> (= (type s@@8) (MapType0Type T@@92 boolType)) (and (and (=> (= (U_2_int (MapType0Select (|MultiSet#FromSet| s@@8) a@@65)) 0) (not (U_2_bool (MapType0Select s@@8 a@@65)))) (=> (not (U_2_bool (MapType0Select s@@8 a@@65))) (= (U_2_int (MapType0Select (|MultiSet#FromSet| s@@8) a@@65)) 0))) (and (=> (= (U_2_int (MapType0Select (|MultiSet#FromSet| s@@8) a@@65)) 1) (U_2_bool (MapType0Select s@@8 a@@65))) (=> (U_2_bool (MapType0Select s@@8 a@@65)) (= (U_2_int (MapType0Select (|MultiSet#FromSet| s@@8) a@@65)) 1))))))
  5616. :qid |funwiths.1076:18|
  5617. :skolemid |203|
  5618. :pattern ( (MapType0Select (|MultiSet#FromSet| s@@8) a@@65))
  5619. )))
  5620. (assert (forall ((s@@9 T@U) ) (! (let ((T@@93 (MapType0TypeInv0 (type s@@9))))
  5621. (=> (= (type s@@9) (MapType0Type T@@93 boolType)) (= (|MultiSet#Card| (|MultiSet#FromSet| s@@9)) (|Set#Card| s@@9))))
  5622. :qid |funwiths.1081:18|
  5623. :skolemid |204|
  5624. :pattern ( (|MultiSet#Card| (|MultiSet#FromSet| s@@9)))
  5625. )))
  5626. (assert (forall ((arg0@@79 T@U) ) (! (let ((T@@94 (SeqTypeInv0 (type arg0@@79))))
  5627. (= (type (|MultiSet#FromSeq| arg0@@79)) (MapType0Type T@@94 intType)))
  5628. :qid |funType:MultiSet#FromSeq|
  5629. :pattern ( (|MultiSet#FromSeq| arg0@@79))
  5630. )))
  5631. (assert (forall ((s@@10 T@U) ) (! (let ((T@@95 (SeqTypeInv0 (type s@@10))))
  5632. (=> (= (type s@@10) (SeqType T@@95)) ($IsGoodMultiSet (|MultiSet#FromSeq| s@@10))))
  5633. :qid |funwiths.1087:18|
  5634. :skolemid |205|
  5635. :pattern ( (|MultiSet#FromSeq| s@@10))
  5636. )))
  5637. (assert (forall ((s@@11 T@U) ) (! (let ((T@@96 (SeqTypeInv0 (type s@@11))))
  5638. (=> (= (type s@@11) (SeqType T@@96)) (= (|MultiSet#Card| (|MultiSet#FromSeq| s@@11)) (|Seq#Length| s@@11))))
  5639. :qid |funwiths.1091:18|
  5640. :skolemid |206|
  5641. :pattern ( (|MultiSet#Card| (|MultiSet#FromSeq| s@@11)))
  5642. )))
  5643. (assert (forall ((arg0@@80 T@U) (arg1@@34 T@U) ) (! (let ((T@@97 (type arg1@@34)))
  5644. (= (type (|Seq#Build| arg0@@80 arg1@@34)) (SeqType T@@97)))
  5645. :qid |funType:Seq#Build|
  5646. :pattern ( (|Seq#Build| arg0@@80 arg1@@34))
  5647. )))
  5648. (assert (forall ((s@@12 T@U) (v@@25 T@U) ) (! (let ((T@@98 (type v@@25)))
  5649. (=> (= (type s@@12) (SeqType T@@98)) (= (|MultiSet#FromSeq| (|Seq#Build| s@@12 v@@25)) (|MultiSet#UnionOne| (|MultiSet#FromSeq| s@@12) v@@25))))
  5650. :qid |funwiths.1095:18|
  5651. :skolemid |207|
  5652. :pattern ( (|MultiSet#FromSeq| (|Seq#Build| s@@12 v@@25)))
  5653. )))
  5654. (assert (forall ((T@@99 T@T) ) (! (= (type (|Seq#Empty| T@@99)) (SeqType T@@99))
  5655. :qid |funType:Seq#Empty|
  5656. :pattern ( (|Seq#Empty| T@@99))
  5657. )))
  5658. (assert (forall ((T@@100 T@T) ) (! (= (|MultiSet#FromSeq| (|Seq#Empty| T@@100)) (|MultiSet#Empty| T@@100))
  5659. :skolemid |208|
  5660. )))
  5661. (assert (forall ((arg0@@81 T@U) (arg1@@35 T@U) ) (! (let ((T@@101 (SeqTypeInv0 (type arg0@@81))))
  5662. (= (type (|Seq#Append| arg0@@81 arg1@@35)) (SeqType T@@101)))
  5663. :qid |funType:Seq#Append|
  5664. :pattern ( (|Seq#Append| arg0@@81 arg1@@35))
  5665. )))
  5666. (assert (forall ((a@@66 T@U) (b@@50 T@U) ) (! (let ((T@@102 (SeqTypeInv0 (type a@@66))))
  5667. (=> (and (= (type a@@66) (SeqType T@@102)) (= (type b@@50) (SeqType T@@102))) (= (|MultiSet#FromSeq| (|Seq#Append| a@@66 b@@50)) (|MultiSet#Union| (|MultiSet#FromSeq| a@@66) (|MultiSet#FromSeq| b@@50)))))
  5668. :qid |funwiths.1102:18|
  5669. :skolemid |209|
  5670. :pattern ( (|MultiSet#FromSeq| (|Seq#Append| a@@66 b@@50)))
  5671. )))
  5672. (assert (forall ((arg0@@82 T@U) (arg1@@36 Int) (arg2@@1 T@U) ) (! (let ((T@@103 (type arg2@@1)))
  5673. (= (type (|Seq#Update| arg0@@82 arg1@@36 arg2@@1)) (SeqType T@@103)))
  5674. :qid |funType:Seq#Update|
  5675. :pattern ( (|Seq#Update| arg0@@82 arg1@@36 arg2@@1))
  5676. )))
  5677. (assert (forall ((s@@13 T@U) (i@@8 Int) (v@@26 T@U) (x@@32 T@U) ) (! (let ((T@@104 (type v@@26)))
  5678. (=> (and (and (= (type s@@13) (SeqType T@@104)) (= (type x@@32) T@@104)) (and (<= 0 i@@8) (< i@@8 (|Seq#Length| s@@13)))) (= (U_2_int (MapType0Select (|MultiSet#FromSeq| (|Seq#Update| s@@13 i@@8 v@@26)) x@@32)) (U_2_int (MapType0Select (|MultiSet#Union| (|MultiSet#Difference| (|MultiSet#FromSeq| s@@13) (|MultiSet#Singleton| (|Seq#Index| s@@13 i@@8))) (|MultiSet#Singleton| v@@26)) x@@32)))))
  5679. :qid |funwiths.1107:18|
  5680. :skolemid |210|
  5681. :pattern ( (MapType0Select (|MultiSet#FromSeq| (|Seq#Update| s@@13 i@@8 v@@26)) x@@32))
  5682. )))
  5683. (assert (forall ((s@@14 T@U) (x@@33 T@U) ) (! (let ((T@@105 (type x@@33)))
  5684. (=> (= (type s@@14) (SeqType T@@105)) (and (=> (exists ((i@@9 Int) ) (! (and (and (<= 0 i@@9) (< i@@9 (|Seq#Length| s@@14))) (= x@@33 (|Seq#Index| s@@14 i@@9)))
  5685. :qid |funwiths.1116:11|
  5686. :skolemid |211|
  5687. :pattern ( (|Seq#Index| s@@14 i@@9))
  5688. )) (< 0 (U_2_int (MapType0Select (|MultiSet#FromSeq| s@@14) x@@33)))) (=> (< 0 (U_2_int (MapType0Select (|MultiSet#FromSeq| s@@14) x@@33))) (exists ((i@@10 Int) ) (! (and (and (<= 0 i@@10) (< i@@10 (|Seq#Length| s@@14))) (= x@@33 (|Seq#Index| s@@14 i@@10)))
  5689. :qid |funwiths.1116:11|
  5690. :skolemid |211|
  5691. :pattern ( (|Seq#Index| s@@14 i@@10))
  5692. ))))))
  5693. :qid |funwiths.1114:18|
  5694. :skolemid |212|
  5695. :pattern ( (MapType0Select (|MultiSet#FromSeq| s@@14) x@@33))
  5696. )))
  5697. (assert (forall ((s@@15 T@U) ) (! (let ((T@@106 (SeqTypeInv0 (type s@@15))))
  5698. (=> (= (type s@@15) (SeqType T@@106)) (<= 0 (|Seq#Length| s@@15))))
  5699. :qid |funwiths.1125:18|
  5700. :skolemid |213|
  5701. :pattern ( (|Seq#Length| s@@15))
  5702. )))
  5703. (assert (forall ((T@@107 T@T) ) (! (= (|Seq#Length| (|Seq#Empty| T@@107)) 0)
  5704. :skolemid |214|
  5705. :pattern ( (|Seq#Empty| T@@107))
  5706. )))
  5707. (assert (forall ((s@@16 T@U) ) (! (let ((T@@108 (SeqTypeInv0 (type s@@16))))
  5708. (=> (and (= (type s@@16) (SeqType T@@108)) (= (|Seq#Length| s@@16) 0)) (= s@@16 (|Seq#Empty| T@@108))))
  5709. :qid |funwiths.1131:18|
  5710. :skolemid |215|
  5711. :pattern ( (|Seq#Length| s@@16))
  5712. )))
  5713. (assert (forall ((t@@23 T@U) (T@@109 T@T) ) (! (=> (= (type t@@23) TyType) ($Is (|Seq#Empty| T@@109) t@@23))
  5714. :qid |funwiths.1135:18|
  5715. :skolemid |216|
  5716. :pattern ( ($Is (|Seq#Empty| T@@109) t@@23))
  5717. )))
  5718. (assert (forall ((arg0@@83 T@U) ) (! (let ((T@@110 (type arg0@@83)))
  5719. (= (type (|Seq#Singleton| arg0@@83)) (SeqType T@@110)))
  5720. :qid |funType:Seq#Singleton|
  5721. :pattern ( (|Seq#Singleton| arg0@@83))
  5722. )))
  5723. (assert (forall ((t@@24 T@U) ) (! (= (|Seq#Length| (|Seq#Singleton| t@@24)) 1)
  5724. :qid |funwiths.1139:18|
  5725. :skolemid |217|
  5726. :pattern ( (|Seq#Length| (|Seq#Singleton| t@@24)))
  5727. )))
  5728. (assert (and (forall ((arg0@@84 T@U) ) (! (let ((T@@111 (SeqTypeInv0 (type arg0@@84))))
  5729. (= (type (|Seq#Build_inv0| arg0@@84)) (SeqType T@@111)))
  5730. :qid |funType:Seq#Build_inv0|
  5731. :pattern ( (|Seq#Build_inv0| arg0@@84))
  5732. )) (forall ((arg0@@85 T@U) ) (! (let ((T@@112 (SeqTypeInv0 (type arg0@@85))))
  5733. (= (type (|Seq#Build_inv1| arg0@@85)) T@@112))
  5734. :qid |funType:Seq#Build_inv1|
  5735. :pattern ( (|Seq#Build_inv1| arg0@@85))
  5736. ))))
  5737. (assert (forall ((s@@17 T@U) (val@@5 T@U) ) (! (let ((T@@113 (type val@@5)))
  5738. (=> (= (type s@@17) (SeqType T@@113)) (and (= (|Seq#Build_inv0| (|Seq#Build| s@@17 val@@5)) s@@17) (= (|Seq#Build_inv1| (|Seq#Build| s@@17 val@@5)) val@@5))))
  5739. :qid |funwiths.1149:18|
  5740. :skolemid |218|
  5741. :pattern ( (|Seq#Build| s@@17 val@@5))
  5742. )))
  5743. (assert (forall ((s@@18 T@U) (v@@27 T@U) ) (! (let ((T@@114 (type v@@27)))
  5744. (=> (= (type s@@18) (SeqType T@@114)) (= (|Seq#Length| (|Seq#Build| s@@18 v@@27)) (+ 1 (|Seq#Length| s@@18)))))
  5745. :qid |funwiths.1154:18|
  5746. :skolemid |219|
  5747. :pattern ( (|Seq#Build| s@@18 v@@27))
  5748. )))
  5749. (assert (forall ((s@@19 T@U) (i@@11 Int) (v@@28 T@U) ) (! (let ((T@@115 (type v@@28)))
  5750. (=> (= (type s@@19) (SeqType T@@115)) (and (=> (= i@@11 (|Seq#Length| s@@19)) (= (|Seq#Index| (|Seq#Build| s@@19 v@@28) i@@11) v@@28)) (=> (not (= i@@11 (|Seq#Length| s@@19))) (= (|Seq#Index| (|Seq#Build| s@@19 v@@28) i@@11) (|Seq#Index| s@@19 i@@11))))))
  5751. :qid |funwiths.1158:18|
  5752. :skolemid |220|
  5753. :pattern ( (|Seq#Index| (|Seq#Build| s@@19 v@@28) i@@11))
  5754. )))
  5755. (assert (forall ((s@@20 T@U) (bx@@33 T@U) (t@@25 T@U) ) (! (=> (and (and (and (= (type s@@20) (SeqType BoxType)) (= (type bx@@33) BoxType)) (= (type t@@25) TyType)) (and ($Is s@@20 (TSeq t@@25)) ($IsBox bx@@33 t@@25))) ($Is (|Seq#Build| s@@20 bx@@33) (TSeq t@@25)))
  5756. :qid |funwiths.1163:15|
  5757. :skolemid |221|
  5758. :pattern ( ($Is (|Seq#Build| s@@20 bx@@33) (TSeq t@@25)))
  5759. )))
  5760. (assert (forall ((s0 T@U) (s1 T@U) ) (! (let ((T@@116 (SeqTypeInv0 (type s0))))
  5761. (=> (and (= (type s0) (SeqType T@@116)) (= (type s1) (SeqType T@@116))) (= (|Seq#Length| (|Seq#Append| s0 s1)) (+ (|Seq#Length| s0) (|Seq#Length| s1)))))
  5762. :qid |funwiths.1169:18|
  5763. :skolemid |222|
  5764. :pattern ( (|Seq#Length| (|Seq#Append| s0 s1)))
  5765. )))
  5766. (assert (forall ((s0@@0 T@U) (s1@@0 T@U) (t@@26 T@U) ) (! (=> (and (and (and (= (type s0@@0) (SeqType BoxType)) (= (type s1@@0) (SeqType BoxType))) (= (type t@@26) TyType)) (and ($Is s0@@0 t@@26) ($Is s1@@0 t@@26))) ($Is (|Seq#Append| s0@@0 s1@@0) t@@26))
  5767. :qid |funwiths.1173:15|
  5768. :skolemid |223|
  5769. :pattern ( ($Is (|Seq#Append| s0@@0 s1@@0) t@@26))
  5770. )))
  5771. (assert (forall ((t@@27 T@U) ) (! (= (|Seq#Index| (|Seq#Singleton| t@@27) 0) t@@27)
  5772. :qid |funwiths.1179:18|
  5773. :skolemid |224|
  5774. :pattern ( (|Seq#Index| (|Seq#Singleton| t@@27) 0))
  5775. )))
  5776. (assert (forall ((s0@@1 T@U) (s1@@1 T@U) (n@@6 Int) ) (! (let ((T@@117 (SeqTypeInv0 (type s0@@1))))
  5777. (=> (and (= (type s0@@1) (SeqType T@@117)) (= (type s1@@1) (SeqType T@@117))) (and (=> (< n@@6 (|Seq#Length| s0@@1)) (= (|Seq#Index| (|Seq#Append| s0@@1 s1@@1) n@@6) (|Seq#Index| s0@@1 n@@6))) (=> (<= (|Seq#Length| s0@@1) n@@6) (= (|Seq#Index| (|Seq#Append| s0@@1 s1@@1) n@@6) (|Seq#Index| s1@@1 (- n@@6 (|Seq#Length| s0@@1))))))))
  5778. :qid |funwiths.1183:18|
  5779. :skolemid |225|
  5780. :pattern ( (|Seq#Index| (|Seq#Append| s0@@1 s1@@1) n@@6))
  5781. )))
  5782. (assert (forall ((s@@21 T@U) (i@@12 Int) (v@@29 T@U) ) (! (let ((T@@118 (type v@@29)))
  5783. (=> (= (type s@@21) (SeqType T@@118)) (=> (and (<= 0 i@@12) (< i@@12 (|Seq#Length| s@@21))) (= (|Seq#Length| (|Seq#Update| s@@21 i@@12 v@@29)) (|Seq#Length| s@@21)))))
  5784. :qid |funwiths.1191:18|
  5785. :skolemid |226|
  5786. :pattern ( (|Seq#Length| (|Seq#Update| s@@21 i@@12 v@@29)))
  5787. )))
  5788. (assert (forall ((s@@22 T@U) (i@@13 Int) (v@@30 T@U) (n@@7 Int) ) (! (let ((T@@119 (type v@@30)))
  5789. (=> (= (type s@@22) (SeqType T@@119)) (=> (and (<= 0 n@@7) (< n@@7 (|Seq#Length| s@@22))) (and (=> (= i@@13 n@@7) (= (|Seq#Index| (|Seq#Update| s@@22 i@@13 v@@30) n@@7) v@@30)) (=> (not (= i@@13 n@@7)) (= (|Seq#Index| (|Seq#Update| s@@22 i@@13 v@@30) n@@7) (|Seq#Index| s@@22 n@@7)))))))
  5790. :qid |funwiths.1195:18|
  5791. :skolemid |227|
  5792. :pattern ( (|Seq#Index| (|Seq#Update| s@@22 i@@13 v@@30) n@@7))
  5793. )))
  5794. (assert (forall ((s@@23 T@U) (x@@34 T@U) ) (! (let ((T@@120 (type x@@34)))
  5795. (=> (= (type s@@23) (SeqType T@@120)) (and (=> (|Seq#Contains| s@@23 x@@34) (exists ((i@@14 Int) ) (! (and (and (<= 0 i@@14) (< i@@14 (|Seq#Length| s@@23))) (= (|Seq#Index| s@@23 i@@14) x@@34))
  5796. :qid |funwiths.1206:19|
  5797. :skolemid |228|
  5798. :pattern ( (|Seq#Index| s@@23 i@@14))
  5799. ))) (=> (exists ((i@@15 Int) ) (! (and (and (<= 0 i@@15) (< i@@15 (|Seq#Length| s@@23))) (= (|Seq#Index| s@@23 i@@15) x@@34))
  5800. :qid |funwiths.1206:19|
  5801. :skolemid |228|
  5802. :pattern ( (|Seq#Index| s@@23 i@@15))
  5803. )) (|Seq#Contains| s@@23 x@@34)))))
  5804. :qid |funwiths.1203:18|
  5805. :skolemid |229|
  5806. :pattern ( (|Seq#Contains| s@@23 x@@34))
  5807. )))
  5808. (assert (forall ((x@@35 T@U) ) (! (let ((T@@121 (type x@@35)))
  5809. (not (|Seq#Contains| (|Seq#Empty| T@@121) x@@35)))
  5810. :qid |funwiths.1210:18|
  5811. :skolemid |230|
  5812. :pattern ( (let ((T@@121 (type x@@35)))
  5813. (|Seq#Contains| (|Seq#Empty| T@@121) x@@35)))
  5814. )))
  5815. (assert (forall ((s0@@2 T@U) (s1@@2 T@U) (x@@36 T@U) ) (! (let ((T@@122 (type x@@36)))
  5816. (=> (and (= (type s0@@2) (SeqType T@@122)) (= (type s1@@2) (SeqType T@@122))) (and (=> (|Seq#Contains| (|Seq#Append| s0@@2 s1@@2) x@@36) (or (|Seq#Contains| s0@@2 x@@36) (|Seq#Contains| s1@@2 x@@36))) (=> (or (|Seq#Contains| s0@@2 x@@36) (|Seq#Contains| s1@@2 x@@36)) (|Seq#Contains| (|Seq#Append| s0@@2 s1@@2) x@@36)))))
  5817. :qid |funwiths.1214:18|
  5818. :skolemid |231|
  5819. :pattern ( (|Seq#Contains| (|Seq#Append| s0@@2 s1@@2) x@@36))
  5820. )))
  5821. (assert (forall ((s@@24 T@U) (v@@31 T@U) (x@@37 T@U) ) (! (let ((T@@123 (type v@@31)))
  5822. (=> (and (= (type s@@24) (SeqType T@@123)) (= (type x@@37) T@@123)) (and (=> (|Seq#Contains| (|Seq#Build| s@@24 v@@31) x@@37) (or (= v@@31 x@@37) (|Seq#Contains| s@@24 x@@37))) (=> (or (= v@@31 x@@37) (|Seq#Contains| s@@24 x@@37)) (|Seq#Contains| (|Seq#Build| s@@24 v@@31) x@@37)))))
  5823. :qid |funwiths.1219:18|
  5824. :skolemid |232|
  5825. :pattern ( (|Seq#Contains| (|Seq#Build| s@@24 v@@31) x@@37))
  5826. )))
  5827. (assert (forall ((arg0@@86 T@U) (arg1@@37 Int) ) (! (let ((T@@124 (SeqTypeInv0 (type arg0@@86))))
  5828. (= (type (|Seq#Take| arg0@@86 arg1@@37)) (SeqType T@@124)))
  5829. :qid |funType:Seq#Take|
  5830. :pattern ( (|Seq#Take| arg0@@86 arg1@@37))
  5831. )))
  5832. (assert (forall ((s@@25 T@U) (n@@8 Int) (x@@38 T@U) ) (! (let ((T@@125 (type x@@38)))
  5833. (=> (= (type s@@25) (SeqType T@@125)) (and (=> (|Seq#Contains| (|Seq#Take| s@@25 n@@8) x@@38) (exists ((i@@16 Int) ) (! (and (and (and (<= 0 i@@16) (< i@@16 n@@8)) (< i@@16 (|Seq#Length| s@@25))) (= (|Seq#Index| s@@25 i@@16) x@@38))
  5834. :qid |funwiths.1226:19|
  5835. :skolemid |233|
  5836. :pattern ( (|Seq#Index| s@@25 i@@16))
  5837. ))) (=> (exists ((i@@17 Int) ) (! (and (and (and (<= 0 i@@17) (< i@@17 n@@8)) (< i@@17 (|Seq#Length| s@@25))) (= (|Seq#Index| s@@25 i@@17) x@@38))
  5838. :qid |funwiths.1226:19|
  5839. :skolemid |233|
  5840. :pattern ( (|Seq#Index| s@@25 i@@17))
  5841. )) (|Seq#Contains| (|Seq#Take| s@@25 n@@8) x@@38)))))
  5842. :qid |funwiths.1223:18|
  5843. :skolemid |234|
  5844. :pattern ( (|Seq#Contains| (|Seq#Take| s@@25 n@@8) x@@38))
  5845. )))
  5846. (assert (forall ((arg0@@87 T@U) (arg1@@38 Int) ) (! (let ((T@@126 (SeqTypeInv0 (type arg0@@87))))
  5847. (= (type (|Seq#Drop| arg0@@87 arg1@@38)) (SeqType T@@126)))
  5848. :qid |funType:Seq#Drop|
  5849. :pattern ( (|Seq#Drop| arg0@@87 arg1@@38))
  5850. )))
  5851. (assert (forall ((s@@26 T@U) (n@@9 Int) (x@@39 T@U) ) (! (let ((T@@127 (type x@@39)))
  5852. (=> (= (type s@@26) (SeqType T@@127)) (and (=> (|Seq#Contains| (|Seq#Drop| s@@26 n@@9) x@@39) (exists ((i@@18 Int) ) (! (and (and (and (<= 0 n@@9) (<= n@@9 i@@18)) (< i@@18 (|Seq#Length| s@@26))) (= (|Seq#Index| s@@26 i@@18) x@@39))
  5853. :qid |funwiths.1233:19|
  5854. :skolemid |235|
  5855. :pattern ( (|Seq#Index| s@@26 i@@18))
  5856. ))) (=> (exists ((i@@19 Int) ) (! (and (and (and (<= 0 n@@9) (<= n@@9 i@@19)) (< i@@19 (|Seq#Length| s@@26))) (= (|Seq#Index| s@@26 i@@19) x@@39))
  5857. :qid |funwiths.1233:19|
  5858. :skolemid |235|
  5859. :pattern ( (|Seq#Index| s@@26 i@@19))
  5860. )) (|Seq#Contains| (|Seq#Drop| s@@26 n@@9) x@@39)))))
  5861. :qid |funwiths.1230:18|
  5862. :skolemid |236|
  5863. :pattern ( (|Seq#Contains| (|Seq#Drop| s@@26 n@@9) x@@39))
  5864. )))
  5865. (assert (forall ((s0@@3 T@U) (s1@@3 T@U) ) (! (let ((T@@128 (SeqTypeInv0 (type s0@@3))))
  5866. (=> (and (= (type s0@@3) (SeqType T@@128)) (= (type s1@@3) (SeqType T@@128))) (and (=> (|Seq#Equal| s0@@3 s1@@3) (and (= (|Seq#Length| s0@@3) (|Seq#Length| s1@@3)) (forall ((j Int) ) (! (=> (and (<= 0 j) (< j (|Seq#Length| s0@@3))) (= (|Seq#Index| s0@@3 j) (|Seq#Index| s1@@3 j)))
  5867. :qid |funwiths.1243:19|
  5868. :skolemid |237|
  5869. :pattern ( (|Seq#Index| s0@@3 j))
  5870. :pattern ( (|Seq#Index| s1@@3 j))
  5871. )))) (=> (and (= (|Seq#Length| s0@@3) (|Seq#Length| s1@@3)) (forall ((j@@0 Int) ) (! (=> (and (<= 0 j@@0) (< j@@0 (|Seq#Length| s0@@3))) (= (|Seq#Index| s0@@3 j@@0) (|Seq#Index| s1@@3 j@@0)))
  5872. :qid |funwiths.1243:19|
  5873. :skolemid |237|
  5874. :pattern ( (|Seq#Index| s0@@3 j@@0))
  5875. :pattern ( (|Seq#Index| s1@@3 j@@0))
  5876. ))) (|Seq#Equal| s0@@3 s1@@3)))))
  5877. :qid |funwiths.1239:18|
  5878. :skolemid |238|
  5879. :pattern ( (|Seq#Equal| s0@@3 s1@@3))
  5880. )))
  5881. (assert (forall ((a@@67 T@U) (b@@51 T@U) ) (! (let ((T@@129 (SeqTypeInv0 (type a@@67))))
  5882. (=> (and (and (= (type a@@67) (SeqType T@@129)) (= (type b@@51) (SeqType T@@129))) (|Seq#Equal| a@@67 b@@51)) (= a@@67 b@@51)))
  5883. :qid |funwiths.1247:18|
  5884. :skolemid |239|
  5885. :pattern ( (|Seq#Equal| a@@67 b@@51))
  5886. )))
  5887. (assert (forall ((s0@@4 T@U) (s1@@4 T@U) (n@@10 Int) ) (! (let ((T@@130 (SeqTypeInv0 (type s0@@4))))
  5888. (=> (and (= (type s0@@4) (SeqType T@@130)) (= (type s1@@4) (SeqType T@@130))) (and (=> (|Seq#SameUntil| s0@@4 s1@@4 n@@10) (forall ((j@@1 Int) ) (! (=> (and (<= 0 j@@1) (< j@@1 n@@10)) (= (|Seq#Index| s0@@4 j@@1) (|Seq#Index| s1@@4 j@@1)))
  5889. :qid |funwiths.1254:19|
  5890. :skolemid |240|
  5891. :pattern ( (|Seq#Index| s0@@4 j@@1))
  5892. :pattern ( (|Seq#Index| s1@@4 j@@1))
  5893. ))) (=> (forall ((j@@2 Int) ) (! (=> (and (<= 0 j@@2) (< j@@2 n@@10)) (= (|Seq#Index| s0@@4 j@@2) (|Seq#Index| s1@@4 j@@2)))
  5894. :qid |funwiths.1254:19|
  5895. :skolemid |240|
  5896. :pattern ( (|Seq#Index| s0@@4 j@@2))
  5897. :pattern ( (|Seq#Index| s1@@4 j@@2))
  5898. )) (|Seq#SameUntil| s0@@4 s1@@4 n@@10)))))
  5899. :qid |funwiths.1251:18|
  5900. :skolemid |241|
  5901. :pattern ( (|Seq#SameUntil| s0@@4 s1@@4 n@@10))
  5902. )))
  5903. (assert (forall ((s@@27 T@U) (n@@11 Int) ) (! (let ((T@@131 (SeqTypeInv0 (type s@@27))))
  5904. (=> (= (type s@@27) (SeqType T@@131)) (=> (and (<= 0 n@@11) (<= n@@11 (|Seq#Length| s@@27))) (= (|Seq#Length| (|Seq#Take| s@@27 n@@11)) n@@11))))
  5905. :qid |funwiths.1260:18|
  5906. :skolemid |242|
  5907. :pattern ( (|Seq#Length| (|Seq#Take| s@@27 n@@11)))
  5908. )))
  5909. (assert (forall ((s@@28 T@U) (n@@12 Int) (j@@3 Int) ) (! (let ((T@@132 (SeqTypeInv0 (type s@@28))))
  5910. (=> (= (type s@@28) (SeqType T@@132)) (=> (and (and (<= 0 j@@3) (< j@@3 n@@12)) (< j@@3 (|Seq#Length| s@@28))) (= (|Seq#Index| (|Seq#Take| s@@28 n@@12) j@@3) (|Seq#Index| s@@28 j@@3)))))
  5911. :qid |funwiths.1264:18|
  5912. :weight 25
  5913. :skolemid |243|
  5914. :pattern ( (|Seq#Index| (|Seq#Take| s@@28 n@@12) j@@3))
  5915. :pattern ( (|Seq#Index| s@@28 j@@3) (|Seq#Take| s@@28 n@@12))
  5916. )))
  5917. (assert (forall ((s@@29 T@U) (n@@13 Int) ) (! (let ((T@@133 (SeqTypeInv0 (type s@@29))))
  5918. (=> (= (type s@@29) (SeqType T@@133)) (=> (and (<= 0 n@@13) (<= n@@13 (|Seq#Length| s@@29))) (= (|Seq#Length| (|Seq#Drop| s@@29 n@@13)) (- (|Seq#Length| s@@29) n@@13)))))
  5919. :qid |funwiths.1271:18|
  5920. :skolemid |244|
  5921. :pattern ( (|Seq#Length| (|Seq#Drop| s@@29 n@@13)))
  5922. )))
  5923. (assert (forall ((s@@30 T@U) (n@@14 Int) (j@@4 Int) ) (! (let ((T@@134 (SeqTypeInv0 (type s@@30))))
  5924. (=> (= (type s@@30) (SeqType T@@134)) (=> (and (and (<= 0 n@@14) (<= 0 j@@4)) (< j@@4 (- (|Seq#Length| s@@30) n@@14))) (= (|Seq#Index| (|Seq#Drop| s@@30 n@@14) j@@4) (|Seq#Index| s@@30 (+ j@@4 n@@14))))))
  5925. :qid |funwiths.1275:18|
  5926. :weight 25
  5927. :skolemid |245|
  5928. :pattern ( (|Seq#Index| (|Seq#Drop| s@@30 n@@14) j@@4))
  5929. )))
  5930. (assert (forall ((s@@31 T@U) (n@@15 Int) (k@@3 Int) ) (! (let ((T@@135 (SeqTypeInv0 (type s@@31))))
  5931. (=> (= (type s@@31) (SeqType T@@135)) (=> (and (and (<= 0 n@@15) (<= n@@15 k@@3)) (< k@@3 (|Seq#Length| s@@31))) (= (|Seq#Index| (|Seq#Drop| s@@31 n@@15) (- k@@3 n@@15)) (|Seq#Index| s@@31 k@@3)))))
  5932. :qid |funwiths.1280:18|
  5933. :weight 25
  5934. :skolemid |246|
  5935. :pattern ( (|Seq#Index| s@@31 k@@3) (|Seq#Drop| s@@31 n@@15))
  5936. )))
  5937. (assert (forall ((s@@32 T@U) (t@@28 T@U) (n@@16 Int) ) (! (let ((T@@136 (SeqTypeInv0 (type s@@32))))
  5938. (=> (and (and (= (type s@@32) (SeqType T@@136)) (= (type t@@28) (SeqType T@@136))) (= n@@16 (|Seq#Length| s@@32))) (= (|Seq#Take| (|Seq#Append| s@@32 t@@28) n@@16) s@@32)))
  5939. :qid |funwiths.1285:18|
  5940. :skolemid |247|
  5941. :pattern ( (|Seq#Take| (|Seq#Append| s@@32 t@@28) n@@16))
  5942. )))
  5943. (assert (forall ((s@@33 T@U) (t@@29 T@U) (n@@17 Int) ) (! (let ((T@@137 (SeqTypeInv0 (type s@@33))))
  5944. (=> (and (and (= (type s@@33) (SeqType T@@137)) (= (type t@@29) (SeqType T@@137))) (= n@@17 (|Seq#Length| s@@33))) (= (|Seq#Drop| (|Seq#Append| s@@33 t@@29) n@@17) t@@29)))
  5945. :qid |funwiths.1290:18|
  5946. :skolemid |248|
  5947. :pattern ( (|Seq#Drop| (|Seq#Append| s@@33 t@@29) n@@17))
  5948. )))
  5949. (assert (forall ((arg0@@88 T@U) (arg1@@39 T@U) ) (! (= (type (|Seq#FromArray| arg0@@88 arg1@@39)) (SeqType BoxType))
  5950. :qid |funType:Seq#FromArray|
  5951. :pattern ( (|Seq#FromArray| arg0@@88 arg1@@39))
  5952. )))
  5953. (assert (forall ((h@@16 T@U) (a@@68 T@U) ) (! (=> (and (= (type h@@16) (MapType0Type refType MapType1Type)) (= (type a@@68) refType)) (= (|Seq#Length| (|Seq#FromArray| h@@16 a@@68)) (_System.array.Length a@@68)))
  5954. :qid |funwiths.1297:15|
  5955. :skolemid |249|
  5956. :pattern ( (|Seq#Length| (|Seq#FromArray| h@@16 a@@68)))
  5957. )))
  5958. (assert (forall ((h@@17 T@U) (a@@69 T@U) ) (! (=> (and (= (type h@@17) (MapType0Type refType MapType1Type)) (= (type a@@69) refType)) (forall ((i@@20 Int) ) (! (=> (and (<= 0 i@@20) (< i@@20 (|Seq#Length| (|Seq#FromArray| h@@17 a@@69)))) (= (|Seq#Index| (|Seq#FromArray| h@@17 a@@69) i@@20) (MapType1Select (MapType0Select h@@17 a@@69) (IndexField i@@20))))
  5959. :qid |funwiths.1303:11|
  5960. :skolemid |250|
  5961. :pattern ( (MapType1Select (MapType0Select h@@17 a@@69) (IndexField i@@20)))
  5962. :pattern ( (|Seq#Index| (|Seq#FromArray| h@@17 a@@69) i@@20))
  5963. )))
  5964. :qid |funwiths.1301:15|
  5965. :skolemid |251|
  5966. :pattern ( (|Seq#FromArray| h@@17 a@@69))
  5967. )))
  5968. (assert (forall ((h0 T@U) (h1 T@U) (a@@70 T@U) ) (! (=> (and (and (= (type h0) (MapType0Type refType MapType1Type)) (= (type h1) (MapType0Type refType MapType1Type))) (= (type a@@70) refType)) (=> (and (and (and ($IsGoodHeap h0) ($IsGoodHeap h1)) ($HeapSucc h0 h1)) (= (MapType0Select h0 a@@70) (MapType0Select h1 a@@70))) (= (|Seq#FromArray| h0 a@@70) (|Seq#FromArray| h1 a@@70))))
  5969. :qid |funwiths.1308:15|
  5970. :skolemid |252|
  5971. :pattern ( (|Seq#FromArray| h1 a@@70) ($HeapSucc h0 h1))
  5972. )))
  5973. (assert (forall ((h@@18 T@U) (i@@21 Int) (v@@32 T@U) (a@@71 T@U) ) (! (=> (and (and (and (= (type h@@18) (MapType0Type refType MapType1Type)) (= (type v@@32) BoxType)) (= (type a@@71) refType)) (and (<= 0 i@@21) (< i@@21 (_System.array.Length a@@71)))) (= (|Seq#FromArray| (MapType0Store h@@18 a@@71 (MapType1Store (MapType0Select h@@18 a@@71) (IndexField i@@21) v@@32)) a@@71) (|Seq#Update| (|Seq#FromArray| h@@18 a@@71) i@@21 v@@32)))
  5974. :qid |funwiths.1313:15|
  5975. :skolemid |253|
  5976. :pattern ( (|Seq#FromArray| (MapType0Store h@@18 a@@71 (MapType1Store (MapType0Select h@@18 a@@71) (IndexField i@@21) v@@32)) a@@71))
  5977. )))
  5978. (assert (forall ((s@@34 T@U) (i@@22 Int) (v@@33 T@U) (n@@18 Int) ) (! (let ((T@@138 (type v@@33)))
  5979. (=> (= (type s@@34) (SeqType T@@138)) (=> (and (and (<= 0 i@@22) (< i@@22 n@@18)) (<= n@@18 (|Seq#Length| s@@34))) (= (|Seq#Take| (|Seq#Update| s@@34 i@@22 v@@33) n@@18) (|Seq#Update| (|Seq#Take| s@@34 n@@18) i@@22 v@@33)))))
  5980. :qid |funwiths.1319:18|
  5981. :skolemid |254|
  5982. :pattern ( (|Seq#Take| (|Seq#Update| s@@34 i@@22 v@@33) n@@18))
  5983. )))
  5984. (assert (forall ((s@@35 T@U) (i@@23 Int) (v@@34 T@U) (n@@19 Int) ) (! (let ((T@@139 (type v@@34)))
  5985. (=> (= (type s@@35) (SeqType T@@139)) (=> (and (<= n@@19 i@@23) (< i@@23 (|Seq#Length| s@@35))) (= (|Seq#Take| (|Seq#Update| s@@35 i@@23 v@@34) n@@19) (|Seq#Take| s@@35 n@@19)))))
  5986. :qid |funwiths.1324:18|
  5987. :skolemid |255|
  5988. :pattern ( (|Seq#Take| (|Seq#Update| s@@35 i@@23 v@@34) n@@19))
  5989. )))
  5990. (assert (forall ((s@@36 T@U) (i@@24 Int) (v@@35 T@U) (n@@20 Int) ) (! (let ((T@@140 (type v@@35)))
  5991. (=> (= (type s@@36) (SeqType T@@140)) (=> (and (and (<= 0 n@@20) (<= n@@20 i@@24)) (< i@@24 (|Seq#Length| s@@36))) (= (|Seq#Drop| (|Seq#Update| s@@36 i@@24 v@@35) n@@20) (|Seq#Update| (|Seq#Drop| s@@36 n@@20) (- i@@24 n@@20) v@@35)))))
  5992. :qid |funwiths.1329:18|
  5993. :skolemid |256|
  5994. :pattern ( (|Seq#Drop| (|Seq#Update| s@@36 i@@24 v@@35) n@@20))
  5995. )))
  5996. (assert (forall ((s@@37 T@U) (i@@25 Int) (v@@36 T@U) (n@@21 Int) ) (! (let ((T@@141 (type v@@36)))
  5997. (=> (= (type s@@37) (SeqType T@@141)) (=> (and (and (<= 0 i@@25) (< i@@25 n@@21)) (< n@@21 (|Seq#Length| s@@37))) (= (|Seq#Drop| (|Seq#Update| s@@37 i@@25 v@@36) n@@21) (|Seq#Drop| s@@37 n@@21)))))
  5998. :qid |funwiths.1334:18|
  5999. :skolemid |257|
  6000. :pattern ( (|Seq#Drop| (|Seq#Update| s@@37 i@@25 v@@36) n@@21))
  6001. )))
  6002. (assert (forall ((h@@19 T@U) (a@@72 T@U) (n0 Int) (n1 Int) ) (! (=> (and (= (type h@@19) (MapType0Type refType MapType1Type)) (= (type a@@72) refType)) (=> (and (and (= (+ n0 1) n1) (<= 0 n0)) (<= n1 (_System.array.Length a@@72))) (= (|Seq#Take| (|Seq#FromArray| h@@19 a@@72) n1) (|Seq#Build| (|Seq#Take| (|Seq#FromArray| h@@19 a@@72) n0) (MapType1Select (MapType0Select h@@19 a@@72) (IndexField n0))))))
  6003. :qid |funwiths.1339:15|
  6004. :skolemid |258|
  6005. :pattern ( (|Seq#Take| (|Seq#FromArray| h@@19 a@@72) n0) (|Seq#Take| (|Seq#FromArray| h@@19 a@@72) n1))
  6006. )))
  6007. (assert (forall ((s@@38 T@U) (v@@37 T@U) (n@@22 Int) ) (! (let ((T@@142 (type v@@37)))
  6008. (=> (= (type s@@38) (SeqType T@@142)) (=> (and (<= 0 n@@22) (<= n@@22 (|Seq#Length| s@@38))) (= (|Seq#Drop| (|Seq#Build| s@@38 v@@37) n@@22) (|Seq#Build| (|Seq#Drop| s@@38 n@@22) v@@37)))))
  6009. :qid |funwiths.1345:18|
  6010. :skolemid |259|
  6011. :pattern ( (|Seq#Drop| (|Seq#Build| s@@38 v@@37) n@@22))
  6012. )))
  6013. (assert (forall ((s@@39 T@U) (i@@26 Int) ) (! (=> (= (type s@@39) (SeqType BoxType)) (=> (and (<= 0 i@@26) (< i@@26 (|Seq#Length| s@@39))) (< (DtRank ($Unbox DatatypeTypeType (|Seq#Index| s@@39 i@@26))) (|Seq#Rank| s@@39))))
  6014. :qid |funwiths.1352:15|
  6015. :skolemid |260|
  6016. :pattern ( (DtRank ($Unbox DatatypeTypeType (|Seq#Index| s@@39 i@@26))))
  6017. )))
  6018. (assert (forall ((s@@40 T@U) (i@@27 Int) ) (! (let ((T@@143 (SeqTypeInv0 (type s@@40))))
  6019. (=> (= (type s@@40) (SeqType T@@143)) (=> (and (< 0 i@@27) (<= i@@27 (|Seq#Length| s@@40))) (< (|Seq#Rank| (|Seq#Drop| s@@40 i@@27)) (|Seq#Rank| s@@40)))))
  6020. :qid |funwiths.1357:18|
  6021. :skolemid |261|
  6022. :pattern ( (|Seq#Rank| (|Seq#Drop| s@@40 i@@27)))
  6023. )))
  6024. (assert (forall ((s@@41 T@U) (i@@28 Int) ) (! (let ((T@@144 (SeqTypeInv0 (type s@@41))))
  6025. (=> (= (type s@@41) (SeqType T@@144)) (=> (and (<= 0 i@@28) (< i@@28 (|Seq#Length| s@@41))) (< (|Seq#Rank| (|Seq#Take| s@@41 i@@28)) (|Seq#Rank| s@@41)))))
  6026. :qid |funwiths.1361:18|
  6027. :skolemid |262|
  6028. :pattern ( (|Seq#Rank| (|Seq#Take| s@@41 i@@28)))
  6029. )))
  6030. (assert (forall ((s@@42 T@U) (i@@29 Int) (j@@5 Int) ) (! (let ((T@@145 (SeqTypeInv0 (type s@@42))))
  6031. (=> (= (type s@@42) (SeqType T@@145)) (=> (and (and (<= 0 i@@29) (< i@@29 j@@5)) (<= j@@5 (|Seq#Length| s@@42))) (< (|Seq#Rank| (|Seq#Append| (|Seq#Take| s@@42 i@@29) (|Seq#Drop| s@@42 j@@5))) (|Seq#Rank| s@@42)))))
  6032. :qid |funwiths.1365:18|
  6033. :skolemid |263|
  6034. :pattern ( (|Seq#Rank| (|Seq#Append| (|Seq#Take| s@@42 i@@29) (|Seq#Drop| s@@42 j@@5))))
  6035. )))
  6036. (assert (forall ((s@@43 T@U) (n@@23 Int) ) (! (let ((T@@146 (SeqTypeInv0 (type s@@43))))
  6037. (=> (and (= (type s@@43) (SeqType T@@146)) (= n@@23 0)) (= (|Seq#Drop| s@@43 n@@23) s@@43)))
  6038. :qid |funwiths.1370:18|
  6039. :skolemid |264|
  6040. :pattern ( (|Seq#Drop| s@@43 n@@23))
  6041. )))
  6042. (assert (forall ((s@@44 T@U) (n@@24 Int) ) (! (let ((T@@147 (SeqTypeInv0 (type s@@44))))
  6043. (=> (and (= (type s@@44) (SeqType T@@147)) (= n@@24 0)) (= (|Seq#Take| s@@44 n@@24) (|Seq#Empty| T@@147))))
  6044. :qid |funwiths.1374:18|
  6045. :skolemid |265|
  6046. :pattern ( (|Seq#Take| s@@44 n@@24))
  6047. )))
  6048. (assert (forall ((s@@45 T@U) (m@@9 Int) (n@@25 Int) ) (! (let ((T@@148 (SeqTypeInv0 (type s@@45))))
  6049. (=> (= (type s@@45) (SeqType T@@148)) (=> (and (and (<= 0 m@@9) (<= 0 n@@25)) (<= (+ m@@9 n@@25) (|Seq#Length| s@@45))) (= (|Seq#Drop| (|Seq#Drop| s@@45 m@@9) n@@25) (|Seq#Drop| s@@45 (+ m@@9 n@@25))))))
  6050. :qid |funwiths.1378:18|
  6051. :skolemid |266|
  6052. :pattern ( (|Seq#Drop| (|Seq#Drop| s@@45 m@@9) n@@25))
  6053. )))
  6054. (assert (forall ((m@@10 T@U) ) (! (let ((V@@1 (MapTypeInv1 (type m@@10))))
  6055. (let ((U@@3 (MapTypeInv0 (type m@@10))))
  6056. (=> (= (type m@@10) (MapType U@@3 V@@1)) (<= 0 (|Map#Card| m@@10)))))
  6057. :qid |funwiths.1391:20|
  6058. :skolemid |267|
  6059. :pattern ( (|Map#Card| m@@10))
  6060. )))
  6061. (assert (forall ((m@@11 T@U) ) (! (let ((V@@2 (MapTypeInv1 (type m@@11))))
  6062. (let ((U@@4 (MapTypeInv0 (type m@@11))))
  6063. (=> (= (type m@@11) (MapType U@@4 V@@2)) (= (|Set#Card| (|Map#Domain| m@@11)) (|Map#Card| m@@11)))))
  6064. :qid |funwiths.1393:20|
  6065. :skolemid |268|
  6066. :pattern ( (|Set#Card| (|Map#Domain| m@@11)))
  6067. )))
  6068. (assert (forall ((arg0@@89 T@U) ) (! (let ((V@@3 (MapTypeInv1 (type arg0@@89))))
  6069. (= (type (|Map#Values| arg0@@89)) (MapType0Type V@@3 boolType)))
  6070. :qid |funType:Map#Values|
  6071. :pattern ( (|Map#Values| arg0@@89))
  6072. )))
  6073. (assert (forall ((m@@12 T@U) (v@@38 T@U) ) (! (let ((V@@4 (type v@@38)))
  6074. (let ((U@@5 (MapTypeInv0 (type m@@12))))
  6075. (=> (= (type m@@12) (MapType U@@5 V@@4)) (and (=> (U_2_bool (MapType0Select (|Map#Values| m@@12) v@@38)) (exists ((u@@5 T@U) ) (! (and (= (type u@@5) U@@5) (and (U_2_bool (MapType0Select (|Map#Domain| m@@12) u@@5)) (= v@@38 (MapType0Select (|Map#Elements| m@@12) u@@5))))
  6076. :qid |funwiths.1402:17|
  6077. :skolemid |269|
  6078. :pattern ( (MapType0Select (|Map#Domain| m@@12) u@@5))
  6079. :pattern ( (MapType0Select (|Map#Elements| m@@12) u@@5))
  6080. ))) (=> (exists ((u@@6 T@U) ) (! (and (= (type u@@6) U@@5) (and (U_2_bool (MapType0Select (|Map#Domain| m@@12) u@@6)) (= v@@38 (MapType0Select (|Map#Elements| m@@12) u@@6))))
  6081. :qid |funwiths.1402:17|
  6082. :skolemid |269|
  6083. :pattern ( (MapType0Select (|Map#Domain| m@@12) u@@6))
  6084. :pattern ( (MapType0Select (|Map#Elements| m@@12) u@@6))
  6085. )) (U_2_bool (MapType0Select (|Map#Values| m@@12) v@@38)))))))
  6086. :qid |funwiths.1399:20|
  6087. :skolemid |270|
  6088. :pattern ( (MapType0Select (|Map#Values| m@@12) v@@38))
  6089. )))
  6090. (assert (forall ((arg0@@90 T@U) ) (! (= (type (|Map#Items| arg0@@90)) (MapType0Type BoxType boolType))
  6091. :qid |funType:Map#Items|
  6092. :pattern ( (|Map#Items| arg0@@90))
  6093. )))
  6094. (assert (forall ((m@@13 T@U) ) (! (let ((V@@5 (MapTypeInv1 (type m@@13))))
  6095. (let ((U@@6 (MapTypeInv0 (type m@@13))))
  6096. (=> (= (type m@@13) (MapType U@@6 V@@5)) (= (|Set#Card| (|Map#Items| m@@13)) (|Map#Card| m@@13)))))
  6097. :qid |funwiths.1412:20|
  6098. :skolemid |271|
  6099. :pattern ( (|Set#Card| (|Map#Items| m@@13)))
  6100. )))
  6101. (assert (and (forall ((arg0@@91 T@U) ) (! (= (type (_System.Tuple2._0 arg0@@91)) BoxType)
  6102. :qid |funType:_System.Tuple2._0|
  6103. :pattern ( (_System.Tuple2._0 arg0@@91))
  6104. )) (forall ((arg0@@92 T@U) ) (! (= (type (_System.Tuple2._1 arg0@@92)) BoxType)
  6105. :qid |funType:_System.Tuple2._1|
  6106. :pattern ( (_System.Tuple2._1 arg0@@92))
  6107. ))))
  6108. (assert (forall ((m@@14 T@U) (item T@U) ) (! (=> (and (= (type m@@14) (MapType BoxType BoxType)) (= (type item) BoxType)) (and (=> (U_2_bool (MapType0Select (|Map#Items| m@@14) item)) (and (U_2_bool (MapType0Select (|Map#Domain| m@@14) (_System.Tuple2._0 ($Unbox DatatypeTypeType item)))) (= (MapType0Select (|Map#Elements| m@@14) (_System.Tuple2._0 ($Unbox DatatypeTypeType item))) (_System.Tuple2._1 ($Unbox DatatypeTypeType item))))) (=> (and (U_2_bool (MapType0Select (|Map#Domain| m@@14) (_System.Tuple2._0 ($Unbox DatatypeTypeType item)))) (= (MapType0Select (|Map#Elements| m@@14) (_System.Tuple2._0 ($Unbox DatatypeTypeType item))) (_System.Tuple2._1 ($Unbox DatatypeTypeType item)))) (U_2_bool (MapType0Select (|Map#Items| m@@14) item)))))
  6109. :qid |funwiths.1416:15|
  6110. :skolemid |272|
  6111. :pattern ( (MapType0Select (|Map#Items| m@@14) item))
  6112. )))
  6113. (assert (forall ((U@@7 T@T) (V@@6 T@T) ) (! (= (type (|Map#Empty| U@@7 V@@6)) (MapType U@@7 V@@6))
  6114. :qid |funType:Map#Empty|
  6115. :pattern ( (|Map#Empty| U@@7 V@@6))
  6116. )))
  6117. (assert (forall ((u@@7 T@U) (V@@7 T@T) ) (! (let ((U@@8 (type u@@7)))
  6118. (not (U_2_bool (MapType0Select (|Map#Domain| (|Map#Empty| U@@8 V@@7)) u@@7))))
  6119. :qid |funwiths.1425:20|
  6120. :skolemid |273|
  6121. :pattern ( (let ((U@@8 (type u@@7)))
  6122. (MapType0Select (|Map#Domain| (|Map#Empty| U@@8 V@@7)) u@@7)))
  6123. )))
  6124. (assert (forall ((m@@15 T@U) ) (! (let ((V@@8 (MapTypeInv1 (type m@@15))))
  6125. (let ((U@@9 (MapTypeInv0 (type m@@15))))
  6126. (=> (= (type m@@15) (MapType U@@9 V@@8)) (and (and (=> (= (|Map#Card| m@@15) 0) (= m@@15 (|Map#Empty| U@@9 V@@8))) (=> (= m@@15 (|Map#Empty| U@@9 V@@8)) (= (|Map#Card| m@@15) 0))) (=> (not (= (|Map#Card| m@@15) 0)) (exists ((x@@40 T@U) ) (! (and (= (type x@@40) U@@9) (U_2_bool (MapType0Select (|Map#Domain| m@@15) x@@40)))
  6127. :qid |funwiths.1432:39|
  6128. :skolemid |274|
  6129. :no-pattern (type x@@40)
  6130. :no-pattern (U_2_int x@@40)
  6131. :no-pattern (U_2_bool x@@40)
  6132. )))))))
  6133. :qid |funwiths.1429:20|
  6134. :skolemid |275|
  6135. :pattern ( (|Map#Card| m@@15))
  6136. )))
  6137. (assert (forall ((arg0@@93 T@U) (arg1@@40 T@U) (arg2@@2 T@U) ) (! (let ((V@@9 (MapType0TypeInv1 (type arg1@@40))))
  6138. (let ((U@@10 (MapType0TypeInv0 (type arg0@@93))))
  6139. (= (type (|Map#Glue| arg0@@93 arg1@@40 arg2@@2)) (MapType U@@10 V@@9))))
  6140. :qid |funType:Map#Glue|
  6141. :pattern ( (|Map#Glue| arg0@@93 arg1@@40 arg2@@2))
  6142. )))
  6143. (assert (forall ((a@@73 T@U) (b@@52 T@U) (t@@30 T@U) ) (! (let ((V@@10 (MapType0TypeInv1 (type b@@52))))
  6144. (let ((U@@11 (MapType0TypeInv0 (type a@@73))))
  6145. (=> (and (and (= (type a@@73) (MapType0Type U@@11 boolType)) (= (type b@@52) (MapType0Type U@@11 V@@10))) (= (type t@@30) TyType)) (= (|Map#Domain| (|Map#Glue| a@@73 b@@52 t@@30)) a@@73))))
  6146. :qid |funwiths.1436:20|
  6147. :skolemid |276|
  6148. :pattern ( (|Map#Domain| (|Map#Glue| a@@73 b@@52 t@@30)))
  6149. )))
  6150. (assert (forall ((a@@74 T@U) (b@@53 T@U) (t@@31 T@U) ) (! (let ((V@@11 (MapType0TypeInv1 (type b@@53))))
  6151. (let ((U@@12 (MapType0TypeInv0 (type a@@74))))
  6152. (=> (and (and (= (type a@@74) (MapType0Type U@@12 boolType)) (= (type b@@53) (MapType0Type U@@12 V@@11))) (= (type t@@31) TyType)) (= (|Map#Elements| (|Map#Glue| a@@74 b@@53 t@@31)) b@@53))))
  6153. :qid |funwiths.1440:20|
  6154. :skolemid |277|
  6155. :pattern ( (|Map#Elements| (|Map#Glue| a@@74 b@@53 t@@31)))
  6156. )))
  6157. (assert (forall ((a@@75 T@U) (b@@54 T@U) (t@@32 T@U) ) (! (let ((V@@12 (MapType0TypeInv1 (type b@@54))))
  6158. (let ((U@@13 (MapType0TypeInv0 (type a@@75))))
  6159. (=> (and (and (= (type a@@75) (MapType0Type U@@13 boolType)) (= (type b@@54) (MapType0Type U@@13 V@@12))) (= (type t@@32) TyType)) ($Is (|Map#Glue| a@@75 b@@54 t@@32) t@@32))))
  6160. :qid |funwiths.1444:20|
  6161. :skolemid |278|
  6162. :pattern ( ($Is (|Map#Glue| a@@75 b@@54 t@@32) t@@32))
  6163. )))
  6164. (assert (forall ((arg0@@94 T@U) (arg1@@41 T@U) (arg2@@3 T@U) ) (! (let ((V@@13 (type arg2@@3)))
  6165. (let ((U@@14 (type arg1@@41)))
  6166. (= (type (|Map#Build| arg0@@94 arg1@@41 arg2@@3)) (MapType U@@14 V@@13))))
  6167. :qid |funType:Map#Build|
  6168. :pattern ( (|Map#Build| arg0@@94 arg1@@41 arg2@@3))
  6169. )))
  6170. (assert (forall ((m@@16 T@U) (u@@8 T@U) (|u'| T@U) (v@@39 T@U) ) (! (let ((V@@14 (type v@@39)))
  6171. (let ((U@@15 (type u@@8)))
  6172. (=> (and (= (type m@@16) (MapType U@@15 V@@14)) (= (type |u'|) U@@15)) (and (=> (= |u'| u@@8) (and (U_2_bool (MapType0Select (|Map#Domain| (|Map#Build| m@@16 u@@8 v@@39)) |u'|)) (= (MapType0Select (|Map#Elements| (|Map#Build| m@@16 u@@8 v@@39)) |u'|) v@@39))) (=> (not (= |u'| u@@8)) (and (and (=> (U_2_bool (MapType0Select (|Map#Domain| (|Map#Build| m@@16 u@@8 v@@39)) |u'|)) (U_2_bool (MapType0Select (|Map#Domain| m@@16) |u'|))) (=> (U_2_bool (MapType0Select (|Map#Domain| m@@16) |u'|)) (U_2_bool (MapType0Select (|Map#Domain| (|Map#Build| m@@16 u@@8 v@@39)) |u'|)))) (= (MapType0Select (|Map#Elements| (|Map#Build| m@@16 u@@8 v@@39)) |u'|) (MapType0Select (|Map#Elements| m@@16) |u'|))))))))
  6173. :qid |funwiths.1450:20|
  6174. :skolemid |279|
  6175. :pattern ( (MapType0Select (|Map#Domain| (|Map#Build| m@@16 u@@8 v@@39)) |u'|))
  6176. :pattern ( (MapType0Select (|Map#Elements| (|Map#Build| m@@16 u@@8 v@@39)) |u'|))
  6177. )))
  6178. (assert (forall ((m@@17 T@U) (u@@9 T@U) (v@@40 T@U) ) (! (let ((V@@15 (type v@@40)))
  6179. (let ((U@@16 (type u@@9)))
  6180. (=> (and (= (type m@@17) (MapType U@@16 V@@15)) (U_2_bool (MapType0Select (|Map#Domain| m@@17) u@@9))) (= (|Map#Card| (|Map#Build| m@@17 u@@9 v@@40)) (|Map#Card| m@@17)))))
  6181. :qid |funwiths.1458:20|
  6182. :skolemid |280|
  6183. :pattern ( (|Map#Card| (|Map#Build| m@@17 u@@9 v@@40)))
  6184. )))
  6185. (assert (forall ((m@@18 T@U) (u@@10 T@U) (v@@41 T@U) ) (! (let ((V@@16 (type v@@41)))
  6186. (let ((U@@17 (type u@@10)))
  6187. (=> (and (= (type m@@18) (MapType U@@17 V@@16)) (not (U_2_bool (MapType0Select (|Map#Domain| m@@18) u@@10)))) (= (|Map#Card| (|Map#Build| m@@18 u@@10 v@@41)) (+ (|Map#Card| m@@18) 1)))))
  6188. :qid |funwiths.1462:20|
  6189. :skolemid |281|
  6190. :pattern ( (|Map#Card| (|Map#Build| m@@18 u@@10 v@@41)))
  6191. )))
  6192. (assert (forall ((m@@19 T@U) (|m'| T@U) ) (! (let ((V@@17 (MapTypeInv1 (type m@@19))))
  6193. (let ((U@@18 (MapTypeInv0 (type m@@19))))
  6194. (=> (and (= (type m@@19) (MapType U@@18 V@@17)) (= (type |m'|) (MapType U@@18 V@@17))) (and (=> (|Map#Equal| m@@19 |m'|) (and (forall ((u@@11 T@U) ) (! (=> (= (type u@@11) U@@18) (and (=> (U_2_bool (MapType0Select (|Map#Domain| m@@19) u@@11)) (U_2_bool (MapType0Select (|Map#Domain| |m'|) u@@11))) (=> (U_2_bool (MapType0Select (|Map#Domain| |m'|) u@@11)) (U_2_bool (MapType0Select (|Map#Domain| m@@19) u@@11)))))
  6195. :qid |funwiths.1471:19|
  6196. :skolemid |282|
  6197. :no-pattern (type u@@11)
  6198. :no-pattern (U_2_int u@@11)
  6199. :no-pattern (U_2_bool u@@11)
  6200. )) (forall ((u@@12 T@U) ) (! (=> (and (= (type u@@12) U@@18) (U_2_bool (MapType0Select (|Map#Domain| m@@19) u@@12))) (= (MapType0Select (|Map#Elements| m@@19) u@@12) (MapType0Select (|Map#Elements| |m'|) u@@12)))
  6201. :qid |funwiths.1472:19|
  6202. :skolemid |283|
  6203. :no-pattern (type u@@12)
  6204. :no-pattern (U_2_int u@@12)
  6205. :no-pattern (U_2_bool u@@12)
  6206. )))) (=> (and (forall ((u@@13 T@U) ) (! (=> (= (type u@@13) U@@18) (and (=> (U_2_bool (MapType0Select (|Map#Domain| m@@19) u@@13)) (U_2_bool (MapType0Select (|Map#Domain| |m'|) u@@13))) (=> (U_2_bool (MapType0Select (|Map#Domain| |m'|) u@@13)) (U_2_bool (MapType0Select (|Map#Domain| m@@19) u@@13)))))
  6207. :qid |funwiths.1471:19|
  6208. :skolemid |282|
  6209. :no-pattern (type u@@13)
  6210. :no-pattern (U_2_int u@@13)
  6211. :no-pattern (U_2_bool u@@13)
  6212. )) (forall ((u@@14 T@U) ) (! (=> (and (= (type u@@14) U@@18) (U_2_bool (MapType0Select (|Map#Domain| m@@19) u@@14))) (= (MapType0Select (|Map#Elements| m@@19) u@@14) (MapType0Select (|Map#Elements| |m'|) u@@14)))
  6213. :qid |funwiths.1472:19|
  6214. :skolemid |283|
  6215. :no-pattern (type u@@14)
  6216. :no-pattern (U_2_int u@@14)
  6217. :no-pattern (U_2_bool u@@14)
  6218. ))) (|Map#Equal| m@@19 |m'|))))))
  6219. :qid |funwiths.1468:20|
  6220. :skolemid |284|
  6221. :pattern ( (|Map#Equal| m@@19 |m'|))
  6222. )))
  6223. (assert (forall ((m@@20 T@U) (|m'@@0| T@U) ) (! (let ((V@@18 (MapTypeInv1 (type m@@20))))
  6224. (let ((U@@19 (MapTypeInv0 (type m@@20))))
  6225. (=> (and (and (= (type m@@20) (MapType U@@19 V@@18)) (= (type |m'@@0|) (MapType U@@19 V@@18))) (|Map#Equal| m@@20 |m'@@0|)) (= m@@20 |m'@@0|))))
  6226. :qid |funwiths.1474:20|
  6227. :skolemid |285|
  6228. :pattern ( (|Map#Equal| m@@20 |m'@@0|))
  6229. )))
  6230. (assert (forall ((m@@21 T@U) (|m'@@1| T@U) ) (! (let ((V@@19 (MapTypeInv1 (type m@@21))))
  6231. (let ((U@@20 (MapTypeInv0 (type m@@21))))
  6232. (=> (and (= (type m@@21) (MapType U@@20 V@@19)) (= (type |m'@@1|) (MapType U@@20 V@@19))) (and (=> (|Map#Disjoint| m@@21 |m'@@1|) (forall ((o@@53 T@U) ) (! (=> (= (type o@@53) U@@20) (or (not (U_2_bool (MapType0Select (|Map#Domain| m@@21) o@@53))) (not (U_2_bool (MapType0Select (|Map#Domain| |m'@@1|) o@@53)))))
  6233. :qid |funwiths.1483:19|
  6234. :skolemid |286|
  6235. :pattern ( (MapType0Select (|Map#Domain| m@@21) o@@53))
  6236. :pattern ( (MapType0Select (|Map#Domain| |m'@@1|) o@@53))
  6237. ))) (=> (forall ((o@@54 T@U) ) (! (=> (= (type o@@54) U@@20) (or (not (U_2_bool (MapType0Select (|Map#Domain| m@@21) o@@54))) (not (U_2_bool (MapType0Select (|Map#Domain| |m'@@1|) o@@54)))))
  6238. :qid |funwiths.1483:19|
  6239. :skolemid |286|
  6240. :pattern ( (MapType0Select (|Map#Domain| m@@21) o@@54))
  6241. :pattern ( (MapType0Select (|Map#Domain| |m'@@1|) o@@54))
  6242. )) (|Map#Disjoint| m@@21 |m'@@1|))))))
  6243. :qid |funwiths.1480:20|
  6244. :skolemid |287|
  6245. :pattern ( (|Map#Disjoint| m@@21 |m'@@1|))
  6246. )))
  6247. (assert (forall ((arg0@@95 T@U) ) (! (let ((V@@20 (IMapTypeInv1 (type arg0@@95))))
  6248. (= (type (|IMap#Values| arg0@@95)) (MapType0Type V@@20 boolType)))
  6249. :qid |funType:IMap#Values|
  6250. :pattern ( (|IMap#Values| arg0@@95))
  6251. )))
  6252. (assert (forall ((m@@22 T@U) (v@@42 T@U) ) (! (let ((V@@21 (type v@@42)))
  6253. (let ((U@@21 (IMapTypeInv0 (type m@@22))))
  6254. (=> (= (type m@@22) (IMapType U@@21 V@@21)) (and (=> (U_2_bool (MapType0Select (|IMap#Values| m@@22) v@@42)) (exists ((u@@15 T@U) ) (! (and (= (type u@@15) U@@21) (and (U_2_bool (MapType0Select (|IMap#Domain| m@@22) u@@15)) (= v@@42 (MapType0Select (|IMap#Elements| m@@22) u@@15))))
  6255. :qid |funwiths.1498:17|
  6256. :skolemid |288|
  6257. :pattern ( (MapType0Select (|IMap#Domain| m@@22) u@@15))
  6258. :pattern ( (MapType0Select (|IMap#Elements| m@@22) u@@15))
  6259. ))) (=> (exists ((u@@16 T@U) ) (! (and (= (type u@@16) U@@21) (and (U_2_bool (MapType0Select (|IMap#Domain| m@@22) u@@16)) (= v@@42 (MapType0Select (|IMap#Elements| m@@22) u@@16))))
  6260. :qid |funwiths.1498:17|
  6261. :skolemid |288|
  6262. :pattern ( (MapType0Select (|IMap#Domain| m@@22) u@@16))
  6263. :pattern ( (MapType0Select (|IMap#Elements| m@@22) u@@16))
  6264. )) (U_2_bool (MapType0Select (|IMap#Values| m@@22) v@@42)))))))
  6265. :qid |funwiths.1495:20|
  6266. :skolemid |289|
  6267. :pattern ( (MapType0Select (|IMap#Values| m@@22) v@@42))
  6268. )))
  6269. (assert (forall ((arg0@@96 T@U) ) (! (= (type (|IMap#Items| arg0@@96)) (MapType0Type BoxType boolType))
  6270. :qid |funType:IMap#Items|
  6271. :pattern ( (|IMap#Items| arg0@@96))
  6272. )))
  6273. (assert (forall ((m@@23 T@U) (item@@0 T@U) ) (! (=> (and (= (type m@@23) (IMapType BoxType BoxType)) (= (type item@@0) BoxType)) (and (=> (U_2_bool (MapType0Select (|IMap#Items| m@@23) item@@0)) (and (U_2_bool (MapType0Select (|IMap#Domain| m@@23) (_System.Tuple2._0 ($Unbox DatatypeTypeType item@@0)))) (= (MapType0Select (|IMap#Elements| m@@23) (_System.Tuple2._0 ($Unbox DatatypeTypeType item@@0))) (_System.Tuple2._1 ($Unbox DatatypeTypeType item@@0))))) (=> (and (U_2_bool (MapType0Select (|IMap#Domain| m@@23) (_System.Tuple2._0 ($Unbox DatatypeTypeType item@@0)))) (= (MapType0Select (|IMap#Elements| m@@23) (_System.Tuple2._0 ($Unbox DatatypeTypeType item@@0))) (_System.Tuple2._1 ($Unbox DatatypeTypeType item@@0)))) (U_2_bool (MapType0Select (|IMap#Items| m@@23) item@@0)))))
  6274. :qid |funwiths.1504:15|
  6275. :skolemid |290|
  6276. :pattern ( (MapType0Select (|IMap#Items| m@@23) item@@0))
  6277. )))
  6278. (assert (forall ((U@@22 T@T) (V@@22 T@T) ) (! (= (type (|IMap#Empty| U@@22 V@@22)) (IMapType U@@22 V@@22))
  6279. :qid |funType:IMap#Empty|
  6280. :pattern ( (|IMap#Empty| U@@22 V@@22))
  6281. )))
  6282. (assert (forall ((u@@17 T@U) (V@@23 T@T) ) (! (let ((U@@23 (type u@@17)))
  6283. (not (U_2_bool (MapType0Select (|IMap#Domain| (|IMap#Empty| U@@23 V@@23)) u@@17))))
  6284. :qid |funwiths.1513:20|
  6285. :skolemid |291|
  6286. :pattern ( (let ((U@@23 (type u@@17)))
  6287. (MapType0Select (|IMap#Domain| (|IMap#Empty| U@@23 V@@23)) u@@17)))
  6288. )))
  6289. (assert (forall ((arg0@@97 T@U) (arg1@@42 T@U) (arg2@@4 T@U) ) (! (let ((V@@24 (MapType0TypeInv1 (type arg1@@42))))
  6290. (let ((U@@24 (MapType0TypeInv0 (type arg0@@97))))
  6291. (= (type (|IMap#Glue| arg0@@97 arg1@@42 arg2@@4)) (IMapType U@@24 V@@24))))
  6292. :qid |funType:IMap#Glue|
  6293. :pattern ( (|IMap#Glue| arg0@@97 arg1@@42 arg2@@4))
  6294. )))
  6295. (assert (forall ((a@@76 T@U) (b@@55 T@U) (t@@33 T@U) ) (! (let ((V@@25 (MapType0TypeInv1 (type b@@55))))
  6296. (let ((U@@25 (MapType0TypeInv0 (type a@@76))))
  6297. (=> (and (and (= (type a@@76) (MapType0Type U@@25 boolType)) (= (type b@@55) (MapType0Type U@@25 V@@25))) (= (type t@@33) TyType)) (= (|IMap#Domain| (|IMap#Glue| a@@76 b@@55 t@@33)) a@@76))))
  6298. :qid |funwiths.1519:20|
  6299. :skolemid |292|
  6300. :pattern ( (|IMap#Domain| (|IMap#Glue| a@@76 b@@55 t@@33)))
  6301. )))
  6302. (assert (forall ((a@@77 T@U) (b@@56 T@U) (t@@34 T@U) ) (! (let ((V@@26 (MapType0TypeInv1 (type b@@56))))
  6303. (let ((U@@26 (MapType0TypeInv0 (type a@@77))))
  6304. (=> (and (and (= (type a@@77) (MapType0Type U@@26 boolType)) (= (type b@@56) (MapType0Type U@@26 V@@26))) (= (type t@@34) TyType)) (= (|IMap#Elements| (|IMap#Glue| a@@77 b@@56 t@@34)) b@@56))))
  6305. :qid |funwiths.1523:20|
  6306. :skolemid |293|
  6307. :pattern ( (|IMap#Elements| (|IMap#Glue| a@@77 b@@56 t@@34)))
  6308. )))
  6309. (assert (forall ((a@@78 T@U) (b@@57 T@U) (t@@35 T@U) ) (! (let ((V@@27 (MapType0TypeInv1 (type b@@57))))
  6310. (let ((U@@27 (MapType0TypeInv0 (type a@@78))))
  6311. (=> (and (and (= (type a@@78) (MapType0Type U@@27 boolType)) (= (type b@@57) (MapType0Type U@@27 V@@27))) (= (type t@@35) TyType)) ($Is (|IMap#Glue| a@@78 b@@57 t@@35) t@@35))))
  6312. :qid |funwiths.1527:20|
  6313. :skolemid |294|
  6314. :pattern ( ($Is (|IMap#Glue| a@@78 b@@57 t@@35) t@@35))
  6315. )))
  6316. (assert (forall ((arg0@@98 T@U) (arg1@@43 T@U) (arg2@@5 T@U) ) (! (let ((V@@28 (type arg2@@5)))
  6317. (let ((U@@28 (type arg1@@43)))
  6318. (= (type (|IMap#Build| arg0@@98 arg1@@43 arg2@@5)) (IMapType U@@28 V@@28))))
  6319. :qid |funType:IMap#Build|
  6320. :pattern ( (|IMap#Build| arg0@@98 arg1@@43 arg2@@5))
  6321. )))
  6322. (assert (forall ((m@@24 T@U) (u@@18 T@U) (|u'@@0| T@U) (v@@43 T@U) ) (! (let ((V@@29 (type v@@43)))
  6323. (let ((U@@29 (type u@@18)))
  6324. (=> (and (= (type m@@24) (IMapType U@@29 V@@29)) (= (type |u'@@0|) U@@29)) (and (=> (= |u'@@0| u@@18) (and (U_2_bool (MapType0Select (|IMap#Domain| (|IMap#Build| m@@24 u@@18 v@@43)) |u'@@0|)) (= (MapType0Select (|IMap#Elements| (|IMap#Build| m@@24 u@@18 v@@43)) |u'@@0|) v@@43))) (=> (not (= |u'@@0| u@@18)) (and (and (=> (U_2_bool (MapType0Select (|IMap#Domain| (|IMap#Build| m@@24 u@@18 v@@43)) |u'@@0|)) (U_2_bool (MapType0Select (|IMap#Domain| m@@24) |u'@@0|))) (=> (U_2_bool (MapType0Select (|IMap#Domain| m@@24) |u'@@0|)) (U_2_bool (MapType0Select (|IMap#Domain| (|IMap#Build| m@@24 u@@18 v@@43)) |u'@@0|)))) (= (MapType0Select (|IMap#Elements| (|IMap#Build| m@@24 u@@18 v@@43)) |u'@@0|) (MapType0Select (|IMap#Elements| m@@24) |u'@@0|))))))))
  6325. :qid |funwiths.1533:20|
  6326. :skolemid |295|
  6327. :pattern ( (MapType0Select (|IMap#Domain| (|IMap#Build| m@@24 u@@18 v@@43)) |u'@@0|))
  6328. :pattern ( (MapType0Select (|IMap#Elements| (|IMap#Build| m@@24 u@@18 v@@43)) |u'@@0|))
  6329. )))
  6330. (assert (forall ((m@@25 T@U) (|m'@@2| T@U) ) (! (let ((V@@30 (IMapTypeInv1 (type m@@25))))
  6331. (let ((U@@30 (IMapTypeInv0 (type m@@25))))
  6332. (=> (and (= (type m@@25) (IMapType U@@30 V@@30)) (= (type |m'@@2|) (IMapType U@@30 V@@30))) (and (=> (|IMap#Equal| m@@25 |m'@@2|) (and (forall ((u@@19 T@U) ) (! (=> (= (type u@@19) U@@30) (and (=> (U_2_bool (MapType0Select (|IMap#Domain| m@@25) u@@19)) (U_2_bool (MapType0Select (|IMap#Domain| |m'@@2|) u@@19))) (=> (U_2_bool (MapType0Select (|IMap#Domain| |m'@@2|) u@@19)) (U_2_bool (MapType0Select (|IMap#Domain| m@@25) u@@19)))))
  6333. :qid |funwiths.1548:19|
  6334. :skolemid |296|
  6335. :no-pattern (type u@@19)
  6336. :no-pattern (U_2_int u@@19)
  6337. :no-pattern (U_2_bool u@@19)
  6338. )) (forall ((u@@20 T@U) ) (! (=> (and (= (type u@@20) U@@30) (U_2_bool (MapType0Select (|IMap#Domain| m@@25) u@@20))) (= (MapType0Select (|IMap#Elements| m@@25) u@@20) (MapType0Select (|IMap#Elements| |m'@@2|) u@@20)))
  6339. :qid |funwiths.1549:19|
  6340. :skolemid |297|
  6341. :no-pattern (type u@@20)
  6342. :no-pattern (U_2_int u@@20)
  6343. :no-pattern (U_2_bool u@@20)
  6344. )))) (=> (and (forall ((u@@21 T@U) ) (! (=> (= (type u@@21) U@@30) (and (=> (U_2_bool (MapType0Select (|IMap#Domain| m@@25) u@@21)) (U_2_bool (MapType0Select (|IMap#Domain| |m'@@2|) u@@21))) (=> (U_2_bool (MapType0Select (|IMap#Domain| |m'@@2|) u@@21)) (U_2_bool (MapType0Select (|IMap#Domain| m@@25) u@@21)))))
  6345. :qid |funwiths.1548:19|
  6346. :skolemid |296|
  6347. :no-pattern (type u@@21)
  6348. :no-pattern (U_2_int u@@21)
  6349. :no-pattern (U_2_bool u@@21)
  6350. )) (forall ((u@@22 T@U) ) (! (=> (and (= (type u@@22) U@@30) (U_2_bool (MapType0Select (|IMap#Domain| m@@25) u@@22))) (= (MapType0Select (|IMap#Elements| m@@25) u@@22) (MapType0Select (|IMap#Elements| |m'@@2|) u@@22)))
  6351. :qid |funwiths.1549:19|
  6352. :skolemid |297|
  6353. :no-pattern (type u@@22)
  6354. :no-pattern (U_2_int u@@22)
  6355. :no-pattern (U_2_bool u@@22)
  6356. ))) (|IMap#Equal| m@@25 |m'@@2|))))))
  6357. :qid |funwiths.1545:20|
  6358. :skolemid |298|
  6359. :pattern ( (|IMap#Equal| m@@25 |m'@@2|))
  6360. )))
  6361. (assert (forall ((m@@26 T@U) (|m'@@3| T@U) ) (! (let ((V@@31 (IMapTypeInv1 (type m@@26))))
  6362. (let ((U@@31 (IMapTypeInv0 (type m@@26))))
  6363. (=> (and (and (= (type m@@26) (IMapType U@@31 V@@31)) (= (type |m'@@3|) (IMapType U@@31 V@@31))) (|IMap#Equal| m@@26 |m'@@3|)) (= m@@26 |m'@@3|))))
  6364. :qid |funwiths.1552:20|
  6365. :skolemid |299|
  6366. :pattern ( (|IMap#Equal| m@@26 |m'@@3|))
  6367. )))
  6368. (assert (forall ((x@@41 Int) (y@@12 Int) ) (! (= (INTERNAL_add_boogie x@@41 y@@12) (+ x@@41 y@@12))
  6369. :qid |funwiths.1558:15|
  6370. :skolemid |300|
  6371. :pattern ( (INTERNAL_add_boogie x@@41 y@@12))
  6372. )))
  6373. (assert (forall ((x@@42 Int) (y@@13 Int) ) (! (= (INTERNAL_sub_boogie x@@42 y@@13) (- x@@42 y@@13))
  6374. :qid |funwiths.1564:15|
  6375. :skolemid |301|
  6376. :pattern ( (INTERNAL_sub_boogie x@@42 y@@13))
  6377. )))
  6378. (assert (forall ((x@@43 Int) (y@@14 Int) ) (! (= (INTERNAL_mul_boogie x@@43 y@@14) (* x@@43 y@@14))
  6379. :qid |funwiths.1570:15|
  6380. :skolemid |302|
  6381. :pattern ( (INTERNAL_mul_boogie x@@43 y@@14))
  6382. )))
  6383. (assert (forall ((x@@44 Int) (y@@15 Int) ) (! (= (INTERNAL_div_boogie x@@44 y@@15) (div x@@44 y@@15))
  6384. :qid |funwiths.1576:15|
  6385. :skolemid |303|
  6386. :pattern ( (INTERNAL_div_boogie x@@44 y@@15))
  6387. )))
  6388. (assert (forall ((x@@45 Int) (y@@16 Int) ) (! (= (INTERNAL_mod_boogie x@@45 y@@16) (mod x@@45 y@@16))
  6389. :qid |funwiths.1582:15|
  6390. :skolemid |304|
  6391. :pattern ( (INTERNAL_mod_boogie x@@45 y@@16))
  6392. )))
  6393. (assert (forall ((x@@46 Int) (y@@17 Int) ) (! (and (=> (INTERNAL_lt_boogie x@@46 y@@17) (< x@@46 y@@17)) (=> (< x@@46 y@@17) (INTERNAL_lt_boogie x@@46 y@@17)))
  6394. :qid |funwiths.1588:15|
  6395. :skolemid |305|
  6396. :pattern ( (INTERNAL_lt_boogie x@@46 y@@17))
  6397. )))
  6398. (assert (forall ((x@@47 Int) (y@@18 Int) ) (! (and (=> (INTERNAL_le_boogie x@@47 y@@18) (<= x@@47 y@@18)) (=> (<= x@@47 y@@18) (INTERNAL_le_boogie x@@47 y@@18)))
  6399. :qid |funwiths.1594:15|
  6400. :skolemid |306|
  6401. :pattern ( (INTERNAL_le_boogie x@@47 y@@18))
  6402. )))
  6403. (assert (forall ((x@@48 Int) (y@@19 Int) ) (! (and (=> (INTERNAL_gt_boogie x@@48 y@@19) (> x@@48 y@@19)) (=> (> x@@48 y@@19) (INTERNAL_gt_boogie x@@48 y@@19)))
  6404. :qid |funwiths.1600:15|
  6405. :skolemid |307|
  6406. :pattern ( (INTERNAL_gt_boogie x@@48 y@@19))
  6407. )))
  6408. (assert (forall ((x@@49 Int) (y@@20 Int) ) (! (and (=> (INTERNAL_ge_boogie x@@49 y@@20) (>= x@@49 y@@20)) (=> (>= x@@49 y@@20) (INTERNAL_ge_boogie x@@49 y@@20)))
  6409. :qid |funwiths.1606:15|
  6410. :skolemid |308|
  6411. :pattern ( (INTERNAL_ge_boogie x@@49 y@@20))
  6412. )))
  6413. (assert (forall ((x@@50 Int) (y@@21 Int) ) (! (= (Mul x@@50 y@@21) (* x@@50 y@@21))
  6414. :qid |funwiths.1612:15|
  6415. :skolemid |309|
  6416. :pattern ( (Mul x@@50 y@@21))
  6417. )))
  6418. (assert (forall ((x@@51 Int) (y@@22 Int) ) (! (= (Div x@@51 y@@22) (div x@@51 y@@22))
  6419. :qid |funwiths.1616:15|
  6420. :skolemid |310|
  6421. :pattern ( (Div x@@51 y@@22))
  6422. )))
  6423. (assert (forall ((x@@52 Int) (y@@23 Int) ) (! (= (Mod x@@52 y@@23) (mod x@@52 y@@23))
  6424. :qid |funwiths.1620:15|
  6425. :skolemid |311|
  6426. :pattern ( (Mod x@@52 y@@23))
  6427. )))
  6428. (assert (forall ((x@@53 Int) (y@@24 Int) ) (! (= (Add x@@53 y@@24) (+ x@@53 y@@24))
  6429. :qid |funwiths.1624:15|
  6430. :skolemid |312|
  6431. :pattern ( (Add x@@53 y@@24))
  6432. )))
  6433. (assert (forall ((x@@54 Int) (y@@25 Int) ) (! (= (Sub x@@54 y@@25) (- x@@54 y@@25))
  6434. :qid |funwiths.1628:15|
  6435. :skolemid |313|
  6436. :pattern ( (Sub x@@54 y@@25))
  6437. )))
  6438. (assert (= (type Tclass._System.nat) TyType))
  6439. (assert (= (Tag Tclass._System.nat) Tagclass._System.nat))
  6440. (assert (forall ((bx@@34 T@U) ) (! (=> (and (= (type bx@@34) BoxType) ($IsBox bx@@34 Tclass._System.nat)) (and (= ($Box ($Unbox intType bx@@34)) bx@@34) ($Is ($Unbox intType bx@@34) Tclass._System.nat)))
  6441. :qid |funwiths.1638:15|
  6442. :skolemid |314|
  6443. :pattern ( ($IsBox bx@@34 Tclass._System.nat))
  6444. )))
  6445. (assert (forall ((|x#0| T@U) ) (! (=> (= (type |x#0|) intType) (and (=> ($Is |x#0| Tclass._System.nat) (<= (LitInt 0) (U_2_int |x#0|))) (=> (<= (LitInt 0) (U_2_int |x#0|)) ($Is |x#0| Tclass._System.nat))))
  6446. :qid |funwiths.1644:15|
  6447. :skolemid |315|
  6448. :pattern ( ($Is |x#0| Tclass._System.nat))
  6449. )))
  6450. (assert (forall ((|x#0@@0| T@U) ($h T@U) ) (! (=> (and (= (type |x#0@@0|) intType) (= (type $h) (MapType0Type refType MapType1Type))) ($IsAlloc |x#0@@0| Tclass._System.nat $h))
  6451. :qid |funwiths.1649:15|
  6452. :skolemid |316|
  6453. :pattern ( ($IsAlloc |x#0@@0| Tclass._System.nat $h))
  6454. )))
  6455. (assert (= (Tag Tclass._System.object?) Tagclass._System.object?))
  6456. (assert (forall ((bx@@35 T@U) ) (! (=> (and (= (type bx@@35) BoxType) ($IsBox bx@@35 Tclass._System.object?)) (and (= ($Box ($Unbox refType bx@@35)) bx@@35) ($Is ($Unbox refType bx@@35) Tclass._System.object?)))
  6457. :qid |funwiths.1661:15|
  6458. :skolemid |317|
  6459. :pattern ( ($IsBox bx@@35 Tclass._System.object?))
  6460. )))
  6461. (assert (forall (($o T@U) ) (! (=> (= (type $o) refType) ($Is $o Tclass._System.object?))
  6462. :qid |funwiths.1667:15|
  6463. :skolemid |318|
  6464. :pattern ( ($Is $o Tclass._System.object?))
  6465. )))
  6466. (assert (= (type null) refType))
  6467. (assert (forall (($o@@0 T@U) ($h@@0 T@U) ) (! (=> (and (= (type $o@@0) refType) (= (type $h@@0) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc $o@@0 Tclass._System.object? $h@@0) (or (= $o@@0 null) (U_2_bool (MapType1Select (MapType0Select $h@@0 $o@@0) alloc)))) (=> (or (= $o@@0 null) (U_2_bool (MapType1Select (MapType0Select $h@@0 $o@@0) alloc))) ($IsAlloc $o@@0 Tclass._System.object? $h@@0))))
  6468. :qid |funwiths.1672:15|
  6469. :skolemid |319|
  6470. :pattern ( ($IsAlloc $o@@0 Tclass._System.object? $h@@0))
  6471. )))
  6472. (assert (= (type Tclass._System.object) TyType))
  6473. (assert (= (Tag Tclass._System.object) Tagclass._System.object))
  6474. (assert (forall ((bx@@36 T@U) ) (! (=> (and (= (type bx@@36) BoxType) ($IsBox bx@@36 Tclass._System.object)) (and (= ($Box ($Unbox refType bx@@36)) bx@@36) ($Is ($Unbox refType bx@@36) Tclass._System.object)))
  6475. :qid |funwiths.1687:15|
  6476. :skolemid |320|
  6477. :pattern ( ($IsBox bx@@36 Tclass._System.object))
  6478. )))
  6479. (assert (forall ((|c#0| T@U) ) (! (=> (= (type |c#0|) refType) (and (=> ($Is |c#0| Tclass._System.object) (and ($Is |c#0| Tclass._System.object?) (not (= |c#0| null)))) (=> (and ($Is |c#0| Tclass._System.object?) (not (= |c#0| null))) ($Is |c#0| Tclass._System.object))))
  6480. :qid |funwiths.1693:15|
  6481. :skolemid |321|
  6482. :pattern ( ($Is |c#0| Tclass._System.object))
  6483. )))
  6484. (assert (forall ((|c#0@@0| T@U) ($h@@1 T@U) ) (! (=> (and (= (type |c#0@@0|) refType) (= (type $h@@1) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc |c#0@@0| Tclass._System.object $h@@1) ($IsAlloc |c#0@@0| Tclass._System.object? $h@@1)) (=> ($IsAlloc |c#0@@0| Tclass._System.object? $h@@1) ($IsAlloc |c#0@@0| Tclass._System.object $h@@1))))
  6485. :qid |funwiths.1699:15|
  6486. :skolemid |322|
  6487. :pattern ( ($IsAlloc |c#0@@0| Tclass._System.object $h@@1))
  6488. )))
  6489. (assert (forall ((arg0@@99 T@U) ) (! (= (type (Tclass._System.array? arg0@@99)) TyType)
  6490. :qid |funType:Tclass._System.array?|
  6491. :pattern ( (Tclass._System.array? arg0@@99))
  6492. )))
  6493. (assert (forall ((|#$arg| T@U) ) (! (=> (= (type |#$arg|) TyType) (= (Tag (Tclass._System.array? |#$arg|)) Tagclass._System.array?))
  6494. :qid |funwiths.1709:15|
  6495. :skolemid |323|
  6496. :pattern ( (Tclass._System.array? |#$arg|))
  6497. )))
  6498. (assert (forall ((arg0@@100 T@U) ) (! (= (type (Tclass._System.array?_0 arg0@@100)) TyType)
  6499. :qid |funType:Tclass._System.array?_0|
  6500. :pattern ( (Tclass._System.array?_0 arg0@@100))
  6501. )))
  6502. (assert (forall ((|#$arg@@0| T@U) ) (! (=> (= (type |#$arg@@0|) TyType) (= (Tclass._System.array?_0 (Tclass._System.array? |#$arg@@0|)) |#$arg@@0|))
  6503. :qid |funwiths.1716:15|
  6504. :skolemid |324|
  6505. :pattern ( (Tclass._System.array? |#$arg@@0|))
  6506. )))
  6507. (assert (forall ((|#$arg@@1| T@U) (bx@@37 T@U) ) (! (=> (and (and (= (type |#$arg@@1|) TyType) (= (type bx@@37) BoxType)) ($IsBox bx@@37 (Tclass._System.array? |#$arg@@1|))) (and (= ($Box ($Unbox refType bx@@37)) bx@@37) ($Is ($Unbox refType bx@@37) (Tclass._System.array? |#$arg@@1|))))
  6508. :qid |funwiths.1723:15|
  6509. :skolemid |325|
  6510. :pattern ( ($IsBox bx@@37 (Tclass._System.array? |#$arg@@1|)))
  6511. )))
  6512. (assert (forall ((arg0@@101 T@U) ) (! (= (type (dtype arg0@@101)) TyType)
  6513. :qid |funType:dtype|
  6514. :pattern ( (dtype arg0@@101))
  6515. )))
  6516. (assert (forall ((|#$arg@@2| T@U) ($h@@2 T@U) ($o@@1 T@U) ($i0 Int) ) (! (=> (and (and (= (type |#$arg@@2|) TyType) (= (type $h@@2) (MapType0Type refType MapType1Type))) (= (type $o@@1) refType)) (=> (and (and (and (and ($IsGoodHeap $h@@2) (not (= $o@@1 null))) (= (dtype $o@@1) (Tclass._System.array? |#$arg@@2|))) (<= 0 $i0)) (< $i0 (_System.array.Length $o@@1))) ($IsBox (MapType1Select (MapType0Select $h@@2 $o@@1) (IndexField $i0)) |#$arg@@2|)))
  6517. :qid |funwiths.1730:15|
  6518. :skolemid |326|
  6519. :pattern ( (MapType1Select (MapType0Select $h@@2 $o@@1) (IndexField $i0)) (Tclass._System.array? |#$arg@@2|))
  6520. )))
  6521. (assert (forall ((|#$arg@@3| T@U) ($h@@3 T@U) ($o@@2 T@U) ($i0@@0 Int) ) (! (=> (and (and (= (type |#$arg@@3|) TyType) (= (type $h@@3) (MapType0Type refType MapType1Type))) (= (type $o@@2) refType)) (=> (and (and (and (and (and ($IsGoodHeap $h@@3) (not (= $o@@2 null))) (= (dtype $o@@2) (Tclass._System.array? |#$arg@@3|))) (<= 0 $i0@@0)) (< $i0@@0 (_System.array.Length $o@@2))) (U_2_bool (MapType1Select (MapType0Select $h@@3 $o@@2) alloc))) ($IsAllocBox (MapType1Select (MapType0Select $h@@3 $o@@2) (IndexField $i0@@0)) |#$arg@@3| $h@@3)))
  6522. :qid |funwiths.1742:15|
  6523. :skolemid |327|
  6524. :pattern ( (MapType1Select (MapType0Select $h@@3 $o@@2) (IndexField $i0@@0)) (Tclass._System.array? |#$arg@@3|))
  6525. )))
  6526. (assert (forall ((|#$arg@@4| T@U) ($o@@3 T@U) ) (! (=> (and (= (type |#$arg@@4|) TyType) (= (type $o@@3) refType)) (and (=> ($Is $o@@3 (Tclass._System.array? |#$arg@@4|)) (or (= $o@@3 null) (= (dtype $o@@3) (Tclass._System.array? |#$arg@@4|)))) (=> (or (= $o@@3 null) (= (dtype $o@@3) (Tclass._System.array? |#$arg@@4|))) ($Is $o@@3 (Tclass._System.array? |#$arg@@4|)))))
  6527. :qid |funwiths.1755:15|
  6528. :skolemid |328|
  6529. :pattern ( ($Is $o@@3 (Tclass._System.array? |#$arg@@4|)))
  6530. )))
  6531. (assert (forall ((|#$arg@@5| T@U) ($o@@4 T@U) ($h@@4 T@U) ) (! (=> (and (and (= (type |#$arg@@5|) TyType) (= (type $o@@4) refType)) (= (type $h@@4) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc $o@@4 (Tclass._System.array? |#$arg@@5|) $h@@4) (or (= $o@@4 null) (U_2_bool (MapType1Select (MapType0Select $h@@4 $o@@4) alloc)))) (=> (or (= $o@@4 null) (U_2_bool (MapType1Select (MapType0Select $h@@4 $o@@4) alloc))) ($IsAlloc $o@@4 (Tclass._System.array? |#$arg@@5|) $h@@4))))
  6532. :qid |funwiths.1761:15|
  6533. :skolemid |329|
  6534. :pattern ( ($IsAlloc $o@@4 (Tclass._System.array? |#$arg@@5|) $h@@4))
  6535. )))
  6536. (assert (forall ((|#$arg@@6| T@U) ($o@@5 T@U) ) (! (=> (and (and (= (type |#$arg@@6|) TyType) (= (type $o@@5) refType)) (and (not (= $o@@5 null)) (= (dtype $o@@5) (Tclass._System.array? |#$arg@@6|)))) ($Is (int_2_U (_System.array.Length $o@@5)) TInt))
  6537. :qid |funwiths.1767:15|
  6538. :skolemid |330|
  6539. :pattern ( (_System.array.Length $o@@5) (Tclass._System.array? |#$arg@@6|))
  6540. )))
  6541. (assert (forall ((|#$arg@@7| T@U) ($h@@5 T@U) ($o@@6 T@U) ) (! (=> (and (and (= (type |#$arg@@7|) TyType) (= (type $h@@5) (MapType0Type refType MapType1Type))) (= (type $o@@6) refType)) (=> (and (and (and ($IsGoodHeap $h@@5) (not (= $o@@6 null))) (= (dtype $o@@6) (Tclass._System.array? |#$arg@@7|))) (U_2_bool (MapType1Select (MapType0Select $h@@5 $o@@6) alloc))) ($IsAlloc (int_2_U (_System.array.Length $o@@6)) TInt $h@@5)))
  6542. :qid |funwiths.1773:15|
  6543. :skolemid |331|
  6544. :pattern ( (_System.array.Length $o@@6) (MapType1Select (MapType0Select $h@@5 $o@@6) alloc) (Tclass._System.array? |#$arg@@7|))
  6545. )))
  6546. (assert (forall ((arg0@@102 T@U) ) (! (= (type (Tclass._System.array arg0@@102)) TyType)
  6547. :qid |funType:Tclass._System.array|
  6548. :pattern ( (Tclass._System.array arg0@@102))
  6549. )))
  6550. (assert (forall ((_System.array$arg T@U) ) (! (=> (= (type _System.array$arg) TyType) (= (Tag (Tclass._System.array _System.array$arg)) Tagclass._System.array))
  6551. :qid |funwiths.1785:15|
  6552. :skolemid |332|
  6553. :pattern ( (Tclass._System.array _System.array$arg))
  6554. )))
  6555. (assert (forall ((arg0@@103 T@U) ) (! (= (type (Tclass._System.array_0 arg0@@103)) TyType)
  6556. :qid |funType:Tclass._System.array_0|
  6557. :pattern ( (Tclass._System.array_0 arg0@@103))
  6558. )))
  6559. (assert (forall ((_System.array$arg@@0 T@U) ) (! (=> (= (type _System.array$arg@@0) TyType) (= (Tclass._System.array_0 (Tclass._System.array _System.array$arg@@0)) _System.array$arg@@0))
  6560. :qid |funwiths.1792:15|
  6561. :skolemid |333|
  6562. :pattern ( (Tclass._System.array _System.array$arg@@0))
  6563. )))
  6564. (assert (forall ((_System.array$arg@@1 T@U) (bx@@38 T@U) ) (! (=> (and (and (= (type _System.array$arg@@1) TyType) (= (type bx@@38) BoxType)) ($IsBox bx@@38 (Tclass._System.array _System.array$arg@@1))) (and (= ($Box ($Unbox refType bx@@38)) bx@@38) ($Is ($Unbox refType bx@@38) (Tclass._System.array _System.array$arg@@1))))
  6565. :qid |funwiths.1800:15|
  6566. :skolemid |334|
  6567. :pattern ( ($IsBox bx@@38 (Tclass._System.array _System.array$arg@@1)))
  6568. )))
  6569. (assert (forall ((_System.array$arg@@2 T@U) (|c#0@@1| T@U) ) (! (=> (and (= (type _System.array$arg@@2) TyType) (= (type |c#0@@1|) refType)) (and (=> ($Is |c#0@@1| (Tclass._System.array _System.array$arg@@2)) (and ($Is |c#0@@1| (Tclass._System.array? _System.array$arg@@2)) (not (= |c#0@@1| null)))) (=> (and ($Is |c#0@@1| (Tclass._System.array? _System.array$arg@@2)) (not (= |c#0@@1| null))) ($Is |c#0@@1| (Tclass._System.array _System.array$arg@@2)))))
  6570. :qid |funwiths.1807:15|
  6571. :skolemid |335|
  6572. :pattern ( ($Is |c#0@@1| (Tclass._System.array _System.array$arg@@2)))
  6573. )))
  6574. (assert (forall ((_System.array$arg@@3 T@U) (|c#0@@2| T@U) ($h@@6 T@U) ) (! (=> (and (and (= (type _System.array$arg@@3) TyType) (= (type |c#0@@2|) refType)) (= (type $h@@6) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc |c#0@@2| (Tclass._System.array _System.array$arg@@3) $h@@6) ($IsAlloc |c#0@@2| (Tclass._System.array? _System.array$arg@@3) $h@@6)) (=> ($IsAlloc |c#0@@2| (Tclass._System.array? _System.array$arg@@3) $h@@6) ($IsAlloc |c#0@@2| (Tclass._System.array _System.array$arg@@3) $h@@6))))
  6575. :qid |funwiths.1813:15|
  6576. :skolemid |336|
  6577. :pattern ( ($IsAlloc |c#0@@2| (Tclass._System.array _System.array$arg@@3) $h@@6))
  6578. )))
  6579. (assert (forall ((arg0@@104 T@U) ) (! (= (type (Tclass._System.___hFunc0 arg0@@104)) TyType)
  6580. :qid |funType:Tclass._System.___hFunc0|
  6581. :pattern ( (Tclass._System.___hFunc0 arg0@@104))
  6582. )))
  6583. (assert (forall ((|#$R| T@U) ) (! (=> (= (type |#$R|) TyType) (= (Tag (Tclass._System.___hFunc0 |#$R|)) Tagclass._System.___hFunc0))
  6584. :qid |funwiths.1821:15|
  6585. :skolemid |337|
  6586. :pattern ( (Tclass._System.___hFunc0 |#$R|))
  6587. )))
  6588. (assert (forall ((arg0@@105 T@U) ) (! (= (type (Tclass._System.___hFunc0_0 arg0@@105)) TyType)
  6589. :qid |funType:Tclass._System.___hFunc0_0|
  6590. :pattern ( (Tclass._System.___hFunc0_0 arg0@@105))
  6591. )))
  6592. (assert (forall ((|#$R@@0| T@U) ) (! (=> (= (type |#$R@@0|) TyType) (= (Tclass._System.___hFunc0_0 (Tclass._System.___hFunc0 |#$R@@0|)) |#$R@@0|))
  6593. :qid |funwiths.1828:15|
  6594. :skolemid |338|
  6595. :pattern ( (Tclass._System.___hFunc0 |#$R@@0|))
  6596. )))
  6597. (assert (= (Ctor HandleTypeType) 19))
  6598. (assert (forall ((|#$R@@1| T@U) (bx@@39 T@U) ) (! (=> (and (and (= (type |#$R@@1|) TyType) (= (type bx@@39) BoxType)) ($IsBox bx@@39 (Tclass._System.___hFunc0 |#$R@@1|))) (and (= ($Box ($Unbox HandleTypeType bx@@39)) bx@@39) ($Is ($Unbox HandleTypeType bx@@39) (Tclass._System.___hFunc0 |#$R@@1|))))
  6599. :qid |funwiths.1835:15|
  6600. :skolemid |339|
  6601. :pattern ( ($IsBox bx@@39 (Tclass._System.___hFunc0 |#$R@@1|)))
  6602. )))
  6603. (assert (and (forall ((arg0@@106 T@U) (arg1@@44 T@U) (arg2@@6 T@U) ) (! (= (type (Apply0 arg0@@106 arg1@@44 arg2@@6)) BoxType)
  6604. :qid |funType:Apply0|
  6605. :pattern ( (Apply0 arg0@@106 arg1@@44 arg2@@6))
  6606. )) (forall ((arg0@@107 T@U) (arg1@@45 T@U) (arg2@@7 T@U) ) (! (= (type (Handle0 arg0@@107 arg1@@45 arg2@@7)) HandleTypeType)
  6607. :qid |funType:Handle0|
  6608. :pattern ( (Handle0 arg0@@107 arg1@@45 arg2@@7))
  6609. ))))
  6610. (assert (forall ((t0@@12 T@U) (heap T@U) (h@@20 T@U) (r@@6 T@U) (rd T@U) ) (! (=> (and (and (and (and (= (type t0@@12) TyType) (= (type heap) (MapType0Type refType MapType1Type))) (= (type h@@20) (MapType0Type (MapType0Type refType MapType1Type) BoxType))) (= (type r@@6) (MapType0Type (MapType0Type refType MapType1Type) boolType))) (= (type rd) (MapType0Type (MapType0Type refType MapType1Type) (MapType0Type BoxType boolType)))) (= (Apply0 t0@@12 heap (Handle0 h@@20 r@@6 rd)) (MapType0Select h@@20 heap)))
  6611. :qid |funwiths.1849:15|
  6612. :skolemid |340|
  6613. :pattern ( (Apply0 t0@@12 heap (Handle0 h@@20 r@@6 rd)))
  6614. )))
  6615. (assert (forall ((t0@@13 T@U) (heap@@0 T@U) (h@@21 T@U) (r@@7 T@U) (rd@@0 T@U) ) (! (=> (and (and (and (and (and (= (type t0@@13) TyType) (= (type heap@@0) (MapType0Type refType MapType1Type))) (= (type h@@21) (MapType0Type (MapType0Type refType MapType1Type) BoxType))) (= (type r@@7) (MapType0Type (MapType0Type refType MapType1Type) boolType))) (= (type rd@@0) (MapType0Type (MapType0Type refType MapType1Type) (MapType0Type BoxType boolType)))) (U_2_bool (MapType0Select r@@7 heap@@0))) (Requires0 t0@@13 heap@@0 (Handle0 h@@21 r@@7 rd@@0)))
  6616. :qid |funwiths.1853:15|
  6617. :skolemid |341|
  6618. :pattern ( (Requires0 t0@@13 heap@@0 (Handle0 h@@21 r@@7 rd@@0)))
  6619. )))
  6620. (assert (forall ((arg0@@108 T@U) (arg1@@46 T@U) (arg2@@8 T@U) ) (! (= (type (Reads0 arg0@@108 arg1@@46 arg2@@8)) (MapType0Type BoxType boolType))
  6621. :qid |funType:Reads0|
  6622. :pattern ( (Reads0 arg0@@108 arg1@@46 arg2@@8))
  6623. )))
  6624. (assert (forall ((t0@@14 T@U) (heap@@1 T@U) (h@@22 T@U) (r@@8 T@U) (rd@@1 T@U) (bx@@40 T@U) ) (! (=> (and (and (and (and (and (= (type t0@@14) TyType) (= (type heap@@1) (MapType0Type refType MapType1Type))) (= (type h@@22) (MapType0Type (MapType0Type refType MapType1Type) BoxType))) (= (type r@@8) (MapType0Type (MapType0Type refType MapType1Type) boolType))) (= (type rd@@1) (MapType0Type (MapType0Type refType MapType1Type) (MapType0Type BoxType boolType)))) (= (type bx@@40) BoxType)) (and (=> (U_2_bool (MapType0Select (Reads0 t0@@14 heap@@1 (Handle0 h@@22 r@@8 rd@@1)) bx@@40)) (U_2_bool (MapType0Select (MapType0Select rd@@1 heap@@1) bx@@40))) (=> (U_2_bool (MapType0Select (MapType0Select rd@@1 heap@@1) bx@@40)) (U_2_bool (MapType0Select (Reads0 t0@@14 heap@@1 (Handle0 h@@22 r@@8 rd@@1)) bx@@40)))))
  6625. :qid |funwiths.1857:15|
  6626. :skolemid |342|
  6627. :pattern ( (MapType0Select (Reads0 t0@@14 heap@@1 (Handle0 h@@22 r@@8 rd@@1)) bx@@40))
  6628. )))
  6629. (assert (forall ((t0@@15 T@U) (h0@@0 T@U) (h1@@0 T@U) (f@@3 T@U) ) (! (=> (and (and (and (= (type t0@@15) TyType) (= (type h0@@0) (MapType0Type refType MapType1Type))) (= (type h1@@0) (MapType0Type refType MapType1Type))) (= (type f@@3) HandleTypeType)) (=> (and (and (and (and ($HeapSucc h0@@0 h1@@0) ($IsGoodHeap h0@@0)) ($IsGoodHeap h1@@0)) ($Is f@@3 (Tclass._System.___hFunc0 t0@@15))) (forall ((o@@55 T@U) (fld T@U) ) (! (let ((a@@79 (FieldTypeInv0 (type fld))))
  6630. (=> (and (and (= (type o@@55) refType) (= (type fld) (FieldType a@@79))) (and (not (= o@@55 null)) (U_2_bool (MapType0Select (Reads0 t0@@15 h0@@0 f@@3) ($Box o@@55))))) (= (MapType1Select (MapType0Select h0@@0 o@@55) fld) (MapType1Select (MapType0Select h1@@0 o@@55) fld))))
  6631. :qid |funwiths.1879:22|
  6632. :skolemid |343|
  6633. :no-pattern (type o@@55)
  6634. :no-pattern (type fld)
  6635. :no-pattern (U_2_int o@@55)
  6636. :no-pattern (U_2_bool o@@55)
  6637. :no-pattern (U_2_int fld)
  6638. :no-pattern (U_2_bool fld)
  6639. ))) (= (Reads0 t0@@15 h0@@0 f@@3) (Reads0 t0@@15 h1@@0 f@@3))))
  6640. :qid |funwiths.1872:15|
  6641. :skolemid |344|
  6642. :pattern ( ($HeapSucc h0@@0 h1@@0) (Reads0 t0@@15 h1@@0 f@@3))
  6643. )))
  6644. (assert (forall ((t0@@16 T@U) (h0@@1 T@U) (h1@@1 T@U) (f@@4 T@U) ) (! (=> (and (and (and (= (type t0@@16) TyType) (= (type h0@@1) (MapType0Type refType MapType1Type))) (= (type h1@@1) (MapType0Type refType MapType1Type))) (= (type f@@4) HandleTypeType)) (=> (and (and (and (and ($HeapSucc h0@@1 h1@@1) ($IsGoodHeap h0@@1)) ($IsGoodHeap h1@@1)) ($Is f@@4 (Tclass._System.___hFunc0 t0@@16))) (forall ((o@@56 T@U) (fld@@0 T@U) ) (! (let ((a@@80 (FieldTypeInv0 (type fld@@0))))
  6645. (=> (and (and (= (type o@@56) refType) (= (type fld@@0) (FieldType a@@80))) (and (not (= o@@56 null)) (U_2_bool (MapType0Select (Reads0 t0@@16 h1@@1 f@@4) ($Box o@@56))))) (= (MapType1Select (MapType0Select h0@@1 o@@56) fld@@0) (MapType1Select (MapType0Select h1@@1 o@@56) fld@@0))))
  6646. :qid |funwiths.1891:22|
  6647. :skolemid |345|
  6648. :no-pattern (type o@@56)
  6649. :no-pattern (type fld@@0)
  6650. :no-pattern (U_2_int o@@56)
  6651. :no-pattern (U_2_bool o@@56)
  6652. :no-pattern (U_2_int fld@@0)
  6653. :no-pattern (U_2_bool fld@@0)
  6654. ))) (= (Reads0 t0@@16 h0@@1 f@@4) (Reads0 t0@@16 h1@@1 f@@4))))
  6655. :qid |funwiths.1884:15|
  6656. :skolemid |346|
  6657. :pattern ( ($HeapSucc h0@@1 h1@@1) (Reads0 t0@@16 h1@@1 f@@4))
  6658. )))
  6659. (assert (forall ((t0@@17 T@U) (h0@@2 T@U) (h1@@2 T@U) (f@@5 T@U) ) (! (=> (and (and (and (= (type t0@@17) TyType) (= (type h0@@2) (MapType0Type refType MapType1Type))) (= (type h1@@2) (MapType0Type refType MapType1Type))) (= (type f@@5) HandleTypeType)) (=> (and (and (and (and ($HeapSucc h0@@2 h1@@2) ($IsGoodHeap h0@@2)) ($IsGoodHeap h1@@2)) ($Is f@@5 (Tclass._System.___hFunc0 t0@@17))) (forall ((o@@57 T@U) (fld@@1 T@U) ) (! (let ((a@@81 (FieldTypeInv0 (type fld@@1))))
  6660. (=> (and (and (= (type o@@57) refType) (= (type fld@@1) (FieldType a@@81))) (and (not (= o@@57 null)) (U_2_bool (MapType0Select (Reads0 t0@@17 h0@@2 f@@5) ($Box o@@57))))) (= (MapType1Select (MapType0Select h0@@2 o@@57) fld@@1) (MapType1Select (MapType0Select h1@@2 o@@57) fld@@1))))
  6661. :qid |funwiths.1903:22|
  6662. :skolemid |347|
  6663. :no-pattern (type o@@57)
  6664. :no-pattern (type fld@@1)
  6665. :no-pattern (U_2_int o@@57)
  6666. :no-pattern (U_2_bool o@@57)
  6667. :no-pattern (U_2_int fld@@1)
  6668. :no-pattern (U_2_bool fld@@1)
  6669. ))) (and (=> (Requires0 t0@@17 h0@@2 f@@5) (Requires0 t0@@17 h1@@2 f@@5)) (=> (Requires0 t0@@17 h1@@2 f@@5) (Requires0 t0@@17 h0@@2 f@@5)))))
  6670. :qid |funwiths.1896:15|
  6671. :skolemid |348|
  6672. :pattern ( ($HeapSucc h0@@2 h1@@2) (Requires0 t0@@17 h1@@2 f@@5))
  6673. )))
  6674. (assert (forall ((t0@@18 T@U) (h0@@3 T@U) (h1@@3 T@U) (f@@6 T@U) ) (! (=> (and (and (and (= (type t0@@18) TyType) (= (type h0@@3) (MapType0Type refType MapType1Type))) (= (type h1@@3) (MapType0Type refType MapType1Type))) (= (type f@@6) HandleTypeType)) (=> (and (and (and (and ($HeapSucc h0@@3 h1@@3) ($IsGoodHeap h0@@3)) ($IsGoodHeap h1@@3)) ($Is f@@6 (Tclass._System.___hFunc0 t0@@18))) (forall ((o@@58 T@U) (fld@@2 T@U) ) (! (let ((a@@82 (FieldTypeInv0 (type fld@@2))))
  6675. (=> (and (and (= (type o@@58) refType) (= (type fld@@2) (FieldType a@@82))) (and (not (= o@@58 null)) (U_2_bool (MapType0Select (Reads0 t0@@18 h1@@3 f@@6) ($Box o@@58))))) (= (MapType1Select (MapType0Select h0@@3 o@@58) fld@@2) (MapType1Select (MapType0Select h1@@3 o@@58) fld@@2))))
  6676. :qid |funwiths.1915:22|
  6677. :skolemid |349|
  6678. :no-pattern (type o@@58)
  6679. :no-pattern (type fld@@2)
  6680. :no-pattern (U_2_int o@@58)
  6681. :no-pattern (U_2_bool o@@58)
  6682. :no-pattern (U_2_int fld@@2)
  6683. :no-pattern (U_2_bool fld@@2)
  6684. ))) (and (=> (Requires0 t0@@18 h0@@3 f@@6) (Requires0 t0@@18 h1@@3 f@@6)) (=> (Requires0 t0@@18 h1@@3 f@@6) (Requires0 t0@@18 h0@@3 f@@6)))))
  6685. :qid |funwiths.1908:15|
  6686. :skolemid |350|
  6687. :pattern ( ($HeapSucc h0@@3 h1@@3) (Requires0 t0@@18 h1@@3 f@@6))
  6688. )))
  6689. (assert (forall ((t0@@19 T@U) (h0@@4 T@U) (h1@@4 T@U) (f@@7 T@U) ) (! (=> (and (and (and (= (type t0@@19) TyType) (= (type h0@@4) (MapType0Type refType MapType1Type))) (= (type h1@@4) (MapType0Type refType MapType1Type))) (= (type f@@7) HandleTypeType)) (=> (and (and (and (and ($HeapSucc h0@@4 h1@@4) ($IsGoodHeap h0@@4)) ($IsGoodHeap h1@@4)) ($Is f@@7 (Tclass._System.___hFunc0 t0@@19))) (forall ((o@@59 T@U) (fld@@3 T@U) ) (! (let ((a@@83 (FieldTypeInv0 (type fld@@3))))
  6690. (=> (and (and (= (type o@@59) refType) (= (type fld@@3) (FieldType a@@83))) (and (not (= o@@59 null)) (U_2_bool (MapType0Select (Reads0 t0@@19 h0@@4 f@@7) ($Box o@@59))))) (= (MapType1Select (MapType0Select h0@@4 o@@59) fld@@3) (MapType1Select (MapType0Select h1@@4 o@@59) fld@@3))))
  6691. :qid |funwiths.1927:22|
  6692. :skolemid |351|
  6693. :no-pattern (type o@@59)
  6694. :no-pattern (type fld@@3)
  6695. :no-pattern (U_2_int o@@59)
  6696. :no-pattern (U_2_bool o@@59)
  6697. :no-pattern (U_2_int fld@@3)
  6698. :no-pattern (U_2_bool fld@@3)
  6699. ))) (= (Apply0 t0@@19 h0@@4 f@@7) (Apply0 t0@@19 h1@@4 f@@7))))
  6700. :qid |funwiths.1920:15|
  6701. :skolemid |352|
  6702. :pattern ( ($HeapSucc h0@@4 h1@@4) (Apply0 t0@@19 h1@@4 f@@7))
  6703. )))
  6704. (assert (forall ((t0@@20 T@U) (h0@@5 T@U) (h1@@5 T@U) (f@@8 T@U) ) (! (=> (and (and (and (= (type t0@@20) TyType) (= (type h0@@5) (MapType0Type refType MapType1Type))) (= (type h1@@5) (MapType0Type refType MapType1Type))) (= (type f@@8) HandleTypeType)) (=> (and (and (and (and ($HeapSucc h0@@5 h1@@5) ($IsGoodHeap h0@@5)) ($IsGoodHeap h1@@5)) ($Is f@@8 (Tclass._System.___hFunc0 t0@@20))) (forall ((o@@60 T@U) (fld@@4 T@U) ) (! (let ((a@@84 (FieldTypeInv0 (type fld@@4))))
  6705. (=> (and (and (= (type o@@60) refType) (= (type fld@@4) (FieldType a@@84))) (and (not (= o@@60 null)) (U_2_bool (MapType0Select (Reads0 t0@@20 h1@@5 f@@8) ($Box o@@60))))) (= (MapType1Select (MapType0Select h0@@5 o@@60) fld@@4) (MapType1Select (MapType0Select h1@@5 o@@60) fld@@4))))
  6706. :qid |funwiths.1939:22|
  6707. :skolemid |353|
  6708. :no-pattern (type o@@60)
  6709. :no-pattern (type fld@@4)
  6710. :no-pattern (U_2_int o@@60)
  6711. :no-pattern (U_2_bool o@@60)
  6712. :no-pattern (U_2_int fld@@4)
  6713. :no-pattern (U_2_bool fld@@4)
  6714. ))) (= (Apply0 t0@@20 h0@@5 f@@8) (Apply0 t0@@20 h1@@5 f@@8))))
  6715. :qid |funwiths.1932:15|
  6716. :skolemid |354|
  6717. :pattern ( ($HeapSucc h0@@5 h1@@5) (Apply0 t0@@20 h1@@5 f@@8))
  6718. )))
  6719. (assert (forall ((t0@@21 T@U) (heap@@2 T@U) (f@@9 T@U) ) (! (=> (and (and (and (= (type t0@@21) TyType) (= (type heap@@2) (MapType0Type refType MapType1Type))) (= (type f@@9) HandleTypeType)) (and ($IsGoodHeap heap@@2) ($Is f@@9 (Tclass._System.___hFunc0 t0@@21)))) (and (=> (|Set#Equal| (Reads0 t0@@21 $OneHeap f@@9) (|Set#Empty| BoxType)) (|Set#Equal| (Reads0 t0@@21 heap@@2 f@@9) (|Set#Empty| BoxType))) (=> (|Set#Equal| (Reads0 t0@@21 heap@@2 f@@9) (|Set#Empty| BoxType)) (|Set#Equal| (Reads0 t0@@21 $OneHeap f@@9) (|Set#Empty| BoxType)))))
  6720. :qid |funwiths.1944:15|
  6721. :skolemid |355|
  6722. :pattern ( (Reads0 t0@@21 $OneHeap f@@9) ($IsGoodHeap heap@@2))
  6723. :pattern ( (Reads0 t0@@21 heap@@2 f@@9))
  6724. )))
  6725. (assert (forall ((t0@@22 T@U) (heap@@3 T@U) (f@@10 T@U) ) (! (=> (and (and (and (= (type t0@@22) TyType) (= (type heap@@3) (MapType0Type refType MapType1Type))) (= (type f@@10) HandleTypeType)) (and (and ($IsGoodHeap heap@@3) ($Is f@@10 (Tclass._System.___hFunc0 t0@@22))) (|Set#Equal| (Reads0 t0@@22 $OneHeap f@@10) (|Set#Empty| BoxType)))) (and (=> (Requires0 t0@@22 $OneHeap f@@10) (Requires0 t0@@22 heap@@3 f@@10)) (=> (Requires0 t0@@22 heap@@3 f@@10) (Requires0 t0@@22 $OneHeap f@@10))))
  6726. :qid |funwiths.1951:15|
  6727. :skolemid |356|
  6728. :pattern ( (Requires0 t0@@22 $OneHeap f@@10) ($IsGoodHeap heap@@3))
  6729. :pattern ( (Requires0 t0@@22 heap@@3 f@@10))
  6730. )))
  6731. (assert (forall ((f@@11 T@U) (t0@@23 T@U) ) (! (=> (and (= (type f@@11) HandleTypeType) (= (type t0@@23) TyType)) (and (=> ($Is f@@11 (Tclass._System.___hFunc0 t0@@23)) (forall ((h@@23 T@U) ) (! (=> (= (type h@@23) (MapType0Type refType MapType1Type)) (=> (and ($IsGoodHeap h@@23) (Requires0 t0@@23 h@@23 f@@11)) ($IsBox (Apply0 t0@@23 h@@23 f@@11) t0@@23)))
  6732. :qid |funwiths.1961:19|
  6733. :skolemid |357|
  6734. :pattern ( (Apply0 t0@@23 h@@23 f@@11))
  6735. ))) (=> (forall ((h@@24 T@U) ) (! (=> (= (type h@@24) (MapType0Type refType MapType1Type)) (=> (and ($IsGoodHeap h@@24) (Requires0 t0@@23 h@@24 f@@11)) ($IsBox (Apply0 t0@@23 h@@24 f@@11) t0@@23)))
  6736. :qid |funwiths.1961:19|
  6737. :skolemid |357|
  6738. :pattern ( (Apply0 t0@@23 h@@24 f@@11))
  6739. )) ($Is f@@11 (Tclass._System.___hFunc0 t0@@23)))))
  6740. :qid |funwiths.1958:15|
  6741. :skolemid |358|
  6742. :pattern ( ($Is f@@11 (Tclass._System.___hFunc0 t0@@23)))
  6743. )))
  6744. (assert (forall ((f@@12 T@U) (t0@@24 T@U) (u0 T@U) ) (! (=> (and (and (and (= (type f@@12) HandleTypeType) (= (type t0@@24) TyType)) (= (type u0) TyType)) (and ($Is f@@12 (Tclass._System.___hFunc0 t0@@24)) (forall ((bx@@41 T@U) ) (! (=> (and (= (type bx@@41) BoxType) ($IsBox bx@@41 t0@@24)) ($IsBox bx@@41 u0))
  6745. :qid |funwiths.1968:19|
  6746. :skolemid |359|
  6747. :pattern ( ($IsBox bx@@41 t0@@24))
  6748. :pattern ( ($IsBox bx@@41 u0))
  6749. )))) ($Is f@@12 (Tclass._System.___hFunc0 u0)))
  6750. :qid |funwiths.1965:15|
  6751. :skolemid |360|
  6752. :pattern ( ($Is f@@12 (Tclass._System.___hFunc0 t0@@24)) ($Is f@@12 (Tclass._System.___hFunc0 u0)))
  6753. )))
  6754. (assert (forall ((f@@13 T@U) (t0@@25 T@U) (h@@25 T@U) ) (! (=> (and (and (and (= (type f@@13) HandleTypeType) (= (type t0@@25) TyType)) (= (type h@@25) (MapType0Type refType MapType1Type))) ($IsGoodHeap h@@25)) (and (=> ($IsAlloc f@@13 (Tclass._System.___hFunc0 t0@@25) h@@25) (=> (Requires0 t0@@25 h@@25 f@@13) (forall ((r@@9 T@U) ) (! (=> (= (type r@@9) refType) (=> (and (not (= r@@9 null)) (U_2_bool (MapType0Select (Reads0 t0@@25 h@@25 f@@13) ($Box r@@9)))) (U_2_bool (MapType1Select (MapType0Select h@@25 r@@9) alloc))))
  6755. :qid |funwiths.1978:22|
  6756. :skolemid |361|
  6757. :pattern ( (MapType0Select (Reads0 t0@@25 h@@25 f@@13) ($Box r@@9)))
  6758. )))) (=> (=> (Requires0 t0@@25 h@@25 f@@13) (forall ((r@@10 T@U) ) (! (=> (= (type r@@10) refType) (=> (and (not (= r@@10 null)) (U_2_bool (MapType0Select (Reads0 t0@@25 h@@25 f@@13) ($Box r@@10)))) (U_2_bool (MapType1Select (MapType0Select h@@25 r@@10) alloc))))
  6759. :qid |funwiths.1978:22|
  6760. :skolemid |361|
  6761. :pattern ( (MapType0Select (Reads0 t0@@25 h@@25 f@@13) ($Box r@@10)))
  6762. ))) ($IsAlloc f@@13 (Tclass._System.___hFunc0 t0@@25) h@@25))))
  6763. :qid |funwiths.1973:15|
  6764. :skolemid |362|
  6765. :pattern ( ($IsAlloc f@@13 (Tclass._System.___hFunc0 t0@@25) h@@25))
  6766. )))
  6767. (assert (forall ((f@@14 T@U) (t0@@26 T@U) (h@@26 T@U) ) (! (=> (and (and (and (and (= (type f@@14) HandleTypeType) (= (type t0@@26) TyType)) (= (type h@@26) (MapType0Type refType MapType1Type))) (and ($IsGoodHeap h@@26) ($IsAlloc f@@14 (Tclass._System.___hFunc0 t0@@26) h@@26))) (Requires0 t0@@26 h@@26 f@@14)) ($IsAllocBox (Apply0 t0@@26 h@@26 f@@14) t0@@26 h@@26))
  6768. :qid |funwiths.1982:15|
  6769. :skolemid |363|
  6770. :pattern ( ($IsAlloc f@@14 (Tclass._System.___hFunc0 t0@@26) h@@26))
  6771. )))
  6772. (assert (forall ((arg0@@109 T@U) ) (! (= (type (Tclass._System.___hPartialFunc0 arg0@@109)) TyType)
  6773. :qid |funType:Tclass._System.___hPartialFunc0|
  6774. :pattern ( (Tclass._System.___hPartialFunc0 arg0@@109))
  6775. )))
  6776. (assert (forall ((|#$R@@2| T@U) ) (! (=> (= (type |#$R@@2|) TyType) (= (Tag (Tclass._System.___hPartialFunc0 |#$R@@2|)) Tagclass._System.___hPartialFunc0))
  6777. :qid |funwiths.1992:15|
  6778. :skolemid |364|
  6779. :pattern ( (Tclass._System.___hPartialFunc0 |#$R@@2|))
  6780. )))
  6781. (assert (forall ((arg0@@110 T@U) ) (! (= (type (Tclass._System.___hPartialFunc0_0 arg0@@110)) TyType)
  6782. :qid |funType:Tclass._System.___hPartialFunc0_0|
  6783. :pattern ( (Tclass._System.___hPartialFunc0_0 arg0@@110))
  6784. )))
  6785. (assert (forall ((|#$R@@3| T@U) ) (! (=> (= (type |#$R@@3|) TyType) (= (Tclass._System.___hPartialFunc0_0 (Tclass._System.___hPartialFunc0 |#$R@@3|)) |#$R@@3|))
  6786. :qid |funwiths.1999:15|
  6787. :skolemid |365|
  6788. :pattern ( (Tclass._System.___hPartialFunc0 |#$R@@3|))
  6789. )))
  6790. (assert (forall ((|#$R@@4| T@U) (bx@@42 T@U) ) (! (=> (and (and (= (type |#$R@@4|) TyType) (= (type bx@@42) BoxType)) ($IsBox bx@@42 (Tclass._System.___hPartialFunc0 |#$R@@4|))) (and (= ($Box ($Unbox HandleTypeType bx@@42)) bx@@42) ($Is ($Unbox HandleTypeType bx@@42) (Tclass._System.___hPartialFunc0 |#$R@@4|))))
  6791. :qid |funwiths.2006:15|
  6792. :skolemid |366|
  6793. :pattern ( ($IsBox bx@@42 (Tclass._System.___hPartialFunc0 |#$R@@4|)))
  6794. )))
  6795. (assert (forall ((|#$R@@5| T@U) (|f#0| T@U) ) (! (=> (and (= (type |#$R@@5|) TyType) (= (type |f#0|) HandleTypeType)) (and (=> ($Is |f#0| (Tclass._System.___hPartialFunc0 |#$R@@5|)) (and ($Is |f#0| (Tclass._System.___hFunc0 |#$R@@5|)) (|Set#Equal| (Reads0 |#$R@@5| $OneHeap |f#0|) (|Set#Empty| BoxType)))) (=> (and ($Is |f#0| (Tclass._System.___hFunc0 |#$R@@5|)) (|Set#Equal| (Reads0 |#$R@@5| $OneHeap |f#0|) (|Set#Empty| BoxType))) ($Is |f#0| (Tclass._System.___hPartialFunc0 |#$R@@5|)))))
  6796. :qid |funwiths.2013:15|
  6797. :skolemid |367|
  6798. :pattern ( ($Is |f#0| (Tclass._System.___hPartialFunc0 |#$R@@5|)))
  6799. )))
  6800. (assert (forall ((|#$R@@6| T@U) (|f#0@@0| T@U) ($h@@7 T@U) ) (! (=> (and (and (= (type |#$R@@6|) TyType) (= (type |f#0@@0|) HandleTypeType)) (= (type $h@@7) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc |f#0@@0| (Tclass._System.___hPartialFunc0 |#$R@@6|) $h@@7) ($IsAlloc |f#0@@0| (Tclass._System.___hFunc0 |#$R@@6|) $h@@7)) (=> ($IsAlloc |f#0@@0| (Tclass._System.___hFunc0 |#$R@@6|) $h@@7) ($IsAlloc |f#0@@0| (Tclass._System.___hPartialFunc0 |#$R@@6|) $h@@7))))
  6801. :qid |funwiths.2020:15|
  6802. :skolemid |368|
  6803. :pattern ( ($IsAlloc |f#0@@0| (Tclass._System.___hPartialFunc0 |#$R@@6|) $h@@7))
  6804. )))
  6805. (assert (forall ((arg0@@111 T@U) ) (! (= (type (Tclass._System.___hTotalFunc0 arg0@@111)) TyType)
  6806. :qid |funType:Tclass._System.___hTotalFunc0|
  6807. :pattern ( (Tclass._System.___hTotalFunc0 arg0@@111))
  6808. )))
  6809. (assert (forall ((|#$R@@7| T@U) ) (! (=> (= (type |#$R@@7|) TyType) (= (Tag (Tclass._System.___hTotalFunc0 |#$R@@7|)) Tagclass._System.___hTotalFunc0))
  6810. :qid |funwiths.2028:15|
  6811. :skolemid |369|
  6812. :pattern ( (Tclass._System.___hTotalFunc0 |#$R@@7|))
  6813. )))
  6814. (assert (forall ((arg0@@112 T@U) ) (! (= (type (Tclass._System.___hTotalFunc0_0 arg0@@112)) TyType)
  6815. :qid |funType:Tclass._System.___hTotalFunc0_0|
  6816. :pattern ( (Tclass._System.___hTotalFunc0_0 arg0@@112))
  6817. )))
  6818. (assert (forall ((|#$R@@8| T@U) ) (! (=> (= (type |#$R@@8|) TyType) (= (Tclass._System.___hTotalFunc0_0 (Tclass._System.___hTotalFunc0 |#$R@@8|)) |#$R@@8|))
  6819. :qid |funwiths.2035:15|
  6820. :skolemid |370|
  6821. :pattern ( (Tclass._System.___hTotalFunc0 |#$R@@8|))
  6822. )))
  6823. (assert (forall ((|#$R@@9| T@U) (bx@@43 T@U) ) (! (=> (and (and (= (type |#$R@@9|) TyType) (= (type bx@@43) BoxType)) ($IsBox bx@@43 (Tclass._System.___hTotalFunc0 |#$R@@9|))) (and (= ($Box ($Unbox HandleTypeType bx@@43)) bx@@43) ($Is ($Unbox HandleTypeType bx@@43) (Tclass._System.___hTotalFunc0 |#$R@@9|))))
  6824. :qid |funwiths.2042:15|
  6825. :skolemid |371|
  6826. :pattern ( ($IsBox bx@@43 (Tclass._System.___hTotalFunc0 |#$R@@9|)))
  6827. )))
  6828. (assert (forall ((|#$R@@10| T@U) (|f#0@@1| T@U) ) (! (=> (and (= (type |#$R@@10|) TyType) (= (type |f#0@@1|) HandleTypeType)) (and (=> ($Is |f#0@@1| (Tclass._System.___hTotalFunc0 |#$R@@10|)) (and ($Is |f#0@@1| (Tclass._System.___hPartialFunc0 |#$R@@10|)) (Requires0 |#$R@@10| $OneHeap |f#0@@1|))) (=> (and ($Is |f#0@@1| (Tclass._System.___hPartialFunc0 |#$R@@10|)) (Requires0 |#$R@@10| $OneHeap |f#0@@1|)) ($Is |f#0@@1| (Tclass._System.___hTotalFunc0 |#$R@@10|)))))
  6829. :qid |funwiths.2049:15|
  6830. :skolemid |372|
  6831. :pattern ( ($Is |f#0@@1| (Tclass._System.___hTotalFunc0 |#$R@@10|)))
  6832. )))
  6833. (assert (forall ((|#$R@@11| T@U) (|f#0@@2| T@U) ($h@@8 T@U) ) (! (=> (and (and (= (type |#$R@@11|) TyType) (= (type |f#0@@2|) HandleTypeType)) (= (type $h@@8) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc |f#0@@2| (Tclass._System.___hTotalFunc0 |#$R@@11|) $h@@8) ($IsAlloc |f#0@@2| (Tclass._System.___hPartialFunc0 |#$R@@11|) $h@@8)) (=> ($IsAlloc |f#0@@2| (Tclass._System.___hPartialFunc0 |#$R@@11|) $h@@8) ($IsAlloc |f#0@@2| (Tclass._System.___hTotalFunc0 |#$R@@11|) $h@@8))))
  6834. :qid |funwiths.2055:15|
  6835. :skolemid |373|
  6836. :pattern ( ($IsAlloc |f#0@@2| (Tclass._System.___hTotalFunc0 |#$R@@11|) $h@@8))
  6837. )))
  6838. (assert (and (forall ((arg0@@113 T@U) (arg1@@47 T@U) ) (! (= (type (|#_System._tuple#2._#Make2| arg0@@113 arg1@@47)) DatatypeTypeType)
  6839. :qid |funType:#_System._tuple#2._#Make2|
  6840. :pattern ( (|#_System._tuple#2._#Make2| arg0@@113 arg1@@47))
  6841. )) (forall ((arg0@@114 T@U) ) (! (= (type (DatatypeCtorId arg0@@114)) DtCtorIdType)
  6842. :qid |funType:DatatypeCtorId|
  6843. :pattern ( (DatatypeCtorId arg0@@114))
  6844. ))))
  6845. (assert (forall ((|a#0#0#0| T@U) (|a#0#1#0| T@U) ) (! (=> (and (= (type |a#0#0#0|) BoxType) (= (type |a#0#1#0|) BoxType)) (= (DatatypeCtorId (|#_System._tuple#2._#Make2| |a#0#0#0| |a#0#1#0|)) |##_System._tuple#2._#Make2|))
  6846. :qid |funwiths.2068:15|
  6847. :skolemid |374|
  6848. :pattern ( (|#_System._tuple#2._#Make2| |a#0#0#0| |a#0#1#0|))
  6849. )))
  6850. (assert (forall ((d@@0 T@U) ) (! (=> (= (type d@@0) DatatypeTypeType) (and (=> (_System.Tuple2.___hMake2_q d@@0) (= (DatatypeCtorId d@@0) |##_System._tuple#2._#Make2|)) (=> (= (DatatypeCtorId d@@0) |##_System._tuple#2._#Make2|) (_System.Tuple2.___hMake2_q d@@0))))
  6851. :qid |funwiths.2076:15|
  6852. :skolemid |375|
  6853. :pattern ( (_System.Tuple2.___hMake2_q d@@0))
  6854. )))
  6855. (assert (forall ((d@@1 T@U) ) (! (=> (and (= (type d@@1) DatatypeTypeType) (_System.Tuple2.___hMake2_q d@@1)) (exists ((|a#1#0#0| T@U) (|a#1#1#0| T@U) ) (! (and (and (= (type |a#1#0#0|) BoxType) (= (type |a#1#1#0|) BoxType)) (= d@@1 (|#_System._tuple#2._#Make2| |a#1#0#0| |a#1#1#0|)))
  6856. :qid |funwiths.2085:18|
  6857. :skolemid |376|
  6858. :no-pattern (type |a#1#0#0|)
  6859. :no-pattern (type |a#1#1#0|)
  6860. :no-pattern (U_2_int |a#1#0#0|)
  6861. :no-pattern (U_2_bool |a#1#0#0|)
  6862. :no-pattern (U_2_int |a#1#1#0|)
  6863. :no-pattern (U_2_bool |a#1#1#0|)
  6864. )))
  6865. :qid |funwiths.2082:15|
  6866. :skolemid |377|
  6867. :pattern ( (_System.Tuple2.___hMake2_q d@@1))
  6868. )))
  6869. (assert (forall ((arg0@@115 T@U) (arg1@@48 T@U) ) (! (= (type (Tclass._System.Tuple2 arg0@@115 arg1@@48)) TyType)
  6870. :qid |funType:Tclass._System.Tuple2|
  6871. :pattern ( (Tclass._System.Tuple2 arg0@@115 arg1@@48))
  6872. )))
  6873. (assert (forall ((|#$T0| T@U) (|#$T1| T@U) ) (! (=> (and (= (type |#$T0|) TyType) (= (type |#$T1|) TyType)) (= (Tag (Tclass._System.Tuple2 |#$T0| |#$T1|)) Tagclass._System.Tuple2))
  6874. :qid |funwiths.2091:15|
  6875. :skolemid |378|
  6876. :pattern ( (Tclass._System.Tuple2 |#$T0| |#$T1|))
  6877. )))
  6878. (assert (forall ((arg0@@116 T@U) ) (! (= (type (Tclass._System.Tuple2_0 arg0@@116)) TyType)
  6879. :qid |funType:Tclass._System.Tuple2_0|
  6880. :pattern ( (Tclass._System.Tuple2_0 arg0@@116))
  6881. )))
  6882. (assert (forall ((|#$T0@@0| T@U) (|#$T1@@0| T@U) ) (! (=> (and (= (type |#$T0@@0|) TyType) (= (type |#$T1@@0|) TyType)) (= (Tclass._System.Tuple2_0 (Tclass._System.Tuple2 |#$T0@@0| |#$T1@@0|)) |#$T0@@0|))
  6883. :qid |funwiths.2098:15|
  6884. :skolemid |379|
  6885. :pattern ( (Tclass._System.Tuple2 |#$T0@@0| |#$T1@@0|))
  6886. )))
  6887. (assert (forall ((arg0@@117 T@U) ) (! (= (type (Tclass._System.Tuple2_1 arg0@@117)) TyType)
  6888. :qid |funType:Tclass._System.Tuple2_1|
  6889. :pattern ( (Tclass._System.Tuple2_1 arg0@@117))
  6890. )))
  6891. (assert (forall ((|#$T0@@1| T@U) (|#$T1@@1| T@U) ) (! (=> (and (= (type |#$T0@@1|) TyType) (= (type |#$T1@@1|) TyType)) (= (Tclass._System.Tuple2_1 (Tclass._System.Tuple2 |#$T0@@1| |#$T1@@1|)) |#$T1@@1|))
  6892. :qid |funwiths.2105:15|
  6893. :skolemid |380|
  6894. :pattern ( (Tclass._System.Tuple2 |#$T0@@1| |#$T1@@1|))
  6895. )))
  6896. (assert (forall ((|#$T0@@2| T@U) (|#$T1@@2| T@U) (bx@@44 T@U) ) (! (=> (and (and (and (= (type |#$T0@@2|) TyType) (= (type |#$T1@@2|) TyType)) (= (type bx@@44) BoxType)) ($IsBox bx@@44 (Tclass._System.Tuple2 |#$T0@@2| |#$T1@@2|))) (and (= ($Box ($Unbox DatatypeTypeType bx@@44)) bx@@44) ($Is ($Unbox DatatypeTypeType bx@@44) (Tclass._System.Tuple2 |#$T0@@2| |#$T1@@2|))))
  6897. :qid |funwiths.2112:15|
  6898. :skolemid |381|
  6899. :pattern ( ($IsBox bx@@44 (Tclass._System.Tuple2 |#$T0@@2| |#$T1@@2|)))
  6900. )))
  6901. (assert (forall ((|#$T0@@3| T@U) (|#$T1@@3| T@U) (|a#2#0#0| T@U) (|a#2#1#0| T@U) ) (! (=> (and (and (and (= (type |#$T0@@3|) TyType) (= (type |#$T1@@3|) TyType)) (= (type |a#2#0#0|) BoxType)) (= (type |a#2#1#0|) BoxType)) (and (=> ($Is (|#_System._tuple#2._#Make2| |a#2#0#0| |a#2#1#0|) (Tclass._System.Tuple2 |#$T0@@3| |#$T1@@3|)) (and ($IsBox |a#2#0#0| |#$T0@@3|) ($IsBox |a#2#1#0| |#$T1@@3|))) (=> (and ($IsBox |a#2#0#0| |#$T0@@3|) ($IsBox |a#2#1#0| |#$T1@@3|)) ($Is (|#_System._tuple#2._#Make2| |a#2#0#0| |a#2#1#0|) (Tclass._System.Tuple2 |#$T0@@3| |#$T1@@3|)))))
  6902. :qid |funwiths.2119:15|
  6903. :skolemid |382|
  6904. :pattern ( ($Is (|#_System._tuple#2._#Make2| |a#2#0#0| |a#2#1#0|) (Tclass._System.Tuple2 |#$T0@@3| |#$T1@@3|)))
  6905. )))
  6906. (assert (forall ((|#$T0@@4| T@U) (|#$T1@@4| T@U) (|a#3#0#0| T@U) (|a#3#1#0| T@U) ($h@@9 T@U) ) (! (=> (and (and (and (and (and (= (type |#$T0@@4|) TyType) (= (type |#$T1@@4|) TyType)) (= (type |a#3#0#0|) BoxType)) (= (type |a#3#1#0|) BoxType)) (= (type $h@@9) (MapType0Type refType MapType1Type))) ($IsGoodHeap $h@@9)) (and (=> ($IsAlloc (|#_System._tuple#2._#Make2| |a#3#0#0| |a#3#1#0|) (Tclass._System.Tuple2 |#$T0@@4| |#$T1@@4|) $h@@9) (and ($IsAllocBox |a#3#0#0| |#$T0@@4| $h@@9) ($IsAllocBox |a#3#1#0| |#$T1@@4| $h@@9))) (=> (and ($IsAllocBox |a#3#0#0| |#$T0@@4| $h@@9) ($IsAllocBox |a#3#1#0| |#$T1@@4| $h@@9)) ($IsAlloc (|#_System._tuple#2._#Make2| |a#3#0#0| |a#3#1#0|) (Tclass._System.Tuple2 |#$T0@@4| |#$T1@@4|) $h@@9))))
  6907. :qid |funwiths.2125:15|
  6908. :skolemid |383|
  6909. :pattern ( ($IsAlloc (|#_System._tuple#2._#Make2| |a#3#0#0| |a#3#1#0|) (Tclass._System.Tuple2 |#$T0@@4| |#$T1@@4|) $h@@9))
  6910. )))
  6911. (assert (forall ((d@@2 T@U) (|#$T0@@5| T@U) ($h@@10 T@U) ) (! (=> (and (and (and (= (type d@@2) DatatypeTypeType) (= (type |#$T0@@5|) TyType)) (= (type $h@@10) (MapType0Type refType MapType1Type))) (and (and ($IsGoodHeap $h@@10) (_System.Tuple2.___hMake2_q d@@2)) (exists ((|#$T1@@5| T@U) ) (! (and (= (type |#$T1@@5|) TyType) ($IsAlloc d@@2 (Tclass._System.Tuple2 |#$T0@@5| |#$T1@@5|) $h@@10))
  6912. :qid |funwiths.2141:19|
  6913. :skolemid |384|
  6914. :pattern ( ($IsAlloc d@@2 (Tclass._System.Tuple2 |#$T0@@5| |#$T1@@5|) $h@@10))
  6915. )))) ($IsAllocBox (_System.Tuple2._0 d@@2) |#$T0@@5| $h@@10))
  6916. :qid |funwiths.2136:15|
  6917. :skolemid |385|
  6918. :pattern ( ($IsAllocBox (_System.Tuple2._0 d@@2) |#$T0@@5| $h@@10))
  6919. )))
  6920. (assert (forall ((d@@3 T@U) (|#$T1@@6| T@U) ($h@@11 T@U) ) (! (=> (and (and (and (= (type d@@3) DatatypeTypeType) (= (type |#$T1@@6|) TyType)) (= (type $h@@11) (MapType0Type refType MapType1Type))) (and (and ($IsGoodHeap $h@@11) (_System.Tuple2.___hMake2_q d@@3)) (exists ((|#$T0@@6| T@U) ) (! (and (= (type |#$T0@@6|) TyType) ($IsAlloc d@@3 (Tclass._System.Tuple2 |#$T0@@6| |#$T1@@6|) $h@@11))
  6921. :qid |funwiths.2152:19|
  6922. :skolemid |386|
  6923. :pattern ( ($IsAlloc d@@3 (Tclass._System.Tuple2 |#$T0@@6| |#$T1@@6|) $h@@11))
  6924. )))) ($IsAllocBox (_System.Tuple2._1 d@@3) |#$T1@@6| $h@@11))
  6925. :qid |funwiths.2147:15|
  6926. :skolemid |387|
  6927. :pattern ( ($IsAllocBox (_System.Tuple2._1 d@@3) |#$T1@@6| $h@@11))
  6928. )))
  6929. (assert (forall ((|a#4#0#0| T@U) (|a#4#1#0| T@U) ) (! (=> (and (= (type |a#4#0#0|) BoxType) (= (type |a#4#1#0|) BoxType)) (= (|#_System._tuple#2._#Make2| (Lit |a#4#0#0|) (Lit |a#4#1#0|)) (Lit (|#_System._tuple#2._#Make2| |a#4#0#0| |a#4#1#0|))))
  6930. :qid |funwiths.2158:15|
  6931. :skolemid |388|
  6932. :pattern ( (|#_System._tuple#2._#Make2| (Lit |a#4#0#0|) (Lit |a#4#1#0|)))
  6933. )))
  6934. (assert (forall ((|a#5#0#0| T@U) (|a#5#1#0| T@U) ) (! (=> (and (= (type |a#5#0#0|) BoxType) (= (type |a#5#1#0|) BoxType)) (= (_System.Tuple2._0 (|#_System._tuple#2._#Make2| |a#5#0#0| |a#5#1#0|)) |a#5#0#0|))
  6935. :qid |funwiths.2164:15|
  6936. :skolemid |389|
  6937. :pattern ( (|#_System._tuple#2._#Make2| |a#5#0#0| |a#5#1#0|))
  6938. )))
  6939. (assert (forall ((|a#6#0#0| T@U) (|a#6#1#0| T@U) ) (! (=> (and (= (type |a#6#0#0|) BoxType) (= (type |a#6#1#0|) BoxType)) (< (BoxRank |a#6#0#0|) (DtRank (|#_System._tuple#2._#Make2| |a#6#0#0| |a#6#1#0|))))
  6940. :qid |funwiths.2169:15|
  6941. :skolemid |390|
  6942. :pattern ( (|#_System._tuple#2._#Make2| |a#6#0#0| |a#6#1#0|))
  6943. )))
  6944. (assert (forall ((|a#7#0#0| T@U) (|a#7#1#0| T@U) ) (! (=> (and (= (type |a#7#0#0|) BoxType) (= (type |a#7#1#0|) BoxType)) (= (_System.Tuple2._1 (|#_System._tuple#2._#Make2| |a#7#0#0| |a#7#1#0|)) |a#7#1#0|))
  6945. :qid |funwiths.2174:15|
  6946. :skolemid |391|
  6947. :pattern ( (|#_System._tuple#2._#Make2| |a#7#0#0| |a#7#1#0|))
  6948. )))
  6949. (assert (forall ((|a#8#0#0| T@U) (|a#8#1#0| T@U) ) (! (=> (and (= (type |a#8#0#0|) BoxType) (= (type |a#8#1#0|) BoxType)) (< (BoxRank |a#8#1#0|) (DtRank (|#_System._tuple#2._#Make2| |a#8#0#0| |a#8#1#0|))))
  6950. :qid |funwiths.2179:15|
  6951. :skolemid |392|
  6952. :pattern ( (|#_System._tuple#2._#Make2| |a#8#0#0| |a#8#1#0|))
  6953. )))
  6954. (assert (forall ((d@@4 T@U) ) (! (=> (and (= (type d@@4) DatatypeTypeType) (|$IsA#_System.Tuple2| d@@4)) (_System.Tuple2.___hMake2_q d@@4))
  6955. :qid |funwiths.2187:15|
  6956. :skolemid |393|
  6957. :pattern ( (|$IsA#_System.Tuple2| d@@4))
  6958. )))
  6959. (assert (forall ((|#$T0@@7| T@U) (|#$T1@@7| T@U) (d@@5 T@U) ) (! (=> (and (and (and (= (type |#$T0@@7|) TyType) (= (type |#$T1@@7|) TyType)) (= (type d@@5) DatatypeTypeType)) ($Is d@@5 (Tclass._System.Tuple2 |#$T0@@7| |#$T1@@7|))) (_System.Tuple2.___hMake2_q d@@5))
  6960. :qid |funwiths.2192:15|
  6961. :skolemid |394|
  6962. :pattern ( (_System.Tuple2.___hMake2_q d@@5) ($Is d@@5 (Tclass._System.Tuple2 |#$T0@@7| |#$T1@@7|)))
  6963. )))
  6964. (assert (forall ((a@@85 T@U) (b@@58 T@U) ) (! (=> (and (and (= (type a@@85) DatatypeTypeType) (= (type b@@58) DatatypeTypeType)) true) (and (=> (|_System.Tuple2#Equal| a@@85 b@@58) (and (= (_System.Tuple2._0 a@@85) (_System.Tuple2._0 b@@58)) (= (_System.Tuple2._1 a@@85) (_System.Tuple2._1 b@@58)))) (=> (and (= (_System.Tuple2._0 a@@85) (_System.Tuple2._0 b@@58)) (= (_System.Tuple2._1 a@@85) (_System.Tuple2._1 b@@58))) (|_System.Tuple2#Equal| a@@85 b@@58))))
  6965. :qid |funwiths.2200:15|
  6966. :skolemid |395|
  6967. :pattern ( (|_System.Tuple2#Equal| a@@85 b@@58))
  6968. )))
  6969. (assert (forall ((a@@86 T@U) (b@@59 T@U) ) (! (=> (and (= (type a@@86) DatatypeTypeType) (= (type b@@59) DatatypeTypeType)) (and (=> (|_System.Tuple2#Equal| a@@86 b@@59) (= a@@86 b@@59)) (=> (= a@@86 b@@59) (|_System.Tuple2#Equal| a@@86 b@@59))))
  6970. :qid |funwiths.2208:15|
  6971. :skolemid |396|
  6972. :pattern ( (|_System.Tuple2#Equal| a@@86 b@@59))
  6973. )))
  6974. (assert (forall ((arg0@@118 T@U) (arg1@@49 T@U) ) (! (= (type (Tclass._System.___hFunc1 arg0@@118 arg1@@49)) TyType)
  6975. :qid |funType:Tclass._System.___hFunc1|
  6976. :pattern ( (Tclass._System.___hFunc1 arg0@@118 arg1@@49))
  6977. )))
  6978. (assert (forall ((|#$T0@@8| T@U) (|#$R@@12| T@U) ) (! (=> (and (= (type |#$T0@@8|) TyType) (= (type |#$R@@12|) TyType)) (= (Tag (Tclass._System.___hFunc1 |#$T0@@8| |#$R@@12|)) Tagclass._System.___hFunc1))
  6979. :qid |funwiths.2215:15|
  6980. :skolemid |397|
  6981. :pattern ( (Tclass._System.___hFunc1 |#$T0@@8| |#$R@@12|))
  6982. )))
  6983. (assert (forall ((arg0@@119 T@U) ) (! (= (type (Tclass._System.___hFunc1_0 arg0@@119)) TyType)
  6984. :qid |funType:Tclass._System.___hFunc1_0|
  6985. :pattern ( (Tclass._System.___hFunc1_0 arg0@@119))
  6986. )))
  6987. (assert (forall ((|#$T0@@9| T@U) (|#$R@@13| T@U) ) (! (=> (and (= (type |#$T0@@9|) TyType) (= (type |#$R@@13|) TyType)) (= (Tclass._System.___hFunc1_0 (Tclass._System.___hFunc1 |#$T0@@9| |#$R@@13|)) |#$T0@@9|))
  6988. :qid |funwiths.2222:15|
  6989. :skolemid |398|
  6990. :pattern ( (Tclass._System.___hFunc1 |#$T0@@9| |#$R@@13|))
  6991. )))
  6992. (assert (forall ((arg0@@120 T@U) ) (! (= (type (Tclass._System.___hFunc1_1 arg0@@120)) TyType)
  6993. :qid |funType:Tclass._System.___hFunc1_1|
  6994. :pattern ( (Tclass._System.___hFunc1_1 arg0@@120))
  6995. )))
  6996. (assert (forall ((|#$T0@@10| T@U) (|#$R@@14| T@U) ) (! (=> (and (= (type |#$T0@@10|) TyType) (= (type |#$R@@14|) TyType)) (= (Tclass._System.___hFunc1_1 (Tclass._System.___hFunc1 |#$T0@@10| |#$R@@14|)) |#$R@@14|))
  6997. :qid |funwiths.2229:15|
  6998. :skolemid |399|
  6999. :pattern ( (Tclass._System.___hFunc1 |#$T0@@10| |#$R@@14|))
  7000. )))
  7001. (assert (forall ((|#$T0@@11| T@U) (|#$R@@15| T@U) (bx@@45 T@U) ) (! (=> (and (and (and (= (type |#$T0@@11|) TyType) (= (type |#$R@@15|) TyType)) (= (type bx@@45) BoxType)) ($IsBox bx@@45 (Tclass._System.___hFunc1 |#$T0@@11| |#$R@@15|))) (and (= ($Box ($Unbox HandleTypeType bx@@45)) bx@@45) ($Is ($Unbox HandleTypeType bx@@45) (Tclass._System.___hFunc1 |#$T0@@11| |#$R@@15|))))
  7002. :qid |funwiths.2236:15|
  7003. :skolemid |400|
  7004. :pattern ( ($IsBox bx@@45 (Tclass._System.___hFunc1 |#$T0@@11| |#$R@@15|)))
  7005. )))
  7006. (assert (and (and (and (and (and (and (and (and (and (forall ((arg0@@121 T@T) (arg1@@50 T@T) (arg2@@9 T@T) ) (! (= (Ctor (MapType2Type arg0@@121 arg1@@50 arg2@@9)) 20)
  7007. :qid |ctor:MapType2Type|
  7008. )) (forall ((arg0@@122 T@T) (arg1@@51 T@T) (arg2@@10 T@T) ) (! (= (MapType2TypeInv0 (MapType2Type arg0@@122 arg1@@51 arg2@@10)) arg0@@122)
  7009. :qid |typeInv:MapType2TypeInv0|
  7010. :pattern ( (MapType2Type arg0@@122 arg1@@51 arg2@@10))
  7011. ))) (forall ((arg0@@123 T@T) (arg1@@52 T@T) (arg2@@11 T@T) ) (! (= (MapType2TypeInv1 (MapType2Type arg0@@123 arg1@@52 arg2@@11)) arg1@@52)
  7012. :qid |typeInv:MapType2TypeInv1|
  7013. :pattern ( (MapType2Type arg0@@123 arg1@@52 arg2@@11))
  7014. ))) (forall ((arg0@@124 T@T) (arg1@@53 T@T) (arg2@@12 T@T) ) (! (= (MapType2TypeInv2 (MapType2Type arg0@@124 arg1@@53 arg2@@12)) arg2@@12)
  7015. :qid |typeInv:MapType2TypeInv2|
  7016. :pattern ( (MapType2Type arg0@@124 arg1@@53 arg2@@12))
  7017. ))) (forall ((arg0@@125 T@U) (arg1@@54 T@U) (arg2@@13 T@U) ) (! (let ((aVar2 (MapType2TypeInv2 (type arg0@@125))))
  7018. (= (type (MapType2Select arg0@@125 arg1@@54 arg2@@13)) aVar2))
  7019. :qid |funType:MapType2Select|
  7020. :pattern ( (MapType2Select arg0@@125 arg1@@54 arg2@@13))
  7021. ))) (forall ((arg0@@126 T@U) (arg1@@55 T@U) (arg2@@14 T@U) (arg3 T@U) ) (! (let ((aVar2@@0 (type arg3)))
  7022. (let ((aVar1@@2 (type arg2@@14)))
  7023. (let ((aVar0@@0 (type arg1@@55)))
  7024. (= (type (MapType2Store arg0@@126 arg1@@55 arg2@@14 arg3)) (MapType2Type aVar0@@0 aVar1@@2 aVar2@@0)))))
  7025. :qid |funType:MapType2Store|
  7026. :pattern ( (MapType2Store arg0@@126 arg1@@55 arg2@@14 arg3))
  7027. ))) (forall ((m@@27 T@U) (x0@@5 T@U) (x1 T@U) (val@@6 T@U) ) (! (let ((aVar2@@1 (MapType2TypeInv2 (type m@@27))))
  7028. (=> (= (type val@@6) aVar2@@1) (= (MapType2Select (MapType2Store m@@27 x0@@5 x1 val@@6) x0@@5 x1) val@@6)))
  7029. :qid |mapAx0:MapType2Select|
  7030. :weight 0
  7031. ))) (and (and (forall ((val@@7 T@U) (m@@28 T@U) (x0@@6 T@U) (x1@@0 T@U) (y0@@3 T@U) (y1 T@U) ) (! (or (= x0@@6 y0@@3) (= (MapType2Select (MapType2Store m@@28 x0@@6 x1@@0 val@@7) y0@@3 y1) (MapType2Select m@@28 y0@@3 y1)))
  7032. :qid |mapAx1:MapType2Select:0|
  7033. :weight 0
  7034. )) (forall ((val@@8 T@U) (m@@29 T@U) (x0@@7 T@U) (x1@@1 T@U) (y0@@4 T@U) (y1@@0 T@U) ) (! (or (= x1@@1 y1@@0) (= (MapType2Select (MapType2Store m@@29 x0@@7 x1@@1 val@@8) y0@@4 y1@@0) (MapType2Select m@@29 y0@@4 y1@@0)))
  7035. :qid |mapAx1:MapType2Select:1|
  7036. :weight 0
  7037. ))) (forall ((val@@9 T@U) (m@@30 T@U) (x0@@8 T@U) (x1@@2 T@U) (y0@@5 T@U) (y1@@1 T@U) ) (! (or true (= (MapType2Select (MapType2Store m@@30 x0@@8 x1@@2 val@@9) y0@@5 y1@@1) (MapType2Select m@@30 y0@@5 y1@@1)))
  7038. :qid |mapAx2:MapType2Select|
  7039. :weight 0
  7040. )))) (forall ((arg0@@127 T@U) (arg1@@56 T@U) (arg2@@15 T@U) (arg3@@0 T@U) (arg4 T@U) ) (! (= (type (Apply1 arg0@@127 arg1@@56 arg2@@15 arg3@@0 arg4)) BoxType)
  7041. :qid |funType:Apply1|
  7042. :pattern ( (Apply1 arg0@@127 arg1@@56 arg2@@15 arg3@@0 arg4))
  7043. ))) (forall ((arg0@@128 T@U) (arg1@@57 T@U) (arg2@@16 T@U) ) (! (= (type (Handle1 arg0@@128 arg1@@57 arg2@@16)) HandleTypeType)
  7044. :qid |funType:Handle1|
  7045. :pattern ( (Handle1 arg0@@128 arg1@@57 arg2@@16))
  7046. ))))
  7047. (assert (forall ((t0@@27 T@U) (t1@@3 T@U) (heap@@4 T@U) (h@@27 T@U) (r@@11 T@U) (rd@@2 T@U) (bx0 T@U) ) (! (=> (and (and (and (and (and (and (= (type t0@@27) TyType) (= (type t1@@3) TyType)) (= (type heap@@4) (MapType0Type refType MapType1Type))) (= (type h@@27) (MapType2Type (MapType0Type refType MapType1Type) BoxType BoxType))) (= (type r@@11) (MapType2Type (MapType0Type refType MapType1Type) BoxType boolType))) (= (type rd@@2) (MapType2Type (MapType0Type refType MapType1Type) BoxType (MapType0Type BoxType boolType)))) (= (type bx0) BoxType)) (= (Apply1 t0@@27 t1@@3 heap@@4 (Handle1 h@@27 r@@11 rd@@2) bx0) (MapType2Select h@@27 heap@@4 bx0)))
  7048. :qid |funwiths.2250:15|
  7049. :skolemid |401|
  7050. :pattern ( (Apply1 t0@@27 t1@@3 heap@@4 (Handle1 h@@27 r@@11 rd@@2) bx0))
  7051. )))
  7052. (assert (forall ((t0@@28 T@U) (t1@@4 T@U) (heap@@5 T@U) (h@@28 T@U) (r@@12 T@U) (rd@@3 T@U) (bx0@@0 T@U) ) (! (=> (and (and (and (and (and (and (and (= (type t0@@28) TyType) (= (type t1@@4) TyType)) (= (type heap@@5) (MapType0Type refType MapType1Type))) (= (type h@@28) (MapType2Type (MapType0Type refType MapType1Type) BoxType BoxType))) (= (type r@@12) (MapType2Type (MapType0Type refType MapType1Type) BoxType boolType))) (= (type rd@@3) (MapType2Type (MapType0Type refType MapType1Type) BoxType (MapType0Type BoxType boolType)))) (= (type bx0@@0) BoxType)) (U_2_bool (MapType2Select r@@12 heap@@5 bx0@@0))) (Requires1 t0@@28 t1@@4 heap@@5 (Handle1 h@@28 r@@12 rd@@3) bx0@@0))
  7053. :qid |funwiths.2260:15|
  7054. :skolemid |402|
  7055. :pattern ( (Requires1 t0@@28 t1@@4 heap@@5 (Handle1 h@@28 r@@12 rd@@3) bx0@@0))
  7056. )))
  7057. (assert (forall ((arg0@@129 T@U) (arg1@@58 T@U) (arg2@@17 T@U) (arg3@@1 T@U) (arg4@@0 T@U) ) (! (= (type (Reads1 arg0@@129 arg1@@58 arg2@@17 arg3@@1 arg4@@0)) (MapType0Type BoxType boolType))
  7058. :qid |funType:Reads1|
  7059. :pattern ( (Reads1 arg0@@129 arg1@@58 arg2@@17 arg3@@1 arg4@@0))
  7060. )))
  7061. (assert (forall ((t0@@29 T@U) (t1@@5 T@U) (heap@@6 T@U) (h@@29 T@U) (r@@13 T@U) (rd@@4 T@U) (bx0@@1 T@U) (bx@@46 T@U) ) (! (=> (and (and (and (and (and (and (and (= (type t0@@29) TyType) (= (type t1@@5) TyType)) (= (type heap@@6) (MapType0Type refType MapType1Type))) (= (type h@@29) (MapType2Type (MapType0Type refType MapType1Type) BoxType BoxType))) (= (type r@@13) (MapType2Type (MapType0Type refType MapType1Type) BoxType boolType))) (= (type rd@@4) (MapType2Type (MapType0Type refType MapType1Type) BoxType (MapType0Type BoxType boolType)))) (= (type bx0@@1) BoxType)) (= (type bx@@46) BoxType)) (and (=> (U_2_bool (MapType0Select (Reads1 t0@@29 t1@@5 heap@@6 (Handle1 h@@29 r@@13 rd@@4) bx0@@1) bx@@46)) (U_2_bool (MapType0Select (MapType2Select rd@@4 heap@@6 bx0@@1) bx@@46))) (=> (U_2_bool (MapType0Select (MapType2Select rd@@4 heap@@6 bx0@@1) bx@@46)) (U_2_bool (MapType0Select (Reads1 t0@@29 t1@@5 heap@@6 (Handle1 h@@29 r@@13 rd@@4) bx0@@1) bx@@46)))))
  7062. :qid |funwiths.2270:15|
  7063. :skolemid |403|
  7064. :pattern ( (MapType0Select (Reads1 t0@@29 t1@@5 heap@@6 (Handle1 h@@29 r@@13 rd@@4) bx0@@1) bx@@46))
  7065. )))
  7066. (assert (forall ((t0@@30 T@U) (t1@@6 T@U) (h0@@6 T@U) (h1@@6 T@U) (f@@15 T@U) (bx0@@2 T@U) ) (! (=> (and (and (and (and (and (and (= (type t0@@30) TyType) (= (type t1@@6) TyType)) (= (type h0@@6) (MapType0Type refType MapType1Type))) (= (type h1@@6) (MapType0Type refType MapType1Type))) (= (type f@@15) HandleTypeType)) (= (type bx0@@2) BoxType)) (and (and (and (and (and ($HeapSucc h0@@6 h1@@6) ($IsGoodHeap h0@@6)) ($IsGoodHeap h1@@6)) ($IsBox bx0@@2 t0@@30)) ($Is f@@15 (Tclass._System.___hFunc1 t0@@30 t1@@6))) (forall ((o@@61 T@U) (fld@@5 T@U) ) (! (let ((a@@87 (FieldTypeInv0 (type fld@@5))))
  7067. (=> (and (and (= (type o@@61) refType) (= (type fld@@5) (FieldType a@@87))) (and (not (= o@@61 null)) (U_2_bool (MapType0Select (Reads1 t0@@30 t1@@6 h0@@6 f@@15 bx0@@2) ($Box o@@61))))) (= (MapType1Select (MapType0Select h0@@6 o@@61) fld@@5) (MapType1Select (MapType0Select h1@@6 o@@61) fld@@5))))
  7068. :qid |funwiths.2301:22|
  7069. :skolemid |404|
  7070. :no-pattern (type o@@61)
  7071. :no-pattern (type fld@@5)
  7072. :no-pattern (U_2_int o@@61)
  7073. :no-pattern (U_2_bool o@@61)
  7074. :no-pattern (U_2_int fld@@5)
  7075. :no-pattern (U_2_bool fld@@5)
  7076. )))) (= (Reads1 t0@@30 t1@@6 h0@@6 f@@15 bx0@@2) (Reads1 t0@@30 t1@@6 h1@@6 f@@15 bx0@@2)))
  7077. :qid |funwiths.2292:15|
  7078. :skolemid |405|
  7079. :pattern ( ($HeapSucc h0@@6 h1@@6) (Reads1 t0@@30 t1@@6 h1@@6 f@@15 bx0@@2))
  7080. )))
  7081. (assert (forall ((t0@@31 T@U) (t1@@7 T@U) (h0@@7 T@U) (h1@@7 T@U) (f@@16 T@U) (bx0@@3 T@U) ) (! (=> (and (and (and (and (and (and (= (type t0@@31) TyType) (= (type t1@@7) TyType)) (= (type h0@@7) (MapType0Type refType MapType1Type))) (= (type h1@@7) (MapType0Type refType MapType1Type))) (= (type f@@16) HandleTypeType)) (= (type bx0@@3) BoxType)) (and (and (and (and (and ($HeapSucc h0@@7 h1@@7) ($IsGoodHeap h0@@7)) ($IsGoodHeap h1@@7)) ($IsBox bx0@@3 t0@@31)) ($Is f@@16 (Tclass._System.___hFunc1 t0@@31 t1@@7))) (forall ((o@@62 T@U) (fld@@6 T@U) ) (! (let ((a@@88 (FieldTypeInv0 (type fld@@6))))
  7082. (=> (and (and (= (type o@@62) refType) (= (type fld@@6) (FieldType a@@88))) (and (not (= o@@62 null)) (U_2_bool (MapType0Select (Reads1 t0@@31 t1@@7 h1@@7 f@@16 bx0@@3) ($Box o@@62))))) (= (MapType1Select (MapType0Select h0@@7 o@@62) fld@@6) (MapType1Select (MapType0Select h1@@7 o@@62) fld@@6))))
  7083. :qid |funwiths.2316:22|
  7084. :skolemid |406|
  7085. :no-pattern (type o@@62)
  7086. :no-pattern (type fld@@6)
  7087. :no-pattern (U_2_int o@@62)
  7088. :no-pattern (U_2_bool o@@62)
  7089. :no-pattern (U_2_int fld@@6)
  7090. :no-pattern (U_2_bool fld@@6)
  7091. )))) (= (Reads1 t0@@31 t1@@7 h0@@7 f@@16 bx0@@3) (Reads1 t0@@31 t1@@7 h1@@7 f@@16 bx0@@3)))
  7092. :qid |funwiths.2307:15|
  7093. :skolemid |407|
  7094. :pattern ( ($HeapSucc h0@@7 h1@@7) (Reads1 t0@@31 t1@@7 h1@@7 f@@16 bx0@@3))
  7095. )))
  7096. (assert (forall ((t0@@32 T@U) (t1@@8 T@U) (h0@@8 T@U) (h1@@8 T@U) (f@@17 T@U) (bx0@@4 T@U) ) (! (=> (and (and (and (and (and (and (= (type t0@@32) TyType) (= (type t1@@8) TyType)) (= (type h0@@8) (MapType0Type refType MapType1Type))) (= (type h1@@8) (MapType0Type refType MapType1Type))) (= (type f@@17) HandleTypeType)) (= (type bx0@@4) BoxType)) (and (and (and (and (and ($HeapSucc h0@@8 h1@@8) ($IsGoodHeap h0@@8)) ($IsGoodHeap h1@@8)) ($IsBox bx0@@4 t0@@32)) ($Is f@@17 (Tclass._System.___hFunc1 t0@@32 t1@@8))) (forall ((o@@63 T@U) (fld@@7 T@U) ) (! (let ((a@@89 (FieldTypeInv0 (type fld@@7))))
  7097. (=> (and (and (= (type o@@63) refType) (= (type fld@@7) (FieldType a@@89))) (and (not (= o@@63 null)) (U_2_bool (MapType0Select (Reads1 t0@@32 t1@@8 h0@@8 f@@17 bx0@@4) ($Box o@@63))))) (= (MapType1Select (MapType0Select h0@@8 o@@63) fld@@7) (MapType1Select (MapType0Select h1@@8 o@@63) fld@@7))))
  7098. :qid |funwiths.2331:22|
  7099. :skolemid |408|
  7100. :no-pattern (type o@@63)
  7101. :no-pattern (type fld@@7)
  7102. :no-pattern (U_2_int o@@63)
  7103. :no-pattern (U_2_bool o@@63)
  7104. :no-pattern (U_2_int fld@@7)
  7105. :no-pattern (U_2_bool fld@@7)
  7106. )))) (and (=> (Requires1 t0@@32 t1@@8 h0@@8 f@@17 bx0@@4) (Requires1 t0@@32 t1@@8 h1@@8 f@@17 bx0@@4)) (=> (Requires1 t0@@32 t1@@8 h1@@8 f@@17 bx0@@4) (Requires1 t0@@32 t1@@8 h0@@8 f@@17 bx0@@4))))
  7107. :qid |funwiths.2322:15|
  7108. :skolemid |409|
  7109. :pattern ( ($HeapSucc h0@@8 h1@@8) (Requires1 t0@@32 t1@@8 h1@@8 f@@17 bx0@@4))
  7110. )))
  7111. (assert (forall ((t0@@33 T@U) (t1@@9 T@U) (h0@@9 T@U) (h1@@9 T@U) (f@@18 T@U) (bx0@@5 T@U) ) (! (=> (and (and (and (and (and (and (= (type t0@@33) TyType) (= (type t1@@9) TyType)) (= (type h0@@9) (MapType0Type refType MapType1Type))) (= (type h1@@9) (MapType0Type refType MapType1Type))) (= (type f@@18) HandleTypeType)) (= (type bx0@@5) BoxType)) (and (and (and (and (and ($HeapSucc h0@@9 h1@@9) ($IsGoodHeap h0@@9)) ($IsGoodHeap h1@@9)) ($IsBox bx0@@5 t0@@33)) ($Is f@@18 (Tclass._System.___hFunc1 t0@@33 t1@@9))) (forall ((o@@64 T@U) (fld@@8 T@U) ) (! (let ((a@@90 (FieldTypeInv0 (type fld@@8))))
  7112. (=> (and (and (= (type o@@64) refType) (= (type fld@@8) (FieldType a@@90))) (and (not (= o@@64 null)) (U_2_bool (MapType0Select (Reads1 t0@@33 t1@@9 h1@@9 f@@18 bx0@@5) ($Box o@@64))))) (= (MapType1Select (MapType0Select h0@@9 o@@64) fld@@8) (MapType1Select (MapType0Select h1@@9 o@@64) fld@@8))))
  7113. :qid |funwiths.2346:22|
  7114. :skolemid |410|
  7115. :no-pattern (type o@@64)
  7116. :no-pattern (type fld@@8)
  7117. :no-pattern (U_2_int o@@64)
  7118. :no-pattern (U_2_bool o@@64)
  7119. :no-pattern (U_2_int fld@@8)
  7120. :no-pattern (U_2_bool fld@@8)
  7121. )))) (and (=> (Requires1 t0@@33 t1@@9 h0@@9 f@@18 bx0@@5) (Requires1 t0@@33 t1@@9 h1@@9 f@@18 bx0@@5)) (=> (Requires1 t0@@33 t1@@9 h1@@9 f@@18 bx0@@5) (Requires1 t0@@33 t1@@9 h0@@9 f@@18 bx0@@5))))
  7122. :qid |funwiths.2337:15|
  7123. :skolemid |411|
  7124. :pattern ( ($HeapSucc h0@@9 h1@@9) (Requires1 t0@@33 t1@@9 h1@@9 f@@18 bx0@@5))
  7125. )))
  7126. (assert (forall ((t0@@34 T@U) (t1@@10 T@U) (h0@@10 T@U) (h1@@10 T@U) (f@@19 T@U) (bx0@@6 T@U) ) (! (=> (and (and (and (and (and (and (= (type t0@@34) TyType) (= (type t1@@10) TyType)) (= (type h0@@10) (MapType0Type refType MapType1Type))) (= (type h1@@10) (MapType0Type refType MapType1Type))) (= (type f@@19) HandleTypeType)) (= (type bx0@@6) BoxType)) (and (and (and (and (and ($HeapSucc h0@@10 h1@@10) ($IsGoodHeap h0@@10)) ($IsGoodHeap h1@@10)) ($IsBox bx0@@6 t0@@34)) ($Is f@@19 (Tclass._System.___hFunc1 t0@@34 t1@@10))) (forall ((o@@65 T@U) (fld@@9 T@U) ) (! (let ((a@@91 (FieldTypeInv0 (type fld@@9))))
  7127. (=> (and (and (= (type o@@65) refType) (= (type fld@@9) (FieldType a@@91))) (and (not (= o@@65 null)) (U_2_bool (MapType0Select (Reads1 t0@@34 t1@@10 h0@@10 f@@19 bx0@@6) ($Box o@@65))))) (= (MapType1Select (MapType0Select h0@@10 o@@65) fld@@9) (MapType1Select (MapType0Select h1@@10 o@@65) fld@@9))))
  7128. :qid |funwiths.2361:22|
  7129. :skolemid |412|
  7130. :no-pattern (type o@@65)
  7131. :no-pattern (type fld@@9)
  7132. :no-pattern (U_2_int o@@65)
  7133. :no-pattern (U_2_bool o@@65)
  7134. :no-pattern (U_2_int fld@@9)
  7135. :no-pattern (U_2_bool fld@@9)
  7136. )))) (= (Apply1 t0@@34 t1@@10 h0@@10 f@@19 bx0@@6) (Apply1 t0@@34 t1@@10 h1@@10 f@@19 bx0@@6)))
  7137. :qid |funwiths.2352:15|
  7138. :skolemid |413|
  7139. :pattern ( ($HeapSucc h0@@10 h1@@10) (Apply1 t0@@34 t1@@10 h1@@10 f@@19 bx0@@6))
  7140. )))
  7141. (assert (forall ((t0@@35 T@U) (t1@@11 T@U) (h0@@11 T@U) (h1@@11 T@U) (f@@20 T@U) (bx0@@7 T@U) ) (! (=> (and (and (and (and (and (and (= (type t0@@35) TyType) (= (type t1@@11) TyType)) (= (type h0@@11) (MapType0Type refType MapType1Type))) (= (type h1@@11) (MapType0Type refType MapType1Type))) (= (type f@@20) HandleTypeType)) (= (type bx0@@7) BoxType)) (and (and (and (and (and ($HeapSucc h0@@11 h1@@11) ($IsGoodHeap h0@@11)) ($IsGoodHeap h1@@11)) ($IsBox bx0@@7 t0@@35)) ($Is f@@20 (Tclass._System.___hFunc1 t0@@35 t1@@11))) (forall ((o@@66 T@U) (fld@@10 T@U) ) (! (let ((a@@92 (FieldTypeInv0 (type fld@@10))))
  7142. (=> (and (and (= (type o@@66) refType) (= (type fld@@10) (FieldType a@@92))) (and (not (= o@@66 null)) (U_2_bool (MapType0Select (Reads1 t0@@35 t1@@11 h1@@11 f@@20 bx0@@7) ($Box o@@66))))) (= (MapType1Select (MapType0Select h0@@11 o@@66) fld@@10) (MapType1Select (MapType0Select h1@@11 o@@66) fld@@10))))
  7143. :qid |funwiths.2376:22|
  7144. :skolemid |414|
  7145. :no-pattern (type o@@66)
  7146. :no-pattern (type fld@@10)
  7147. :no-pattern (U_2_int o@@66)
  7148. :no-pattern (U_2_bool o@@66)
  7149. :no-pattern (U_2_int fld@@10)
  7150. :no-pattern (U_2_bool fld@@10)
  7151. )))) (= (Apply1 t0@@35 t1@@11 h0@@11 f@@20 bx0@@7) (Apply1 t0@@35 t1@@11 h1@@11 f@@20 bx0@@7)))
  7152. :qid |funwiths.2367:15|
  7153. :skolemid |415|
  7154. :pattern ( ($HeapSucc h0@@11 h1@@11) (Apply1 t0@@35 t1@@11 h1@@11 f@@20 bx0@@7))
  7155. )))
  7156. (assert (forall ((t0@@36 T@U) (t1@@12 T@U) (heap@@7 T@U) (f@@21 T@U) (bx0@@8 T@U) ) (! (=> (and (and (and (and (and (= (type t0@@36) TyType) (= (type t1@@12) TyType)) (= (type heap@@7) (MapType0Type refType MapType1Type))) (= (type f@@21) HandleTypeType)) (= (type bx0@@8) BoxType)) (and (and ($IsGoodHeap heap@@7) ($IsBox bx0@@8 t0@@36)) ($Is f@@21 (Tclass._System.___hFunc1 t0@@36 t1@@12)))) (and (=> (|Set#Equal| (Reads1 t0@@36 t1@@12 $OneHeap f@@21 bx0@@8) (|Set#Empty| BoxType)) (|Set#Equal| (Reads1 t0@@36 t1@@12 heap@@7 f@@21 bx0@@8) (|Set#Empty| BoxType))) (=> (|Set#Equal| (Reads1 t0@@36 t1@@12 heap@@7 f@@21 bx0@@8) (|Set#Empty| BoxType)) (|Set#Equal| (Reads1 t0@@36 t1@@12 $OneHeap f@@21 bx0@@8) (|Set#Empty| BoxType)))))
  7157. :qid |funwiths.2382:15|
  7158. :skolemid |416|
  7159. :pattern ( (Reads1 t0@@36 t1@@12 $OneHeap f@@21 bx0@@8) ($IsGoodHeap heap@@7))
  7160. :pattern ( (Reads1 t0@@36 t1@@12 heap@@7 f@@21 bx0@@8))
  7161. )))
  7162. (assert (forall ((t0@@37 T@U) (t1@@13 T@U) (heap@@8 T@U) (f@@22 T@U) (bx0@@9 T@U) ) (! (=> (and (and (and (and (and (= (type t0@@37) TyType) (= (type t1@@13) TyType)) (= (type heap@@8) (MapType0Type refType MapType1Type))) (= (type f@@22) HandleTypeType)) (= (type bx0@@9) BoxType)) (and (and (and ($IsGoodHeap heap@@8) ($IsBox bx0@@9 t0@@37)) ($Is f@@22 (Tclass._System.___hFunc1 t0@@37 t1@@13))) (|Set#Equal| (Reads1 t0@@37 t1@@13 $OneHeap f@@22 bx0@@9) (|Set#Empty| BoxType)))) (and (=> (Requires1 t0@@37 t1@@13 $OneHeap f@@22 bx0@@9) (Requires1 t0@@37 t1@@13 heap@@8 f@@22 bx0@@9)) (=> (Requires1 t0@@37 t1@@13 heap@@8 f@@22 bx0@@9) (Requires1 t0@@37 t1@@13 $OneHeap f@@22 bx0@@9))))
  7163. :qid |funwiths.2390:15|
  7164. :skolemid |417|
  7165. :pattern ( (Requires1 t0@@37 t1@@13 $OneHeap f@@22 bx0@@9) ($IsGoodHeap heap@@8))
  7166. :pattern ( (Requires1 t0@@37 t1@@13 heap@@8 f@@22 bx0@@9))
  7167. )))
  7168. (assert (forall ((f@@23 T@U) (t0@@38 T@U) (t1@@14 T@U) ) (! (=> (and (and (= (type f@@23) HandleTypeType) (= (type t0@@38) TyType)) (= (type t1@@14) TyType)) (and (=> ($Is f@@23 (Tclass._System.___hFunc1 t0@@38 t1@@14)) (forall ((h@@30 T@U) (bx0@@10 T@U) ) (! (=> (and (= (type h@@30) (MapType0Type refType MapType1Type)) (= (type bx0@@10) BoxType)) (=> (and (and ($IsGoodHeap h@@30) ($IsBox bx0@@10 t0@@38)) (Requires1 t0@@38 t1@@14 h@@30 f@@23 bx0@@10)) ($IsBox (Apply1 t0@@38 t1@@14 h@@30 f@@23 bx0@@10) t1@@14)))
  7169. :qid |funwiths.2403:19|
  7170. :skolemid |418|
  7171. :pattern ( (Apply1 t0@@38 t1@@14 h@@30 f@@23 bx0@@10))
  7172. ))) (=> (forall ((h@@31 T@U) (bx0@@11 T@U) ) (! (=> (and (= (type h@@31) (MapType0Type refType MapType1Type)) (= (type bx0@@11) BoxType)) (=> (and (and ($IsGoodHeap h@@31) ($IsBox bx0@@11 t0@@38)) (Requires1 t0@@38 t1@@14 h@@31 f@@23 bx0@@11)) ($IsBox (Apply1 t0@@38 t1@@14 h@@31 f@@23 bx0@@11) t1@@14)))
  7173. :qid |funwiths.2403:19|
  7174. :skolemid |418|
  7175. :pattern ( (Apply1 t0@@38 t1@@14 h@@31 f@@23 bx0@@11))
  7176. )) ($Is f@@23 (Tclass._System.___hFunc1 t0@@38 t1@@14)))))
  7177. :qid |funwiths.2400:15|
  7178. :skolemid |419|
  7179. :pattern ( ($Is f@@23 (Tclass._System.___hFunc1 t0@@38 t1@@14)))
  7180. )))
  7181. (assert (forall ((f@@24 T@U) (t0@@39 T@U) (t1@@15 T@U) (u0@@0 T@U) (u1 T@U) ) (! (=> (and (and (and (and (and (= (type f@@24) HandleTypeType) (= (type t0@@39) TyType)) (= (type t1@@15) TyType)) (= (type u0@@0) TyType)) (= (type u1) TyType)) (and (and ($Is f@@24 (Tclass._System.___hFunc1 t0@@39 t1@@15)) (forall ((bx@@47 T@U) ) (! (=> (and (= (type bx@@47) BoxType) ($IsBox bx@@47 u0@@0)) ($IsBox bx@@47 t0@@39))
  7182. :qid |funwiths.2411:19|
  7183. :skolemid |420|
  7184. :pattern ( ($IsBox bx@@47 u0@@0))
  7185. :pattern ( ($IsBox bx@@47 t0@@39))
  7186. ))) (forall ((bx@@48 T@U) ) (! (=> (and (= (type bx@@48) BoxType) ($IsBox bx@@48 t1@@15)) ($IsBox bx@@48 u1))
  7187. :qid |funwiths.2414:19|
  7188. :skolemid |421|
  7189. :pattern ( ($IsBox bx@@48 t1@@15))
  7190. :pattern ( ($IsBox bx@@48 u1))
  7191. )))) ($Is f@@24 (Tclass._System.___hFunc1 u0@@0 u1)))
  7192. :qid |funwiths.2408:15|
  7193. :skolemid |422|
  7194. :pattern ( ($Is f@@24 (Tclass._System.___hFunc1 t0@@39 t1@@15)) ($Is f@@24 (Tclass._System.___hFunc1 u0@@0 u1)))
  7195. )))
  7196. (assert (forall ((f@@25 T@U) (t0@@40 T@U) (t1@@16 T@U) (h@@32 T@U) ) (! (=> (and (and (and (and (= (type f@@25) HandleTypeType) (= (type t0@@40) TyType)) (= (type t1@@16) TyType)) (= (type h@@32) (MapType0Type refType MapType1Type))) ($IsGoodHeap h@@32)) (and (=> ($IsAlloc f@@25 (Tclass._System.___hFunc1 t0@@40 t1@@16) h@@32) (forall ((bx0@@12 T@U) ) (! (=> (= (type bx0@@12) BoxType) (=> (and (and ($IsBox bx0@@12 t0@@40) ($IsAllocBox bx0@@12 t0@@40 h@@32)) (Requires1 t0@@40 t1@@16 h@@32 f@@25 bx0@@12)) (forall ((r@@14 T@U) ) (! (=> (= (type r@@14) refType) (=> (and (not (= r@@14 null)) (U_2_bool (MapType0Select (Reads1 t0@@40 t1@@16 h@@32 f@@25 bx0@@12) ($Box r@@14)))) (U_2_bool (MapType1Select (MapType0Select h@@32 r@@14) alloc))))
  7197. :qid |funwiths.2426:24|
  7198. :skolemid |423|
  7199. :pattern ( (MapType0Select (Reads1 t0@@40 t1@@16 h@@32 f@@25 bx0@@12) ($Box r@@14)))
  7200. ))))
  7201. :qid |funwiths.2423:21|
  7202. :skolemid |424|
  7203. :pattern ( (Apply1 t0@@40 t1@@16 h@@32 f@@25 bx0@@12))
  7204. :pattern ( (Reads1 t0@@40 t1@@16 h@@32 f@@25 bx0@@12))
  7205. ))) (=> (forall ((bx0@@13 T@U) ) (! (=> (= (type bx0@@13) BoxType) (=> (and (and ($IsBox bx0@@13 t0@@40) ($IsAllocBox bx0@@13 t0@@40 h@@32)) (Requires1 t0@@40 t1@@16 h@@32 f@@25 bx0@@13)) (forall ((r@@15 T@U) ) (! (=> (= (type r@@15) refType) (=> (and (not (= r@@15 null)) (U_2_bool (MapType0Select (Reads1 t0@@40 t1@@16 h@@32 f@@25 bx0@@13) ($Box r@@15)))) (U_2_bool (MapType1Select (MapType0Select h@@32 r@@15) alloc))))
  7206. :qid |funwiths.2426:24|
  7207. :skolemid |423|
  7208. :pattern ( (MapType0Select (Reads1 t0@@40 t1@@16 h@@32 f@@25 bx0@@13) ($Box r@@15)))
  7209. ))))
  7210. :qid |funwiths.2423:21|
  7211. :skolemid |424|
  7212. :pattern ( (Apply1 t0@@40 t1@@16 h@@32 f@@25 bx0@@13))
  7213. :pattern ( (Reads1 t0@@40 t1@@16 h@@32 f@@25 bx0@@13))
  7214. )) ($IsAlloc f@@25 (Tclass._System.___hFunc1 t0@@40 t1@@16) h@@32))))
  7215. :qid |funwiths.2419:15|
  7216. :skolemid |425|
  7217. :pattern ( ($IsAlloc f@@25 (Tclass._System.___hFunc1 t0@@40 t1@@16) h@@32))
  7218. )))
  7219. (assert (forall ((f@@26 T@U) (t0@@41 T@U) (t1@@17 T@U) (h@@33 T@U) ) (! (=> (and (and (and (and (= (type f@@26) HandleTypeType) (= (type t0@@41) TyType)) (= (type t1@@17) TyType)) (= (type h@@33) (MapType0Type refType MapType1Type))) (and ($IsGoodHeap h@@33) ($IsAlloc f@@26 (Tclass._System.___hFunc1 t0@@41 t1@@17) h@@33))) (forall ((bx0@@14 T@U) ) (! (=> (= (type bx0@@14) BoxType) (=> (and ($IsAllocBox bx0@@14 t0@@41 h@@33) (Requires1 t0@@41 t1@@17 h@@33 f@@26 bx0@@14)) ($IsAllocBox (Apply1 t0@@41 t1@@17 h@@33 f@@26 bx0@@14) t1@@17 h@@33)))
  7220. :qid |funwiths.2433:18|
  7221. :skolemid |426|
  7222. :pattern ( (Apply1 t0@@41 t1@@17 h@@33 f@@26 bx0@@14))
  7223. )))
  7224. :qid |funwiths.2430:15|
  7225. :skolemid |427|
  7226. :pattern ( ($IsAlloc f@@26 (Tclass._System.___hFunc1 t0@@41 t1@@17) h@@33))
  7227. )))
  7228. (assert (forall ((arg0@@130 T@U) (arg1@@59 T@U) ) (! (= (type (Tclass._System.___hPartialFunc1 arg0@@130 arg1@@59)) TyType)
  7229. :qid |funType:Tclass._System.___hPartialFunc1|
  7230. :pattern ( (Tclass._System.___hPartialFunc1 arg0@@130 arg1@@59))
  7231. )))
  7232. (assert (forall ((|#$T0@@12| T@U) (|#$R@@16| T@U) ) (! (=> (and (= (type |#$T0@@12|) TyType) (= (type |#$R@@16|) TyType)) (= (Tag (Tclass._System.___hPartialFunc1 |#$T0@@12| |#$R@@16|)) Tagclass._System.___hPartialFunc1))
  7233. :qid |funwiths.2441:15|
  7234. :skolemid |428|
  7235. :pattern ( (Tclass._System.___hPartialFunc1 |#$T0@@12| |#$R@@16|))
  7236. )))
  7237. (assert (forall ((arg0@@131 T@U) ) (! (= (type (Tclass._System.___hPartialFunc1_0 arg0@@131)) TyType)
  7238. :qid |funType:Tclass._System.___hPartialFunc1_0|
  7239. :pattern ( (Tclass._System.___hPartialFunc1_0 arg0@@131))
  7240. )))
  7241. (assert (forall ((|#$T0@@13| T@U) (|#$R@@17| T@U) ) (! (=> (and (= (type |#$T0@@13|) TyType) (= (type |#$R@@17|) TyType)) (= (Tclass._System.___hPartialFunc1_0 (Tclass._System.___hPartialFunc1 |#$T0@@13| |#$R@@17|)) |#$T0@@13|))
  7242. :qid |funwiths.2449:15|
  7243. :skolemid |429|
  7244. :pattern ( (Tclass._System.___hPartialFunc1 |#$T0@@13| |#$R@@17|))
  7245. )))
  7246. (assert (forall ((arg0@@132 T@U) ) (! (= (type (Tclass._System.___hPartialFunc1_1 arg0@@132)) TyType)
  7247. :qid |funType:Tclass._System.___hPartialFunc1_1|
  7248. :pattern ( (Tclass._System.___hPartialFunc1_1 arg0@@132))
  7249. )))
  7250. (assert (forall ((|#$T0@@14| T@U) (|#$R@@18| T@U) ) (! (=> (and (= (type |#$T0@@14|) TyType) (= (type |#$R@@18|) TyType)) (= (Tclass._System.___hPartialFunc1_1 (Tclass._System.___hPartialFunc1 |#$T0@@14| |#$R@@18|)) |#$R@@18|))
  7251. :qid |funwiths.2457:15|
  7252. :skolemid |430|
  7253. :pattern ( (Tclass._System.___hPartialFunc1 |#$T0@@14| |#$R@@18|))
  7254. )))
  7255. (assert (forall ((|#$T0@@15| T@U) (|#$R@@19| T@U) (bx@@49 T@U) ) (! (=> (and (and (and (= (type |#$T0@@15|) TyType) (= (type |#$R@@19|) TyType)) (= (type bx@@49) BoxType)) ($IsBox bx@@49 (Tclass._System.___hPartialFunc1 |#$T0@@15| |#$R@@19|))) (and (= ($Box ($Unbox HandleTypeType bx@@49)) bx@@49) ($Is ($Unbox HandleTypeType bx@@49) (Tclass._System.___hPartialFunc1 |#$T0@@15| |#$R@@19|))))
  7256. :qid |funwiths.2465:15|
  7257. :skolemid |431|
  7258. :pattern ( ($IsBox bx@@49 (Tclass._System.___hPartialFunc1 |#$T0@@15| |#$R@@19|)))
  7259. )))
  7260. (assert (forall ((|#$T0@@16| T@U) (|#$R@@20| T@U) (|f#0@@3| T@U) ) (! (=> (and (and (= (type |#$T0@@16|) TyType) (= (type |#$R@@20|) TyType)) (= (type |f#0@@3|) HandleTypeType)) (and (=> ($Is |f#0@@3| (Tclass._System.___hPartialFunc1 |#$T0@@16| |#$R@@20|)) (and ($Is |f#0@@3| (Tclass._System.___hFunc1 |#$T0@@16| |#$R@@20|)) (forall ((|x0#0| T@U) ) (! (=> (and (= (type |x0#0|) BoxType) ($IsBox |x0#0| |#$T0@@16|)) (|Set#Equal| (Reads1 |#$T0@@16| |#$R@@20| $OneHeap |f#0@@3| |x0#0|) (|Set#Empty| BoxType)))
  7261. :qid |funwiths.2476:19|
  7262. :skolemid |432|
  7263. :no-pattern (type |x0#0|)
  7264. :no-pattern (U_2_int |x0#0|)
  7265. :no-pattern (U_2_bool |x0#0|)
  7266. )))) (=> (and ($Is |f#0@@3| (Tclass._System.___hFunc1 |#$T0@@16| |#$R@@20|)) (forall ((|x0#0@@0| T@U) ) (! (=> (and (= (type |x0#0@@0|) BoxType) ($IsBox |x0#0@@0| |#$T0@@16|)) (|Set#Equal| (Reads1 |#$T0@@16| |#$R@@20| $OneHeap |f#0@@3| |x0#0@@0|) (|Set#Empty| BoxType)))
  7267. :qid |funwiths.2476:19|
  7268. :skolemid |432|
  7269. :no-pattern (type |x0#0@@0|)
  7270. :no-pattern (U_2_int |x0#0@@0|)
  7271. :no-pattern (U_2_bool |x0#0@@0|)
  7272. ))) ($Is |f#0@@3| (Tclass._System.___hPartialFunc1 |#$T0@@16| |#$R@@20|)))))
  7273. :qid |funwiths.2472:15|
  7274. :skolemid |433|
  7275. :pattern ( ($Is |f#0@@3| (Tclass._System.___hPartialFunc1 |#$T0@@16| |#$R@@20|)))
  7276. )))
  7277. (assert (forall ((|#$T0@@17| T@U) (|#$R@@21| T@U) (|f#0@@4| T@U) ($h@@12 T@U) ) (! (=> (and (and (and (= (type |#$T0@@17|) TyType) (= (type |#$R@@21|) TyType)) (= (type |f#0@@4|) HandleTypeType)) (= (type $h@@12) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc |f#0@@4| (Tclass._System.___hPartialFunc1 |#$T0@@17| |#$R@@21|) $h@@12) ($IsAlloc |f#0@@4| (Tclass._System.___hFunc1 |#$T0@@17| |#$R@@21|) $h@@12)) (=> ($IsAlloc |f#0@@4| (Tclass._System.___hFunc1 |#$T0@@17| |#$R@@21|) $h@@12) ($IsAlloc |f#0@@4| (Tclass._System.___hPartialFunc1 |#$T0@@17| |#$R@@21|) $h@@12))))
  7278. :qid |funwiths.2481:15|
  7279. :skolemid |434|
  7280. :pattern ( ($IsAlloc |f#0@@4| (Tclass._System.___hPartialFunc1 |#$T0@@17| |#$R@@21|) $h@@12))
  7281. )))
  7282. (assert (forall ((arg0@@133 T@U) (arg1@@60 T@U) ) (! (= (type (Tclass._System.___hTotalFunc1 arg0@@133 arg1@@60)) TyType)
  7283. :qid |funType:Tclass._System.___hTotalFunc1|
  7284. :pattern ( (Tclass._System.___hTotalFunc1 arg0@@133 arg1@@60))
  7285. )))
  7286. (assert (forall ((|#$T0@@18| T@U) (|#$R@@22| T@U) ) (! (=> (and (= (type |#$T0@@18|) TyType) (= (type |#$R@@22|) TyType)) (= (Tag (Tclass._System.___hTotalFunc1 |#$T0@@18| |#$R@@22|)) Tagclass._System.___hTotalFunc1))
  7287. :qid |funwiths.2489:15|
  7288. :skolemid |435|
  7289. :pattern ( (Tclass._System.___hTotalFunc1 |#$T0@@18| |#$R@@22|))
  7290. )))
  7291. (assert (forall ((arg0@@134 T@U) ) (! (= (type (Tclass._System.___hTotalFunc1_0 arg0@@134)) TyType)
  7292. :qid |funType:Tclass._System.___hTotalFunc1_0|
  7293. :pattern ( (Tclass._System.___hTotalFunc1_0 arg0@@134))
  7294. )))
  7295. (assert (forall ((|#$T0@@19| T@U) (|#$R@@23| T@U) ) (! (=> (and (= (type |#$T0@@19|) TyType) (= (type |#$R@@23|) TyType)) (= (Tclass._System.___hTotalFunc1_0 (Tclass._System.___hTotalFunc1 |#$T0@@19| |#$R@@23|)) |#$T0@@19|))
  7296. :qid |funwiths.2496:15|
  7297. :skolemid |436|
  7298. :pattern ( (Tclass._System.___hTotalFunc1 |#$T0@@19| |#$R@@23|))
  7299. )))
  7300. (assert (forall ((arg0@@135 T@U) ) (! (= (type (Tclass._System.___hTotalFunc1_1 arg0@@135)) TyType)
  7301. :qid |funType:Tclass._System.___hTotalFunc1_1|
  7302. :pattern ( (Tclass._System.___hTotalFunc1_1 arg0@@135))
  7303. )))
  7304. (assert (forall ((|#$T0@@20| T@U) (|#$R@@24| T@U) ) (! (=> (and (= (type |#$T0@@20|) TyType) (= (type |#$R@@24|) TyType)) (= (Tclass._System.___hTotalFunc1_1 (Tclass._System.___hTotalFunc1 |#$T0@@20| |#$R@@24|)) |#$R@@24|))
  7305. :qid |funwiths.2504:15|
  7306. :skolemid |437|
  7307. :pattern ( (Tclass._System.___hTotalFunc1 |#$T0@@20| |#$R@@24|))
  7308. )))
  7309. (assert (forall ((|#$T0@@21| T@U) (|#$R@@25| T@U) (bx@@50 T@U) ) (! (=> (and (and (and (= (type |#$T0@@21|) TyType) (= (type |#$R@@25|) TyType)) (= (type bx@@50) BoxType)) ($IsBox bx@@50 (Tclass._System.___hTotalFunc1 |#$T0@@21| |#$R@@25|))) (and (= ($Box ($Unbox HandleTypeType bx@@50)) bx@@50) ($Is ($Unbox HandleTypeType bx@@50) (Tclass._System.___hTotalFunc1 |#$T0@@21| |#$R@@25|))))
  7310. :qid |funwiths.2511:15|
  7311. :skolemid |438|
  7312. :pattern ( ($IsBox bx@@50 (Tclass._System.___hTotalFunc1 |#$T0@@21| |#$R@@25|)))
  7313. )))
  7314. (assert (forall ((|#$T0@@22| T@U) (|#$R@@26| T@U) (|f#0@@5| T@U) ) (! (=> (and (and (= (type |#$T0@@22|) TyType) (= (type |#$R@@26|) TyType)) (= (type |f#0@@5|) HandleTypeType)) (and (=> ($Is |f#0@@5| (Tclass._System.___hTotalFunc1 |#$T0@@22| |#$R@@26|)) (and ($Is |f#0@@5| (Tclass._System.___hPartialFunc1 |#$T0@@22| |#$R@@26|)) (forall ((|x0#0@@1| T@U) ) (! (=> (and (= (type |x0#0@@1|) BoxType) ($IsBox |x0#0@@1| |#$T0@@22|)) (Requires1 |#$T0@@22| |#$R@@26| $OneHeap |f#0@@5| |x0#0@@1|))
  7315. :qid |funwiths.2522:19|
  7316. :skolemid |439|
  7317. :no-pattern (type |x0#0@@1|)
  7318. :no-pattern (U_2_int |x0#0@@1|)
  7319. :no-pattern (U_2_bool |x0#0@@1|)
  7320. )))) (=> (and ($Is |f#0@@5| (Tclass._System.___hPartialFunc1 |#$T0@@22| |#$R@@26|)) (forall ((|x0#0@@2| T@U) ) (! (=> (and (= (type |x0#0@@2|) BoxType) ($IsBox |x0#0@@2| |#$T0@@22|)) (Requires1 |#$T0@@22| |#$R@@26| $OneHeap |f#0@@5| |x0#0@@2|))
  7321. :qid |funwiths.2522:19|
  7322. :skolemid |439|
  7323. :no-pattern (type |x0#0@@2|)
  7324. :no-pattern (U_2_int |x0#0@@2|)
  7325. :no-pattern (U_2_bool |x0#0@@2|)
  7326. ))) ($Is |f#0@@5| (Tclass._System.___hTotalFunc1 |#$T0@@22| |#$R@@26|)))))
  7327. :qid |funwiths.2518:15|
  7328. :skolemid |440|
  7329. :pattern ( ($Is |f#0@@5| (Tclass._System.___hTotalFunc1 |#$T0@@22| |#$R@@26|)))
  7330. )))
  7331. (assert (forall ((|#$T0@@23| T@U) (|#$R@@27| T@U) (|f#0@@6| T@U) ($h@@13 T@U) ) (! (=> (and (and (and (= (type |#$T0@@23|) TyType) (= (type |#$R@@27|) TyType)) (= (type |f#0@@6|) HandleTypeType)) (= (type $h@@13) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc |f#0@@6| (Tclass._System.___hTotalFunc1 |#$T0@@23| |#$R@@27|) $h@@13) ($IsAlloc |f#0@@6| (Tclass._System.___hPartialFunc1 |#$T0@@23| |#$R@@27|) $h@@13)) (=> ($IsAlloc |f#0@@6| (Tclass._System.___hPartialFunc1 |#$T0@@23| |#$R@@27|) $h@@13) ($IsAlloc |f#0@@6| (Tclass._System.___hTotalFunc1 |#$T0@@23| |#$R@@27|) $h@@13))))
  7332. :qid |funwiths.2526:15|
  7333. :skolemid |441|
  7334. :pattern ( ($IsAlloc |f#0@@6| (Tclass._System.___hTotalFunc1 |#$T0@@23| |#$R@@27|) $h@@13))
  7335. )))
  7336. (assert (= (type |#_System._tuple#0._#Make0|) DatatypeTypeType))
  7337. (assert (= (DatatypeCtorId |#_System._tuple#0._#Make0|) |##_System._tuple#0._#Make0|))
  7338. (assert (forall ((d@@6 T@U) ) (! (=> (= (type d@@6) DatatypeTypeType) (and (=> (_System.Tuple0.___hMake0_q d@@6) (= (DatatypeCtorId d@@6) |##_System._tuple#0._#Make0|)) (=> (= (DatatypeCtorId d@@6) |##_System._tuple#0._#Make0|) (_System.Tuple0.___hMake0_q d@@6))))
  7339. :qid |funwiths.2544:15|
  7340. :skolemid |442|
  7341. :pattern ( (_System.Tuple0.___hMake0_q d@@6))
  7342. )))
  7343. (assert (forall ((d@@7 T@U) ) (! (=> (and (= (type d@@7) DatatypeTypeType) (_System.Tuple0.___hMake0_q d@@7)) (= d@@7 |#_System._tuple#0._#Make0|))
  7344. :qid |funwiths.2550:15|
  7345. :skolemid |443|
  7346. :pattern ( (_System.Tuple0.___hMake0_q d@@7))
  7347. )))
  7348. (assert (= (type Tclass._System.Tuple0) TyType))
  7349. (assert (= (Tag Tclass._System.Tuple0) Tagclass._System.Tuple0))
  7350. (assert (forall ((bx@@51 T@U) ) (! (=> (and (= (type bx@@51) BoxType) ($IsBox bx@@51 Tclass._System.Tuple0)) (and (= ($Box ($Unbox DatatypeTypeType bx@@51)) bx@@51) ($Is ($Unbox DatatypeTypeType bx@@51) Tclass._System.Tuple0)))
  7351. :qid |funwiths.2562:15|
  7352. :skolemid |444|
  7353. :pattern ( ($IsBox bx@@51 Tclass._System.Tuple0))
  7354. )))
  7355. (assert ($Is |#_System._tuple#0._#Make0| Tclass._System.Tuple0))
  7356. (assert (forall (($h@@14 T@U) ) (! (=> (and (= (type $h@@14) (MapType0Type refType MapType1Type)) ($IsGoodHeap $h@@14)) ($IsAlloc |#_System._tuple#0._#Make0| Tclass._System.Tuple0 $h@@14))
  7357. :qid |funwiths.2572:15|
  7358. :skolemid |445|
  7359. :pattern ( ($IsAlloc |#_System._tuple#0._#Make0| Tclass._System.Tuple0 $h@@14))
  7360. )))
  7361. (assert (= |#_System._tuple#0._#Make0| (Lit |#_System._tuple#0._#Make0|)))
  7362. (assert (forall ((d@@8 T@U) ) (! (=> (and (= (type d@@8) DatatypeTypeType) (|$IsA#_System.Tuple0| d@@8)) (_System.Tuple0.___hMake0_q d@@8))
  7363. :qid |funwiths.2584:15|
  7364. :skolemid |446|
  7365. :pattern ( (|$IsA#_System.Tuple0| d@@8))
  7366. )))
  7367. (assert (forall ((d@@9 T@U) ) (! (=> (and (= (type d@@9) DatatypeTypeType) ($Is d@@9 Tclass._System.Tuple0)) (_System.Tuple0.___hMake0_q d@@9))
  7368. :qid |funwiths.2589:15|
  7369. :skolemid |447|
  7370. :pattern ( (_System.Tuple0.___hMake0_q d@@9) ($Is d@@9 Tclass._System.Tuple0))
  7371. )))
  7372. (assert (forall ((a@@93 T@U) (b@@60 T@U) ) (! (=> (and (and (= (type a@@93) DatatypeTypeType) (= (type b@@60) DatatypeTypeType)) true) (and (=> (|_System.Tuple0#Equal| a@@93 b@@60) true) (=> true (|_System.Tuple0#Equal| a@@93 b@@60))))
  7373. :qid |funwiths.2597:15|
  7374. :skolemid |448|
  7375. :pattern ( (|_System.Tuple0#Equal| a@@93 b@@60))
  7376. )))
  7377. (assert (forall ((a@@94 T@U) (b@@61 T@U) ) (! (=> (and (= (type a@@94) DatatypeTypeType) (= (type b@@61) DatatypeTypeType)) (and (=> (|_System.Tuple0#Equal| a@@94 b@@61) (= a@@94 b@@61)) (=> (= a@@94 b@@61) (|_System.Tuple0#Equal| a@@94 b@@61))))
  7378. :qid |funwiths.2602:15|
  7379. :skolemid |449|
  7380. :pattern ( (|_System.Tuple0#Equal| a@@94 b@@61))
  7381. )))
  7382. (assert (= (type Tclass._module.__default) TyType))
  7383. (assert (= (Tag Tclass._module.__default) Tagclass._module.__default))
  7384. (assert (forall ((bx@@52 T@U) ) (! (=> (and (= (type bx@@52) BoxType) ($IsBox bx@@52 Tclass._module.__default)) (and (= ($Box ($Unbox refType bx@@52)) bx@@52) ($Is ($Unbox refType bx@@52) Tclass._module.__default)))
  7385. :qid |funwiths.2616:15|
  7386. :skolemid |450|
  7387. :pattern ( ($IsBox bx@@52 Tclass._module.__default))
  7388. )))
  7389. (assert (forall (($o@@7 T@U) ) (! (=> (= (type $o@@7) refType) (and (=> ($Is $o@@7 Tclass._module.__default) (or (= $o@@7 null) (= (dtype $o@@7) Tclass._module.__default))) (=> (or (= $o@@7 null) (= (dtype $o@@7) Tclass._module.__default)) ($Is $o@@7 Tclass._module.__default))))
  7390. :qid |funwiths.2622:15|
  7391. :skolemid |451|
  7392. :pattern ( ($Is $o@@7 Tclass._module.__default))
  7393. )))
  7394. (assert (forall (($o@@8 T@U) ($h@@15 T@U) ) (! (=> (and (= (type $o@@8) refType) (= (type $h@@15) (MapType0Type refType MapType1Type))) (and (=> ($IsAlloc $o@@8 Tclass._module.__default $h@@15) (or (= $o@@8 null) (U_2_bool (MapType1Select (MapType0Select $h@@15 $o@@8) alloc)))) (=> (or (= $o@@8 null) (U_2_bool (MapType1Select (MapType0Select $h@@15 $o@@8) alloc))) ($IsAlloc $o@@8 Tclass._module.__default $h@@15))))
  7395. :qid |funwiths.2628:15|
  7396. :skolemid |452|
  7397. :pattern ( ($IsAlloc $o@@8 Tclass._module.__default $h@@15))
  7398. )))
  7399. (assert (and (and (and (and (and (and (and (forall ((arg0@@136 T@T) (arg1@@61 T@T) ) (! (= (Ctor (MapType3Type arg0@@136 arg1@@61)) 21)
  7400. :qid |ctor:MapType3Type|
  7401. )) (forall ((arg0@@137 T@T) (arg1@@62 T@T) ) (! (= (MapType3TypeInv0 (MapType3Type arg0@@137 arg1@@62)) arg0@@137)
  7402. :qid |typeInv:MapType3TypeInv0|
  7403. :pattern ( (MapType3Type arg0@@137 arg1@@62))
  7404. ))) (forall ((arg0@@138 T@T) (arg1@@63 T@T) ) (! (= (MapType3TypeInv1 (MapType3Type arg0@@138 arg1@@63)) arg1@@63)
  7405. :qid |typeInv:MapType3TypeInv1|
  7406. :pattern ( (MapType3Type arg0@@138 arg1@@63))
  7407. ))) (forall ((arg0@@139 T@U) (arg1@@64 T@U) (arg2@@18 T@U) ) (! (let ((aVar1@@3 (MapType3TypeInv1 (type arg0@@139))))
  7408. (= (type (MapType3Select arg0@@139 arg1@@64 arg2@@18)) aVar1@@3))
  7409. :qid |funType:MapType3Select|
  7410. :pattern ( (MapType3Select arg0@@139 arg1@@64 arg2@@18))
  7411. ))) (forall ((arg0@@140 T@U) (arg1@@65 T@U) (arg2@@19 T@U) (arg3@@2 T@U) ) (! (let ((aVar1@@4 (type arg3@@2)))
  7412. (let ((aVar0@@1 (type arg1@@65)))
  7413. (= (type (MapType3Store arg0@@140 arg1@@65 arg2@@19 arg3@@2)) (MapType3Type aVar0@@1 aVar1@@4))))
  7414. :qid |funType:MapType3Store|
  7415. :pattern ( (MapType3Store arg0@@140 arg1@@65 arg2@@19 arg3@@2))
  7416. ))) (forall ((m@@31 T@U) (x0@@9 T@U) (x1@@3 T@U) (val@@10 T@U) ) (! (let ((aVar1@@5 (MapType3TypeInv1 (type m@@31))))
  7417. (=> (= (type val@@10) aVar1@@5) (= (MapType3Select (MapType3Store m@@31 x0@@9 x1@@3 val@@10) x0@@9 x1@@3) val@@10)))
  7418. :qid |mapAx0:MapType3Select|
  7419. :weight 0
  7420. ))) (and (and (forall ((val@@11 T@U) (m@@32 T@U) (x0@@10 T@U) (x1@@4 T@U) (y0@@6 T@U) (y1@@2 T@U) ) (! (or (= x0@@10 y0@@6) (= (MapType3Select (MapType3Store m@@32 x0@@10 x1@@4 val@@11) y0@@6 y1@@2) (MapType3Select m@@32 y0@@6 y1@@2)))
  7421. :qid |mapAx1:MapType3Select:0|
  7422. :weight 0
  7423. )) (forall ((val@@12 T@U) (m@@33 T@U) (x0@@11 T@U) (x1@@5 T@U) (y0@@7 T@U) (y1@@3 T@U) ) (! (or (= x1@@5 y1@@3) (= (MapType3Select (MapType3Store m@@33 x0@@11 x1@@5 val@@12) y0@@7 y1@@3) (MapType3Select m@@33 y0@@7 y1@@3)))
  7424. :qid |mapAx1:MapType3Select:1|
  7425. :weight 0
  7426. ))) (forall ((val@@13 T@U) (m@@34 T@U) (x0@@12 T@U) (x1@@6 T@U) (y0@@8 T@U) (y1@@4 T@U) ) (! (or true (= (MapType3Select (MapType3Store m@@34 x0@@12 x1@@6 val@@13) y0@@8 y1@@4) (MapType3Select m@@34 y0@@8 y1@@4)))
  7427. :qid |mapAx2:MapType3Select|
  7428. :weight 0
  7429. )))) (forall ((arg0@@141 T@U) (arg1@@66 T@U) (arg2@@20 T@U) (arg3@@3 T@U) ) (! (= (type (|lambda#0| arg0@@141 arg1@@66 arg2@@20 arg3@@3)) (MapType3Type refType boolType))
  7430. :qid |funType:lambda#0|
  7431. :pattern ( (|lambda#0| arg0@@141 arg1@@66 arg2@@20 arg3@@3))
  7432. ))))
  7433. (assert (forall (($o@@9 T@U) ($f T@U) (|a#0| T@U) (null@@0 T@U) ($Heap T@U) (alloc@@0 T@U) ) (! (let ((alpha@@6 (FieldTypeInv0 (type $f))))
  7434. (=> (and (and (and (and (and (= (type $o@@9) refType) (= (type $f) (FieldType alpha@@6))) (= (type |a#0|) refType)) (= (type null@@0) refType)) (= (type $Heap) (MapType0Type refType MapType1Type))) (= (type alloc@@0) (FieldType boolType))) (= (U_2_bool (MapType3Select (|lambda#0| |a#0| null@@0 $Heap alloc@@0) $o@@9 $f)) (=> (and (not (= $o@@9 null@@0)) (U_2_bool (MapType1Select (MapType0Select $Heap $o@@9) alloc@@0))) (= $o@@9 |a#0|)))))
  7435. :qid |funwiths.2651:31|
  7436. :skolemid |458|
  7437. :pattern ( (MapType3Select (|lambda#0| |a#0| null@@0 $Heap alloc@@0) $o@@9 $f))
  7438. )))
  7439. (assert (forall ((arg0@@142 T@U) (arg1@@67 T@U) (arg2@@21 T@U) (arg3@@4 T@U) ) (! (= (type (|lambda#1| arg0@@142 arg1@@67 arg2@@21 arg3@@4)) (MapType3Type refType boolType))
  7440. :qid |funType:lambda#1|
  7441. :pattern ( (|lambda#1| arg0@@142 arg1@@67 arg2@@21 arg3@@4))
  7442. )))
  7443. (assert (forall (($o@@10 T@U) ($f@@0 T@U) (|a#0@@0| T@U) (null@@1 T@U) ($Heap@@0 T@U) (alloc@@1 T@U) ) (! (let ((alpha@@7 (FieldTypeInv0 (type $f@@0))))
  7444. (=> (and (and (and (and (and (= (type $o@@10) refType) (= (type $f@@0) (FieldType alpha@@7))) (= (type |a#0@@0|) refType)) (= (type null@@1) refType)) (= (type $Heap@@0) (MapType0Type refType MapType1Type))) (= (type alloc@@1) (FieldType boolType))) (= (U_2_bool (MapType3Select (|lambda#1| |a#0@@0| null@@1 $Heap@@0 alloc@@1) $o@@10 $f@@0)) (=> (and (not (= $o@@10 null@@1)) (U_2_bool (MapType1Select (MapType0Select $Heap@@0 $o@@10) alloc@@1))) (= $o@@10 |a#0@@0|)))))
  7445. :qid |funwiths.2743:31|
  7446. :skolemid |459|
  7447. :pattern ( (MapType3Select (|lambda#1| |a#0@@0| null@@1 $Heap@@0 alloc@@1) $o@@10 $f@@0))
  7448. )))
  7449. ; Valid
  7450.  
  7451. (declare-fun |s#0| () T@U)
  7452. (declare-fun |a#0@@1| () T@U)
  7453. (declare-fun $_Frame@0 () T@U)
  7454. (declare-fun |$rhs#0_0@1| () T@U)
  7455. (declare-fun $Heap@1 () T@U)
  7456. (declare-fun $Heap@0 () T@U)
  7457. (declare-fun $Heap@@1 () T@U)
  7458. (declare-fun $Heap@2 () T@U)
  7459. (declare-fun |$rhs#0_0@0| () T@U)
  7460. (declare-fun _module._default.seqIntoArray$A () T@U)
  7461. (declare-fun |$rhs#0_0| () T@U)
  7462. (declare-fun %lbl%+0 () Bool)
  7463. (declare-fun |index#0| () Int)
  7464. (declare-fun |i#0@0| () Int)
  7465. (declare-fun %lbl%@1 () Bool)
  7466. (declare-fun %lbl%@2 () Bool)
  7467. (declare-fun %lbl%@3 () Bool)
  7468. (declare-fun %lbl%@4 () Bool)
  7469. (declare-fun %lbl%@5 () Bool)
  7470. (declare-fun %lbl%@6 () Bool)
  7471. (declare-fun %lbl%@7 () Bool)
  7472. (declare-fun %lbl%@8 () Bool)
  7473. (declare-fun %lbl%+9 () Bool)
  7474. (declare-fun %lbl%+10 () Bool)
  7475. (declare-fun %lbl%@11 () Bool)
  7476. (declare-fun %lbl%+12 () Bool)
  7477. (declare-fun %lbl%+13 () Bool)
  7478. (declare-fun %lbl%+14 () Bool)
  7479. (declare-fun |$w$loop#0@0| () Bool)
  7480. (declare-fun %lbl%+15 () Bool)
  7481. (declare-fun %lbl%@16 () Bool)
  7482. (declare-fun %lbl%+17 () Bool)
  7483. (declare-fun %lbl%+18 () Bool)
  7484. (declare-fun %lbl%+19 () Bool)
  7485. (declare-fun |$decr$loop#00@1| () Int)
  7486. (declare-fun %lbl%@20 () Bool)
  7487. (declare-fun %lbl%@21 () Bool)
  7488. (declare-fun %lbl%@22 () Bool)
  7489. (declare-fun %lbl%@23 () Bool)
  7490. (declare-fun |i#0@1| () Int)
  7491. (declare-fun %lbl%@24 () Bool)
  7492. (declare-fun %lbl%@25 () Bool)
  7493. (declare-fun %lbl%@26 () Bool)
  7494. (declare-fun %lbl%@27 () Bool)
  7495. (declare-fun %lbl%@28 () Bool)
  7496. (declare-fun %lbl%@29 () Bool)
  7497. (declare-fun %lbl%@30 () Bool)
  7498. (declare-fun %lbl%@31 () Bool)
  7499. (declare-fun %lbl%@32 () Bool)
  7500. (declare-fun %lbl%@33 () Bool)
  7501. (declare-fun %lbl%@34 () Bool)
  7502. (declare-fun %lbl%@35 () Bool)
  7503. (declare-fun %lbl%@36 () Bool)
  7504. (declare-fun %lbl%@37 () Bool)
  7505. (declare-fun %lbl%@38 () Bool)
  7506. (declare-fun %lbl%+39 () Bool)
  7507. (declare-fun %lbl%+40 () Bool)
  7508. (declare-fun %lbl%+41 () Bool)
  7509. (declare-fun $IsHeapAnchor (T@U) Bool)
  7510. (declare-fun |$decr_init$loop#00@0| () Int)
  7511. (declare-fun %lbl%+42 () Bool)
  7512. (declare-fun %lbl%@43 () Bool)
  7513. (declare-fun %lbl%@44 () Bool)
  7514. (declare-fun %lbl%@45 () Bool)
  7515. (declare-fun %lbl%@46 () Bool)
  7516. (declare-fun %lbl%+47 () Bool)
  7517. (declare-fun $FunctionContextHeight () Int)
  7518. (assert (and (and (and (and (and (and (and (and (and (and (= (type |s#0|) (SeqType BoxType)) (= (type |a#0@@1|) refType)) (= (type $_Frame@0) (MapType3Type refType boolType))) (= (type |$rhs#0_0@1|) BoxType)) (= (type $Heap@1) (MapType0Type refType MapType1Type))) (= (type $Heap@0) (MapType0Type refType MapType1Type))) (= (type $Heap@@1) (MapType0Type refType MapType1Type))) (= (type $Heap@2) (MapType0Type refType MapType1Type))) (= (type |$rhs#0_0@0|) BoxType)) (= (type _module._default.seqIntoArray$A) TyType)) (= (type |$rhs#0_0|) BoxType)))
  7519. (push 1)
  7520. (set-info :boogie-vc-id Impl$$_module.__default.seqIntoArray)
  7521. (assert (not
  7522. (let ((anon6_correct (=> (! (and %lbl%+0 true) :lblpos +0) (=> (and (and (<= |index#0| |i#0@0|) (<= |i#0@0| (+ |index#0| (|Seq#Length| |s#0|)))) (<= (+ |index#0| (|Seq#Length| |s#0|)) (_System.array.Length |a#0@@1|))) (and (! (or %lbl%@1 (not (= |a#0@@1| null))) :lblneg @1) (=> (not (= |a#0@@1| null)) (and (! (or %lbl%@2 (not (= |a#0@@1| null))) :lblneg @2) (=> (not (= |a#0@@1| null)) (and (! (or %lbl%@3 (and (<= 0 (LitInt 0)) (<= (LitInt 0) (_System.array.Length |a#0@@1|)))) :lblneg @3) (and (! (or %lbl%@4 (and (<= (LitInt 0) |index#0|) (<= |index#0| (_System.array.Length |a#0@@1|)))) :lblneg @4) (and (! (or %lbl%@5 (and (<= 0 (LitInt 0)) (<= (LitInt 0) (|Seq#Length| |s#0|)))) :lblneg @5) (and (! (or %lbl%@6 (and (<= (LitInt 0) (- |i#0@0| |index#0|)) (<= (- |i#0@0| |index#0|) (|Seq#Length| |s#0|)))) :lblneg @6) (and (! (or %lbl%@7 (not (= |a#0@@1| null))) :lblneg @7) (=> (not (= |a#0@@1| null)) (! (or %lbl%@8 (and (<= 0 |i#0@0|) (<= |i#0@0| (_System.array.Length |a#0@@1|)))) :lblneg @8)))))))))))))))
  7523. (let ((anon13_Else_correct (=> (! (and %lbl%+9 true) :lblpos +9) (=> (not (and (<= |index#0| |i#0@0|) (<= |i#0@0| (+ |index#0| (|Seq#Length| |s#0|))))) anon6_correct))))
  7524. (let ((anon13_Then_correct (=> (! (and %lbl%+10 true) :lblpos +10) (=> (and (<= |index#0| |i#0@0|) (<= |i#0@0| (+ |index#0| (|Seq#Length| |s#0|)))) (and (! (or %lbl%@11 (not (= |a#0@@1| null))) :lblneg @11) anon6_correct)))))
  7525. (let ((anon12_Else_correct (=> (! (and %lbl%+12 true) :lblpos +12) (=> (< |i#0@0| |index#0|) (and anon13_Then_correct anon13_Else_correct)))))
  7526. (let ((anon12_Then_correct (=> (! (and %lbl%+13 true) :lblpos +13) (=> (<= |index#0| |i#0@0|) (and anon13_Then_correct anon13_Else_correct)))))
  7527. (let ((anon11_Then_correct (=> (! (and %lbl%+14 true) :lblpos +14) (=> (not |$w$loop#0@0|) (and anon12_Then_correct anon12_Else_correct)))))
  7528. (let ((GeneratedUnifiedExit_correct (=> (! (and %lbl%+15 true) :lblpos +15) (! (or %lbl%@16 (|Seq#Equal| (|Seq#FromArray| $Heap@2 |a#0@@1|) (|Seq#Append| (|Seq#Append| (|Seq#Drop| (|Seq#Take| (|Seq#FromArray| $Heap@@1 |a#0@@1|) |index#0|) (LitInt 0)) |s#0|) (|Seq#Drop| (|Seq#FromArray| $Heap@@1 |a#0@@1|) (+ |index#0| (|Seq#Length| |s#0|)))))) :lblneg @16))))
  7529. (let ((anon14_Then_correct (=> (! (and %lbl%+17 true) :lblpos +17) (=> (and (<= (+ |index#0| (|Seq#Length| |s#0|)) |i#0@0|) (= $Heap@2 $Heap@0)) GeneratedUnifiedExit_correct))))
  7530. (let ((anon10_LoopDone_correct (=> (! (and %lbl%+18 true) :lblpos +18) (=> (and (not true) (= $Heap@2 $Heap@0)) GeneratedUnifiedExit_correct))))
  7531. (let ((anon14_Else_correct (=> (! (and %lbl%+19 true) :lblpos +19) (=> (and (< |i#0@0| (+ |index#0| (|Seq#Length| |s#0|))) (= |$decr$loop#00@1| (- (+ |index#0| (|Seq#Length| |s#0|)) |i#0@0|))) (and (! (or %lbl%@20 (not (= |a#0@@1| null))) :lblneg @20) (=> (not (= |a#0@@1| null)) (and (! (or %lbl%@21 (and (<= 0 |i#0@0|) (< |i#0@0| (_System.array.Length |a#0@@1|)))) :lblneg @21) (=> (and (<= 0 |i#0@0|) (< |i#0@0| (_System.array.Length |a#0@@1|))) (and (! (or %lbl%@22 (U_2_bool (MapType3Select $_Frame@0 |a#0@@1| (IndexField |i#0@0|)))) :lblneg @22) (=> (U_2_bool (MapType3Select $_Frame@0 |a#0@@1| (IndexField |i#0@0|))) (and (! (or %lbl%@23 (and (<= 0 (- |i#0@0| |index#0|)) (< (- |i#0@0| |index#0|) (|Seq#Length| |s#0|)))) :lblneg @23) (=> (and (<= 0 (- |i#0@0| |index#0|)) (< (- |i#0@0| |index#0|) (|Seq#Length| |s#0|))) (=> (and (and (= |$rhs#0_0@1| (|Seq#Index| |s#0| (- |i#0@0| |index#0|))) (= $Heap@1 (MapType0Store $Heap@0 |a#0@@1| (MapType1Store (MapType0Select $Heap@0 |a#0@@1|) (IndexField |i#0@0|) |$rhs#0_0@1|)))) (and ($IsGoodHeap $Heap@1) (= |i#0@1| (+ |i#0@0| 1)))) (and (! (or %lbl%@24 (not (= |a#0@@1| null))) :lblneg @24) (=> (not (= |a#0@@1| null)) (and (! (or %lbl%@25 (not (= |a#0@@1| null))) :lblneg @25) (=> (not (= |a#0@@1| null)) (and (! (or %lbl%@26 (and (<= 0 (LitInt 0)) (<= (LitInt 0) (_System.array.Length |a#0@@1|)))) :lblneg @26) (and (! (or %lbl%@27 (and (<= (LitInt 0) |index#0|) (<= |index#0| (_System.array.Length |a#0@@1|)))) :lblneg @27) (and (! (or %lbl%@28 (and (<= 0 (LitInt 0)) (<= (LitInt 0) (|Seq#Length| |s#0|)))) :lblneg @28) (and (! (or %lbl%@29 (and (<= (LitInt 0) (- |i#0@1| |index#0|)) (<= (- |i#0@1| |index#0|) (|Seq#Length| |s#0|)))) :lblneg @29) (and (! (or %lbl%@30 (not (= |a#0@@1| null))) :lblneg @30) (=> (not (= |a#0@@1| null)) (and (! (or %lbl%@31 (and (<= 0 |i#0@1|) (<= |i#0@1| (_System.array.Length |a#0@@1|)))) :lblneg @31) (and (! (or %lbl%@32 (|Seq#Equal| (|Seq#FromArray| $Heap@1 |a#0@@1|) (|Seq#Append| (|Seq#Append| (|Seq#Drop| (|Seq#Take| (|Seq#FromArray| $Heap@@1 |a#0@@1|) |index#0|) (LitInt 0)) (|Seq#Drop| (|Seq#Take| |s#0| (- |i#0@1| |index#0|)) (LitInt 0))) (|Seq#Drop| (|Seq#FromArray| $Heap@@1 |a#0@@1|) |i#0@1|)))) :lblneg @32) (=> (|Seq#Equal| (|Seq#FromArray| $Heap@1 |a#0@@1|) (|Seq#Append| (|Seq#Append| (|Seq#Drop| (|Seq#Take| (|Seq#FromArray| $Heap@@1 |a#0@@1|) |index#0|) (LitInt 0)) (|Seq#Drop| (|Seq#Take| |s#0| (- |i#0@1| |index#0|)) (LitInt 0))) (|Seq#Drop| (|Seq#FromArray| $Heap@@1 |a#0@@1|) |i#0@1|))) (and (! (or %lbl%@33 (or (<= 0 |$decr$loop#00@1|) (= (- (+ |index#0| (|Seq#Length| |s#0|)) |i#0@1|) |$decr$loop#00@1|))) :lblneg @33) (=> (or (<= 0 |$decr$loop#00@1|) (= (- (+ |index#0| (|Seq#Length| |s#0|)) |i#0@1|) |$decr$loop#00@1|)) (and (! (or %lbl%@34 (< (- (+ |index#0| (|Seq#Length| |s#0|)) |i#0@1|) |$decr$loop#00@1|)) :lblneg @34) (=> (< (- (+ |index#0| (|Seq#Length| |s#0|)) |i#0@1|) |$decr$loop#00@1|) (and (! (or %lbl%@35 (=> |$w$loop#0@0| (<= |index#0| |i#0@1|))) :lblneg @35) (=> (=> |$w$loop#0@0| (<= |index#0| |i#0@1|)) (and (! (or %lbl%@36 (=> |$w$loop#0@0| (<= |i#0@1| (+ |index#0| (|Seq#Length| |s#0|))))) :lblneg @36) (=> (=> |$w$loop#0@0| (<= |i#0@1| (+ |index#0| (|Seq#Length| |s#0|)))) (and (! (or %lbl%@37 (=> |$w$loop#0@0| (<= (+ |index#0| (|Seq#Length| |s#0|)) (_System.array.Length |a#0@@1|)))) :lblneg @37) (=> (=> |$w$loop#0@0| (<= (+ |index#0| (|Seq#Length| |s#0|)) (_System.array.Length |a#0@@1|))) (! (or %lbl%@38 (=> |$w$loop#0@0| (|Seq#Equal| (|Seq#FromArray| $Heap@1 |a#0@@1|) (|Seq#Append| (|Seq#Append| (|Seq#Drop| (|Seq#Take| (|Seq#FromArray| $Heap@@1 |a#0@@1|) |index#0|) (LitInt 0)) (|Seq#Drop| (|Seq#Take| |s#0| (- |i#0@1| |index#0|)) (LitInt 0))) (|Seq#Drop| (|Seq#FromArray| $Heap@@1 |a#0@@1|) |i#0@1|))))) :lblneg @38)))))))))))))))))))))))))))))))))))))
  7532. (let ((anon11_Else_correct (=> (! (and %lbl%+39 true) :lblpos +39) (=> |$w$loop#0@0| (and anon14_Then_correct anon14_Else_correct)))))
  7533. (let ((anon10_LoopBody_correct (=> (! (and %lbl%+40 true) :lblpos +40) (and anon11_Then_correct anon11_Else_correct))))
  7534. (let ((anon10_LoopHead_correct (=> (! (and %lbl%+41 true) :lblpos +41) (=> ($IsBox |$rhs#0_0@0| _module._default.seqIntoArray$A) (=> (and ($IsGoodHeap $Heap@0) ($IsHeapAnchor $Heap@0)) (=> (and (and (not false) (=> |$w$loop#0@0| true)) (and (=> |$w$loop#0@0| (<= |index#0| |i#0@0|)) (=> |$w$loop#0@0| (<= |i#0@0| (+ |index#0| (|Seq#Length| |s#0|)))))) (=> (and (and (and (=> |$w$loop#0@0| (<= (+ |index#0| (|Seq#Length| |s#0|)) (_System.array.Length |a#0@@1|))) (=> |$w$loop#0@0| true)) (and (=> |$w$loop#0@0| (|Seq#Equal| (|Seq#FromArray| $Heap@0 |a#0@@1|) (|Seq#Append| (|Seq#Append| (|Seq#Drop| (|Seq#Take| (|Seq#FromArray| $Heap@@1 |a#0@@1|) |index#0|) (LitInt 0)) (|Seq#Drop| (|Seq#Take| |s#0| (- |i#0@0| |index#0|)) (LitInt 0))) (|Seq#Drop| (|Seq#FromArray| $Heap@@1 |a#0@@1|) |i#0@0|)))) (forall (($o@@11 T@U) ) (! (=> (= (type $o@@11) refType) (=> (and (not (= $o@@11 null)) (U_2_bool (MapType1Select (MapType0Select $Heap@@1 $o@@11) alloc))) (or (= (MapType0Select $Heap@0 $o@@11) (MapType0Select $Heap@@1 $o@@11)) (= $o@@11 |a#0@@1|))))
  7535. :qid |funwiths.2768:30|
  7536. :skolemid |456|
  7537. :pattern ( (MapType0Select $Heap@0 $o@@11))
  7538. )))) (and (and ($HeapSucc $Heap@@1 $Heap@0) (forall (($o@@12 T@U) ($f@@1 T@U) ) (! (let ((alpha@@8 (FieldTypeInv0 (type $f@@1))))
  7539. (=> (and (and (= (type $o@@12) refType) (= (type $f@@1) (FieldType alpha@@8))) (and (not (= $o@@12 null)) (U_2_bool (MapType1Select (MapType0Select $Heap@@1 $o@@12) alloc)))) (or (= (MapType1Select (MapType0Select $Heap@0 $o@@12) $f@@1) (MapType1Select (MapType0Select $Heap@@1 $o@@12) $f@@1)) (U_2_bool (MapType3Select $_Frame@0 $o@@12 $f@@1)))))
  7540. :qid |funwiths.2773:37|
  7541. :skolemid |457|
  7542. :pattern ( (MapType1Select (MapType0Select $Heap@0 $o@@12) $f@@1))
  7543. ))) (and (<= (- (+ |index#0| (|Seq#Length| |s#0|)) |i#0@0|) |$decr_init$loop#00@0|) (=> (= (- (+ |index#0| (|Seq#Length| |s#0|)) |i#0@0|) |$decr_init$loop#00@0|) true)))) (and anon10_LoopDone_correct anon10_LoopBody_correct))))))))
  7544. (let ((anon0_correct (=> (! (and %lbl%+42 true) :lblpos +42) (=> (and (= $_Frame@0 (|lambda#1| |a#0@@1| null $Heap@@1 alloc)) (= |$decr_init$loop#00@0| (- (+ |index#0| (|Seq#Length| |s#0|)) |index#0|))) (and (! (or %lbl%@43 (=> |$w$loop#0@0| (<= |index#0| |index#0|))) :lblneg @43) (=> (=> |$w$loop#0@0| (<= |index#0| |index#0|)) (and (! (or %lbl%@44 (=> |$w$loop#0@0| (<= |index#0| (+ |index#0| (|Seq#Length| |s#0|))))) :lblneg @44) (=> (=> |$w$loop#0@0| (<= |index#0| (+ |index#0| (|Seq#Length| |s#0|)))) (and (! (or %lbl%@45 (=> |$w$loop#0@0| (<= (+ |index#0| (|Seq#Length| |s#0|)) (_System.array.Length |a#0@@1|)))) :lblneg @45) (=> (=> |$w$loop#0@0| (<= (+ |index#0| (|Seq#Length| |s#0|)) (_System.array.Length |a#0@@1|))) (and (! (or %lbl%@46 (=> |$w$loop#0@0| (|Seq#Equal| (|Seq#FromArray| $Heap@@1 |a#0@@1|) (|Seq#Append| (|Seq#Append| (|Seq#Drop| (|Seq#Take| (|Seq#FromArray| $Heap@@1 |a#0@@1|) |index#0|) (LitInt 0)) (|Seq#Drop| (|Seq#Take| |s#0| (- |index#0| |index#0|)) (LitInt 0))) (|Seq#Drop| (|Seq#FromArray| $Heap@@1 |a#0@@1|) |index#0|))))) :lblneg @46) (=> (=> |$w$loop#0@0| (|Seq#Equal| (|Seq#FromArray| $Heap@@1 |a#0@@1|) (|Seq#Append| (|Seq#Append| (|Seq#Drop| (|Seq#Take| (|Seq#FromArray| $Heap@@1 |a#0@@1|) |index#0|) (LitInt 0)) (|Seq#Drop| (|Seq#Take| |s#0| (- |index#0| |index#0|)) (LitInt 0))) (|Seq#Drop| (|Seq#FromArray| $Heap@@1 |a#0@@1|) |index#0|)))) anon10_LoopHead_correct))))))))))))
  7545. (let ((PreconditionGeneratedEntry_correct (=> (! (and %lbl%+47 true) :lblpos +47) (=> (and ($IsGoodHeap $Heap@@1) ($IsHeapAnchor $Heap@@1)) (=> (and (and (and ($Is |s#0| (TSeq _module._default.seqIntoArray$A)) ($IsAlloc |s#0| (TSeq _module._default.seqIntoArray$A) $Heap@@1)) (and ($Is |a#0@@1| (Tclass._System.array _module._default.seqIntoArray$A)) ($IsAlloc |a#0@@1| (Tclass._System.array _module._default.seqIntoArray$A) $Heap@@1))) (and (and (<= (LitInt 0) |index#0|) ($IsBox |$rhs#0_0| _module._default.seqIntoArray$A)) (and (= 2 $FunctionContextHeight) (<= (+ |index#0| (|Seq#Length| |s#0|)) (_System.array.Length |a#0@@1|))))) anon0_correct)))))
  7546. PreconditionGeneratedEntry_correct)))))))))))))))
  7547. ))
  7548. (check-sat)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement