Recent Changes · Search:

Functional Programming

Type Inference

Toss

  • (incorporates former Speagram)

Emacs

Kurs Pascala

Artificial General Intelligence

AI:

Algorithmic Game Theory: Prediction Markets (po polsku)

Programming in Java

kurs pracy w systemie Linux

Evolutionary Algorithms

Animation

Data Stores and Data Mining

Language Understanding

Systemy Inteligentnych Agentów

Przetwarzanie Języka Naturalnego

Programowanie Funkcjonalne

PmWiki

pmwiki.org

add user

edit SideBar

Infer.Infer History

Hide minor edits - Show changes to output

November 04, 2015, at 09:09 PM by lukstafi - thesis - not draft
Changed line 3 from:
* Draft of my thesis on InvarGenT: [[Attach:lukstafi-phd-thesis.pdf]].
to:
* Thesis on InvarGenT: [[Attach:lukstafi-phd-thesis.pdf]].
Changed lines 3-5 from:
Draft of my thesis on InvarGenT: [[Attach:lukstafi-phd-thesis.pdf]].
Technical slides on InvarGenT: [[Attach:invargent-slides.pdf]].
Layman slides on InvarGenT: [[Attach:invargent-simple-slides.pdf]].
to:
* Draft of my thesis on InvarGenT: [[Attach:lukstafi-phd-thesis.pdf]].
* Technical slides on InvarGenT: [[Attach:invargent-slides.pdf]].
* Layman slides on InvarGenT: [[Attach:invargent-simple-slides.pdf]].
September 20, 2015, at 03:05 AM by lukstafi - Two sets of slides
Added lines 4-5:
Technical slides on InvarGenT: [[Attach:invargent-slides.pdf]].
Layman slides on InvarGenT: [[Attach:invargent-simple-slides.pdf]].
Changed lines 3-4 from:
Draft of my thesis on InvarGenT: [[Attach:lukstafi-phd-thesis.pdf]]
The thesis is not yet submitted.
to:
Draft of my thesis on InvarGenT: [[Attach:lukstafi-phd-thesis.pdf]].
April 04, 2015, at 05:48 PM by lukstafi - thesis draft
Changed lines 3-5 from:
* These unpublished articles can serve as historical snapshots of formal presentation of the project.
** [[Attach:invargent2012
.pdf]] formalizes both the type system and constraint solving by abduction, but does not cover existential types.
**
[[Attach:invargent2013.pdf]] focuses on the type system.
to:
Draft of my thesis on InvarGenT: [[Attach:lukstafi-phd-thesis.pdf]]
The thesis is not yet submitted.

Implementation
of versions 2.0.X completed.

