Observer Logic