Igael Azoulay, Service R&D q-crypt the Read Once Bit Corp. mai/juin 2013



Documents pareils
Qu est-ce qu un ordinateur quantique et à quoi pourrait-il servir?

Cryptologie et physique quantique : Espoirs et menaces. Objectifs 2. distribué sous licence creative common détails sur

Calculateur quantique: factorisation des entiers

Pourquoi l apprentissage?

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Programmation linéaire

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

D'UN THÉORÈME NOUVEAU

CAPTEURS - CHAINES DE MESURES

Introduction au langage C

I. Introduction aux fonctions : les fonctions standards

EXPLOITATIONS PEDAGOGIQUES DU TABLEUR EN STG

Cours (7) de statistiques à distance, élaboré par Zarrouk Fayçal, ISSEP Ksar-Said, LES STATISTIQUES INFERENTIELLES

La physique quantique couvre plus de 60 ordres de grandeur!

INF6304 Interfaces Intelligentes

Journal officiel de l'union européenne

Algorithmique avec Algobox

Application 1- VBA : Test de comportements d'investissements

L ordinateur quantique

Technologies quantiques & information quantique

Item 169 : Évaluation thérapeutique et niveau de preuve

La correction des erreurs d'enregistrement et de traitement comptables

Introduction à la relativité générale

Ebauche Rapport finale

La fonction exponentielle

Généralités sur le Langage Java et éléments syntaxiques.

De la sphère de Poincaré aux bits quantiques :! le contrôle de la polarisation de la lumière!

SECTION 5 BANQUE DE PROJETS

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

2 Grad Info Soir Langage C++ Juin Projet BANQUE

LE PROBLEME DU PLUS COURT CHEMIN

Chp. 4. Minimisation d une fonction d une variable

CHAPITRE VIII : Les circuits avec résistances ohmiques

Chaînes de Markov au lycée

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme?

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme?

POKER ET PROBABILITÉ

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Programmation C++ (débutant)/instructions for, while et do...while

Traitement de texte : Quelques rappels de quelques notions de base

Réseau : Interconnexion de réseaux, routage et application de règles de filtrage.

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Une étude de différentes analyses réalisées par le BIT

Série TD 3. Exercice 4.1. Exercice 4.2 Cet algorithme est destiné à prédire l'avenir, et il doit être infaillible! Exercice 4.3. Exercice 4.

UE C avancé cours 1: introduction et révisions

PREINSCRIPTION EN LIGNE

Continuité et dérivabilité d une fonction

Introduction. I Étude rapide du réseau - Apprentissage. II Application à la reconnaissance des notes.

UE Programmation Impérative Licence 2ème Année

Nombre de marches Nombre de facons de les monter

NOTIONS DE PROBABILITÉS

Introduction à l approche bootstrap

Canevas théoriques du projet sur le poker Partie A

Comment réaliser physiquement un ordinateur quantique. Yves LEROYER

Recherche dans un tableau

Cours 7 : Utilisation de modules sous python

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007

OASIS Date de publication

Raisonnement par récurrence Suites numériques

Date : Tangram en carré page

L analyse boursière avec Scilab

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Utiliser des fonctions complexes

Impact des robots d indexation sur le cache de second niveau de SPIP IMBERTI Christophe - SG/SPSSI/CP2I/DO Ouest 06/06/2012 mis à jour le 05/07/2012

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

1 sur 5 10/06/14 13:10

2. Activités et Modèles de développement en Génie Logiciel

Chapitre 2. Classes et objets

Interface PC Vivago Ultra. Pro. Guide d'utilisation

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Chapitre 1 Régime transitoire dans les systèmes physiques

choisir H 1 quand H 0 est vraie - fausse alarme

FICHE UE Licence/Master Sciences, Technologies, Santé Mention Informatique

Poker. A rendre pour le 25 avril

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Exercices de dénombrement

CORRIGE LES NOMBRES DECIMAUX RELATIFS. «Réfléchir avant d agir!»

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

modélisation solide et dessin technique

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Rappels sur les suites - Algorithme

