Gemini: A Functional Programming Language for Hardware Description

11/10/2019
by   Aditya Srinivasan, et al.
0

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.

READ FULL TEXT

page 15

page 16

04/12/2022

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

Many type theories rely significantly on dependent types. Implementing a...
07/10/2019

HTCC: Haskell to Handel-C Compiler

Functional programming languages, such as Haskell, enable simple, concis...
04/16/2021

A Gradual Type System for Elixir

Elixir is a functional programming language with dynamic typing. We prop...
07/19/2020

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

In problems of mathematical physics, to study the structures of spaces u...
11/28/2018

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

We present three projects concerned with applications of proof assistant...
11/16/2020

Opportunities and Challenges for Circuit Board Level Hardware Description Languages

Board-level hardware description languages (HDLs) are one approach to in...
05/06/2022

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

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