# F*

> functional programming language inspired by ML and aimed at program verification

**Wikidata**: [Q5423569](https://www.wikidata.org/wiki/Q5423569)  
**Wikipedia**: [English](https://en.wikipedia.org/wiki/F*_(programming_language))  
**Source**: https://4ort.xyz/entity/f-q5423569

## Summary
F* is a functional programming language inspired by ML that is designed for program verification. It combines functional programming with dependent types and refinement types to enable formal verification of software correctness. Developed by Microsoft Research and INRIA, F* aims to bridge the gap between high-level programming and mathematical proof.

## Key Facts
- F* is a dependently typed programming language that supports both functional and imperative programming paradigms
- The language was developed by Microsoft Research and Institut National de Recherche en Informatique et en Automatique (INRIA)
- F* is cross-platform and licensed under the Apache Software License 2.0
- The current stable version is 0.9.6.0, released on May 17, 2018
- F* is influenced by F#, OCaml, Standard ML, Dafny, and Lean
- The language features inference typing, strong typing, dependent typing, static typing, and refinement typing
- F* has official repositories on GitHub under the username FStarLang
- The language includes a source-to-source compiler and has a MacPorts port available

### Q: What is F* used for?
A: F* is used for program verification, allowing developers to write code that can be formally verified for correctness. It's particularly useful for security-critical applications where bugs could have serious consequences.

### Q: How does F* differ from other functional languages?
A: F* combines functional programming with dependent types and refinement types, enabling formal verification of programs. Unlike many functional languages, it supports both functional and imperative programming paradigms.

### Q: Who created F*?
A: F* was created by Microsoft Research in collaboration with INRIA (Institut National de Recherche en Informatique et en Automatique).

## Why It Matters
F* represents a significant advancement in the field of formal verification and programming language design. By combining functional programming with dependent types and refinement types, it provides a powerful tool for writing provably correct software. This is particularly important in domains where software failures could have catastrophic consequences, such as cryptography, aerospace, and medical devices. F* bridges the gap between high-level programming and mathematical proof, making formal verification more accessible to software developers. Its development by Microsoft Research and INRIA demonstrates the growing importance of formal methods in the software industry. As software systems become increasingly complex and critical to modern infrastructure, tools like F* that can provide mathematical guarantees of correctness become invaluable.

## Notable For
- Being one of the few programming languages that combines functional programming with dependent types and refinement types
- Supporting both functional and imperative programming paradigms within a single language
- Being developed by both Microsoft Research and INRIA, showcasing international collaboration in programming language research
- Providing formal verification capabilities that can prove the absence of certain classes of bugs
- Having a strong influence from ML-family languages while adding unique verification-oriented features

## Body
### Development and History
F* was developed as a research project by Microsoft Research in collaboration with INRIA. The language draws inspiration from ML-family languages, particularly F#, OCaml, and Standard ML, while incorporating features from verification-oriented languages like Dafny and Lean.

### Technical Features
F* supports multiple typing disciplines including inference typing, strong typing, dependent typing, static typing, and refinement typing. This combination allows developers to write programs that can be formally verified for correctness. The language supports both functional and imperative programming paradigms, making it versatile for different programming styles.

### Verification Capabilities
One of F*'s key features is its ability to verify programs using mathematical proofs. The language's type system is expressive enough to encode many properties that need to be verified, and the compiler can check these properties automatically. This makes F* particularly suitable for writing security-critical code where bugs could have serious consequences.

### Ecosystem and Tools
F* has an active development community with repositories on GitHub under the username FStarLang. The language includes a source-to-source compiler and has a MacPorts port available. It also has a Chocolatey community package for Windows users. The official website provides documentation and resources for learning and using the language.

### Applications
F* is particularly well-suited for applications where software correctness is paramount. This includes cryptographic implementations, security protocols, and other safety-critical systems. The language's verification capabilities make it possible to prove properties about code that would be difficult or impossible to verify using traditional testing methods.

## Schema Markup
```json
{
  "@context": "https://schema.org",
  "@type": "Thing",
  "name": "F*",
  "description": "Functional programming language inspired by ML and aimed at program verification",
  "url": "https://www.fstar-lang.org/",
  "sameAs": [
    "https://en.wikipedia.org/wiki/F%2A_(programming_language)",
    "https://www.wikidata.org/wiki/Q7286576"
  ],
  "additionalType": "ProgrammingLanguage"
}

## References

1. [Source](https://www.fstar-lang.org/#people)
2. [Release 0.9.0. 2015](https://github.com/FStarLang/FStar/releases/tag/v0.9.0)
3. [Release 0.9.1. 2015](https://github.com/FStarLang/FStar/releases/tag/v0.9.1)
4. [Release 0.9.1.1. 2015](https://github.com/FStarLang/FStar/releases/tag/v0.9.1.1)
5. [Release 0.9.4.0. 2017](https://github.com/FStarLang/FStar/releases/tag/V0.9.4.0)
6. [Release 0.9.5.0. 2017](https://github.com/FStarLang/FStar/releases/tag/v0.9.5.0)
7. [Release 0.9.6.0. 2018](https://github.com/FStarLang/FStar/releases/tag/v0.9.6.0)