Master Modélisation Aléatoire Paris VII, Cours Méthodes de Monte Carlo en nance et C++, TP n 2.

MUNICIPALITÉ PREAVIS N AU CONSEIL COMMUNAL. Présidence : Groupe "Les Verts" Groupe Socialiste

Algorithmique I. Algorithmique I p.1/??

Baccalauréat L spécialité, Métropole et Réunion, 19 juin 2009 Corrigé.

Formats d images. 1 Introduction

FUSION PAR CONFINEMENT MAGNÉTIQUE

La Transparence des Coûts en Microfinance Mise en oeuvre de la Transparence en Afrique de L Ouest

Documentation utilisateur. [EIP] TransLSF

Limites finies en un point

Métriques de performance pour les algorithmes et programmes parallèles

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/ Présentation. 1.2 Ressources

LA NOTATION STATISTIQUE DES EMPRUNTEURS OU «SCORING»

Qualité du logiciel: Méthodes de test

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

Chapitre 1 : Introduction aux bases de données

Observation des modalités et performances d'accès à Internet

Seconde et première Exercices de révision sur les probabilités Corrigé

Transcription:

Simulations numériques d'une fonction de réponses donnant des corrélations en cos² dans les conditions d'une expérience EPR avec des photons intriqués. Igael Azoulay, Service R&D q-crypt the Read Once Bit Corp. mai/juin 2013 Introduction Cet article s'adresse à la communauté des chercheurs de la physique et de l'informatique quantiques qui connaissent les expériences EPR (1) et l'application du théorème de Bell (2) et ses dérivés. Je vais présenter deux formules de réponses d'alice ou Bob qui, si elles ne sont peut être pas révolutionnaires, donnent envie de refaire le point sur les cheminements qui ont mené à l'invention de la théorie de la non-localité. A Présentation La théorie de la non-localité répond à la question "Comment font Alice et Bob pour faire corréler leurs réponses alors qu'ils ne communiquent pas classiquement?". Bell a idéalisé le problème en supposant que la physique classique ne pouvait trouver qu'une droite en place de la courbe en cos 2 et en ignorant le coefficient spécifique du polariseur de la loi de Malus. Il est possible de ne pas s'en satisfaire. Pour ne pas avoir recours ici à la non-localité, l faut : 1 - produire la même formule pour Alice et Bob 2 - conserver la même formule si dans la simulation d'autres Alice et Bob sont ajoutés 3 - respecter la loi de Malus en K cos², où K est le coefficient du dispositif 4 - partager une variable avant la séparation La contrainte no 2 est la plus importante. S'il n'y a pas de communication entre les Alice et Bob, on doit en conclure que les réponses sont indépendantes des choix d'inclinaisons tierces et par là-même qu'elles sont universelles. En tenant compte du point no 4, on peut en conclure que la réponse type sera une fonction de la variable partagée et de l'angle d'inclinaison de la partie du dispositif qui répond ( Alice, Bob ou des clones ). Cela implique notamment que le résultat ne dépend pas du moment de la mesure pour peu qu'il y ait la même variable partagée et la même inclinaison, aux erreurs de mesure près. Partant de la loi de Malus, j'ai imaginé une petite complication : il y a non pas un angle d'incidence mais deux et ils sont indépendants. Afin de retrouver la loi originale, elle est appliquée plusieurs fois jusqu'à obtenir un choix ou abandonner la recherche de solution. Je ne m'émeus pas de cette approche, la loi de Malus contient un coefficient. Elle ne décrit pas non plus les imperfections aux bornes de 0 et pi/2.

Figures 1 et 2 : Voici les formules utilisées dans les simulations publiées. On reconnait une forme commune : un produit de probabilités unitaires de la loi de Malus appliquée à plusieurs variables. Puis une répétition markovienne est utilisée pour simuler un contexte de Poisson. Deux paramètres d'algorithme suffisent mais ce ne sont pas des variables. Il faut noter qu'un algorithme peut l'implémenter de 2 façons. - Soit il utilise le formalisme de Markov qui va permettre grâce à une simplification de produire une réponse en quelques calculs et une seule randomisation, - soit la simulation est effectuée avec de nombreuses randomisations afin de représenter les essais successifs. La différence relève de la précision de calcul mais comme nous allons le voir, cela donne des paramètres optimaux et une précision très différents. B Formule no 1 avec plusieurs variables partagées

