github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library@v0.2.0/Seq/Seq.go (about) 1 // Package Seq 2 // Dafny module Seq compiled into Go 3 4 package Seq 5 6 import ( 7 os "os" 8 9 m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" 10 m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" 11 m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" 12 m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" 13 m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" 14 _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" 15 ) 16 17 var _ = os.Args 18 var _ _dafny.Dummy__ 19 var _ m__System.Dummy__ 20 var _ m_Wrappers.Dummy__ 21 var _ m_Relations.Dummy__ 22 var _ m_Seq_MergeSort.Dummy__ 23 var _ m__Math.Dummy__ 24 25 type Dummy__ struct{} 26 27 // Definition of class Default__ 28 type Default__ struct { 29 dummy byte 30 } 31 32 func New_Default___() *Default__ { 33 _this := Default__{} 34 35 return &_this 36 } 37 38 type CompanionStruct_Default___ struct { 39 } 40 41 var Companion_Default___ = CompanionStruct_Default___{} 42 43 func (_this *Default__) Equals(other *Default__) bool { 44 return _this == other 45 } 46 47 func (_this *Default__) EqualsGeneric(x interface{}) bool { 48 other, ok := x.(*Default__) 49 return ok && _this.Equals(other) 50 } 51 52 func (*Default__) String() string { 53 return "Seq.Default__" 54 } 55 func (_this *Default__) ParentTraits_() []*_dafny.TraitID { 56 return [](*_dafny.TraitID){} 57 } 58 59 var _ _dafny.TraitOffspring = &Default__{} 60 61 func (_static *CompanionStruct_Default___) First(xs _dafny.Sequence) interface{} { 62 return (xs).Select(0).(interface{}) 63 } 64 func (_static *CompanionStruct_Default___) DropFirst(xs _dafny.Sequence) _dafny.Sequence { 65 return (xs).Drop(1) 66 } 67 func (_static *CompanionStruct_Default___) Last(xs _dafny.Sequence) interface{} { 68 return (xs).Select(((_dafny.IntOfUint32((xs).Cardinality())).Minus(_dafny.One)).Uint32()).(interface{}) 69 } 70 func (_static *CompanionStruct_Default___) DropLast(xs _dafny.Sequence) _dafny.Sequence { 71 return (xs).Take(((_dafny.IntOfUint32((xs).Cardinality())).Minus(_dafny.One)).Uint32()) 72 } 73 func (_static *CompanionStruct_Default___) ToArray(xs _dafny.Sequence) _dafny.Array { 74 var a _dafny.Array = _dafny.NewArrayWithValue(nil, _dafny.IntOf(0)) 75 _ = a 76 var _len0_0 _dafny.Int = _dafny.IntOfUint32((xs).Cardinality()) 77 _ = _len0_0 78 var _nw0 _dafny.Array 79 _ = _nw0 80 if _len0_0.Cmp(_dafny.Zero) == 0 { 81 _nw0 = _dafny.NewArray(_len0_0) 82 } else { 83 var _init0 func(_dafny.Int) interface{} = (func(_0_xs _dafny.Sequence) func(_dafny.Int) interface{} { 84 return func(_1_i _dafny.Int) interface{} { 85 return (_0_xs).Select((_1_i).Uint32()).(interface{}) 86 } 87 })(xs) 88 _ = _init0 89 var _element0_0 = _init0(_dafny.Zero) 90 _ = _element0_0 91 _nw0 = _dafny.NewArrayFromExample(_element0_0, nil, _len0_0) 92 (_nw0).ArraySet1(_element0_0, 0) 93 var _nativeLen0_0 = (_len0_0).Int() 94 _ = _nativeLen0_0 95 for _i0_0 := 1; _i0_0 < _nativeLen0_0; _i0_0++ { 96 (_nw0).ArraySet1(_init0(_dafny.IntOf(_i0_0)), _i0_0) 97 } 98 } 99 a = _nw0 100 return a 101 } 102 func (_static *CompanionStruct_Default___) ToSet(xs _dafny.Sequence) _dafny.Set { 103 return func() _dafny.Set { 104 var _coll0 = _dafny.NewBuilder() 105 _ = _coll0 106 for _iter0 := _dafny.Iterate((xs).Elements()); ; { 107 _compr_0, _ok0 := _iter0() 108 if !_ok0 { 109 break 110 } 111 var _0_x interface{} 112 _0_x = interface{}(_compr_0).(interface{}) 113 if _dafny.Companion_Sequence_.Contains(xs, _0_x) { 114 _coll0.Add(_0_x) 115 } 116 } 117 return _coll0.ToSet() 118 }() 119 } 120 func (_static *CompanionStruct_Default___) IndexOf(xs _dafny.Sequence, v interface{}) _dafny.Int { 121 var _0___accumulator _dafny.Int = _dafny.Zero 122 _ = _0___accumulator 123 goto TAIL_CALL_START 124 TAIL_CALL_START: 125 if _dafny.AreEqual((xs).Select(0).(interface{}), v) { 126 return (_dafny.Zero).Plus(_0___accumulator) 127 } else { 128 _0___accumulator = (_0___accumulator).Plus(_dafny.One) 129 var _in0 _dafny.Sequence = (xs).Drop(1) 130 _ = _in0 131 var _in1 interface{} = v 132 _ = _in1 133 xs = _in0 134 v = _in1 135 goto TAIL_CALL_START 136 } 137 } 138 func (_static *CompanionStruct_Default___) IndexOfOption(xs _dafny.Sequence, v interface{}) m_Wrappers.Option { 139 if (_dafny.IntOfUint32((xs).Cardinality())).Sign() == 0 { 140 return m_Wrappers.Companion_Option_.Create_None_() 141 } else if _dafny.AreEqual((xs).Select(0).(interface{}), v) { 142 return m_Wrappers.Companion_Option_.Create_Some_(_dafny.Zero) 143 } else { 144 var _0_o_k m_Wrappers.Option = Companion_Default___.IndexOfOption((xs).Drop(1), v) 145 _ = _0_o_k 146 if (_0_o_k).Is_Some() { 147 return m_Wrappers.Companion_Option_.Create_Some_(((_0_o_k).Dtor_value().(_dafny.Int)).Plus(_dafny.One)) 148 } else { 149 return m_Wrappers.Companion_Option_.Create_None_() 150 } 151 } 152 } 153 func (_static *CompanionStruct_Default___) LastIndexOf(xs _dafny.Sequence, v interface{}) _dafny.Int { 154 goto TAIL_CALL_START 155 TAIL_CALL_START: 156 if _dafny.AreEqual((xs).Select(((_dafny.IntOfUint32((xs).Cardinality())).Minus(_dafny.One)).Uint32()).(interface{}), v) { 157 return (_dafny.IntOfUint32((xs).Cardinality())).Minus(_dafny.One) 158 } else { 159 var _in0 _dafny.Sequence = (xs).Take(((_dafny.IntOfUint32((xs).Cardinality())).Minus(_dafny.One)).Uint32()) 160 _ = _in0 161 var _in1 interface{} = v 162 _ = _in1 163 xs = _in0 164 v = _in1 165 goto TAIL_CALL_START 166 } 167 } 168 func (_static *CompanionStruct_Default___) LastIndexOfOption(xs _dafny.Sequence, v interface{}) m_Wrappers.Option { 169 goto TAIL_CALL_START 170 TAIL_CALL_START: 171 if (_dafny.IntOfUint32((xs).Cardinality())).Sign() == 0 { 172 return m_Wrappers.Companion_Option_.Create_None_() 173 } else if _dafny.AreEqual((xs).Select(((_dafny.IntOfUint32((xs).Cardinality())).Minus(_dafny.One)).Uint32()).(interface{}), v) { 174 return m_Wrappers.Companion_Option_.Create_Some_((_dafny.IntOfUint32((xs).Cardinality())).Minus(_dafny.One)) 175 } else { 176 var _in0 _dafny.Sequence = (xs).Take(((_dafny.IntOfUint32((xs).Cardinality())).Minus(_dafny.One)).Uint32()) 177 _ = _in0 178 var _in1 interface{} = v 179 _ = _in1 180 xs = _in0 181 v = _in1 182 goto TAIL_CALL_START 183 } 184 } 185 func (_static *CompanionStruct_Default___) Remove(xs _dafny.Sequence, pos _dafny.Int) _dafny.Sequence { 186 return _dafny.Companion_Sequence_.Concatenate((xs).Take((pos).Uint32()), (xs).Drop(((pos).Plus(_dafny.One)).Uint32())) 187 } 188 func (_static *CompanionStruct_Default___) RemoveValue(xs _dafny.Sequence, v interface{}) _dafny.Sequence { 189 if !_dafny.Companion_Sequence_.Contains(xs, v) { 190 return xs 191 } else { 192 var _0_i _dafny.Int = Companion_Default___.IndexOf(xs, v) 193 _ = _0_i 194 return _dafny.Companion_Sequence_.Concatenate((xs).Take((_0_i).Uint32()), (xs).Drop(((_0_i).Plus(_dafny.One)).Uint32())) 195 } 196 } 197 func (_static *CompanionStruct_Default___) Insert(xs _dafny.Sequence, a interface{}, pos _dafny.Int) _dafny.Sequence { 198 return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate((xs).Take((pos).Uint32()), _dafny.SeqOf(a)), (xs).Drop((pos).Uint32())) 199 } 200 func (_static *CompanionStruct_Default___) Reverse(xs _dafny.Sequence) _dafny.Sequence { 201 var _0___accumulator _dafny.Sequence = _dafny.SeqOf() 202 _ = _0___accumulator 203 goto TAIL_CALL_START 204 TAIL_CALL_START: 205 if _dafny.Companion_Sequence_.Equal(xs, _dafny.SeqOf()) { 206 return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf()) 207 } else { 208 _0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf((xs).Select(((_dafny.IntOfUint32((xs).Cardinality())).Minus(_dafny.One)).Uint32()).(interface{}))) 209 var _in0 _dafny.Sequence = (xs).Subsequence(0, ((_dafny.IntOfUint32((xs).Cardinality())).Minus(_dafny.One)).Uint32()) 210 _ = _in0 211 xs = _in0 212 goto TAIL_CALL_START 213 } 214 } 215 func (_static *CompanionStruct_Default___) Repeat(v interface{}, length _dafny.Int) _dafny.Sequence { 216 var _0___accumulator _dafny.Sequence = _dafny.SeqOf() 217 _ = _0___accumulator 218 goto TAIL_CALL_START 219 TAIL_CALL_START: 220 if (length).Sign() == 0 { 221 return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf()) 222 } else { 223 _0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf(v)) 224 var _in0 interface{} = v 225 _ = _in0 226 var _in1 _dafny.Int = (length).Minus(_dafny.One) 227 _ = _in1 228 v = _in0 229 length = _in1 230 goto TAIL_CALL_START 231 } 232 } 233 func (_static *CompanionStruct_Default___) Unzip(xs _dafny.Sequence) _dafny.Tuple { 234 if (_dafny.IntOfUint32((xs).Cardinality())).Sign() == 0 { 235 return _dafny.TupleOf(_dafny.SeqOf(), _dafny.SeqOf()) 236 } else { 237 var _let_tmp_rhs0 _dafny.Tuple = Companion_Default___.Unzip(Companion_Default___.DropLast(xs)) 238 _ = _let_tmp_rhs0 239 var _0_a _dafny.Sequence = (*(_let_tmp_rhs0).IndexInt(0)).(_dafny.Sequence) 240 _ = _0_a 241 var _1_b _dafny.Sequence = (*(_let_tmp_rhs0).IndexInt(1)).(_dafny.Sequence) 242 _ = _1_b 243 return _dafny.TupleOf(_dafny.Companion_Sequence_.Concatenate(_0_a, _dafny.SeqOf((*(Companion_Default___.Last(xs).(_dafny.Tuple)).IndexInt(0)))), _dafny.Companion_Sequence_.Concatenate(_1_b, _dafny.SeqOf((*(Companion_Default___.Last(xs).(_dafny.Tuple)).IndexInt(1))))) 244 } 245 } 246 func (_static *CompanionStruct_Default___) Zip(xs _dafny.Sequence, ys _dafny.Sequence) _dafny.Sequence { 247 var _0___accumulator _dafny.Sequence = _dafny.SeqOf() 248 _ = _0___accumulator 249 goto TAIL_CALL_START 250 TAIL_CALL_START: 251 if (_dafny.IntOfUint32((xs).Cardinality())).Sign() == 0 { 252 return _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOf(), _0___accumulator) 253 } else { 254 _0___accumulator = _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOf(_dafny.TupleOf(Companion_Default___.Last(xs), Companion_Default___.Last(ys))), _0___accumulator) 255 var _in0 _dafny.Sequence = Companion_Default___.DropLast(xs) 256 _ = _in0 257 var _in1 _dafny.Sequence = Companion_Default___.DropLast(ys) 258 _ = _in1 259 xs = _in0 260 ys = _in1 261 goto TAIL_CALL_START 262 } 263 } 264 func (_static *CompanionStruct_Default___) Max(xs _dafny.Sequence) _dafny.Int { 265 if (_dafny.IntOfUint32((xs).Cardinality())).Cmp(_dafny.One) == 0 { 266 return (xs).Select(0).(_dafny.Int) 267 } else { 268 return m__Math.Companion_Default___.Max((xs).Select(0).(_dafny.Int), Companion_Default___.Max((xs).Drop(1))) 269 } 270 } 271 func (_static *CompanionStruct_Default___) Min(xs _dafny.Sequence) _dafny.Int { 272 if (_dafny.IntOfUint32((xs).Cardinality())).Cmp(_dafny.One) == 0 { 273 return (xs).Select(0).(_dafny.Int) 274 } else { 275 return m__Math.Companion_Default___.Min((xs).Select(0).(_dafny.Int), Companion_Default___.Min((xs).Drop(1))) 276 } 277 } 278 func (_static *CompanionStruct_Default___) Flatten(xs _dafny.Sequence) _dafny.Sequence { 279 var _0___accumulator _dafny.Sequence = _dafny.SeqOf() 280 _ = _0___accumulator 281 goto TAIL_CALL_START 282 TAIL_CALL_START: 283 if (_dafny.IntOfUint32((xs).Cardinality())).Sign() == 0 { 284 return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf()) 285 } else { 286 _0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, (xs).Select(0).(_dafny.Sequence)) 287 var _in0 _dafny.Sequence = (xs).Drop(1) 288 _ = _in0 289 xs = _in0 290 goto TAIL_CALL_START 291 } 292 } 293 func (_static *CompanionStruct_Default___) FlattenReverse(xs _dafny.Sequence) _dafny.Sequence { 294 var _0___accumulator _dafny.Sequence = _dafny.SeqOf() 295 _ = _0___accumulator 296 goto TAIL_CALL_START 297 TAIL_CALL_START: 298 if (_dafny.IntOfUint32((xs).Cardinality())).Sign() == 0 { 299 return _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOf(), _0___accumulator) 300 } else { 301 _0___accumulator = _dafny.Companion_Sequence_.Concatenate(Companion_Default___.Last(xs).(_dafny.Sequence), _0___accumulator) 302 var _in0 _dafny.Sequence = Companion_Default___.DropLast(xs) 303 _ = _in0 304 xs = _in0 305 goto TAIL_CALL_START 306 } 307 } 308 func (_static *CompanionStruct_Default___) Map(f func(interface{}) interface{}, xs _dafny.Sequence) _dafny.Sequence { 309 return _dafny.SeqCreate((_dafny.IntOfUint32((xs).Cardinality())).Uint32(), func(coer1 func(_dafny.Int) interface{}) func(_dafny.Int) interface{} { 310 return func(arg2 _dafny.Int) interface{} { 311 return coer1(arg2) 312 } 313 }((func(_0_f func(interface{}) interface{}, _1_xs _dafny.Sequence) func(_dafny.Int) interface{} { 314 return func(_2_i _dafny.Int) interface{} { 315 return (_0_f)((_1_xs).Select((_2_i).Uint32()).(interface{})) 316 } 317 })(f, xs))) 318 } 319 func (_static *CompanionStruct_Default___) MapWithResult(f func(interface{}) m_Wrappers.Result, xs _dafny.Sequence) m_Wrappers.Result { 320 if (_dafny.IntOfUint32((xs).Cardinality())).Sign() == 0 { 321 return m_Wrappers.Companion_Result_.Create_Success_(_dafny.SeqOf()) 322 } else { 323 var _0_valueOrError0 m_Wrappers.Result = (f)((xs).Select(0).(interface{})) 324 _ = _0_valueOrError0 325 if (_0_valueOrError0).IsFailure() { 326 return (_0_valueOrError0).PropagateFailure() 327 } else { 328 var _1_head interface{} = (_0_valueOrError0).Extract() 329 _ = _1_head 330 var _2_valueOrError1 m_Wrappers.Result = Companion_Default___.MapWithResult(f, (xs).Drop(1)) 331 _ = _2_valueOrError1 332 if (_2_valueOrError1).IsFailure() { 333 return (_2_valueOrError1).PropagateFailure() 334 } else { 335 var _3_tail _dafny.Sequence = (_2_valueOrError1).Extract().(_dafny.Sequence) 336 _ = _3_tail 337 return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOf(_1_head), _3_tail)) 338 } 339 } 340 } 341 } 342 func (_static *CompanionStruct_Default___) Filter(f func(interface{}) bool, xs _dafny.Sequence) _dafny.Sequence { 343 var _0___accumulator _dafny.Sequence = _dafny.SeqOf() 344 _ = _0___accumulator 345 goto TAIL_CALL_START 346 TAIL_CALL_START: 347 if (_dafny.IntOfUint32((xs).Cardinality())).Sign() == 0 { 348 return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf()) 349 } else { 350 _0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, (func() _dafny.Sequence { 351 if (f)((xs).Select(0).(interface{})) { 352 return _dafny.SeqOf((xs).Select(0).(interface{})) 353 } 354 return _dafny.SeqOf() 355 })()) 356 var _in0 func(interface{}) bool = f 357 _ = _in0 358 var _in1 _dafny.Sequence = (xs).Drop(1) 359 _ = _in1 360 f = _in0 361 xs = _in1 362 goto TAIL_CALL_START 363 } 364 } 365 func (_static *CompanionStruct_Default___) FoldLeft(f func(interface{}, interface{}) interface{}, init interface{}, xs _dafny.Sequence) interface{} { 366 goto TAIL_CALL_START 367 TAIL_CALL_START: 368 if (_dafny.IntOfUint32((xs).Cardinality())).Sign() == 0 { 369 return init 370 } else { 371 var _in0 func(interface{}, interface{}) interface{} = f 372 _ = _in0 373 var _in1 interface{} = (f)(init, (xs).Select(0).(interface{})) 374 _ = _in1 375 var _in2 _dafny.Sequence = (xs).Drop(1) 376 _ = _in2 377 f = _in0 378 init = _in1 379 xs = _in2 380 goto TAIL_CALL_START 381 } 382 } 383 func (_static *CompanionStruct_Default___) FoldRight(f func(interface{}, interface{}) interface{}, xs _dafny.Sequence, init interface{}) interface{} { 384 if (_dafny.IntOfUint32((xs).Cardinality())).Sign() == 0 { 385 return init 386 } else { 387 return (f)((xs).Select(0).(interface{}), Companion_Default___.FoldRight(f, (xs).Drop(1), init)) 388 } 389 } 390 func (_static *CompanionStruct_Default___) FlatMap(f func(interface{}) _dafny.Sequence, xs _dafny.Sequence) _dafny.Sequence { 391 var result _dafny.Sequence = _dafny.EmptySeq 392 _ = result 393 result = _dafny.SeqOf() 394 var _lo0 _dafny.Int = _dafny.Zero 395 _ = _lo0 396 for _0_i := _dafny.IntOfUint32((xs).Cardinality()); _lo0.Cmp(_0_i) < 0; { 397 _0_i = _0_i.Minus(_dafny.One) 398 var _1_next _dafny.Sequence 399 _ = _1_next 400 _1_next = (f)((xs).Select((_0_i).Uint32()).(interface{})) 401 result = _dafny.Companion_Sequence_.Concatenate(_1_next, result) 402 } 403 return result 404 } 405 406 // End of class Default__