% Variables

(functional OFENSIVIDADE)
(functional PERICULOSIDADE)
(functional REPROVABILIDADE)
(functional EXPRESSIVIDADE)
(functional ECONOMICA)
(functional SENTIMENTAL)
(functional PRINCIPIO_INSIGNIFICANCIA)


(range OFENSIVIDADE*real* 0 100)
(range PERICULOSIDADE*real* 0 100)
(range REPROVABILIDADE*real* 0 100)
(range EXPRESSIVIDADE*real* 0 100)
(range ECONOMICA*real* 0 100)
(range ECONOMICA*real* 0 100)
(range SENTIMENTAL*real* 0 100)


(range PRINCIPIO_INSIGNIFICANCIA*real* 0 100)


% Linguistic labels
% Ofensividade

(define-fuzzy-concept MINIMA_OFENSIVIDADE left-shoulder(0,100,0,35) )
(define-fuzzy-concept MEDIA_OFENSIVIDADE triangular(0,100,30,50,65) )
(define-fuzzy-concept ALTA_OFENSIVIDADE right-shoulder(0,100,60,100) )

% Periculosidade

(define-fuzzy-concept MINIMA_PERICULOSIDADE left-shoulder(0,100,0,30) )
(define-fuzzy-concept MEDIA_PERICULOSIDADE triangular(0,100,25,50,75) )
(define-fuzzy-concept ALTA_PERICULOSIDADE right-shoulder(0,100,70,100) )

% Reprovabilidade

(define-fuzzy-concept REDUZIDISSIMA_REPROVABILIDADE left-shoulder(0,100,0,30) )
(define-fuzzy-concept RAZOAVELMENTE_REPROVAVEL triangular(0,100,25,50,70) )
(define-fuzzy-concept FORTEMENTE_REPROVAVEL right-shoulder(0,100,65,100) )

% Expressividade

(define-fuzzy-concept MINIMA_EXPRESSIVIDADE left-shoulder(0,100,0,35) )
(define-fuzzy-concept MEDIA_EXPRESSIVIDADE triangular(0,100,30,50,70) )
(define-fuzzy-concept ALTA_EXPRESSIVIDADE right-shoulder(0,100,65,100) )


% Econômica e Sentimental

(define-fuzzy-concept MINIMA left-shoulder(0,100,0,35) )
(define-fuzzy-concept MEDIA triangular(0,100,25,50,75) )
(define-fuzzy-concept ALTA right-shoulder(0,100,60,100) )



% Principio da insignificancia

(define-fuzzy-concept BAIXAMENTE_APLICAVEL left-shoulder(0,100,0,30) )
(define-fuzzy-concept MEDIANAMENTE_APLICAVEL triangular(0,100,30,50,70) )
(define-fuzzy-concept TOTALMENTE_APLICAVEL right-shoulder(0,100,70,100) )


% Rules Mamdami rule encoding


%Regras gerais
%baixamente aplicavel
(define-concept Rule1 (g-and (some OFENSIVIDADE MINIMA_OFENSIVIDADE) (some PERICULOSIDADE MINIMA_PERICULOSIDADE) (some REPROVABILIDADE REDUZIDISSIMA_REPROVABILIDADE) (some EXPRESSIVIDADE MINIMA_EXPRESSIVIDADE) (some ECONOMICA MINIMA) (some SENTIMENTAL MINIMA) (some PRINCIPIO_INSIGNIFICANCIA TOTALMENTE_APLICAVEL)))
(define-concept Rule2 (g-and (some OFENSIVIDADE MINIMA_OFENSIVIDADE) (some PERICULOSIDADE MINIMA_PERICULOSIDADE) (some REPROVABILIDADE REDUZIDISSIMA_REPROVABILIDADE) (some EXPRESSIVIDADE MINIMA_EXPRESSIVIDADE) (some ECONOMICA MEDIA) (some SENTIMENTAL MINIMA) (some PRINCIPIO_INSIGNIFICANCIA BAIXAMENTE_APLICAVEL)))
(define-concept Rule3 (g-and (some OFENSIVIDADE MINIMA_OFENSIVIDADE) (some PERICULOSIDADE MINIMA_PERICULOSIDADE) (some REPROVABILIDADE REDUZIDISSIMA_REPROVABILIDADE) (some EXPRESSIVIDADE MINIMA_EXPRESSIVIDADE) (some ECONOMICA MINIMA) (some SENTIMENTAL MEDIA) (some PRINCIPIO_INSIGNIFICANCIA BAIXAMENTE_APLICAVEL)))
(define-concept Rule4 (g-and (some OFENSIVIDADE MEDIA_OFENSIVIDADE) (some PERICULOSIDADE MEDIA_PERICULOSIDADE) (some REPROVABILIDADE RAZOAVELMENTE_REPROVAVEL) (some EXPRESSIVIDADE MEDIA_EXPRESSIVIDADE) (some ECONOMICA MEDIA) (some COMPATIVEL TRUE) (some PRINCIPIO_INSIGNIFICANCIA BAIXAMENTE_APLICAVEL)))

