GithubHelp home page GithubHelp logo

andrew_abstract's Introduction

Abstract Interpretation

This project is an attempt to learn static analysis and abstract interpretation from the ground up.

Andrew Fox

Spring 2024

Usage

The best way to run this project so far is with sbt test

Weekly Updates

Because why not keep a log this can show my timeline and yeah.

Week 1(main branch):

  • Simple AST structure for addition of strings and ints

Week 2(logic branch):

  • Added if statments, booleans
  • Started adding in structure for variables and while loops

Week 3:

  • Added in simple implementation for subtraction(with Number and Point only)
  • added in abstract_evaluate nodes: these will report the interval of a given expression, for now only really functional with Number and Point
  • added in Rand
  • started thinking about direction of project and other cases that could happen
  • thought about combination of the evaluate and abstract_evaluate
    • My thought process is same function but as its parameters its taking a bool that says if it is abstract or not, however this seems too simple
  • Added in Multiplication which supports NumberxNumber and PointxNumber
  • Added in Point class, alongside support for abstraction(the TwoDInterval class)

Week 4(analysis branch):

  • Added in State and functionality for it so I can track variables across multiple expression calls.
  • Added in real functionality for while loops which now can run
  • Started abstract interpretation for a loop(picking up each additional state per pass through the loop and merging them together)

Week 5(analysis branch):

  • Learned process for simple interpretation of a loop
  • Added in simple abstract_evaluate() for while loops
    • Added in Bottom, extension for Int|Interval comparisons
    • Added in IncrementVar as a sublass of Executable
  • Created Conditional class to hold comparisons
  • Changed Rand to have a max value to create more specific ranges

andrew_abstract's People

Contributors

apfox500 avatar

Watchers

Gowtham Kaki avatar Sriram S avatar  avatar Fabio Somenzi avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.