So, the layer has to be a Layer object, and typically these are obtained by getting a reference to layer within a map within a project. The sqlFilter object is a string and must contain an SQL statement that functions on the layer, given its workspace type. So, here's an example of how that might be used where the layer is in an enterprise geodatabase and quotes around field names are unnecessary. The fields CHILLS, CONTROL, and SUPPLIED_POWER are numeric fields and it is hoped that they are non-null.
proj = arcpy.mp.ArcGISProject("CURRENT") # or "C:\Grease.aprx", etc.
my_map = proj.activeMap # or proj.listMaps("Map"). Do not create a variable named map because map is a certain function in Python
my_layer = my_map.ListLayers("TheOneThatIWant")
my_filter = "CHILLS * CHILLS - CONTROL = SUPPLIED_POWER" # Do not create a variable called filter because filter is a certain function in Python
setDefinitionQuery(my_layer, my_filter)
Once this code executes, the layer named TheOneThatIWant inside the active map (or the map named "Map") inside the currently-open project (or the project at C:\Grease.aprx) will now only show features in the map and in the attribute table where a given feature's CHILLS value squared minus its CONTROL value are equal to its SUPPLIED_POWER field.
This is perfect for when you've got chills, they're multiplyin', and you're losing control, because the power you're supplying, is electrifying. Your map will really shape up after this. Let me know if you have any more questions.