2016
DOI: 10.1145/2914770.2837655
|View full text |Cite
|
Sign up to set email alerts
|

Dependent types and multi-monadic effects in F*

Abstract: We present a new, completely redesigned, version of F*, a language that works both as a proof assistant as well as a general-purpose, verification-oriented, effectful programming language. In support of these complementary roles, F* is a dependently typed, higher-order, call-by-value language with _primitive_ effects including state, exceptions, divergence and IO. Although primitive, programmers choose the granularity at which to specify effects by equipping each effect with a monadic, predicate transformer se… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
71
0

Year Published

2017
2017
2020
2020

Publication Types

Select...
4
3
1

Relationship

3
5

Authors

Journals

citations
Cited by 59 publications
(73 citation statements)
references
References 44 publications
0
71
0
Order By: Relevance
“…Liu et al [40] proposed to perform the fuzz testing on smart contracts by iteratively generating random but diverse transactions to detect reentrancy bugs. 1) Readability • Human readable code [34], [35] • Human readable execution [36], [37] • Re-entrancy [38], [39], [40] 2) Functional issues • Block randness [41], [42], [43] • Overcharging [44], [45] Deployment • Bytecode analysis [46], [47], [48], [49], [50], [51], [52], [53] 1) Contract correctness • Source code analysis [54], [55], [56], [57] • Machine learning based analysis [58], [59], [60] • Graph based analysis [61], [62] 2) Dynamic control flow • Path-searching [63] • Execution environment [64] Execution 1) Trustworthy oracle • Third-party involved [65] • Decentralized [66], [67] 2) Transaction-ordering dependence • Sequential execution [68] • Predefining contract [69] 3) Execution efficiency • Execution serialization [70], [71], [72] • Inspection of contract [73] Completion 1) Privacy and Security • Privacy [74],…”
Section: Recent Advances For Functional Issuesmentioning
confidence: 99%
See 1 more Smart Citation
“…Liu et al [40] proposed to perform the fuzz testing on smart contracts by iteratively generating random but diverse transactions to detect reentrancy bugs. 1) Readability • Human readable code [34], [35] • Human readable execution [36], [37] • Re-entrancy [38], [39], [40] 2) Functional issues • Block randness [41], [42], [43] • Overcharging [44], [45] Deployment • Bytecode analysis [46], [47], [48], [49], [50], [51], [52], [53] 1) Contract correctness • Source code analysis [54], [55], [56], [57] • Machine learning based analysis [58], [59], [60] • Graph based analysis [61], [62] 2) Dynamic control flow • Path-searching [63] • Execution environment [64] Execution 1) Trustworthy oracle • Third-party involved [65] • Decentralized [66], [67] 2) Transaction-ordering dependence • Sequential execution [68] • Predefining contract [69] 3) Execution efficiency • Execution serialization [70], [71], [72] • Inspection of contract [73] Completion 1) Privacy and Security • Privacy [74],…”
Section: Recent Advances For Functional Issuesmentioning
confidence: 99%
“…In particular, a formal verification method was proposed in [54] to analyze and verify both the runtime safety and the functional correctness of smart contracts (e.g., Ethereum contracts). This method first translates smart contracts into codes written in F * [55], which is a functional programming language mainly used for program verification. This translation can be used to detect abnormal patterns like stack overflow (i.e., exceeding the stack limit).…”
Section: B Deployment Challengesmentioning
confidence: 99%
“…An important idea in the non-relational verification setting is to encapsulate the specification of a monadic computation inside a monad [Ahman et al 2017;Delbianco and Nanevski 2013;Maillard et al 2019;Nanevski et al 2008aNanevski et al ,b, 2013Swamy et al 2013Swamy et al , 2016, giving the same algebraic footing to both computations and specifications. For instance, stateful computations returning values in A are elements of a state monad St A = S → (A × S) and can be given specifications drawn from the monad W St A = (A × S → P) → (S → P) equipped with the monad structure given by…”
Section: Specifications As (Relative) Monadsmentioning
confidence: 99%
“…(1) specifications are drawn from a monad, ordered by precision [Ahman et al 2017;Delbianco and Nanevski 2013;Maillard et al 2019;Nanevski et al 2008aNanevski et al ,b, 2013Swamy et al 2013Swamy et al , 2016 and (2) one can link any computation with its specification by defining a monad morphism, i.e., a mapping between two monads that respects their monadic structure. In the case of state, an example monad morphism is θ St (c) = λφ s. φ (c s) : St A → W St A mapping a stateful computation to the unary specification monad W St A = (A×S→P)→P, by running it and then checking whether the postcondition holds of the result.…”
Section: Introductionmentioning
confidence: 99%
“…The community includes very successful industrial users for whom safety and security matter [24], [25], and has contributed great tooling. OCaml is also more future-proof; as the next generation of safer programming languages and tools, like Coq [26] or F* [27], are often written and/or extract code to OCaml.…”
Section: Quick Digression: Types (And Ocaml)mentioning
confidence: 99%