figures 3 à 9 : nombres de variables 2, 3, 4, 5, 6, 13 et 15. Notez que déjà à 6 ou 7, la courbe cible est

fittée. A 15, la racine de la moyenne des carrés est voisine de 2.6. 10-5. Basées sur la loi de Malus et inspirées des contextes poissoniens, elles convergent vers les mêmes résultats sans aucun échange d'informations entre les programmes sur les angles des polariseurs. L'écart avec la cible de l'une des meilleures courbes est inférieure à 0.5% pour un taux de réponses exploitables de 71% de toutes les paires produites. Cela correspond à une efficacité par bras de 84%, meilleure encore que la référence expérimentale de 74-78%. Voir le camembert et le taux de réponses par différences d'angles au dessus. N M écart cible % paires 5 28 132 52.300 6 85 100 55.400 7 262 80 57.600 8 824 68 59.500 9 2578 56 60.900 10 8275 48 62.100 11 26554 42 63.200 12 85873 38 64.100 13 275650 34 64.800 15 2877752 29 65.900 Devant le succès de cette amélioration, j'ai tenté d'augmenter le nombre de variables partagées et d'en observer les effets. Les calculs multi-randomisés sont de complexité exponentielle. Cependant, je constate une convergence dès la puissance 10 et une précision croissante. A 15, l'erreur est en dessous de l'erreur d'un excellent dispositif mécanique. L'augmentation de la précision va être corrélée avec une augmentation du taux de réponses d'alice et Bob. Au delà d'un optimum, la précision va diminuer tandis que le taux de réponses va augmenter. ( figure 11 )

Figure 10 : Exploration de la formule 1 : performances et taux de réponses conjointes pour un nombre de variables croissant. Les courbes en orange relient les optima. L'irrégularité en e 13.7 ( puissance 14, paramètre m=884323, environ pi n-2 ) est due à la faiblesse de l'échantillon 14 qui est en cours de recalcul. On voit qu'avec cette formule, le fitting converge très bien comme le taux de réponses ( légèrement au dessus de 2/3 avec les débuts des simulations jusqu'à 19 ). A la suite de ce surprenant constat, j'ai connu les recherches de Fine et Maudlin qui ont largement défriché le problème. En effet, il existe des fonctions de réponses très précises et pour l'instant, compatibles objectivement avec les comptes rendus expérimentaux. C Formule no 2 avec une seule variable partagée A ce point, on peut se demander jusqu'où peut aller le taux de réponses conjointes et s'il peut atteindre 100 % comme dans les expériences physiques. La première formule ne le permet pas. Une analyse du comportement de l'algorithme face à une inclinaison et en intégrant sur les variables partagées montre que ce taux légèrement supérieur à 2/3 est une limite technique due à la conjugaison de cette méthode et de l'universalité requise. Les améliorations de la formule pour un jeu de tirages donné se font au détriment de l'universalité et ne sont pas portables. Les seules améliorations portables se font au détriment de la qualité. Mais ce n'est qu'une formule. Hormis "la stratégie" induite par son expression, il y a très peu d'hypothèses. Rien ne dit qu'il est impossible de faire mieux, soit avec le même type d'approche mais d'autres formules, soit en utilisant des

