Is the second law 'broken'? Maybe that's just where computational logic and the English language don't mix? The below logic may be a bit buggy and/or inefficient but is an interpretation of how the first 'law' could work while explaining the behaviour of the robot in question. When the Law1 function is called, the robot analyses the conditions of all humans in some list (all humans that it's aware of maybe); It assesses the severity of danger that they are in and compares those; then if there are multiple humans in similar (highest found) severities of danger, it compares each of those humans and determines which is most likely to be successfully helped; And so long as at least one human needs to be protected from harm, law2 is not executed. Private Sub UpdateBehavior (ByVal humans As List(Of Human), _ ByVal humanOrders As List(Of Order), ByVal pDangers As List(Of pDanger)) Dim bBusy as boolean bBusy = False Law1(humans) If Not bBusy Then Law2(humanOrders) if Not bBusy Then Law3(pDangers) Exit Sub Private Function Law1 (ByVal humans As List(Of Human)) As Boolean Dim human as Human Dim targetHuman as Human Try Set targetHuman = Nothing 'loop listed humans For Each human In humans If human.IsInDanger() Then 'Enumerate 'danger' into predetermined severities/urgencies '(eg. Danger of going-hungry > falling-over > being-stabbed) 'and compare If targetHuman.DangerQuantification() < human.DangerQuantificationThen() 'If the comparison human's amount of danger is discernibly greater 'make that human the new target Set targetHuman = human 'Where both humans are in equal quantifiable amounts of danger Else If targetHuman.DangerQuantification() = human.DangerQuantification() then 'CompareValueOfHumanLife() 'Can-Of-Worms INTENTIONALLY REMOVED! If rescueSuccessRate(human) > rescueSuccessRate(targetHuman) 'Target the human where rate of successful harm prevention is higher Set targetHuman = human End If End If Else 'Set the first human found to be in danger as the initial target targetHuman = human End If Next human If Not targetHuman Is Nothing then Law1 = True Rescue(TargetHuman) else Law1 = False End If AvoidHarmingHumans() catch initiateSelfDestruct() end try End Function So did the robot break the second law? Some people might say "The robot acted contrary to the plain English definition of the law ant therefore it was broken." while some other people might say "The laws are just functions. Law1 was executed. Law2 was not. The robot obeyed its programming and the second law simply did not apply."