Skip to content

Latest commit

 

History

History
1647 lines (1489 loc) · 48.2 KB

todo.org_archive

File metadata and controls

1647 lines (1489 loc) · 48.2 KB

Archived entries from file /home/kirang/Documents/research/suslik-ocaml-writeup/ocaml/todo.org

Extract forall sequence to a sequence of args + properties + body

Calculate parameters to instantiate by dropping implicit arguments

First parameters are arguments.

If body is pure, last argument is function, evars for all intermediate arguments.

Print expressions in Coq format

Look at pattern of let-exp - if complex (tuple), then emit destruct w.names,

update sanitiser with annotations for patterns

if annotations w. patterns, then rewrite

sepsplittuple if pattern was tuple

if match, emit a case on match argument

for each branch,

emit xmatch

solve body

if value [| |] then xvalemptyarr

let of alloc then xalloc

if let then xletopaque

Define VC data structure

Write function to pretty print VC

Write function to extract vc from coq ctxt

Write function to convert VC to a Z3-checkable VC

Refactor proof reduction plugin to be customisable

Update plugin to setup proof reduction

Build binding of program variables to concrete values

Update dynamic tracer to return bindings

Fix proof generator state to update program point tracking correctly

Map proof variables to program variables to concrete values

Store Observation id at start of lambda in function

Update context to track mapping of Coq variables to program variables

Print out thte concrete values at the current lambda state

Work on proof analysis

generate evars for arguments

call print reduced tactic on argument to retrieve reduced proof term

perform analysis on proof term

Implement generator function for higher order functions

Extract proof arguments, determine no. invariants

calculate type of instantiated invariant with explicit parameters

collect full explicit parameters for spec using evars for invariant & properties

fold over type tracking parameters

split params into invariants and evars (tuple)

gen fresh var using proof context
create evar with type
add evar to params

Generate concrete values for the current point

generate concrete values at current program point

iterate through concrete values

loop through parameters to specification

Bind concrete values to proof variables

Convert concrete values to Coq terms

Create concrete proof term from concrete args

Pretty print application as Coq string

Pose proof to add it to context

Extract from last element in context then revert, just like typeof function

Apply ultimate reduction

Perform data flow analysis over reduced proof term

Check type of properties evar applied to concrete arguments

extract arguments to evar

Fix bug in translating programs

Add unit test for translating programs

Fix bug in proof parser

Add regression test for proof parser

Work out why proofs are failing

Fix failing program parser

configure code to only take branch for symexec higher order pure function when the spec itself is appropriate

Implement CI

Debug proof reduction to work out why it isn’t expanding

Update cmdliner to take in logical bindings

Update tests to pass in logical bindings

Work out way to fix for pure programs

Fix issues with Z3 encoding construction

Implement logging system

Implement support for make_rev_list

Create branch for array of rev list

Rewrite array of rev list in terms of for loop combinator

Prove correctness of for loop combinator

Prove correctness of rev list using loop combinator

Get benchmark running on array of rev list

Fix issues with program structure of array of rev list

Handle proof parsing of array of rev list

Print out Z3 queries

Get to Proof term analysis or better w.r.t array of rev list

Make term fully expand

Run tests to ensure current proofs still go through

Refactor code to force reduce if normal reduction fails

Fix printing of proof terms to make reading manageable

Update env to track local_fun_vars

Update reduction to handle var apps correctly

Analyze proof term to work out how to handle it

Identify what causes the name clashes when extracting

Solve name clash error with extraction

Work out cause of error in specification generator

update code to handle empty pure conditions

Handle units in z3

Check that old behaviour is preserved

try reversing the candidates

Try proving the new proof yourself

Add extra column for ifs/matches

Print out the full query to z3 for preservation and send to z3 manually

Print out check preserved query and debug in Z3

Refactor code with appropriate logging (logs)

Update code to take in multiple coq-libs

Conditionally send things to z3 if env SIS_Z3 is set

Work on array find map

Read through SLING To work out why it outputs such poor invariants

Prove array find map

Prove array find map new

Setup benchmark test for array find mapi

Add support for if then else

Fix unit tests

Setup unit tests for array find mapi

Setup code to generate function arguments

Get array find map compiling on current code

Update code to use types

Work out appropriate tactic for xif

Update symexec to handle if then else and if then constructs

Add handling for ref allocations

Update Dune file to work more nicely across projects

Work on array find map

Add support for xif lemma in proof analysis

Add support for simple cases on Bool

Add support for extracting xif lemmas

Hacker mode

Update proof env to track poly variables

Update proof env to track gamma

update symexec alloc

update symexec ref alloc

update symexec higher order pure fun

update symexec higher order fun

update symexec match

Update generate candidate invariants to use gamma to determine type of holes

Update proof env to track updated names of results of let bindings

Update mut var checking to use proof vars

Print to stdout and file

Fix bug in working out the type of find_mapi

Instantiate lemmas with all polymorphic variables

work out why it crashes

Pass in hof as variables

Update code to check if intros is needed

Add nil constant when lists

Make fuzzed functions dependent on ints

Fix binding of fp for constants to generator?

Bind logical variables (l)

extend observation with logical variables

If we keep a variable concrete, keep it available in the context

Add negb and is_some to context

For while and for loops, don’t constrain i

Add parsing unit tests for array_exists

Add parsing unit tests for array_findi

Add parsing unit tests for array_foldi

Add parsing unit tests for array_is_sorted

Add parsing unit tests for array_map2

Add parsing unit tests for array_of_rev_list

Add parsing unit tests for hashtbl_invert

Add parsing unit tests for seq_to_array

Add parsing unit tests for set_to_list

Add parsing unit tests for sll_of_array

Add parsing unit tests for sll_partition

Add parsing unit tests for stack_filter

Add parsing unit tests for stack_reverse

Add parsing unit tests for vec_filter

Setup vterm to run tests

Update code to use combinator

Update code to properly instantiate until and fold combinators

Update build testing function to instantiate arguments properly again

Find out what fails next

Update proof term to have casing on ADTs

Add support for casing on ADTs

fix xapp arguments to take a type

fix extracted type of combinator for until upto to remove option

Update extraction to work with case ADT

Collect arguments to inv ty that are not ints and are fully instantiated

Take as input parameter to ty the concrete variables you need

When given functions with one polymorphic variable, instantiate with input parameter

Test whether array iter works with list as parameter after invariant

Update examples to use new interface to array iter

Add function to PCFML to test if a function returns hprop

Add parsing unit tests for array_partition

Once we’ve instantiated the function with concrete arguments, when instantiating subsequent parameters, check if the variables are constrained.

from extract inv ty, return a list of concrete params + logical params ahtt follow the invariant

Run seq to array with dump output

Copy generation context

Add folder for generation tests

Ensure that generator can find the invariant for TRUE invariant for seq to array

Add test for make rev list

Add test for array exists

Add test for array find mapi

Add test for array of rev list

Check observation used in list partition and see if l is defined

Check source code to work out if observation is printed before or after normalisation

work out why l isn’t defined

Test if true candidate is accepted by generated test fun

Leave out heaplets that are consumed by the higher order combinator

iterate through functions, find the naem

At Xapp, seed generator with expressions from pre-heap

If gamma contains Option pair then add option_value_snd and option_value_fst to generation context

Seed polymorphic functions with arguments to inv

Fix end of higher order function to only intros when needed

iterate through functions, find the naem

Leave out heaplets that are consumed by the higher order combinator

Test if true candidate is accepted by generated test fun