archive-fr.com » FR » N » NICOLASPOUILLARD.FR

Total: 307

Choose link from "Titles, links and description words view":

Or switch to "Titles and links view".

  • x x A Bool uniqBy A Set Eq A List A List A uniqBy uniqBy x xs x filter not x uniqBy xs x uniqBy filter not x xs listToMaybe a A Set a List A Maybe A listToMaybe nothing listToMaybe x just x findIndices a A Set a A Bool List A List findIndices p xs i x i zip xs 0 p x findIndices A A p go

    Original URL path: https://nicolaspouillard.fr/publis/NomPa.agda/Data.List.NP.html (2015-10-11)
    Open archived version from archive



  • import Data List open import Function open import Relation Binary PropositionalEquality module Internals where Atom Set Atom x y Atom Bool Nat Atom id rm Atom List Atom List Atom rm a rm a x xs if a x then rm a xs else x rm a xs inj m n m n m n inj id abstract Atom Set Atom Internals Atom x y Atom Bool Internals Atom Internals

    Original URL path: https://nicolaspouillard.fr/publis/NomPa.agda/Data.Atom.html (2015-10-11)
    Open archived version from archive


  • Level module Function InstanceArguments where explicitize a b A Set a B A Set b x A B x x A B x explicitize f x f x a A

    Original URL path: https://nicolaspouillard.fr/publis/NomPa.agda/Function.InstanceArguments.html (2015-10-11)
    Open archived version from archive


  • b c c f a b c f a b c cong f refl refl refl refl a A Set a i j A i j i j i j i j i j i j refl refl refl a A Set a i j A Decidable A i j refl refl yes refl injective a A Set a InjectiveRel A injective refl refl refl surjective a A Set a SurjectiveRel A surjective refl refl refl bijective a A Set a BijectiveRel A bijective record injectiveREL injective surjectiveREL surjective module Reasoning a A Set a where infix 2 finally infixr 2 x y z A x y y z x z x y y z trans x y y z finally x y A x y x y finally x y x y syntax finally x y x y x x y y module Reasoning a b A Set a B Set b where infix 2 finally infixr 2 x y z A B x y y z x z x y y z Setoid trans A setoid B x y y z finally x y A B x y x y finally x y x y syntax finally x

    Original URL path: https://nicolaspouillard.fr/publis/NomPa.agda/Relation.Binary.PropositionalEquality.NP.html (2015-10-11)
    Open archived version from archive


  • yes zero suc m suc n with m n yes p yes suc p no p no p pred zero suc n no λ suc m zero no λ private refl Reflexive refl zero zero refl suc n suc refl n sym Symmetric sym zero zero sym suc n suc sym n trans Transitive trans zero zero zero trans suc m suc n suc trans m n subst Substitutive subst zero id subst P suc n subst P suc n isEquivalence IsEquivalence isEquivalence record refl refl sym sym trans trans isDecEquivalence IsDecEquivalence isDecEquivalence record isEquivalence isEquivalence equality Equality equality record isEquivalence isEquivalence subst subst PropEq Equality to reflexive equality PropEq PropEq refl setoid Setoid setoid record Carrier isEquivalence isEquivalence decSetoid DecSetoid decSetoid record Carrier isDecEquivalence isDecEquivalence cong f f cong zero refl cong f suc n cong f suc n module Reasoning Trans Reasoning trans data REL L zero where z n m m m m m zero m z n z n s s m m n n m n m n m n m n m n m n m n m n m n suc m suc n s s m n s s m n pred

    Original URL path: https://nicolaspouillard.fr/publis/NomPa.agda/Data.Nat.Logical.html (2015-10-11)
    Open archived version from archive


  • bijection record to to bijective record injective injective surjective record from from right inverse of right inverse of open Bijection bijection public using equivalence surjective surjection right inverse The set of all inverses between two sets infix 3 f t Set f Set t Set From To Inverse P setoid From P setoid To If two setoids are in bijective correspondence then there is an inverse between them fromBijection f f t t From Setoid f f To Setoid t t Bijection From To Inverse From To fromBijection b record to Bijection to b from Bijection from b inverse of record left inverse of Bijection left inverse of b right inverse of Bijection right inverse of b Map and zip map f f t t From Setoid f f To Setoid t t f f t t From Setoid f f To Setoid t t t From To From To f To From To From to from from InverseOf to f from InverseOf t to Inverse From To Inverse From To map t f pres eq record to t to from f from inverse of pres inverse of where open Inverse eq zip f f t t From Setoid f f To Setoid t t f f t t From Setoid f f To Setoid t t f f t t From Setoid f f To Setoid t t t From To From To From To f To From To From To From to from to from from InverseOf to from InverseOf to f from from InverseOf t to to Inverse From To Inverse From To Inverse From To zip t f pres eq eq record to t to eq to eq from f from eq from eq inverse of pres inverse of eq inverse of eq where open Inverse

    Original URL path: https://nicolaspouillard.fr/publis/NomPa.agda/Function.Inverse.html (2015-10-11)
    Open archived version from archive

  • Assembleur MIPS
    et calcule la valeur de l expression Le programme sera imprimé sur la sortie standard val compile Expression expression unit Avant de compléter le compilateur commencez par examiner le code existant dans arithmetique ml Il s occupe de la génération du code de lancement fonctions prelude et postlude C est la fonction de compilation centrale compile expr qui est incomplète elle ne fonctionne que pour les variables et les constantes entières En effet le langage des expressions arithmétiques est donné par les déclarations de type du fichier expression mli Les quatre opérateurs arithmétiques type binop Plus Minus Times Div type expression Opération binaire Binexp of binop expression expression Constante entière Int of int Variable X Vous pouvez d ores et déjà fabriquer zyva et l essayer à l aide d une expression ne comportant pas d opérations binaires Compiler ici l expression arithmétique est x echo x zyva simple spi Essayer spim notrap file simple spi SPIM Version 7 0 of July 7 2004 Copyright 1990 2004 by James R Larus larus cs wisc edu All Rights Reserved See the file README for a full copyright notice 3 3 4 4 0 Le code de lancement contient une boucle lire une valeur entière au clavier évaluer l expression en liant la variable x à cette valeur afficher le résultat La boucle continue tant que la valeur lue est non nulle Durant la compilation la valeur de x est stockée dans le registre a0 Le résultat du calcul doit être produit dans v0 Par exemple pour l expression x le code produit se termine par eval move v0 a0 jr ra Compilation simple Le plus simple est d utiliser la pile pour stocker les résultats des calculs intermédiaires voir les mouvements de pile pour la fonction fact dans le cours en n utilisant qu un nombre limité de registres pour effectuer les opérations arithmétiques La compilation consiste alors en un simple parcours de l arbre représentant l expression à compiler Par exemple pour l expression x 1 3 x x on peut obtenir le code machine suivant si elle est parcourue dans l ordre postfixe eval move v0 a0 VAR sub sp sp 4 PUSH sw v0 0 sp move v0 a0 VAR lw v1 0 sp add sp sp 4 POP mul v0 v0 v1 MUL sub sp sp 4 PUSH sw v0 0 sp li v0 3 CONST 3 sub sp sp 4 PUSH sw v0 0 sp li v0 1 CONST 1 sub sp sp 4 PUSH sw v0 0 sp move v0 a0 VAR lw v1 0 sp add sp sp 4 POP sub v0 v0 v1 SUB lw v1 0 sp add sp sp 4 POP mul v0 v0 v1 MUL lw v1 0 sp add sp sp 4 POP add v0 v0 v1 ADD jr ra En commentaire figurent des instructions équivalentes exprimées dans un hypothétique langage bytecode Voir la solution Compilation en registres Le code ci dessus est très mauvais Le premier reproche majeur

    Original URL path: http://nicolaspouillard.fr/td-compil/TD1/index.html (2015-10-11)
    Open archived version from archive

  • Un interprète Pseudo-Pascal
    defs genv env function failwith Pas implémenté let rec interpret instruction defs genv env function IProcCall callee es ignore interpret call defs genv env callee es ISeq is List iter interpret instruction defs genv env is failwith Pas implémenté let interpret p interpret instruction StringMap empty StringMap empty StringMap empty p main Vous pouvez déjà vérifier que ça marche sur le programme ultra minimal trivial p trivial p On obtient compilo ipp test trivial p 10 On pourra noter au passage que cet interprète incomplet ne considère que la suite d instructions p main qui constituent le point d entrée du programme ignorant les déclarations de variables globales et de fonctions p globals et p defs L interprète complet devra évidemment prendre celles ci en compte Vous avez peut être remarqué que les paramètres defs genv et env ne sont pas utilisés ils serviront justement plus tard à passer l environnement qui contient les variables globales et les fonctions entre les fonctions de l interprète Si vous appellez vous mêmes ces fonctions n oubliez pas de passer ces paramètres Ce qu il faut faire L implémentation interpretPP ml doit être conforme à l interface interpretPP mli interpretPPempty mli Elle doit donc fournir une fonction interpret qui étant donnée une valeur de type PP program c est à dire un arbre de syntaxe abstraite représentant un programme l exécute Cette fonction ne renverra aucun résultat mais son exécution pourra avoir des effets de bord par exemple elle pourra afficher une chaîne de caractères sur la sortie standard si le programme Pseudo Pascal qu on lui fournit contient une instruction writeln Pour écrire interpretPP ml on s appuiera sur la syntaxe abstraite du langage Pseudo Pascal définie formellement dans PP mli et sur la description sémantique formelle big step donnée dans le cours On s aidera également des signatures de fonctions données dans interpretPP mli On suggère la démarche suivante Commencer par définir complètement le type des valeurs booléens entiers tableaux en enrichissant le type value Voir la solution Définir l évaluation des expressions arithmétiques sans variables ni appels de fonctions à partir du type des expressions de PP mli Cela revient à enrichir le filtrage de motifs existant de la fonction interpret expression pour prendre en compte le cas des constructeurs EUnOp EBinOp et EConst pour une constante booléenne On peut alors essayer cet interprète minimal en lui proposant un programme très simple par exemple trivial2 p trivial2 p On obtient compilo ipp test trivial2 p 10 Voir la solution Définir la fonction lookup qui recherche une variable par nom dans un environnement avec la signature suivante val lookup environment environment string value ref L environnement est constitué de trois composantes defs pour les définitions de fonctions et procédures genv pour les variables globales env pour les variables locales Cet environnement est passsé par paramètre aux fonctions qui en ont besoin d où les signatures de fonctions dans l interface interpretPP mli Voir la solution Étendre la fonction interpret pour passer

    Original URL path: http://nicolaspouillard.fr/td-compil/TD2/index.html (2015-10-11)
    Open archived version from archive