I am currently reading Formal Methods - An Appetizer and am stuck in chapter 3 (Program Verification).
I am unfamiliar with logic and I do not think I understand the $\vDash$ notation correctly.
I tried to work through Definition 3.8 by giving myself a super-simple example:
Let there be an edge $(q_1, \texttt{y:=1}, q_2)$ and a predicate assignment that is given by $P(q_1)=(\texttt{x}=\underline{n})\land(\underline{n}>0)$.
How do I now prove in the sense of Definition 3.8 that the predicate assignment is correct given $\mathcal{S}[\![\texttt{y:=1}]\!](\sigma)=\sigma[\texttt{y}\mapsto 1]$ (which means the memory is updated so that $\texttt{y}$ now has value 1)?
I do not even know how to start.
What does it mean to have "suitable pairs of memory"?
Further, I already get stuck finding out whether $(\sigma,\underline{\sigma})\vDash P(q_1)$. I think what I am supposed to do is
$$\begin{align*}&(\sigma,\underline{\sigma})\vDash P(q_1)\\ =\quad &(\sigma,\underline{\sigma})\vDash (\texttt{x}=\underline{n})\land(\underline{n}>0)\\ =\quad &\left(\,(\sigma,\underline{\sigma})\vDash (\texttt{x}=\underline{n})\,\right)\land\left(\,(\sigma,\underline{\sigma})\vDash(\underline{n}>0\,\right)\\ \end{align*}$$
and then first do
$$\begin{align*}&(\sigma,\underline{\sigma})\vDash (\texttt{x}=\underline{n})\\ =\quad &[\![\texttt{x}]\!](\sigma,\underline{\sigma})=[\![\underline{n}]\!](\sigma,\underline{\sigma})\end{align*}$$
and this is where I am stuck... now, $[\![\texttt{x}]\!](\sigma,\underline{\sigma})$ is $\sigma(x)$ by definition, that is, the value of $\texttt{x}$ in the memory $\sigma$, and $[\![\underline{n}]\!](\sigma,\underline{\sigma})$ is $\underline{\sigma}(\underline{n})$, but I never specified which values are in $\sigma$ and $\underline{\sigma}$.
And rightfully so, I think, because I want to prove it for all "suitable" memories. How do I proceed here?
Any help would be greatly appreciated!
These are the relevant parts from the book in order to provide (hopefully) enough context.
as well as