%Regras individuais
%------OFENSIVIDADE ALTA
(define-concept Rule5 (g-and (some OFENSIVIDADE ALTA_OFENSIVIDADE) (some PERICULOSIDADE MINIMA_PERICULOSIDADE) (some PRINCIPIO_INSIGNIFICANCIA MEDIANAMENTE_APLICAVEL)))
(define-concept Rule6 (g-and (some OFENSIVIDADE ALTA_OFENSIVIDADE) (some PERICULOSIDADE MEDIA_PERICULOSIDADE) (some PRINCIPIO_INSIGNIFICANCIA BAIXAMENTE_APLICAVEL)))
(define-concept Rule7 (g-and (some OFENSIVIDADE ALTA_OFENSIVIDADE) (some PERICULOSIDADE ALTA_PERICULOSIDADE) (some PRINCIPIO_INSIGNIFICANCIA BAIXAMENTE_APLICAVEL)))

%---------EXPRESSIVIDADE ALTA
(define-concept Rule8 (g-and (some EXPRESSIVIDADE ALTA_EXPRESSIVIDADE) (some REPROVABILIDADE REDUZIDISSIMA_REPROVABILIDADE) (some PRINCIPIO_INSIGNIFICANCIA MEDIANAMENTE_APLICAVEL)))
(define-concept Rule9 (g-and (some EXPRESSIVIDADE ALTA_EXPRESSIVIDADE) (some REPROVABILIDADE RAZOAVELMENTE_REPROVAVEL) (some PRINCIPIO_INSIGNIFICANCIA BAIXAMENTE_APLICAVEL)))
(define-concept Rule10 (g-and (some EXPRESSIVIDADE ALTA_EXPRESSIVIDADE) (some REPROVABILIDADE FORTEMENTE_REPROVAVEL) (some PRINCIPIO_INSIGNIFICANCIA BAIXAMENTE_APLICAVEL)))

%*********************************************************************************
%------OFENSIVIDADE MEDIA
(define-concept Rule11 (g-and (some OFENSIVIDADE MEDIA_OFENSIVIDADE) (some PERICULOSIDADE MINIMA_PERICULOSIDADE) (some PRINCIPIO_INSIGNIFICANCIA MEDIANAMENTE_APLICAVEL)))
(define-concept Rule12 (g-and (some OFENSIVIDADE MEDIA_OFENSIVIDADE) (some PERICULOSIDADE MEDIA_PERICULOSIDADE) (some PRINCIPIO_INSIGNIFICANCIA BAIXAMENTE_APLICAVEL)))
(define-concept Rule13 (g-and (some OFENSIVIDADE MEDIA_OFENSIVIDADE) (some PERICULOSIDADE ALTA_PERICULOSIDADE) (some PRINCIPIO_INSIGNIFICANCIA BAIXAMENTE_APLICAVEL)))

%---------EXPRESSIVIDADE MEDIA
(define-concept Rule14 (g-and (some EXPRESSIVIDADE MEDIA_EXPRESSIVIDADE) (some REPROVABILIDADE REDUZIDISSIMA_REPROVABILIDADE) (some PRINCIPIO_INSIGNIFICANCIA MEDIANAMENTE_APLICAVEL)))
(define-concept Rule15 (g-and (some EXPRESSIVIDADE MEDIA_EXPRESSIVIDADE) (some REPROVABILIDADE RAZOAVELMENTE_REPROVAVEL) (some PRINCIPIO_INSIGNIFICANCIA BAIXAMENTE_APLICAVEL)))
(define-concept Rule16 (g-and (some EXPRESSIVIDADE MEDIA_EXPRESSIVIDADE) (some REPROVABILIDADE FORTEMENTE_REPROVAVEL) (some PRINCIPIO_INSIGNIFICANCIA BAIXAMENTE_APLICAVEL)))

