function can_do_fast_attack(knight_awake)
    return !knight_awake
end

function can_spy(knight_awake, archer_awake, prisoner_awake)
    return (knight_awake || archer_awake || prisoner_awake)
end

function can_signal_prisoner(archer_awake, prisoner_awake)
    return !archer_awake && prisoner_awake 
end

function can_free_prisoner(knight_awake, archer_awake, prisoner_awake, dog_present)
    return (dog_present && !archer_awake) || (!dog_present && prisoner_awake && !knight_awake && !archer_awake)
end
