Let's take an example.
Suppose an algorithm that takes a graph an returns the nodes of the graph.
So GraphType = SUBSET [ in -> STRING, out -> STRING ]
Nodes(A) == { x \in STRING : \E n \in A : x = n.in \/ x = n.out}
Suppose G is a constant.
And resu a variable.
So the contract of the algorithm is:
Requires == G \in GraphType
Ensures == resu =Nodes(g)
So how can we link formally the contract and the algorithm? This way?
Correctness == Requires /\ Spec => [] ( pc = "Done" => Ensures )
--
FL