--Partial sequence s:S->N, S <= N, N = { 1, 2, 3, ... } --Consists of: --A sequence stored as a (sparse) array --["cmin"], a key whose value is the smallest element outside the support of the sequence local sequence = {} sequence.__index = sequence function sequence.new( name ) return setmetatable( { cmin = 1, name = name }, sequence ) end function sequence:insert( x, y ) if self.cmin == x then repeat self.cmin = self.cmin + 1 until not self[self.cmin] end self[x] = y --debug: --print( "First unclaimed element:", self.name, self.cmin ) end --Maybe leave this for later, we'll inline it for now. function sequence:complement() end return sequence