Documentation

Ratpoints.Proof.VCSimp

The simplification of the verification conditions #

The contracts of the components with a loop are proved by vcgen, whose verification conditions encode the weakest preconditions in the order of Prop: meets, propositions of the order, the measures that end the loops and the applied invariants of the while loops. The tactic vc_simp rewrites these encodings into plain propositions in all the hypotheses and the goal, with further lemmas of each contract (the invariants to unfold and propositional clean-up), before the dispatch of the conditions.

Implementation notes #

The file uses Lean core and Std only, as the contracts that use the tactic do.

vc_simp [l₁, …] rewrites, in all the hypotheses and the goal, the encodings of the weakest preconditions that the verification conditions of vcgen contain into plain propositions: meets and propositions of the order (Lean.Order.meet_prop_eq_and, Lean.Order.ofProp_prop_eq), the measures that end the loops (Std.WP.Variant.evalsTo_ofMeasure, Std.WP.Variant.evalsBelow_ofMeasure_nat, Std.WP.Assertion.NondetFun.evalsTo_pure) and the applied invariants of while loops (Std.WP.WhileInvariant.mk_apply), with the further simp lemmas l₁, …. It is simp only [these lemmas, l₁, …] at *.

Equations
  • One or more equations did not get rendered due to their size.
Instances For