Polymorphic Fractional Permission Inference

An automatic golf ball dispenser includes a loading assembly, a base, and a delivery assembly. The loading assembly includes a bowl and a supply tube. The volume of the bowl is structured to hold a large quantity of golf balls. The bowl is sized to snugly fit into the supply tube. The base includes a platform, a tee, and a projection. The loading assembly is rigidly connected to the base, but may be quickly removed. A tee is fastened to the platform at the opposite end thereof. The delivery assembly comprises a delivery tube, a loading interface, a stop, and a plug. The loading interface is fastened to the first end of the delivery tube. The first end of the delivery assembly is pivotally connected to the loading assembly at substantially the second end thereof. A stop is fastened to the bottom of the delivery tube at the first end thereof. When the delivery tube is swung downward, a ball falls through a first cutout of the delivery tube and rolls to a second cutout of the delivery tube. The ball falls through the second cutout and rests on the tee. The delivery assembly then retracts to an upright position. The delivery tube may be actuated in a semi-automatic or fully automatic mode.

[1]  Joxan Jaffar,et al.  Constraint logic programming , 1987, POPL '87.

[2]  John C. Reynolds,et al.  Separation logic: a logic for shared mutable data structures , 2002, Proceedings 17th Annual IEEE Symposium on Logic in Computer Science.

[3]  John Tang Boyland,et al.  Checking Interference with Fractional Permissions , 2003, SAS.

[4]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 1999, OOPSLA '99.

[5]  Ondrej Lhoták,et al.  Typestate-like analysis of multiple interacting objects , 2008, OOPSLA.

[6]  Jonathan Aldrich,et al.  Modular typestate checking of aliased objects , 2007, OOPSLA.

[7]  Frank Piessens,et al.  The VeriFast program verifier , 2008 .

[8]  Philip Wadler,et al.  Linear Types can Change the World! , 1990, Programming Concepts and Methods.

[9]  John Boyland,et al.  Concurrency analysis based on fractional permissions , 2007 .

[10]  Flemming Nielson,et al.  Principles of Program Analysis , 1999, Springer Berlin Heidelberg.

[11]  Jonathan Aldrich,et al.  Practical API Protocol Checking with Access Permissions , 2009, ECOOP.

[12]  Robert DeLine,et al.  Typestates for Objects , 2004, ECOOP.

[13]  Alexander Aiken,et al.  A Capability Calculus for Concurrency and Determinism , 2006, CONCUR.

[14]  K. Rustan M. Leino,et al.  A Basis for Verifying Multi-threaded Programs , 2009, ESOP.

[15]  Tachio Terauchi,et al.  Checking race freedom via linear programming , 2008, PLDI '08.

[16]  JEAN-MARC ANDREOLI,et al.  Logic Programming with Focusing Proofs in Linear Logic , 1992, J. Log. Comput..

[17]  Eric Bodden,et al.  Finding programming errors earlier by evaluating runtime monitors ahead-of-time , 2008, SIGSOFT '08/FSE-16.

[18]  Robert E. Strom,et al.  Typestate: A programming language concept for enhancing software reliability , 1986, IEEE Transactions on Software Engineering.

[19]  Frank Pfenning,et al.  Efficient resource management for linear logic proof search , 1996, Theor. Comput. Sci..

[20]  Patrick Lincoln,et al.  Linear logic , 1992, SIGA.

[21]  David K. Smith Theory of Linear and Integer Programming , 1987 .

[22]  Jonathan Aldrich,et al.  Verifying correct usage of atomic blocks and typestate , 2008, OOPSLA.

[23]  Peter W. O'Hearn,et al.  Permission accounting in separation logic , 2005, POPL '05.