Definiți un environment Env de tip
string -> nat și o funcție update care
actualizează valoarea unei variable de tip string cu o
valoare de tipul nat. Testați funcția update
pe câteva exemple.
Consultați tipul option din documentația oficială. Citiți cu atenție definiția tipului.
Inductive AExp :=
| num : nat -> AExp
| var : string -> AExp
| add : AExp -> AExp -> AExp
| sub : AExp -> AExp -> AExp
| div : AExp -> AExp -> AExp.
Atenție la operațiile de scădere și împărțire: acestea pot produce erori. De aceea, un evaluator pentru expresii aritmetice va returna tipul
option natîn loc denat. Pentru detalii despreoptionputeți rula pe rând comenzile:
Check option.
Check option nat.
Print option.
Check (Some 2).
Check None.
n-lea termen al șirului
Fibonacci.Inductive Cond :=
| base : bool -> Cond
| bnot : Cond -> Cond
| beq : AExp -> AExp -> Cond
| less : AExp -> AExp -> Cond
| band : Cond -> Cond -> Cond.
Inductive Stmt :=
| skip : Stmt
| assign : string -> Exp -> Stmt
| seq : Stmt -> Stmt -> Stmt
| ite : Cond -> Stmt -> Stmt -> Stmt (* if-then-else *)
| while : Cond -> Stmt -> Stmt.
Atenție: operațiile pentru expresii aritmetice va returna tipul
option natîn loc denat. Acest lucru are impact asupra rezultatului interpretării expresiilor booleene.
Coq Reference Manual: https://coq.inria.fr/distrib/current/refman/