Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Abstract Core #28

Merged
merged 35 commits into from Jul 14, 2022
Merged

Abstract Core #28

merged 35 commits into from Jul 14, 2022

Commits on Apr 26, 2022

  1. Begin shifting to new architecture; add abstract machine, inst, exec_…

    …record, extension_env, and constraints
    WilfredTA committed Apr 26, 2022
    Configuration menu
    Copy the full SHA
    e677a81 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    15315eb View commit details
    Browse the repository at this point in the history
  3. remove todo when exec halts

    WilfredTA committed Apr 26, 2022
    Configuration menu
    Copy the full SHA
    f8e3a3c View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    538328a View commit details
    Browse the repository at this point in the history

Commits on Apr 27, 2022

  1. Implement transpile from generic constraints to z3; define simple lan…

    …g in terms of AbstractInstruction
    WilfredTA committed Apr 27, 2022
    Configuration menu
    Copy the full SHA
    557a622 View commit details
    Browse the repository at this point in the history

Commits on May 4, 2022

  1. Configuration menu
    Copy the full SHA
    c5f54b0 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    1bafb11 View commit details
    Browse the repository at this point in the history

Commits on May 23, 2022

  1. cleaned compiler warnings; ported ADD instruction (#18)

    * cleaned compiler warnings; ported ADD instruction
    
    * formatting
    
    Co-authored-by: Tannr <tannr@hey.com>
    williamberman and WilfredTA committed May 23, 2022
    Configuration menu
    Copy the full SHA
    1311dba View commit details
    Browse the repository at this point in the history

Commits on May 24, 2022

  1. more concrete instructions; removed prev val from mem op (#19)

    * more concrete instructions; removed prev val from mem op
    williamberman committed May 24, 2022
    Configuration menu
    Copy the full SHA
    16285f1 View commit details
    Browse the repository at this point in the history

Commits on Jun 1, 2022

  1. Instructions as Singletons; Modularize AbstractMachine

    Made return type for AbstractInstruction abstract.
    
    Because instructions can now return different types, the `InnerInterpreter` trait constrains the set of possible return types from individual instructions.
    All existing instructions still return `AbstractExecRecord`. All existing instructions are concrete so they return `ConcreteAbstractExecRecord` which has its constraint type parameter set to the unit type. This allows concrete instructions to not have any generic type for constraints while still using the same `AbstractExecRecord` return type.
    
    Separated AbstractMachine into AbstractMachine, InnerInterpreter, and OuterInterpreter.
    
    AbstractMachine - purely encapsulates the current state of the machine. It does not include constraints as concrete machines do not have constraints.
    
    InnerInterpreter - handles the return value and state update from execution of an individual instruction. We have two example inner interpreters. The concrete inner interpreter maps simply updates the current machine state. The symbolic inner interpreter returns a vec of new machine states and constraints.
    
    OuterInterpreter - handles orchestration of which machine state(s) to run. For the example outer interpreters we implement, we embed the inner interpreter in the outer interpreter struct as a trait object. This allows for some flexibility in choosing different inner interpreters so long as they have a  step function of the right type for the outer interpreter. The concrete outer interpreter just steps the concrete inner interpreter until the machine can’t execute any further. The symbolic outer interpreter performs DFS on the search graph of machine states. Note that this architecture allows us to substitute out an alternative symbolic outer interpreter that performs BFS or any other alternative search strategy.
    
    I temporarily removed the `PathSummary` portion yet where we use the solver to find the reachable paths and return models. The type signature of `ConcreteOuterInterpreter` is already incredibly complex and I'd prefer to not add the additional generics that the solver is going to entail in a separate PR.
    williamberman committed Jun 1, 2022
    Configuration menu
    Copy the full SHA
    b1302b4 View commit details
    Browse the repository at this point in the history

Commits on Jun 3, 2022

  1. Configuration menu
    Copy the full SHA
    696614e View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    6576eed View commit details
    Browse the repository at this point in the history

Commits on Jun 6, 2022

  1. Configuration menu
    Copy the full SHA
    a243da5 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    c0284af View commit details
    Browse the repository at this point in the history
  3. fix arith naming conflict

    WilfredTA committed Jun 6, 2022
    Configuration menu
    Copy the full SHA
    8587a14 View commit details
    Browse the repository at this point in the history

Commits on Jun 14, 2022

  1. Configuration menu
    Copy the full SHA
    9788f1b View commit details
    Browse the repository at this point in the history

Commits on Jun 16, 2022

  1. Configuration menu
    Copy the full SHA
    884b37f View commit details
    Browse the repository at this point in the history

Commits on Jun 19, 2022

  1. Configuration menu
    Copy the full SHA
    f8fcb9f View commit details
    Browse the repository at this point in the history

Commits on Jun 23, 2022

  1. Configuration menu
    Copy the full SHA
    f7678e7 View commit details
    Browse the repository at this point in the history

Commits on Jun 28, 2022

  1. remove generic from stack (#24)

    * remove generic from stack
    williamberman committed Jun 28, 2022
    Configuration menu
    Copy the full SHA
    0a3d84c View commit details
    Browse the repository at this point in the history

Commits on Jun 29, 2022

  1. Simplify AST; add interpreter skeleton with pre and post hooks to fac…

    …ilitate custom types support
    WilfredTA committed Jun 29, 2022
    Configuration menu
    Copy the full SHA
    f6917f0 View commit details
    Browse the repository at this point in the history
  2. Add symbolic bool

    WilfredTA committed Jun 29, 2022
    Configuration menu
    Copy the full SHA
    1c27549 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    639420c View commit details
    Browse the repository at this point in the history
  4. remove memory generic (#25)

    * remove memory generic
    
    * lint
    williamberman committed Jun 29, 2022
    Configuration menu
    Copy the full SHA
    2fe0b8c View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    87866ac View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    82e2097 View commit details
    Browse the repository at this point in the history

Commits on Jul 1, 2022

  1. Configuration menu
    Copy the full SHA
    a4b22f1 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    4894d0f View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    93ccadc View commit details
    Browse the repository at this point in the history

Commits on Jul 14, 2022

  1. fmt

    WilfredTA committed Jul 14, 2022
    Configuration menu
    Copy the full SHA
    85b85bd View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    b101982 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    84e1aa3 View commit details
    Browse the repository at this point in the history
  4. Fix some linter warnings

    WilfredTA committed Jul 14, 2022
    Configuration menu
    Copy the full SHA
    77771fd View commit details
    Browse the repository at this point in the history
  5. Fix some linter warnings

    WilfredTA committed Jul 14, 2022
    Configuration menu
    Copy the full SHA
    161c0c8 View commit details
    Browse the repository at this point in the history
  6. fmt

    WilfredTA committed Jul 14, 2022
    Configuration menu
    Copy the full SHA
    fd6cf62 View commit details
    Browse the repository at this point in the history