Proceed by the Principle of Structural Induction applied to the bottom-up specification of predicate logic. If $\mathbf A = p \left({\tau_1, \ldots, \tau_n}\right)$, then: :$\mathop{ \operatorname{val}_{\mathcal A} \left({\mathbf A}\right) } \left[{\sigma}\right] = p_{\mathcal A} \left({ \mathop{ \operatorname{val}_{\mathcal A} \left({\tau_1}\right) } \left[{\sigma}\right], \ldots, \mathop{ \operatorname{val}_{\mathcal A} \left({\tau_n}\right) } \left[{\sigma}\right] }\right)$ Because $\mathbf A$ contains no quantifiers, all its variables are free, and hence are in the domain of $\sigma, \sigma'$ as assignments. Thus $\sigma, \sigma'$ are assignments for each $\tau_i$, and by Value of Term under Assignment Determined by Variables: :$\mathop{ \operatorname{val}_{\mathcal A} \left({\tau_i}\right) } \left[{\sigma}\right] = \mathop{ \operatorname{val}_{\mathcal A} \left({\tau_i}\right) } \left[{\sigma'}\right]$ for each $\tau_i$. It is immediate that: :$\mathop{ \operatorname{val}_{\mathcal A} \left({\mathbf A}\right) } \left[{\sigma}\right] = \mathop{ \operatorname{val}_{\mathcal A} \left({\mathbf A}\right) } \left[{\sigma'}\right]$ If $\mathbf A = \neg \mathbf B$ and the induction hypothesis applies to $\mathbf B$, then: {{begin-eqn}} {{eqn|l = \mathop{ \operatorname{val}_{\mathcal A} \left({\mathbf A}\right) } \left[{\sigma}\right]      |r = f^\neg \left({ \mathop{ \operatorname{val}_{\mathcal A} \left({\mathbf B}\right) } \left[{\sigma}\right] }\right)      |c = Definition of value under $\sigma$ }} {{eqn|r = f^\neg \left({ \mathop{ \operatorname{val}_{\mathcal A} \left({\mathbf B}\right) } \left[{\sigma'}\right] }\right)      |c = Induction Hypothesis }} {{eqn|r = \mathop{ \operatorname{val}_{\mathcal A} \left({\mathbf A}\right) } \left[{\sigma'}\right]      |c = Definition of value under $\sigma'$ }} {{end-eqn}} If $\mathbf A = \mathbf B \circ \mathbf B'$ for $\circ$ one of $\land, \lor, \implies, \iff$ and the induction hypothesis applies to $\mathbf B, \mathbf B'$: {{begin-eqn}} {{eqn|l = \mathop{ \operatorname{val}_{\mathcal A} \left({\mathbf A}\right) } \left[{\sigma}\right]      |r = f^\circ \left({ \mathop{ \operatorname{val}_{\mathcal A} \left({\mathbf B}\right) } \left[{\sigma}\right], \mathop{ \operatorname{val}_{\mathcal A} \left({\mathbf B'}\right) } \left[{\sigma}\right] }\right)      |c = Definition of value under $\sigma$ }} {{eqn|r = f^\circ \left({ \mathop{ \operatorname{val}_{\mathcal A} \left({\mathbf B}\right) } \left[{\sigma'}\right], \mathop{ \operatorname{val}_{\mathcal A} \left({\mathbf B'}\right) } \left[{\sigma'}\right] }\right)      |c = Induction Hypothesis }} {{eqn|r = \mathop{ \operatorname{val}_{\mathcal A} \left({\mathbf A}\right) } \left[{\sigma'}\right]      |c = Definition of value under $\sigma'$ }} {{end-eqn}} If $\mathbf A = \exists x: \mathbf B$ or $\mathbf A = \forall x : \mathbf B$, and the induction hypothesis applies to $\mathbf B$, then from the definition of value under $\sigma$: :$\mathop{ \operatorname{val}_{\mathcal A} \left({\mathbf A}\right) } \left[{\sigma}\right]$ is determined by the values: :$\mathop{ \operatorname{val}_{\mathcal A} \left({\mathbf B}\right) } \left[{\sigma + \left({x / a}\right)}\right]$ where $a$ ranges over $\mathcal A$, and $\sigma + \left({x / a}\right)$ is the extension of $\sigma$ mapping $x$ to $a$. Now, for a free variable $y$ of $\mathbf B$: {{begin-eqn}} {{eqn|l = \left({\sigma + \left({x / a}\right)}\right) \left({y}\right)      |r = \begin{cases} a &: \text{if $y = x$} \\ \sigma \left({y}\right) &: \text{otherwise} \end{cases}      |c = Definition of Extension }} {{eqn|r = \begin{cases} a &: \text{if $y = x$} \\ \sigma' \left({y}\right) &: \text{otherwise} \end{cases}      |c = Assumption on $\sigma, \sigma'$ }} {{eqn|r = \left({\sigma' + \left({x / a}\right)}\right) \left({y}\right)      |c = Definition of Extension }} {{end-eqn}} Hence, by the induction hypothesis: :$\mathop{ \operatorname{val}_{\mathcal A} \left({\mathbf B}\right) } \left[{\sigma + \left({x / a}\right)}\right] = \mathop{ \operatorname{val}_{\mathcal A} \left({\mathbf B}\right) } \left[{\sigma' + \left({x / a}\right)}\right]$ It follows that: :$\mathop{ \operatorname{val}_{\mathcal A} \left({\mathbf A}\right) } \left[{\sigma}\right] = \mathop{ \operatorname{val}_{\mathcal A} \left({\mathbf A}\right) } \left[{\sigma'}\right]$ The result follows from the Principle of Structural Induction. {{qed}} Category:Predicate Logic 72pyybgluhk8a7ghrccyz86nqc2qh1q