formules conditionnelles avec ou sans pré-supposés sur les préparations. Par exemple, une longue simulation est en cours pour évaluer des solutions avec des variables moins fortement partagées. pour déplacer, dans le modèle, une partie de l'indétermination vers le processus de prépararation expérimental. La seconde formule est à peu près la même. Mais au lieu de partager plusieurs variables, je vais supposer qu'il n'y en a qu'une seule. Ensuite, Alice et Bob vont appliquer exactement la même déclinaison pour retrouver un jeu de variables conséquent pour la formule. J'ai introduit ici un paramètre fixe de "zone autour" et un autre qui est la méthode de génération autour de la variable partagée dans cette "zone autour". Le champ est vaste. La largeur de la "zone autour" va varier selon les modèles de 6 à 30 avec une zone de stabilisation autour de 22.5. Je n'explore pas encore une largeur de "zone autour" qui serait une fonction de la variable partagée car les calculs préliminaires n'ont pas montré de convergences locales qui en feraient une priorité. Ce qui va être trivialement intéressant maintenant c'est d'observer des taux de réponses forts avec des courbes non optimales mais peut être très proches de l'expérience physique.

figures 11 à 17 : 1 variable partagée à laquelle s'ajoutent des variables construites. Calculs avec une seule randomisation. La précision est dégradée aux alentours de 0.5 % mais le taux de réponses peut grimper à 75% et plus.

Figure 18 : Efficacité du paramètre m du second algorithme. En bleu la performance c'est à dire la sommes des valeurs absolues des différences des courbes. Les 3 autres courbes représentent les pourcentages comparés d'efficacité. La courbe en cuvette représente l'efficacité du paramètre nombre de tentatives ( de franchir la barrière difficile ). Pour chaque nombre de variables fournies ou dérivées d'une seule, il y a une plage de stabilité de la profondeur optimale de calcul. Les courbes du savoir ( +/-1,+/-1) et des ignorances partielle ( +-1,oo) et (oo,+-1) et totale ( oo,oo) sont aussi reliées à la différence d'inclinaisons par une fonction périodique. notes : La courbe verte en cosinus² de la différence d'angles surcharge presque partout la courbe théorique en violet. Les 2 sous-tableaux représentent le taux de réponses, en vert des paires comparées, en rouge les singles qui n'ont pu être comparés car l'autre réponse était "je ne sais pas" et les paires de "je ne sais pas". Le graphique reporte les réponses rapportées à la différence d'angles et le camembert le total. Prendre en compte le segment [-180,180] plutôt que le [-90,90] apportait un peu d'imprécision sur les extrêmes du fait des distributions qui les défavorisent. Cependant, la précision est conservée à nombre de tests égal par différence d'angles. Les courbes de réponses en fonction de la différence d'angles sont périodiques. La loi de Malus est respectée. La distribution en fonction de l'angle du polariseur est constante et vaut 1/2 aux paires non détectées près.

L'utilisation de la fonction de pré-sélection améliore les performances de certains algorithmes mais est inutile avec celle qui montre les meilleures performances. Cette famille de fonctions semble adéquate pour modéliser plusieurs autres problèmes de corrélations physiques ou non en transférant la fonction de base de la formule ( ici le cosinus 2 ) au niveau des corrélations. D Conditions initiales des simulations numériques Comme dans l'expérience physique, il y a : Les agents et dispositifs virtuels * source de photons émis par l'agent HG, Hidden variables random generator HG HG admet 1 paramètre de fonctionnement qui est le nombre de variables. Format de l'émission numérique : entiers entre -180 et +180 inclus En outre, une option permet à HG de procéder à une pré-sélection qui consiste à tester une seule fois la combinaison pour voir si elle passe le test avec une inclinaison aléatoire sans répondre oo ( zéro ). L'utilisation ou non de l'option fait l'objet de 2 rapports numériques distincts. * les détecteurs Alice et Bob qui vont utiliser la même stratégie, A et B A et B n'ont aucun contact fonctionnel. Ils n'ont pas de mémoire. Ils ne connaissent que les 4 opérations, random, cosinus et arctangente Le calcul matriciel pour simplifier leurs opérations est un paramètre Ils utilisent exactement le même outil de détection Ils traitent les réponses dans l'ordre souhaité si nécessaire Bien sûr, ils peuvent fonctionner n'importe où, à n'importe quels moments indépendants * Les générateurs d'inclinaisons de polariseurs AGI et BGI AGI et BGI n'ont aucun contact fonctionnel Ils tirent au sort des inclinaisons entre -90 et +90 inclus Ils n'ont pas de mémoire. Ils ne connaissent que random * Le calculateur de corrélations CAC qui apparie les réponses de A et B puis les compare. * Un algorithme basé sur la loi de Malus appliquée à plusieurs variables. Les codes sources des très courts programmes sont téléchargeables. Des ports ont déjà été effectués, même en javascript, un langage informatique de navigateur internet, testable en ligne (6).

