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__