%*********************************************************************************
%------OFENSIVIDADE MINIMA
(define-concept Rule18 (g-and (some OFENSIVIDADE MINIMA_OFENSIVIDADE) (some PERICULOSIDADE MEDIA_PERICULOSIDADE) (some PRINCIPIO_INSIGNIFICANCIA MEDIANAMENTE_APLICAVEL)))
(define-concept Rule19 (g-and (some OFENSIVIDADE MINIMA_OFENSIVIDADE) (some PERICULOSIDADE ALTA_PERICULOSIDADE) (some PRINCIPIO_INSIGNIFICANCIA BAIXAMENTE_APLICAVEL)))

%---------EXPRESSIVIDADE MINIMA
(define-concept Rule21 (g-and (some EXPRESSIVIDADE MINIMA_EXPRESSIVIDADE) (some REPROVABILIDADE RAZOAVELMENTE_REPROVAVEL) (some PRINCIPIO_INSIGNIFICANCIA MEDIANAMENTE_APLICAVEL)))
(define-concept Rule22 (g-and (some EXPRESSIVIDADE MINIMA_EXPRESSIVIDADE) (some REPROVABILIDADE FORTEMENTE_REPROVAVEL) (some PRINCIPIO_INSIGNIFICANCIA BAIXAMENTE_APLICAVEL)))

%---------ECONOMICA MINIMA
(define-concept Rule24 (g-and (some ECONOMICA MINIMA) (some SENTIMENTAL MEDIA) (some PRINCIPIO_INSIGNIFICANCIA BAIXAMENTE_APLICAVEL)))
(define-concept Rule25 (g-and (some ECONOMICA MINIMA) (some SENTIMENTAL ALTA) (some PRINCIPIO_INSIGNIFICANCIA BAIXAMENTE_APLICAVEL)))

%---------ECONOMICA MEDIA
(define-concept Rule26 (g-and (some ECONOMICA MEDIA) (some SENTIMENTAL MINIMA) (some PRINCIPIO_INSIGNIFICANCIA BAIXAMENTE_APLICAVEL)))
(define-concept Rule27 (g-and (some ECONOMICA MEDIA) (some SENTIMENTAL MEDIA) (some PRINCIPIO_INSIGNIFICANCIA BAIXAMENTE_APLICAVEL)))
(define-concept Rule28 (g-and (some ECONOMICA MEDIA) (some SENTIMENTAL ALTA) (some PRINCIPIO_INSIGNIFICANCIA BAIXAMENTE_APLICAVEL)))

%---------ECONOMICA ALTA
(define-concept Rule29 (g-and (some ECONOMICA ALTA) (some SENTIMENTAL MINIMA) (some PRINCIPIO_INSIGNIFICANCIA BAIXAMENTE_APLICAVEL)))
(define-concept Rule30 (g-and (some ECONOMICA ALTA) (some SENTIMENTAL MEDIA) (some PRINCIPIO_INSIGNIFICANCIA BAIXAMENTE_APLICAVEL)))
(define-concept Rule31 (g-and (some ECONOMICA ALTA) (some SENTIMENTAL ALTA) (some PRINCIPIO_INSIGNIFICANCIA BAIXAMENTE_APLICAVEL)))


(define-concept Rules (g-or Rule1 Rule2 Rule3 Rule4 Rule5 Rule6 Rule7 Rule8 Rule9 Rule10 Rule11 Rule12 Rule13 Rule14 Rule15 Rule16 Rule18 Rule19 Rule21 Rule22 Rule24 Rule25 Rule26 Rule27 Rule28 Rule29 Rule30 Rule31) )



% GoldFrame
(instance GoldFrame (= OFENSIVIDADE 15))
(instance GoldFrame (= PERICULOSIDADE 20))
(instance GoldFrame (= REPROVABILIDADE 80))
(instance GoldFrame (= EXPRESSIVIDADE 15))
(instance GoldFrame (= ECONOMICA 12))
(instance GoldFrame (= SENTIMENTAL 98))


% theft
(instance theft (= OFENSIVIDADE 10))
(instance theft (= PERICULOSIDADE 8))
(instance theft (= REPROVABILIDADE 15))
(instance theft (= EXPRESSIVIDADE 5))
(instance theft (= ECONOMICA 2))
(instance theft (= SENTIMENTAL 2))


% Defuzzification


(defuzzify-mom? Rules GoldFrame PRINCIPIO_INSIGNIFICANCIA)

(defuzzify-lom? Rules GoldFrame PRINCIPIO_INSIGNIFICANCIA)

(defuzzify-som? Rules GoldFrame PRINCIPIO_INSIGNIFICANCIA)