Randomiseurs et Divers Tous les randomiseurs sont initialisés par une variable représentant le moment de l'expérience. Des tests ont été effectués avec des randomiseurs différents pour chaque agent, d'autres avec des listes d'angles de polariseurs construites. Ne notant aucun changement, le choix du randomiseur de chaque expérience sera sans importance au moment de les reproduire pour les vérifier. * La résolution angulaire de ces premières expériences est le degré. 1 ) HG produit un fichier qu'il transmet à Alice et Bob et envoie un signal à AGI et BGI qui peuvent entrer en action 2 ) AGI et BGI vont envoyer respectivement à A et B des listes d'inclinaisons de polariseurs. 3 ) A et B recevant les données de HG et respectivement AGI et BGI vont traiter les données et envoyer indépendamment à C un fichier de ce format no de l'émission réponse +1, -1 ou oo oo correspond à la non détection de +1 ni -1. Il peut y avoir en plus : ( +/- 1, oo ), ( oo, +-1 ) et ( oo, oo ) 4) CAC reçoit les résultats, les compare et publie les courbes de corrélations. 5 ) Chaque expérience comporte 10.000.000 de tests sauf si elle converge vers des courbes trop éloignées de la cible. Les différences sous -90 et sur +90 ne sont pas représentées. Elles sont très légèrement moins

précises car les distributions y sont moins denses. Elles sont disponibles pour vérification. 6) Refaire ces opérations en faisant varier les paramètres. E Conditions des simulations numériques ultérieures Des test ont montré qu'il ne servait à rien de procéder de la sorte et qu'un bon programme unique pouvait faire les mêmes vérifications "sans risque". Toutefois ce passage a été utile car il a permis de partiellement paralléliser les calculs en multipliant les Alice et Bob en terme de calculateurs et de faire des explorations en lançant des calculs à aléas égaux. F Conclusions Ces corrélations sont d'ordre numérique. Comme je viens de le montrer et qu'il faut le vérifier avec des simulateurs, il est possible de construire des simulations non quantiques avec des calculs lourds mais simples tout en distinguant le savoir de l'ignorance. Les calculs ne sont pas réajustés au moment de l'observation des corrélations éventuelles, seules les réponses arrivées par paires valides sont traitées, les autres sont comptées ou déduites. La validité est déterminée par la fonction de prédiction et non établie après la jonction. Alice ou Bob peuvent invalider une paire de leurs propres initiatives. Une seule décision suffit à empêcher la comparaison. Quand Alice et Bob calculent bien, ils n'invalident pas les paires dans une grande majorité de cas et le résultat conjoint de leurs réponses est une courbe de corrélations en cosinus². La part de réalité physique dans ce processus ne peut être déterminée dans le cadre de cette étude mais elle contient des indications sur les comparaisons d'efficacité et de précision ou bien d'efficacité et de différence d'angles, pour, au travers d'expériences optiques ou de leurs archives, soit la réfuter et mieux cerner l'information non locale, soit construire la bonne formule. Il faut noter que ces formules s'appliquent aussi à d'autres problèmes de corrélation. Tous les éléments de cette étude, programmes et bases de données, sont disponibles pour vérification. Igael Azoulay q-crypt R&D Annexe : Codes sources d'une implémentation en C/C++ (7) Arguments généraux : * GlobaleOneVar : utiliser l'un des 2 algorithmes ; il vaut mieux cloner et supprimer ce test dans cette boucle * LARARC, une valeur fixée expérimentalement à 23 ; elle représente dans l'un des algorithmes la taille

