Repository navigation
0.26.3
Corrections from four reports on 0.26.2, two of them wrong answers.
No new commands (59); one new kind (57), cegis_none; the schema stays 5.
Correctness
synthsaid "no object exists" for a spec that has one. The search
learnedbehavior AND correctnessat each counterexample; when the domain
depends on the implementation (x >= k), that excluded every candidate
the counterexample is not an input of --k = 1was refuted byx = 0,
found againstk = 0. It learnsbehavior IMPLIES correctnessnow. Never
a false PROVED: the found object is always re-checked.prove_candidaterefuted a correct candidate whenuniversal_behavior
mentions an implementation variable: the domain kept it free, so the
obligation read "for every k". The candidate is substituted in the domain
too (a user's report, with the workaround that confirmed it).- A
capacity_profilesource'svalueandparameter_loadare checked.
Both are derived from the masses and shown to the reader; changing 108/5 to
0 verified as complete.
Fixed
capacity_profilefinds a profile from a degenerate endpoint dual. A
dual optimal at an end but not the profile's line crossed the other line AT
the end, and the bisection ran to its depth limit ("nested deeper than any
real profile"). A line equal to the profile at both ends covers the
interval, by concavity, and prices it.capacity_profilekeeps its time budget.limitswas taken and never
read; the search and each of its linear programs now stop at the clock --
TIMEOUT,stopped_by: time, no certificate.prove_candidatetakes the candidate in either shape,{name: value}
frommetaor{name: [sort, value]}from the certificate, and refuses
an unknown or missing name by name instead ofcannot unpack.Certificate.to_dict()returns a copy. It handed out the payload
itself, so editing "its" dict edited the certificate.
New
- A synthesis negative carries a certificate,
cegis_none: the
constraints with the contract instantiated at each counterexample are
unsatisfiable, and the counterexamples assign inputs only.synthresults
also print their scope -- the bounded input domain, or the implementations
and inputs a negative is about. export --lean --theorem NAME: a namedtheoreminstead of an
anonymousexample(NAME_kfor several; the namespace for a semigroup),
checked for correspondence as before and compiled in the Lean gate.