Gemini: A Functional Programming Language for Hardware Description

by   Aditya Srinivasan, et al.

This paper presents Gemini, a functional programming language for hardware description that provides features such as parametric polymorphism, recursive datatypes, higher-order functions, and type inference for higher expressivity compared to modern hardware description languages. Gemini demonstrates the theory and implementation of novel type-theoretical concepts through its unique type system consisting of multiple atomic kinds and dependent types, which allows the language to model both software and hardware constructs safely and perform type inference through multi-staged compilation. The primary technical results of this paper include formalizations of the Gemini grammar, typing rules, and evaluation rules, a proof of safety of Gemini's type system, and a prototype implementation of the compiler's semantic analysis phase.


page 15

page 16


Functional Pearl: Dependent type inference via free higher-order unification

Many type theories rely significantly on dependent types. Implementing a...

HTCC: Haskell to Handel-C Compiler

Functional programming languages, such as Haskell, enable simple, concis...

A Gradual Type System for Elixir

Elixir is a functional programming language with dynamic typing. We prop...

Approaches to the implementation of generalized complex numbers in the Julia language

In problems of mathematical physics, to study the structures of spaces u...

Adventures in Formalisation: Financial Contracts, Modules, and Two-Level Type Theory

We present three projects concerned with applications of proof assistant...

Opportunities and Challenges for Circuit Board Level Hardware Description Languages

Board-level hardware description languages (HDLs) are one approach to in...

The Supervisionary proof-checking kernel (or: a work-in-progress towards proof generating code)

Interactive theorem proving software is typically designed around a trus...