These unpublished articles can serve as historical snapshots of formal presentation of the project.
* [[Attach:invargent2012
.pdf]] formalizes both the type system and constraint solving by abduction, but does not cover existential types.
* [[Attach:invargent2013.pdf]] focuses on the type system.
Deleted lines 12-13:
Implementation of version 1.2 completed.
Changed line 14 from:
* [[http://pauillac.inria.fr/~fpottier/biblio/pottier.html | Vincent Simonet and Francois Pottier, '''A constraint-based approach to guarded algebraic data types.''']] [5] (initial constraint generation)
to:
* [[http://pauillac.inria.fr/~fpottier/biblio/pottier.html | Vincent Simonet and Francois Pottier, '''A constraint-based approach to guarded algebraic data types.''']] (initial constraint generation)
Changed line 17 from:
* [[http://www.kennknowles.com/research/knowles-flanagan.esop.07.type.pdf | Kenneth Knowles, Cormac Flanagan, '''Type reconstruction for general refinement types''']] (that type-checking and type inference are separate things)
to:
* [[http://www.kennknowles.com/research/knowles-flanagan.esop.07.type.pdf | Kenneth Knowles, Cormac Flanagan, '''Type reconstruction for general refinement types''']]
Changed lines 8-11 from:
Implementation of version 1.1 completed.

Implementation of v1.2 with @@min@@ and @@max@@ relations in @@num@@:
(:progress 45:)
to:
Implementation of version 1.2 completed.
Changed lines 6-7 from:
* Project at: [[https://github.com/lukstafi/invargent]].
to:
* Project at: [[https://github.com/lukstafi/invargent]], in particular [[https://github.com/lukstafi/invargent/blob/master/doc/invargent-manual.pdf | InvarGenT manual]].
Changed line 11 from:
(:progress 2:)
to:
(:progress 45:)
Changed line 11 from:
(:progressbar 32:)
to:
(:progress 2:)
Changed line 11 from:
(:progressbar 02:)
to:
(:progressbar 32:)
Changed line 11 from:
(:progressbar 2:)
to:
(:progressbar 02:)
Added lines 9-11:

Implementation of v1.2 with @@min@@ and @@max@@ relations in @@num@@:
(:progressbar 2:)
Changed lines 3-5 from:
* These unpublished articles can serve as historical snapshots of formal presentation of the project. [[Attach:invargent2012.pdf]] formalizes both the type system and constraint solving by abduction, but does not cover existential types. [[Attach:invargent2013.pdf]] focuses on the type system.
to:
* These unpublished articles can serve as historical snapshots of formal presentation of the project.
** [[Attach:invargent2012.pdf]] formalizes both the type system and constraint solving by abduction, but does not cover existential types.
**
[[Attach:invargent2013.pdf]] focuses on the type system.
December 22, 2013, at 12:02 PM by lukstafi - historical perspective
Changed line 3 from:
* These unpublished articles can serve as historical snapshots of formal presentation of the project: [[Attach:invargent2012.pdf]], [[Attach:invargent2013.pdf]].
to:
* These unpublished articles can serve as historical snapshots of formal presentation of the project. [[Attach:invargent2012.pdf]] formalizes both the type system and constraint solving by abduction, but does not cover existential types. [[Attach:invargent2013.pdf]] focuses on the type system.
December 22, 2013, at 11:53 AM by lukstafi - update
Changed lines 3-4 from:
* Article introducing the theoretical underpinnings of the project: [[Attach:invargent2012.pdf]].
*
[[http://ii.uni.wroc.pl/~lukstafi/pubs/ | Technical reports / manuscripts]].
to:
* These unpublished articles can serve as historical snapshots of formal presentation of the project: [[Attach:invargent2012.pdf]], [[Attach:invargent2013.pdf]].
Changed line 6 from:
Implementation progress: (:progress 93:)
to:
Implementation of version 1.1 completed.
December 07, 2013, at 06:18 PM by lukstafi - update
Changed lines 15-18 from:
Other relevant literature:
* [[http
://www.lsi.upc.edu/~erodri/ | Enric Rodriguez-Carbonell, Deepak Kapur, '''Automatic Generation of Polynomial Loop Invariants''']] (how to infer polynomial function invariants, work in progress) detection of loop invariants by abstract interpretation turns out to be very relevant
* [[http://www.cse.unsw.edu.au/~mmaher/pubs/cp/linear_abdn_revised.pdf | M. Maher
, '''Abduction of Linear Arithmetic Constraints''']] (this is what the program actually does)
* [[http://www
.cs.unm.edu/~kapur/mypapers/aca2004.pdf | Deepak Kapur, '''Automatically Generating Loop Invariants Using Quantifier Elimination''']] (I'll use this solution for linear inequalities, I haven't decided about polynomials yet)
to:
Other literature that seemed relevant at an early stage:
* [[http://www.lsi.upc.edu/~erodri/ | Enric Rodriguez-Carbonell, Deepak Kapur, '''Automatic Generation of Polynomial Loop Invariants''']]
* [[http://www.cse.unsw.edu.au/~mmaher/pubs/cp/linear_abdn_revised.pdf | M. Maher, '''Abduction of Linear Arithmetic Constraints''']]
* [[http://www.cs.unm.edu/~kapur/mypapers/aca2004.pdf | Deepak Kapur, '''Automatically Generating Loop Invariants Using Quantifier Elimination''']]

There is much more of related literature
, mostly more recent, but it has not influenced InvarGenT directly.
Changed line 7 from:
Implementation progress: (:progress 88:)
to:
Implementation progress: (:progress 93:)
November 27, 2013, at 08:42 PM by lukstafi - progress
Changed line 7 from:
Implementation progress: (:progress 82:)
to:
Implementation progress: (:progress 88:)
Changed line 7 from:
Implementation progress: (:progress 77:)
to:
Implementation progress: (:progress 82:)
July 16, 2013, at 04:51 PM by lukstafi - quote
Added lines 1-2:
''Every problem that is interesting is also soluble.'' David Deutsch
Changed line 5 from:
Implementation progress: (:progress 73:)
to:
Implementation progress: (:progress 77:)
Changed line 5 from:
Implementation progress: (:progress 65:)
to:
Implementation progress: (:progress 73:)
Changed line 5 from:
Implementation progress: (:progress 55:)
to:
Implementation progress: (:progress 65:)
Changed line 5 from:
Implementation progress: (:progress 40:)
to:
Implementation progress: (:progress 55:)
Changed line 5 from:
Implementation progress: (:progress 38:)
to:
Implementation progress: (:progress 40:)
Deleted line 8:
* [[http://citeseer.ist.psu.edu/henglein91type.html |  Fritz Henglein, '''Type Inference with Polymorphic Recursion''']] (how to apply to type inference and solve semi-unification)
Changed line 5 from:
Implementation progress: (:progress 30:)
to:
Implementation progress: (:progress 38:)
Changed line 5 from:
Implementation progress: (:progress 27:)
to:
Implementation progress: (:progress 30:)
Changed line 5 from:
Implementation progress: (:progress 20:)
to:
Implementation progress: (:progress 27:)
Changed line 5 from:
Implementation progress: (:progress 17:)
to:
Implementation progress: (:progress 20:)
Changed line 5 from:
Implementation progress: (:progress 10:)
to:
Implementation progress: (:progress 17:)
March 25, 2013, at 03:39 PM by lukstafi - progress bar
Changed line 5 from:
The work needs better presentation, but most of all, the system needs to be implemented. Lack of time is the primary reason for these shortcomings.
to:
Implementation progress: (:progress 10:)
March 16, 2013, at 06:18 PM by lukstafi - project github site
Changed lines 1-2 from:
[[http://ii.uni.wroc.pl/~lukstafi/pubs/ | Manuscripts with my results.]]
to:
* Article introducing the theoretical underpinnings of the project: [[Attach:invargent2012.pdf]].
* [[http:
//ii.uni.wroc.pl/~lukstafi/pubs/ | Technical reports / manuscripts]].
* Project at: [[https://github.com/lukstafi/invargent]].

November 16, 2012, at 12:14 AM by lukstafi - type inference status
Deleted lines 0-1:
OUTDATED. The project will have a dedicated site soon. ETA: not soon.
Added lines 3-4:
The work needs better presentation, but most of all, the system needs to be implemented. Lack of time is the primary reason for these shortcomings.
November 16, 2012, at 12:11 AM by lukstafi - manuscripts
Changed lines 1-2 from:
OUTDATED. The project will have a dedicated site soon.
to:
OUTDATED. The project will have a dedicated site soon. ETA: not soon.

[[http://ii.uni.wroc.pl/~lukstafi/pubs/ | Manuscripts with my results.]]

October 08, 2012, at 02:03 AM by lukstafi - OUTDATED notice
Changed lines 1-4 from:
The first version of my project which hasn't got name yet, is codenamed HMG Arith. It is not HMG(Arith) actually, because it doesn't have type annotations on recursive definitions. No type annotations at all. This is unofficial revision 0.1 of HMG Arith, work in progress, avoid the flood of diagnostic information by directing stderr to /dev/null.

[[Attach:hmg_arith.tar.gz]]

to:
OUTDATED. The project will have a dedicated site soon.
Changed line 10 from:
Relevant literature I'm reading now:
to:
Other relevant literature:
Deleted lines 13-59:

!! Timetable:
||%border=2
||!id||!for version||!feature||!difficulty||!state||
||  1|| v0.1.1|| multiple definitions|| simple|| done July 20, 2008, at 01:15 PM
||  2|| v0.1.1|| nested "non-crossing" definitions|| simple|| dropped (see id 32)
|| 13|| v0.1.1|| mutual recursion|| difficult|| done August 15, 2008, at 10:26 PM
||  5|| v0.1.1|| cleaned-up output|| simple|| in progress
||  6|| v0.1.1|| automatic test suite|| simple|| waiting
|| 41|| v0.1.2|| simplify accounting of local variables|| simple|| half done
|| 39|| v0.1.2|| rewrite invariant generation code|| medium|| half done
||  9|| v0.1.2|| existential quantification detection bugs|| medium|| waiting
|| 15|| v0.1.2|| return-type-nested existential quantification|| difficult|| waiting
||  3|| v0.2.0|| pattern implication|| medium|| waiting
|| 38|| v0.2.0|| dead code management (negation constraints)|| medium|| waiting
|| 27|| v0.2.0|| check for exhaustiveness of patterns (together with id 38)|| medium|| waiting
|| 35|| v0.2.0|| add multiplication back to the arithmetic domain (preparing for polynomial constraints)|| simple|| waiting
|| 10|| v0.2.0|| exact generation of inequalities by "quantifier elimination"|| difficult|| waiting
|| 11|| v0.2.0|| analyse the "odd.gadt" example|| simple|| waiting
|| 40|| v0.2.0|| add chained occurs check for semi-unification|| simple|| waiting
|| 12|| v0.2.1|| enumeration of dark shadow in Fourier-Motzkin|| medium|| waiting
|| 31|| v0.2.2|| better error locations|| medium|| waiting
|| 14|| v0.3.0|| polynomial constraints|| difficult|| waiting
|| 16|| v0.3.1|| Haskell-like syntax input (and more complete OCaml syntax)|| medium|| waiting
|| 17|| v0.3.1|| Haskell source code generation|| medium|| waiting
|| 18|| v0.3.1|| OCaml source code generation|| medium|| waiting
|| 29|| v0.3.1|| handle and transfer comments (also: full types as comments)|| simple|| waiting
|| 30|| v0.3.1|| extend testsuite to run the examples|| simple|| waiting
|| 32|| v0.3.2|| source-level transformation to flatten (move out) non-mutual-recursive local definitions|| simple|| waiting
|| 33|| v0.3.2|| user type annotations in expressions|| simple|| waiting
|| 34|| v0.3.3|| user constraint annotations on defined functions|| medium|| waiting
|| 19|| v0.4.0|| factor-out domain code: plug-in architecture for domains|| difficult|| waiting
|| 20|| v0.4.0|| domain for reals|| simple|| waiting
|| 21|| v0.4.0|| domain for integers|| simple|| waiting
|| 22|| v0.4.1|| domain for lattices|| difficult|| waiting
||  7|| v0.4.1|| [[#choice | choice]] operator for user constraints|| medium|| waiting
||  8|| v0.4.1|| mergesort with order detection|| simple|| waiting
|| 28|| v0.4.2|| check for exhaustiveness of the "choice" conditions|| difficult|| waiting
|| 23|| v0.4.3|| Datalog domain (with saturation)|| medium|| waiting
|| 24|| v0.4.4|| equational theories domain (with completion)|| difficult|| waiting
|| 36|| v0.5.0|| corrective program transformation heuristics|| difficult|| waiting
|| 37|| v0.5.0|| corrective (local) program generation|| difficult|| waiting
|| 25|| v0.6.0|| first class polymorphism (annotation-free)|| perhaps possible|| waiting
|| 26|| v0.7.0|| type definition reconstruction and refinement|| perhaps possible|| waiting

!!! [[#choice]] The ''choice'' operator
The "choice" logical connective "lifts the pattern-matching semantics to the logic of annotations", allows for overloading of logical senses of values. [@choice(a1==>b1, ..., an==>bn)@] means [@a1==>b1 /\ ... /\ an==>bn@] but is only admissible when [@a1 \/ ... \/ an@].
Changed line 20 from:
||  1|| v0.1.1|| multiple definitions|| simple|| done [[~lukstafi]] July 20, 2008, at 01:15 PM
to:
||  1|| v0.1.1|| multiple definitions|| simple|| done July 20, 2008, at 01:15 PM
Changed line 22 from:
|| 13|| v0.1.1|| mutual recursion|| difficult|| done [[~lukstafi]] August 15, 2008, at 10:26 PMlukstafi
to:
|| 13|| v0.1.1|| mutual recursion|| difficult|| done August 15, 2008, at 10:26 PM
August 15, 2008, at 10:26 PM by lukstafi - closer to v0.1.1
Changed line 22 from:
|| 13|| v0.1.1|| mutual recursion|| difficult|| in progress
to:
|| 13|| v0.1.1|| mutual recursion|| difficult|| done [[~lukstafi]] August 15, 2008, at 10:26 PMlukstafi
Changed lines 25-26 from:
|| 41|| v0.1.2|| simplify accounting of local variables|| simple|| in progress
|| 39|| v0.1.2|| rewrite invariant generation code (simplify representations)|| medium|| in progress
to:
|| 41|| v0.1.2|| simplify accounting of local variables|| simple|| half done
|| 39|| v0.1.2|| rewrite invariant generation code|| medium|| half done
July 29, 2008, at 03:49 PM by lukstafi - local vars need cleanup
Changed line 25 from:
|| 41|| v0.1.2|| simplify accounting of local variables|| simple|| waiting
to:
|| 41|| v0.1.2|| simplify accounting of local variables|| simple|| in progress
Changed line 20 from:
||  1|| v0.1.1|| multiple definitions|| simple|| done [[~lukstafi]]
to:
||  1|| v0.1.1|| multiple definitions|| simple|| done [[~lukstafi]] July 20, 2008, at 01:15 PM
July 20, 2008, at 01:14 PM by lukstafi - a small progress update
Changed lines 20-21 from:
||  1|| v0.1.1|| multiple definitions|| simple|| in progress
||  2|| v0.1.1|| nested "non-crossing" definitions|| simple|| in progress
to:
||  1|| v0.1.1|| multiple definitions|| simple|| done [[~lukstafi]]
||  2|| v0.1.1|| nested "non-crossing" definitions|| simple|| dropped (see id 32)
Changed line 23 from:
||  5|| v0.1.1|| cleaned-up output|| simple|| waiting
to:
||  5|| v0.1.1|| cleaned-up output|| simple|| in progress
Changed line 26 from:
|| 39|| v0.1.2|| rewrite invariant generation code (simplify representations)|| medium|| waiting
to:
|| 39|| v0.1.2|| rewrite invariant generation code (simplify representations)|| medium|| in progress
July 13, 2008, at 09:44 PM by lukstafi - a version for existentials
Changed lines 25-28 from:
|| 39|| v0.2.0|| rewrite invariant generation code (simplify representations)|| medium|| waiting
to:
|| 41|| v0.1.2|| simplify accounting of local variables|| simple|| waiting
|| 39|| v0.1.2|| rewrite invariant generation code (simplify representations)|| medium|| waiting
||  9|| v0.1.2|| existential quantification detection bugs|| medium|| waiting
|| 15|| v0.1.2|| return-type-nested existential quantification|| difficult
|| waiting
Deleted line 31:
||  9|| v0.2.0|| existential quantification detection bugs|| medium|| waiting
Changed lines 39-47 from:
|| 15|| v0.3.1|| return-type-nested existential quantification|| difficult|| waiting
|| 16|| v0.3.2|| Haskell-like
syntax input (and more complete OCaml syntax)|| medium|| waiting
|| 17|| v0.3.2|| Haskell source code generation|| medium|| waiting
|| 18|| v0.3.2|| OCaml source code generation|| medium|| waiting
|| 29|| v0.3.2|| handle and transfer
comments (also: full types as comments)|| simple|| waiting
|| 30|| v0.3.2
|| extend testsuite to run the examples|| simple|| waiting
|| 32|| v0.3.3|| source
-level transformation to flatten (move out) non-mutual-recursive local definitions|| simple|| waiting
|| 33|| v0.3.3
|| user type annotations in expressions|| simple|| waiting
|| 34|| v0.3.4
|| user constraint annotations on defined functions|| medium|| waiting
to:
|| 16|| v0.3.1|| Haskell-like syntax input (and more complete OCaml syntax)|| medium|| waiting
|| 17|| v0.3.1|| Haskell source code generation
|| medium|| waiting
|| 18|| v0.3.1|| OCaml source code generation|| medium|| waiting
|| 29|| v0.3.1|| handle and transfer comments (also: full types as comments)|| simple|| waiting
|| 30|| v0.3.1|| extend testsuite to run the examples
|| simple|| waiting
|| 32|| v0.3.2|| source-level transformation to flatten (move out) non
-mutual-recursive local definitions|| simple|| waiting
|| 33|| v0.3.2
|| user type annotations in expressions|| simple|| waiting
|| 34
|| v0.3.3|| user constraint annotations on defined functions|| medium|| waiting
July 12, 2008, at 01:38 PM by lukstafi - rewrite invariants, occurs check semiunification
Added line 25:
|| 39|| v0.2.0|| rewrite invariant generation code (simplify representations)|| medium|| waiting
Added line 33:
|| 40|| v0.2.0|| add chained occurs check for semi-unification|| simple|| waiting
July 08, 2008, at 10:54 AM by lukstafi - rethink dead code and exhaustiveness
Changed lines 26-27 from:
|| 27|| v0.2.0|| check for exhaustiveness of patterns|| medium|| waiting
to:
|| 38|| v0.2.0|| dead code management (negation constraints)|| medium|| waiting
|| 27|| v0.2.0|| check for exhaustiveness of patterns (together with id 38)
|| medium|| waiting
Changed line 29 from:
|| 35|| v0.2.0|| add multiplication back to the arithmetic domain|| simple|| waiting
to:
|| 35|| v0.2.0|| add multiplication back to the arithmetic domain (preparing for polynomial constraints)|| simple|| waiting
July 05, 2008, at 07:05 PM by lukstafi - transformation vs generation
Added line 53:
|| 37|| v0.5.0|| corrective (local) program generation|| difficult|| waiting
July 05, 2008, at 06:45 PM by lukstafi - user annotations, correction heuristics
Added line 28:
|| 35|| v0.2.0|| add multiplication back to the arithmetic domain|| simple|| waiting
Added lines 40-42:
|| 32|| v0.3.3|| source-level transformation to flatten (move out) non-mutual-recursive local definitions|| simple|| waiting
|| 33|| v0.3.3|| user type annotations in expressions|| simple|| waiting
|| 34|| v0.3.4|| user constraint annotations on defined functions|| medium|| waiting
Changed lines 52-54 from:
|| 25|| v0.5.0|| first class polymorphism (annotation-free)|| perhaps possible|| waiting
|| 26|| v0.6.0|| type definition reconstruction and refinement|| perhaps possible|| waiting
to:
|| 36|| v0.5.0|| corrective program transformation heuristics|| difficult|| waiting
|| 25|| v0.6.0|| first class polymorphism (annotation-free)|| perhaps possible|| waiting
|| 26|| v0.7
.0|| type definition reconstruction and refinement|| perhaps possible|| waiting
June 27, 2008, at 01:12 PM by lukstafi - mutual recursion
Changed lines 20-22 from:
||  1|| v0.1.1|| multiple definitions|| simple|| waiting
||  2|| v0.1.1|| nested "non-crossing" definitions|| simple|| waiting
||  3|| v0.1.1|| pattern implication|| medium|| waiting
to:
||  1|| v0.1.1|| multiple definitions|| simple|| in progress
||  2|| v0.1.1|| nested "non-crossing" definitions|| simple|| in progress
|| 13|| v0.1.1|| mutual recursion|| difficult|| in progress
Added line 25:
||  3|| v0.2.0|| pattern implication|| medium|| waiting
Changed lines 32-39 from:
|| 13|| v0.3.0|| mutual recursion|| difficult|| waiting
|| 14|| v0.3.1|| polynomial constraints|| difficult|| waiting
|| 15|| v0.3.2|| return-type-nested existential quantification|| difficult|| waiting
|| 16|| v0.3.3|| Haskell-like
syntax input (and more complete OCaml syntax)|| medium|| waiting
|| 17|| v0.3.3|| Haskell source code generation|| medium|| waiting
|| 18|| v0.3.3|| OCaml source code generation|| medium|| waiting
|| 29|| v0.3.3|| handle and transfer
comments (also: full types as comments)|| simple|| waiting
|| 30|| v0.3.3
|| extend testsuite to run the examples|| simple|| waiting
to:
|| 14|| v0.3.0|| polynomial constraints|| difficult|| waiting
|| 15|| v0.3.1|| return-type-nested existential quantification|| difficult|| waiting
|| 16|| v0.3.2|| Haskell-like syntax input (and more complete OCaml syntax)|| medium|| waiting
|| 17|| v0.3.2|| Haskell source code generation
|| medium|| waiting
|| 18|| v0.3.2|| OCaml source code generation|| medium|| waiting
|| 29|| v0.3.2|| handle and transfer comments (also: full types as comments)|| simple|| waiting
|| 30|| v0.3.2
|| extend testsuite to run the examples|| simple|| waiting
Changed line 44 from:
||  8|| v0.4.1|| quicksort with order detection|| simple|| waiting
to:
||  8|| v0.4.1|| mergesort with order detection|| simple|| waiting
May 30, 2008, at 11:20 PM by lukstafi - no explicit dead code
Deleted line 22:
||  4|| v0.1.1|| by-hand marked dead code|| medium|| waiting
Changed line 44 from:
||  7|| v0.4.1|| [[#choice]] operator for user constraints|| medium|| waiting
to:
||  7|| v0.4.1|| [[#choice | choice]] operator for user constraints|| medium|| waiting
Changed line 52 from:
!!! The [[#choice]] operator
to:
!!! [[#choice]] The ''choice'' operator
May 30, 2008, at 10:48 PM by lukstafi - error locations
Added line 31:
|| 31|| v0.2.2|| better error locations|| medium|| waiting
Changed line 35 from:
|| 16|| v0.3.3|| Haskell-like syntax input|| medium|| waiting
to:
|| 16|| v0.3.3|| Haskell-like syntax input (and more complete OCaml syntax)|| medium|| waiting
Changed line 39 from:
|| 30|| v0.3.3|| extend testsuite to run the examples|| waiting
to:
|| 30|| v0.3.3|| extend testsuite to run the examples|| simple|| waiting
May 30, 2008, at 02:59 AM by lukstafi - comments & run examples
Added lines 37-38:
|| 29|| v0.3.3|| handle and transfer comments (also: full types as comments)|| simple|| waiting
|| 30|| v0.3.3|| extend testsuite to run the examples|| waiting
May 28, 2008, at 07:24 PM by lukstafi - pattern&choice exhaustiveness
Changed line 26 from:
||  7|| v0.2.0|| [[#choice]] operator|| medium|| waiting
to:
|| 27|| v0.2.0|| check for exhaustiveness of patterns|| medium|| waiting
Added line 41:
||  7|| v0.4.1|| [[#choice]] operator for user constraints|| medium|| waiting
Changed lines 43-44 from:
|| 23|| v0.4.2|| Datalog domain (with saturation)|| medium|| waiting
|| 24|| v0.4.3|| equational theories domain (with completion)|| difficult|| waiting
to:
|| 28|| v0.4.2|| check for exhaustiveness of the "choice" conditions|| difficult|| waiting
|| 23||
v0.4.3|| Datalog domain (with saturation)|| medium|| waiting
|| 24|| v0.4.4
|| equational theories domain (with completion)|| difficult|| waiting
Changed line 50 from:
The "Choice" logical connective "lifts the pattern-matching semantics to the logic of annotations", allows for overloading of logical senses of values. [@choice(a1==>b1, ..., an==>bn)@] means [@a1==>b1 /\ ... /\ an==>bn@] but is only admissible when [@a1 \/ ... \/ an@].
to:
The "choice" logical connective "lifts the pattern-matching semantics to the logic of annotations", allows for overloading of logical senses of values. [@choice(a1==>b1, ..., an==>bn)@] means [@a1==>b1 /\ ... /\ an==>bn@] but is only admissible when [@a1 \/ ... \/ an@].
May 28, 2008, at 04:57 PM by lukstafi - choice not good enough for sorting
Deleted line 26:
||  8|| v0.2.0|| quicksort with order emulated on nats|| simple|| waiting
Added line 41:
||  8|| v0.4.1|| quicksort with order detection|| simple|| waiting
May 28, 2008, at 04:18 PM by lukstafi - choice operator
Changed line 26 from:
||  7|| v0.2.0|| disjunctions in user constraints|| simple|| waiting
to:
||  7|| v0.2.0|| [[#choice]] operator|| medium|| waiting
Added lines 47-48:
!!! The [[#choice]] operator
The "Choice" logical connective "lifts the pattern-matching semantics to the logic of annotations", allows for overloading of logical senses of values. [@choice(a1==>b1, ..., an==>bn)@] means [@a1==>b1 /\ ... /\ an==>bn@] but is only admissible when [@a1 \/ ... \/ an@].
May 26, 2008, at 11:23 PM by lukstafi - refined
Changed lines 20-41 from:
||  1|| v0.2|| multiple definitions|| simple|| waiting
||  2|| v0.2|| nested "non-crossing" definitions|| simple|| waiting
||  3|| v0.2|| pattern implication|| medium|| waiting
||  4|| v0.2|| by-hand marked dead code|| medium|| waiting
||  5|| v0.2|| cleaned-up output|| simple|| waiting
||  6|| v0.2|| disjunctions in user constraints|| simple|| waiting
||  7|| v0.2|| existential quantification detection bugs|| medium|| waiting
||  8|| v0.2|| exact generation of inequalities by "quantifier elimination"|| difficult|| waiting
||  9|| v0.2|| enumeration of dark shadow in Fourier-Motzkin|| medium|| waiting
|| 10|| v0.3|| mutual recursion|| difficult|| waiting
|| 11|| v0.3|| polynomial constraints
|| difficult|| waiting
|| 12|| v0.3|| return-type-nested existential quantification|| difficult|| waiting
|| 13|| v0.3|| Haskell-like syntax input|| medium|| waiting
|| 14
|| v0.3|| Haskell source code generation|| medium|| waiting
|| 15|| v0.3|| OCaml source code generation|| medium|| waiting
|| 16|| v0.4|| domain for lattices|| difficult|| waiting
|| 17|| v0.4|| domain for reals|| medium|| waiting
|| 18|| v0.4|| Datalog domain (with saturation)|| difficult|| waiting
|| 19|| v0.4|| equational theories domain (with completion)|| difficult|| waiting
|| 20|| v0.5|| first class polymorphism (annotation-free)|| perhaps possible|| waiting
|| 21|| v0.6|| type definition reconstruction and refinement|| perhaps possible|| waiting
to:
||  1|| v0.1.1|| multiple definitions|| simple|| waiting
||  2|| v0.1.1|| nested "non-crossing" definitions|| simple|| waiting
||  3|| v0.1.1|| pattern implication|| medium|| waiting
||  4|| v0.1.1|| by-hand marked dead code|| medium|| waiting
||  5|| v0.1.1|| cleaned-up output|| simple|| waiting
||  6|| v0.1.1|| automatic test suite|| simple|| waiting
||  7|| v0.2.0|| disjunctions in user constraints|| simple|| waiting
||  8|| v0.2.0|| quicksort with order emulated on nats|| simple|| waiting
||  9|| v0.2.0|| existential quantification detection bugs|| medium|| waiting
|| 10|| v0.2.0|| exact generation of inequalities by "quantifier elimination"|| difficult|| waiting
|| 11|| v0.2.0|| analyse the "odd.gadt" example|| simple|| waiting
|| 12|| v0.2.1|| enumeration of dark shadow in Fourier-Motzkin|| medium|| waiting
|| 13
|| v0.3.0|| mutual recursion|| difficult|| waiting
|| 14|| v0.3.1|| polynomial constraints|| difficult|| waiting
|| 15|| v0.3.2|| return-type-nested existential quantification|| difficult|| waiting
|| 16|| v0.3.3|| Haskell-like syntax input|| medium|| waiting
|| 17|| v0.3.3|| Haskell source code generation|| medium|| waiting
|| 18|| v0.3.3|| OCaml source code generation|| medium|| waiting
|| 19|| v0.4.0|| factor-out domain code: plug-in architecture for domains|| difficult|| waiting
|| 20|| v0.4.0|| domain for reals|| simple|| waiting
|| 21|| v0.4.0|| domain for integers|| simple|| waiting
|| 22|| v0.4.1|| domain for lattices|| difficult|| waiting
|| 23|| v0.4.2|| Datalog domain (with saturation)|| medium|| waiting
|| 24|| v0.4.3|| equational theories domain (with completion)|| difficult|| waiting
|| 25|| v0.5.0|| first class polymorphism (annotation-free)|| perhaps possible|| waiting
|| 26|| v0.6.0
|| type definition reconstruction and refinement|| perhaps possible|| waiting
May 26, 2008, at 10:27 PM by lukstafi - eq thy domain
Changed lines 37-40 from:
|| 18|| v0.4|| Datalog domain|| difficult|| waiting
|| 19|| v0.5|| first class polymorphism (annotation-free)|| perhaps possible|| waiting
|| 20|| v0.6|| type definition reconstruction and refinement|| perhaps possible|| waiting
to:
|| 18|| v0.4|| Datalog domain (with saturation)|| difficult|| waiting
|| 19|| v0.4|| equational theories domain (with completion)|| difficult|| waiting
|| 20|| v0.5|| first class polymorphism (annotation-free)|| perhaps possible|| waiting
|| 21
|| v0.6|| type definition reconstruction and refinement|| perhaps possible|| waiting
May 26, 2008, at 09:21 PM by lukstafi - timetable refinement
Changed line 18 from:
||%border=1
to:
||%border=2
Changed lines 20-55 from:
||  #|| v0.2|| multiple definitions|| simple|| waiting
||  #|| v0.2|| nested "non-crossing" definitions|| simple|| waiting
||  #|| v0.2|| pattern implication|| medium|| waiting
||  #|| v0.2|| by-hand marked dead code|| medium|| waiting
||  #|| v0.2|| cleaned-up output|| simple|| waiting
||  #|| v0.2|| disjunctions in user constraints|| simple|| waiting
||  #|| v0.2|| existential quantification detection bugs|| medium|| waiting
||  #|| v0.2|| exact generation of inequalities by "quantifier elimination"|| difficult|| waiting
||  #|| v0.3|| mutual recursion|| difficult|| waiting
||  #
|| v0.3|| polynomial constraints|| difficult|| waiting
||  #|| v0.3|| return-type-nested existential quantification|| difficult|| waiting
||  #|| v0.4|| domain for lattices|| difficult|| waiting
||  #|| v0.4|| domain for reals|| medium|| waiting
||  #|| v0.4|| Datalog domain|| difficult|| waiting
||  #
|| v0.5|| first class polymorphism (annotation-free)|| perhaps possible|| waiting
||  #|| v0.6|| type definition reconstruction and refinement|| perhaps possible|| waiting



Plans for future versions:
* more domains, the next one being lattices (partial orders with the minimum and maximum operators), later: reals, and user
-defined rule-based (like in bottom-up logic programming)
* existential quantification (if introduced before first class polymorphism, then still nested in any return part of a type (always-right on function arrows path into the type): this is needed for types that are already inferred)
* first class polymorphism (universal and existential quantifiers nested in types) inspired by MLF


Bugs:
# binary_multiply.gadt: result should be existentially quantified

Further plans:
# domain of lattices (medium-to-difficult)
# domain of real numbers (simple-to-medium)
# enumeration of dark shadow on Fourier satisfiability (medium)
# factoring-out the code for domains -- plug-in architecture (medium-to-difficult) (small priority)
# rule-based saturation domain (medium-to-difficult)
# first-class polymorphism (difficult)
# export to compilable languages (medium)
to:
||  1|| v0.2|| multiple definitions|| simple|| waiting
||  2|| v0.2|| nested "non-crossing" definitions|| simple|| waiting
||  3|| v0.2|| pattern implication|| medium|| waiting
||  4|| v0.2|| by-hand marked dead code|| medium|| waiting
||  5|| v0.2|| cleaned-up output|| simple|| waiting
||  6|| v0.2|| disjunctions in user constraints|| simple|| waiting
||  7|| v0.2|| existential quantification detection bugs|| medium|| waiting
||  8|| v0.2|| exact generation of inequalities by "quantifier elimination"|| difficult|| waiting
||  9|| v0.2|| enumeration of dark shadow in Fourier-Motzkin|| medium|| waiting
|| 10|| v0.3|| mutual recursion|| difficult|| waiting
|| 11|| v0.3|| polynomial constraints|| difficult|| waiting
|| 12
|| v0.3|| return-type-nested existential quantification|| difficult|| waiting
|| 13|| v0.3|| Haskell-like syntax input|| medium|| waiting
|| 14|| v0.3|| Haskell source code generation|| medium|| waiting
|| 15|| v0.3|| OCaml source code generation
|| medium|| waiting
|| 16
|| v0.4|| domain for lattices|| difficult|| waiting
|| 17|| v0.4|| domain for reals|| medium|| waiting
|| 18|| v0.4|| Datalog domain|| difficult|| waiting
|| 19|| v0.5|| first class polymorphism (annotation
-free)|| perhaps possible|| waiting
|| 20|| v0.6|| type definition reconstruction and refinement|| perhaps possible|| waiting

May 26, 2008, at 09:13 PM by lukstafi - plan for world domination
Deleted lines 4-8:
Plans for future versions:
* more domains, the next one being lattices (partial orders with the minimum and maximum operators), later: reals, and user-defined rule-based (like in bottom-up logic programming)
* existential quantification (if introduced before first class polymorphism, then still nested in any return part of a type (always-right on function arrows path into the type): this is needed for types that are already inferred)
* first class polymorphism (universal and existential quantifiers nested in types) inspired by MLF

Changed lines 17-44 from:
to:
!! Timetable:
||%border=1
||!id||!for version||!feature||!difficulty||!state||
||  #|| v0.2|| multiple definitions|| simple|| waiting
||  #|| v0.2|| nested "non-crossing" definitions|| simple|| waiting
||  #|| v0.2|| pattern implication|| medium|| waiting
||  #|| v0.2|| by-hand marked dead code|| medium|| waiting
||  #|| v0.2|| cleaned-up output|| simple|| waiting
||  #|| v0.2|| disjunctions in user constraints|| simple|| waiting
||  #|| v0.2|| existential quantification detection bugs|| medium|| waiting
||  #|| v0.2|| exact generation of inequalities by "quantifier elimination"|| difficult|| waiting
||  #|| v0.3|| mutual recursion|| difficult|| waiting
||  #|| v0.3|| polynomial constraints|| difficult|| waiting
||  #|| v0.3|| return-type-nested existential quantification|| difficult|| waiting
||  #|| v0.4|| domain for lattices|| difficult|| waiting
||  #|| v0.4|| domain for reals|| medium|| waiting
||  #|| v0.4|| Datalog domain|| difficult|| waiting
||  #|| v0.5|| first class polymorphism (annotation-free)|| perhaps possible|| waiting
||  #|| v0.6|| type definition reconstruction and refinement|| perhaps possible|| waiting



Plans for future versions:
* more domains, the next one being lattices (partial orders with the minimum and maximum operators), later: reals, and user-defined rule-based (like in bottom-up logic programming)
* existential quantification (if introduced before first class polymorphism, then still nested in any return part of a type (always-right on function arrows path into the type): this is needed for types that are already inferred)
* first class polymorphism (universal and existential quantifiers nested in types) inspired by MLF

Deleted lines 47-56:
Unfinished:
# multiple definitions (simple)
# nested "non-crossing" definitions (simple)
# mutual recursion (medium-to-difficult)
# pattern implications (simple-to-medium)
# by-hand marked dead code (simple-to-medium)
# cleaned-up output (medium)
# polynomial constraints (difficult)
# return-type-nested existential quantification (medium-to-difficult)

Changed lines 20-22 from:
* [[http://www.cs.unm.edu/~kapur/mypapers/aca2004.pdf | Deepak Kapur, '''Automatically Generating Loop Invariants Using Quantifier Elimination''']] (I eliminate branch-local variables anyway, so I could use this technique where appropriate)

to:
* [[http://www.cs.unm.edu/~kapur/mypapers/aca2004.pdf | Deepak Kapur, '''Automatically Generating Loop Invariants Using Quantifier Elimination''']] (I'll use this solution for linear inequalities, I haven't decided about polynomials yet)

Changed lines 20-22 from:
* [[http://www.cs.unm.edu/~kapur/mypapers/aca2004.pdf | Deepak Kapur, '''Automatically Generating Loop Invariants Using Quantifier Elimination''']] (I eliminate branch-local variables anyway, so I could use this technique where appropriate)

to:
* [[http://www.cs.unm.edu/~kapur/mypapers/aca2004.pdf | Deepak Kapur, '''Automatically Generating Loop Invariants Using Quantifier Elimination''']] (I eliminate branch-local variables anyway, so I could use this technique where appropriate)

May 26, 2008, at 12:11 PM by lukstafi - q elim comment
Changed lines 20-22 from:
* [[http://www.cs.unm.edu/~kapur/mypapers/aca2004.pdf | Deepak Kapur, '''Automatically Generating Loop Invariants Using Quantifier Elimination''']] (this is also what the program does)

to:
* [[http://www.cs.unm.edu/~kapur/mypapers/aca2004.pdf | Deepak Kapur, '''Automatically Generating Loop Invariants Using Quantifier Elimination''']] (I eliminate branch-local variables anyway, so I could use this technique where appropriate)

Changed lines 11-16 from:
* [[http://pauillac.inria.fr/~fpottier/biblio/pottier.html | Vincent Simonet and Francois Pottier '''A constraint-based approach to guarded algebraic data types.''']] [5] (initial constraint generation)
* [[http://citeseer.ist.psu.edu/henglein91type.html |  Fritz Henglein '''Type Inference with Polymorphic Recursion''']] (how to apply to type inference and solve semi-unification)
* [[http://www.cs.mu.oz.au/~sulzmann/manuscript/gadt-short.ps | Martin Sulzmann, Tom Schrijvers and Peter J. Stuckey '''Type Inference for GADTs via Herbrand Constraint Abduction''']] (how to "solve" implications)
* [[http://verify.stanford.edu/PAPERS/BGD03.ps | Sergey Berezin, Vijay Ganesh, and David L. Dill '''An Online Proof-Producing Decision Procedure for Mixed-Integer Linear Arithmetic''']] (how to eliminate variables from linear inequalities)
* [[http://www.kennknowles.com/research/knowles-flanagan.esop.07.type.pdf | Kenneth Knowles, Cormac Flanagan '''Type reconstruction for general refinement types''']] (that type-checking and type inference are separate things)
to:
* [[http://pauillac.inria.fr/~fpottier/biblio/pottier.html | Vincent Simonet and Francois Pottier, '''A constraint-based approach to guarded algebraic data types.''']] [5] (initial constraint generation)
* [[http://citeseer.ist.psu.edu/henglein91type.html |  Fritz Henglein, '''Type Inference with Polymorphic Recursion''']] (how to apply to type inference and solve semi-unification)
* [[http://www.cs.mu.oz.au/~sulzmann/manuscript/gadt-short.ps | Martin Sulzmann, Tom Schrijvers and Peter J. Stuckey, '''Type Inference for GADTs via Herbrand Constraint Abduction''']] (how to "solve" implications)
* [[http://verify.stanford.edu/PAPERS/BGD03.ps | Sergey Berezin, Vijay Ganesh, and David L. Dill, '''An Online Proof-Producing Decision Procedure for Mixed-Integer Linear Arithmetic''']] (how to eliminate variables from linear inequalities)
* [[http://www.kennknowles.com/research/knowles-flanagan.esop.07.type.pdf | Kenneth Knowles, Cormac Flanagan, '''Type reconstruction for general refinement types''']] (that type-checking and type inference are separate things)
Changed line 18 from:
* [[http://www.lsi.upc.edu/~erodri/ | '''Automatic Generation of Polynomial Loop Invariants''']] (how to infer polynomial function invariants, work in progress) detection of loop invariants by abstract interpretation turns out to be very relevant
to:
* [[http://www.lsi.upc.edu/~erodri/ | Enric Rodriguez-Carbonell, Deepak Kapur, '''Automatic Generation of Polynomial Loop Invariants''']] (how to infer polynomial function invariants, work in progress) detection of loop invariants by abstract interpretation turns out to be very relevant
Changed lines 20-22 from:
* [[http://www.cs.unm.edu/~kapur/mypapers/aca2004.pdf | Automatically Generating Loop Invariants Using Quantifier Elimination]] (this is also what the program does)

to:
* [[http://www.cs.unm.edu/~kapur/mypapers/aca2004.pdf | Deepak Kapur, '''Automatically Generating Loop Invariants Using Quantifier Elimination''']] (this is also what the program does)

Changed lines 20-22 from:
* [[http://www.cs.unm.edu/~kapur/mypapers/aca2004.pdf | Automatically Generating Loop Invariants Using Quantifier Elimination]] (this is also what the program does, in a limited form)

to:
* [[http://www.cs.unm.edu/~kapur/mypapers/aca2004.pdf | Automatically Generating Loop Invariants Using Quantifier Elimination]] (this is also what the program does)

May 26, 2008, at 11:37 AM by lukstafi - q elimination
Changed lines 15-16 from:
to:
* [[http://www.kennknowles.com/research/knowles-flanagan.esop.07.type.pdf | Kenneth Knowles, Cormac Flanagan '''Type reconstruction for general refinement types''']] (that type-checking and type inference are separate things)
Changed lines 20-23 from:

More literature:
* [[http://www.kennknowles.com/research/knowles-flanagan.esop.07.type.pdf | Kenneth Knowles, Cormac Flanagan '''Type reconstruction for general refinement types''']] (that type-checking and type inference are separate things)
to:
* [[http://www.cs.unm.edu/~kapur/mypapers/aca2004.pdf | Automatically Generating Loop Invariants Using Quantifier Elimination]] (this is also what the program does, in a limited form)

Changed lines 32-33 from:
# polished output (medium)
to:
# cleaned-up output (medium)
# polynomial constraints (difficult
)
Changed line 40 from:
# factoring-out the code for domains -- plug-in architecture (medium-to-difficult)
to:
# factoring-out the code for domains -- plug-in architecture (medium-to-difficult) (small priority)
Added line 43:
# export to compilable languages (medium)
May 25, 2008, at 01:17 AM by lukstafi - linear arith abduction
Changed lines 18-19 from:
to:
* [[http://www.cse.unsw.edu.au/~mmaher/pubs/cp/linear_abdn_revised.pdf | M. Maher, '''Abduction of Linear Arithmetic Constraints''']] (this is what the program actually does)
May 24, 2008, at 11:57 PM by lukstafi - polynomial loop invariants
Added lines 16-18:
Relevant literature I'm reading now:
* [[http://www.lsi.upc.edu/~erodri/ | '''Automatic Generation of Polynomial Loop Invariants''']] (how to infer polynomial function invariants, work in progress) detection of loop invariants by abstract interpretation turns out to be very relevant

Changed lines 20-23 from:
* [[http://citeseerx.ist.psu.edu/viewdoc/summary;jsessionid=457D868A1C122657FAAE4EB004FEA2DA?cid=4503934 | Kenneth Knowles, Cormac Flanagan '''Type reconstruction for general refinement types''']] (that type-checking and type inference are separate things)
* [[http://www.cs.washington.edu/homes/deibel/papers/cse503-loop-invariants/cse503-loop-invariants.pdf | Katherine Deibel '''On the Automatic Detection of Loop Invariants''']] (that function invariants can actually be reconstructed)


to:
* [[http://www.kennknowles.com/research/knowles-flanagan.esop.07.type.pdf | Kenneth Knowles, Cormac Flanagan '''Type reconstruction for general refinement types''']] (that type-checking and type inference are separate things)
May 24, 2008, at 03:13 AM by lukstafi - more literature
Changed lines 10-15 from:
Literature:
* [[http
://pauillac.inria.fr/~fpottier/biblio/pottier.html | Vincent Simonet and Francois Pottier '''A constraint-based approach to guarded algebraic data types.''']] [5]
* [[http://citeseerx.ist.psu.edu/viewdoc/summary;jsessionid=457D868A1C122657FAAE4EB004FEA2DA?cid=4503934 | Kenneth Knowles, Cormac Flanagan '''Type reconstruction for general refinement types''']]
* [[http://citeseer.ist.psu.edu/henglein91type.html |  Fritz Henglein '''Type Inference with Polymorphic Recursion''']]
*
[[http://verify.stanford.edu/PAPERS/BGD03.ps | Sergey Berezin, Vijay Ganesh, and David L. Dill '''An Online Proof-Producing Decision Procedure for Mixed-Integer Linear Arithmetic''']]
to:
Literature that directly influenced this work:
* [[http://pauillac.inria.fr/~fpottier/biblio/pottier.html | Vincent Simonet and Francois Pottier '''A constraint-based approach to guarded algebraic data types.''']] [5] (initial constraint generation)
*
[[http://citeseer.ist.psu.edu/henglein91type.html |  Fritz Henglein '''Type Inference with Polymorphic Recursion''']] (how to apply to type inference and solve semi-unification)
*
[[http://www.cs.mu.oz.au/~sulzmann/manuscript/gadt-short.ps | Martin Sulzmann, Tom Schrijvers and Peter J. Stuckey '''Type Inference for GADTs via Herbrand Constraint Abduction''']] (how to "solve" implications)
* [[http://verify.stanford.edu/PAPERS/BGD03.ps | Sergey Berezin, Vijay Ganesh, and David L. Dill '''An Online Proof-Producing Decision Procedure for Mixed-Integer Linear Arithmetic''']] (how to eliminate variables from linear inequalities)

More literature:
* [[http://citeseerx.ist.psu.edu/viewdoc/summary;jsessionid=457D868A1C122657FAAE4EB004FEA2DA?cid=4503934 | Kenneth Knowles, Cormac Flanagan '''Type reconstruction for general refinement types''']] (that type-checking and type inference are separate things)
* [[http://www.cs.washington.edu/homes/deibel/papers/cse503-loop-invariants/cse503-loop-invariants.pdf | Katherine Deibel '''On the Automatic Detection of Loop Invariants''']] (that function invariants can actually be reconstructed)


May 24, 2008, at 12:22 AM by lukstafi - reshaped
Changed lines 6-7 from:
* more domains, the next one being lattices (partial orders with the minimum and maximum operators)
* existential quantification (if introduced before first class polymorphism, then still nested at least in any return part of a type (always-right on function arrows path into the type)
to:
* more domains, the next one being lattices (partial orders with the minimum and maximum operators), later: reals, and user-defined rule-based (like in bottom-up logic programming)
* existential quantification (if introduced before first class polymorphism, then still nested in any return part of a
type (always-right on function arrows path into the type): this is needed for types that are already inferred)
Added lines 10-15:
Literature:
* [[http://pauillac.inria.fr/~fpottier/biblio/pottier.html | Vincent Simonet and Francois Pottier '''A constraint-based approach to guarded algebraic data types.''']] [5]
* [[http://citeseerx.ist.psu.edu/viewdoc/summary;jsessionid=457D868A1C122657FAAE4EB004FEA2DA?cid=4503934 | Kenneth Knowles, Cormac Flanagan '''Type reconstruction for general refinement types''']]
* [[http://citeseer.ist.psu.edu/henglein91type.html |  Fritz Henglein '''Type Inference with Polymorphic Recursion''']]
* [[http://verify.stanford.edu/PAPERS/BGD03.ps | Sergey Berezin, Vijay Ganesh, and David L. Dill '''An Online Proof-Producing Decision Procedure for Mixed-Integer Linear Arithmetic''']]

Deleted line 16:
Deleted line 19:
Deleted line 28:
Deleted lines 34-39:

Literature:
* [[http://pauillac.inria.fr/~fpottier/biblio/pottier.html | Vincent Simonet and Francois Pottier '''A constraint-based approach to guarded algebraic data types.''']] [5]
* [[http://citeseerx.ist.psu.edu/viewdoc/summary;jsessionid=457D868A1C122657FAAE4EB004FEA2DA?cid=4503934 | Kenneth Knowles, Cormac Flanagan '''Type reconstruction for general refinement types''']]
* [[http://citeseer.ist.psu.edu/henglein91type.html |  Fritz Henglein '''Type Inference with Polymorphic Recursion''']]
* [[http://verify.stanford.edu/PAPERS/BGD03.ps | Sergey Berezin, Vijay Ganesh, and David L. Dill '''An Online Proof-Producing Decision Procedure for Mixed-Integer Linear Arithmetic''']]
May 24, 2008, at 12:18 AM by lukstafi - fourier
Changed lines 34-36 from:
* [[http://pauillac.inria.fr/~fpottier/biblio/pottier.html | Vincent Simonet and Francois Pottier. '''A constraint-based approach to guarded algebraic data types.''']] [5]
* [[http://citeseerx.ist.psu.edu/viewdoc/summary;jsessionid=457D868A1C122657FAAE4EB004FEA2DA?cid=4503934 | Kenneth Knowles, Cormac Flanagan '''Type reconstruction for general refinement types.''']]
* [[http://citeseer.ist.psu.edu/henglein91type.html |  Fritz Henglein '''Type Inference with Polymorphic Recursion''']]
to:
* [[http://pauillac.inria.fr/~fpottier/biblio/pottier.html | Vincent Simonet and Francois Pottier '''A constraint-based approach to guarded algebraic data types.''']] [5]
* [[http://citeseerx.ist.psu.edu/viewdoc/summary;jsessionid=457D868A1C122657FAAE4EB004FEA2DA?cid=4503934 | Kenneth Knowles, Cormac Flanagan '''Type reconstruction for general refinement types''']]
* [[http://citeseer.ist.psu.edu/henglein91type.html |  Fritz Henglein '''Type Inference with Polymorphic Recursion''']]
* [[http://verify.stanford.edu/PAPERS/BGD03.ps | Sergey Berezin, Vijay Ganesh, and David L. Dill '''An Online Proof-Producing Decision Procedure for Mixed-Integer Linear Arithmetic
''']]
Changed line 34 from:
* [[http://pauillac.inria.fr/~fpottier/biblio/pottier.html | Vincent Simonet and François Pottier. '''A constraint-based approach to guarded algebraic data types.''']] [5]
to:
* [[http://pauillac.inria.fr/~fpottier/biblio/pottier.html | Vincent Simonet and Francois Pottier. '''A constraint-based approach to guarded algebraic data types.''']] [5]
May 23, 2008, at 10:52 PM by lukstafi - literature
Added lines 32-36:

Literature:
* [[http://pauillac.inria.fr/~fpottier/biblio/pottier.html | Vincent Simonet and François Pottier. '''A constraint-based approach to guarded algebraic data types.''']] [5]
* [[http://citeseerx.ist.psu.edu/viewdoc/summary;jsessionid=457D868A1C122657FAAE4EB004FEA2DA?cid=4503934 | Kenneth Knowles, Cormac Flanagan '''Type reconstruction for general refinement types.''']]
* [[http://citeseer.ist.psu.edu/henglein91type.html |  Fritz Henglein '''Type Inference with Polymorphic Recursion''']]
May 19, 2008, at 06:22 PM by lukstafi - uploaded
Changed lines 1-2 from:
The first version of my project which hasn't got name yet, is codenamed HMG Arith. It is not HMG(Arith) actually, because it doesn't have type annotations on recursive definitions. No type annotations at all. This is revision 0.1 of HMG Arith. The natural numbers domain constraints reconstruction is very slow, resulting in the @@split@@ function capability inference time being 1m10s on my computer. Revision 1.0 of HMG Arith is planned to be reasonably fast, or if that cannot be achieved, as fast as possible ;-)
to:
The first version of my project which hasn't got name yet, is codenamed HMG Arith. It is not HMG(Arith) actually, because it doesn't have type annotations on recursive definitions. No type annotations at all. This is unofficial revision 0.1 of HMG Arith, work in progress, avoid the flood of diagnostic information by directing stderr to /dev/null.
Changed lines 8-31 from:
* first class polymorphism (universal and existential quantifiers nested in types) inspired by MLF
to:
* first class polymorphism (universal and existential quantifiers nested in types) inspired by MLF

Bugs:

# binary_multiply.gadt: result should be existentially quantified

Unfinished:

# multiple definitions (simple)
# nested "non-crossing" definitions (simple)
# mutual recursion (medium-to-difficult)
# pattern implications (simple-to-medium)
# by-hand marked dead code (simple-to-medium)
# polished output (medium)
# return-type-nested existential quantification (medium-to-difficult)

Further plans:

# domain of lattices (medium-to-difficult)
# domain of real numbers (simple-to-medium)
# enumeration of dark shadow on Fourier satisfiability (medium)
# factoring-out the code for domains -- plug-in architecture (medium-to-difficult)
# rule-based saturation domain (medium-to-difficult)
# first-class polymorphism (difficult)
May 06, 2008, at 03:59 PM by lukstafi - release of HMG Arith.
Added lines 1-8:
The first version of my project which hasn't got name yet, is codenamed HMG Arith. It is not HMG(Arith) actually, because it doesn't have type annotations on recursive definitions. No type annotations at all. This is revision 0.1 of HMG Arith. The natural numbers domain constraints reconstruction is very slow, resulting in the @@split@@ function capability inference time being 1m10s on my computer. Revision 1.0 of HMG Arith is planned to be reasonably fast, or if that cannot be achieved, as fast as possible ;-)

[[Attach:hmg_arith.tar.gz]]

Plans for future versions:
* more domains, the next one being lattices (partial orders with the minimum and maximum operators)
* existential quantification (if introduced before first class polymorphism, then still nested at least in any return part of a type (always-right on function arrows path into the type)
* first class polymorphism (universal and existential quantifiers nested in types) inspired by MLF
January 26, 2007, at 02:00 PM by 192.168.3.130 -
Edit · History · Print · Recent Changes · Search · Links
Page last modified on November 04, 2015, at 09:09 PM