or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing
xxxxxxxxxx
(Py)Spec Formal Engineering
slides: https://hackmd.io/@ericsson49/pyspec-formal-engineering
My background
My work @TXRX
My work @TXRX/PegaSys/ConsenSys:
But concentrate on the latter here
(Py)Spec Formal Engineering
==>
Use Formal Methods
(Py)Spec Formal Engineering
==>
Concentrate on Engineering aspects
(Py)Spec Formal Engineering
Key problem
Expressive language means it's more difficult to reason about.
==>
S/W engineers and FM practioners chase different goals, as a consequence.
Key problem
Beacon chain perspective
==>
FM practioners needs are largely ignored.
My research tries to answer "What can be done about it?"
Beacon chain problems (FM perspective)
Opportunities
Good stuff
My approach
Engineer the spec
Tailor FM to problem domain
Meta-programming
Light(er)-weight FMs
Current state
Transpilation
Research stuff
Mostly ready, but not published yet
Started to work on "semantics"
Plans
Near term plans
Longer term plans
Semantics Highlits
Executable "semantics"
"Semantics" - a model which allows to tranform the python subset (employed by pyspec) to a "better" form.
Components
Memory Model
Some assumptions
==>
Formal Engineering perspective
Want the best of both ways, under reasonable restrictions
Aliasing
Aliasing is the core problem. Several ways to solve:
"Dangerous" aliasing
In a concurrent program, access to the location should be synchronized to avoid a data race.
Rust ownership type + borrow checker prevents such dangerous aliasing. There's either:
Reasoning and aliasing
Formal reasoning about detructive updates is notoriously difficult for very similar reasons.
Memory model
Typically, some simplifying assumptions are made. Often it's about restricting aliasing: the less aliasing, the less info to propagate.
The Rust memory model is very attractive in this respect:
Fast and Purious
My hypothesess are:
Q&A