60 likes | 72 Views
Reasoning with Queues and Web Interface Demo. A Second Web Interface Demo. Select Queue_Template under Concepts Notice that queues also happen to be modeled using mathematical strings How does the specification of Enqueue differ from Push, if any?
E N D
A Second Web Interface Demo Select Queue_Template under Concepts Notice that queues also happen to be modeled using mathematical strings How does the specification of Enqueue differ from Push, if any? How does the specification of Dequeue differ from Pop, if any?
A Second Web Interface Demo Select Queue_Template under Concepts Select Append_Capability under the tab Enhancements Select Iterative_Realiz under the Tab Enhancement Realizations The loop is annotated with two assertions for verification an invariant (maintaining clause) A progress metric (decreasing clause)
A Second Web Interface Demo Select Queue_Template under Concepts Select Append_Capability under the tab Enhancements Select Reursive_Realiz under the Tab Enhancement Realizations Click on Generate VCs Prove each VC
Wrong Code Demo Go back to Recursive_Realiz by clicking on the RESOLVE tab to the left Click the Edit button Do each of the following and see if the VCs are provable in each case! Comment out the Dequeue operation (use –- at the front of the line) Change the decreasing metric from |Q| to |P|; now our termination reason is wrong!
Iterative Code Demo Select Queue_Template under Concepts Select Append_Capability under the tab Enhancements Select Iterative_Realiz under the Tab Enhancement Realizations Loops are annotated with invariants, progress metrics Click on Verify button The VCs here turn out to be provable automatically