autour de teta qui est considérée * monrand(double x ) est une fonction de randomisation quelconque rendant une valeur assez indéterminée de 0 à x. Toutes les fonctions de randomisation sont bonnes à tester à des fins de vérification * nbvarcachees est le nombre de variables qu'elles soient toutes fournies ou déduites d'une seule La fonction d'alice et Bob, à compiler avec une bonne librairie mathématique ou non : teta, l'angle du polariseur fourni par l'expérimentateur maxtt, le nombre de tests pour passer le barrière, un seul réussi suffit et arrête le processus une variable qui pourrait devenir globale dans d'autres implémentations Varca, la table des nbvarcachees variables dites cachées. Il n'y a qu'une variable dans le modèle GlobaleOneVar. 1 variable d'où on dérive les autres ou 0 si N variables aléatoires. Cela sélection l'algorithme. #define LARARC 25 #define LARARC2 ( LARARC*pi/360.0 ) // Variante avec une randomisation ( GlobaleOneVar => formule 2 sinon formule 1 ) int retmark( int teta, int nbvarcachees, int maxtt, int GlobaleOneVar, int * Varca) double fk,t0, tpn,tqn,t0n,tp=1.0,tq=1.0,p ; if( GlobaleOneVar ) double dd,dd1=( Varca[0] - teta )* pi /180.0; // angles are given in degrees double lepas = LARARC * pi /(180.0* nbvarcachees), pasd = LARARC2 ; else for( int i=0 ; i < nbvarcachees ; i ++, pasd += lepas ) tp *= cos( ( dd = pasd+dd1 ) ) ; tq *= sin(dd) ; tp *= tp ; tq *= tq ; for( int i=0 ; i < nbvarcachees ; i ++ ) p = pow(cos( (Varca[i]-teta)*pi/180.0),2) ; tp *= p ; tq *= ( 1.0 - p ) ;

// a Markov chain instead of iterate if( tp+tq == 0.0 ) return 0 ; // bug! joker sent double spot = (1.0- pow( 1.0 - tp - tq,maxtt))/(tp+tq); double randoo = monrand(1.0) ; if( randoo <= tp*spot ) return 1 ; // gave its prediction else if( randoo >= 1.0 - tq*spot ) return -1; // gave its prediction else return 0 ; // joker // ou bien la variante avec des randomisations ( formule 1 ) // ici les variables cachées sont des réels dans [ -180.0 : 180.0 ] int retopcvmnomarkovd( int teta, double * seuil) int i, k, nb, masque = 0, masque2 = MasqueM - masque ; double lescos[64] ; for( i=0 ; i < nbvarcachees ; i ++ ) lescos[i] = pow(cos( (seuil[i]-teta)*pis180),2) ; tmajor++ ; for( int ver=0 ; ver < nbtestsselect ; ver ++ ) for( i=0, k = 1, nb = 0 ; i < nbvarcachees ; i ++, k <<= 1 ) if( monrand(1.0) <= lescos[i] ) nb += k ; if( nb == masque ) return 1 ; majorm1 ++ ; else if( nb == masque2 )

major0 ++ ; return 0 ; return -1 ; major1 ++ ; Références et citations 1 A. Einstein, B. Podolsky and N. Rosen (1935) : Can Quantum-Mechanical description of physical reality be considered complete? Phys. Review 47, 777. 2 J. S. Bell (1964) : On the Einstein-Podolsky-Rosen Paradox, Physics 1, 195-200. 3 Fine, A. (1982): Hidden variables, joint probabilities, and Bell inequalities, Physical Review Letters 48, 291-295. 4 Tim Maudlin (2002). Quantum Non-Locality and Relativity: Metaphysical Intimations of Modern Physics. Blackwell Publishers. 5 q-crypt (2013) : Les résultats préliminaires sur le web chez q-crypt en français http://www.qcrypt.fr/index2.html 6 q-crypt (2013) : Test en ligne de l'algorithme 6-12-2 http://www.q-crypt.fr/animhtml5.html 7 Brian W. Kernighan, Dennis M. Ritchie ( 1988 ) : C Programming Language (2nd Edition) Prentice Hall 8 Melvin D. Springer's (1979) : The Algebra of Random Variables