I come from Haskell programming and currently writing my (Diploma/Master) thesis. I'm having trouble finding a formal/mathematical notation for a Haskell data-type.
The Haskell data type is:
data ARE = ARE [(ARF, ARF)] [ARF] -- Haskell form
type ARE = ( [(ARF, ARF)], [ARF] ) -- alternate form
An ARE
is an affine randomized encoding and an ARF
is an affine randomized function. You can think of an ARF
just as an abstract entity, just like a field or group element. My problem is how to formally notate a definition for an ARE
.
First, I'll try to describe what an ARE
is in english: An ARE
is a tuple (in the "alternate form", in my Haskell program it's represented as in the "Haskell form") containing:
- a list (not a set since it could contain duplicates) containing tuples. Each of these tuples is just two
ARF
s - a list of
ARF
s
What I'm looking for is a formal notation of such an ARE
.
(edit: removed nonsense notation proposal...)
About the expected audience (and their knowledge domain) of my thesis: I will provide Haskell code, but the entire thesis should be understandable by someone who is not a programmer (and in particular no Haskell programmer). The reader will need some knowledge in cryptography, computer science (but not programming) and basic mathematics (some field theory, especially the finite fields $\mathbb{F}_{2^n}$). In the text I simply want to tell the reader what AREs are and how I transform general expressions to AREs.