input: Write a function to determine if a given string contains all the words in a provided list of words. If the string contains all the words, return True; otherwise, return False. Case sensitivity should be ignored.
  
  assert contains_words('This is a test', ['test', 'this', 'is'])==True
  assert contains_words('This is a test', ['test', 'these', 'is'])==False
  assert contains_words('This is a test', ['test', 'this'])==True
  assert contains_words('This is a test', ['Test', 'this'])==True
  assert contains_words('This is a test', [])==True
output: def contains_words(s, words):
      s_lower = s.lower()
      words_lower = [word.lower() for word in words]
      return all(word in s_lower for word in words_lower)