Advertisement
Guest User

p1602575

a guest
Dec 9th, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.55 KB | None | 0 0
  1.  
  2. (***************************** LIFLF - TPA ************************************)
  3. (************* Evaluation pratique en temps limité : 30' **********************)
  4. (******************************************************************************)
  5.  
  6. Require Import Arith.
  7. Require Import List.
  8. Export ListNotations.
  9.  
  10.  
  11. (* Partie 1. Exercices sur les listes d'entiers *)
  12. (* -------------------------------------------- *)
  13.  
  14.  
  15. (* EXERCICE *)
  16. (* Écrire la fonction "lgr" qui calcule la longueur d'une liste de nat (et donc de type list nat) *)
  17.  
  18.  
  19. Fixpoint lgr (l : list nat) : nat :=
  20. match l with
  21. |[] => 0
  22. |l::a => 1+lgr(a)
  23. end.
  24.  
  25. Compute (lgr (1::2::3::4::5::[])).
  26. (*
  27. Example ex_lgr : (lgr (1::2::3::4::5::[])) = 5.
  28. Proof. cbv. reflexivity. Qed.
  29. *)
  30.  
  31.  
  32. (* EXERCICE *)
  33. (* Écrire la fonction "mir" qui calcule le miroir d'une liste de nat *)
  34.  
  35. Fixpoint mir (l : list nat) : list nat :=
  36. match l with
  37. | [] => []
  38. | l::a => mir(a)
  39. end.
  40.  
  41. Compute (mir (1::2::3::4::5::[])).
  42. (*
  43. Example ex_mir : (mir (1::2::3::4::5::[])) = 5::4::3::2::1::[].
  44. Proof. cbv. reflexivity. Qed.
  45. *)
  46.  
  47.  
  48. (* EXERCICE *)
  49. (* Exprimer et prouver que le miroir d'une liste à laquelle on a ajouté un élément en tête
  50. est le miroir de la liste concaténé à la liste constituée de juste cet élément *)
  51.  
  52. (*
  53. une liste de nat <=> la concaténtion des tous les éléments de cette liste de nat donc
  54. *)
  55.  
  56.  
  57. (* Partie 2. Exercices sur les arbres binaires *)
  58. (* ------------------------------------------- *)
  59.  
  60.  
  61. (* On donne le type "btree" des arbres binaires avec valeurs de type nat stockées dans les feuilles *)
  62. Inductive btree : Type :=
  63. | F : nat -> btree
  64. | N : btree -> btree -> btree
  65. .
  66.  
  67. (* exemples *)
  68. (* L'arbre "ab1" : o et "ab2" : o
  69. / \ / \
  70. o 2 1 o
  71. / \ / \
  72. 1 o o 5
  73. / \ / \
  74. o 3 2 o
  75. / \ / \
  76. 4 5 3 4
  77. *)
  78. (* On donne l'arbre "ab1" : *)
  79. Definition ab1 := N (N (F 1) (N (N (F 4) (F 5)) (F 3))) (F 2).
  80.  
  81. (* EXERCICE *)
  82. (* Définir l'arbre "ab2" correspondant à l'exemple ci-dessus *)
  83. (*
  84. Definition ab2 := N (F 1) (N ( N ( (F 2) ( N (F 3) (F 4)) ) ) ) (F 5).
  85. *)
  86. (* EXERCICE *)
  87. (* Écrire la fonction "bnbf" qui calcule le nombre de feuilles d'un tel arbre *)
  88.  
  89. Fixpoint bnbf (b : btree): nat :=
  90. match b with
  91. | F nat => 1
  92. | N Fg Fd => bnbf(Fg)+bnbf(Fd)
  93. end.
  94.  
  95. Compute(bnbf ab1).
  96.  
  97. (*
  98. Example ex_bnbf_ab1 : (bnbf ab1) = 5.
  99. Proof. cbv. reflexivity. Qed.
  100. *)
  101.  
  102.  
  103. (* EXERCICE *)
  104. (* Écrire la fonction "bnbn" qui calcule le nombre de noeuds d'un tel arbre *)
  105.  
  106. Fixpoint bnbn (b : btree): nat :=
  107. match b with
  108. | F nat => 0
  109. | N Fg Fd => bnbn(Fg)+bnbn(Fd) + 1
  110. end.
  111.  
  112. Compute(bnbn ab1).
  113.  
  114. (*
  115. Example ex_bnbn_ab1 : (bnbn ab1) = 4.
  116. Proof. cbv. reflexivity. Qed.
  117. *)
  118.  
  119.  
  120. (* EXERCICE *)
  121. (* Écrire la fonction "bsumval" qui calcule la somme des valeurs contenues dans l'arbre *)
  122.  
  123. Fixpoint bsumval (b : btree): nat :=
  124. match b with
  125. | F nat => nat
  126. | N Fg Fd => bsumval(Fg)+bsumval(Fd)
  127. end.
  128.  
  129. Compute((bsumval ab1)).
  130.  
  131. (*
  132. Example ex_bsumval_ab1 : (bsumval ab1) = 15.
  133. Proof. cbv. reflexivity. Qed.
  134. *)
  135.  
  136.  
  137. (* EXERCICE *)
  138. (* Écrire la fonction "bajout" qui ajoute un élément dans un arbre *)
  139.  
  140. Fixpoint bajout (a : nat)(b : btree): btree :=
  141. match
  142.  
  143. (*
  144. Example ex_bajout_ab1 : bnbf (bajout 10 ab1) = 1 + bnbf ab1.
  145. Proof. cbv. reflexivity. Qed.
  146. *)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement