 
 il.cut_cont = new il.SolverVar('cut_cont')
 
-SetCutCont = (cont) ->  new il.Assign(cut_cont, cont)
+SetCutCont  = (cont) ->  new il.Assign(cut_cont, cont)
 
 il.cut_or_cont = new il.SolverVar('cut_or_cont')
 
-il.SetCutOrCont = (cont) ->  new il.Assign(cut_or_cont, cont)
+il.SetCutOrCont  = (cont) ->  new il.Assign(cut_or_cont, cont)
 
 il.IsLogicVar = vop('IsLogicVar', 1, 'isinstance(%s, LogicVar)', false)
 

il.GetValue = vop('GetValue', 1, 'get_value(%s, {}, solver.bindings)', false)

il.parse_state = new il.SolverVar('parse_state')
SetParseState = (state) ->  new il.Assign(parse_state, state)

il.Unify = vop('Unify', 2, 'solver.unify(%s, %s)', false)
il.Nil = vop('Nil', 0, 'nil', false)
il.nil = new il.Nil()

il.bindings = new il.SolverVar('bindings')
SetBindings = (bindings1) ->  new il.Assign(bindings, bindings1)

il.ConsHead = vop('ConsHead', 1, '(%s).head', false)
il.ConsTail = vop('ConsTail', 1, '(%s).tail', false)

    has_side_effects: has_side_effects
  return Vop

il.AddAssign = (var1, value) ->  Assign(var1, BinaryOperationApply(add, [var1, value]))

Call_to_code  = (compiler) ->  "(#{@args[0].to_code(compiler)})(#{join(', ', [x.to_code(compiler) for x in @args[1..]])})"
il.Call = vop('Call', -1, Call_to_code, true)

il.Attr = vop('Attr', 2, '%s.%s', false)

AttrCall_to_code  = (compiler) ->  "#{@args[0].to_code(compiler)}(#{join(', ', [x.to_code(compiler) for x in @args[1..]])})"
il.AttrCall = vop('AttrCall', -1, AttrCall_to_code, true)

il.SetItem = vop2('SetItem', 3, '(%s)[%s] = %s', true)
