28 lines
929 B
OCaml
28 lines
929 B
OCaml
|
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')]);;
|