Equivalence Transformation

Overview

Equivalence-transformation is a proof system used alongside classical truth-functional predicate logic. It is the foundation upon which predicate transformers are based.

A proposition is said to be a tautology if it evaluates to T in every state it is well-defined in. We say propositions E1 and E2 are equivalent if E1=E2 is a tautology. In this case, we say E1=E2 is an equivalence.

Axioms

Commutativity

For propositions E1 and E2:

Associativity

For propositions E1, E2, and E3:

Distributivity

For propositions E1, E2, and E3:

De Morgan's

For propositions E1 and E2:

Law of Double Negation

For any proposition E1, it follows that ¬(¬E1)=E1.

Law of Excluded Middle

For any proposition E1, it follows that E1¬E1=T.

Law of Contradiction

For any proposition E1, it follows that E1¬E1=F.

Law of Implication

For any propositions E1 and E2, it follows that E1E2=¬E1E2.

Law of Equality

For any propositions E1 and E2, it follows that (E1=E2)=(E1E2)(E2E1).

Law of Or-Simplification

For any propositions E1 and E2, it follows that:

Law of And-Simplification

For any propositions E1 and E2, it follows that:

Law of Identity

For any proposition E1, E1=E1.

Inference Rules

Selectors

A selector denotes a finite sequence of subscript expressions, each enclosed in brackets. ϵ denotes the empty selector. For example, variable x is equivalently denoted as xϵ whereas for array b, b[i] is equivalently denoted as b[i].

Selector update syntax allows specifying a new value with previous subscripted values overridden. For instance, (b;i:e) denotes b with b[i] now referring to e. More formally, for any jdomain(b),

(b;i:e)[j]={i=jeijb[j]

Generalizing further to all variable types x, $$\begin{align*} (x; \epsilon{:}e) & = e \ (x; [i] {\circ} s{:}e)[j] & = \begin{cases} i \neq j \rightarrow x[j] \ i = j \rightarrow (x[j]; s{:}e) \end{cases} \end{align*}$$

Substitution

Textual substitution refers to the replacement of a free identifier with an expression, introducing parentheses as necessary. This concept amounts to the Substitution Rule with different notation.

Simple

If x denotes a variable and e an expression, substitution of x by e is denoted as

Eex

General

We can generalize textual substitution to operate on a vector of reference-expression pairs, where each reference corresponds to some identifier concatenated with a selector. Let x¯=x1,,xn denote a vector of identifiers concatenated with selectors and e¯=e1,,en denote a vector of expressions. Then textual substitition of x¯ with e¯ in expression E is denoted as

Ee¯x¯.

Substitution is defined recursively as follows:

  1. If each xi is a distinct identifier with a null selector, then Ee¯x¯ is the simultaneous substitution of x¯ with e¯.
  2. Adjacent reference-expression pairs may be permuted as long as they begin with different identifiers. That is, for all distinct b and c,Ee¯,f,h,g¯x¯,b,c,y¯=Ex¯,h,f,g¯x¯,c,b,y¯
  3. Multiple assignments to subparts of an object b can be viewed as a single assignment to b. That is, provided b does not begin any of the xi,Ee1,,em,g¯bs1,,bsm,x¯=E(b;s1:e1;;sm:em),g¯b,x¯

Note that simultaneous substitution is different from sequential substitution.

Identities

States

A state is a function that maps identifiers to T or F. A proposition can be equivalently seen as a representation of the set of states in which it is true.

Powered by Forestry.md