Informatique/SPE/OPT/Logique.ml

28 lines
929 B
OCaml
Raw Normal View History

2020-09-11 18:31:23 +02:00
type variables = char;;
type formule =
| Var of variables
| Non of formule
| Implique of formule*formule
| Equivaut of formule*formule
| Et of formule list
| Ou of formule list;;
let f = Implique (Et [Var 'p';Non (Var 'q')], Ou [Var 'p';Non (Var 'r')]);;
let exemple_de_contexte v = match v with
|'p' -> true
|'q' -> false
|'r' -> false
|_ -> true;;
let rec interpretation contexte formule = match formule with
| Var v-> contexte v
| Non f -> not (interpretation contexte f)
| Implique (a,b) -> not (interpretation contexte a) || (interpretation contexte b)
| Equivaut (a,b) -> not (interpretation contexte a) = (interpretation contexte b)
| Et [] -> true
| Et (h::t) -> (interpretation contexte h) && (interpretation contexte (Et t))
| Ou [] -> false
| Ou (h::t) -> (interpretation contexte h) || (interpretation contexte (Ou t));;
interpretation (exemple_de_contexte) (Et [Var 'q'; Non (Var 'r')]);;