odra.19 traitement des regles superq
"Treatment of SuperQ rules" -- could this be a Prolog version of Colmerauer's Q-systems?
** TRAITEMENT DES REGLES SUPERQ. +$REGLE(*VAR,%,.(+(*E),*V)) -/ -$NTERMINAL(*VAR,*C,.(*U,*Y)) -$NERS14(*U) -$CONTROLE(*C,*D,*C1,*VAR) -UNIV(*E,.(.(%,*U),.(*X,.(*D,*Y)))) -$GAUCHE(*C1,*X,*D,*V,*VAR). +$REGLE(*VAR,',*V) -/ -$ERF(15). +$REGLE(*VAR,=,*V) -/ -$ERF(16). +$REGLE(*VAR,*C,*V) -$ERF(13). +$GAUCHE(',*X,*CTRL,.(-($ADDIT(*E,*X,*CTR)),*V),*VAR) -/ -$BONTERME(*VAR,*C,*E) -$CONTROLE(*C,*D,*C1,*VAR) -$CHOIX(*CTRL,*D,*CTR) -$GAUCHE(*C1,*X,*CTRL,*V,*VAR). +$GAUCHE(=,*X,*CTRL,*V,*VAR) -/ -LUB(*C0) -$NERS17(*C0) -LUB(*C1) -$DROITE(*C1,*X,*CTRL,*V,*VAR). +$GAUCHE(%,*X,*CTRL,*V,*VAR) -/ -$ERF(18). +$GAUCHE(*C,*X,*CTRL,*V,*VAR) -$SIGNE(*C,*E,*F) -/ -$ERF(23). +$GAUCHE(*C,*X,*CTRL,*V,*VAR) -$ERF(20). +$DROITE(%,*X,*CTRL,*V,*VAR) -/ -$NTERMINAL(*VAR,*C,*E) -$CONTROLE(*C,*D,*C1,*VAR) -$CHOIX(*CTRL,*D,*CTR) -$TFP(*E,*X,*CTR,*V1,*V) -$DROITE(*C1,*X,*CTRL,*V1,*VAR). +$DROITE(',*X,*CTRL, (-($PORTE(*E,*X,*CTR)),*V),*VAR) -/ -$BONTERME(*VAR,*C,*E) -$CONTROLE(*C,*D,*C1,*VAR) -$CHOIX(*CTRL,*D,*CTR) -$DROITE(*C1,*X,*CTRL,*V,*VAR). +$DROITE(.,*X,*CTRL,NIL,.(.,*VAR)) -/. +$DROITE(*C,*X,*CTRL,.(*F,*V),*VAR) -$SIGNE(*C,*E,*F) -/ -$BONTERME(*VAR,*C1,*E) -$DROITE(*C1,*X,*CTRL,*V,*VAR). +$DROITE(!,*X,*CTRL,*V,*VAR) -/ -$ERF(21). +$DROITE(*C,*X,*CTRL,*V,*VAR) -$ERF(20). +$CONTROLE(,,*D,*C1,*VAR) -/ -$BONTERME(*VAR,*C1,*D). +$CONTROLE(*C,*D,*C,*VAR). +$CHOIX(*CTRL,*D,*CTRL) -VAR(*D) -/. +$CHOIX(*CTRL,*D,*D). +$TEP(.("NT",.(*U,*Y)),*X,*CTR,*V, .(-(UNIV(*E,.(.(%,*U),.(*X,.(*CTR,*Y))))),.(-(*E),*V))) -/. +$TEP(.(*U,*Y),*X,*CTR,*V,.(-(*E),*V)) -UNIV(*E,.(.(%,*U),.(*X,.(*CTR,*Y)))). +SYNTAXE(*X,*Y) -SYNTAXE(*X,*Y,*Z). +SYNTAXE(.(*TETE,*RESTE),*CHAINE*DONNEES) -$MAXCHAINE(*MAX) -$PRELUDE(*CHAINE,*DONNEES,1,*MAX) -UNIV(*TETE,.(*TNOM,*TARGS)) -UNIV(*APPEL,.(.(%,*TNOM),.(.(*NOMBRES,*DONNEES),.(*CTRL,*TARGS)))) -*APPEL -$SEPARER(*DONNEES,*TROUVE,*PASTROUVE) -$ACCORDCHAINE(*TROUVE,*CHAINE) -$ACCORDRESTE(*PASTROUVE,*RESTE) . +$MAXCHAINE(16). *UTILISE PENDANT LA SYNTHESE. +$PRELUDE(.(*T,*CH),.(=(*T,^(*N,*NO)),*D),*N,*MAX) +INF(*MAX,*N) -/ -PLUS(*N,1,*N1) -$PRELUDE(*CH,*D,*N1,*MAX). +$PRELUDE(NIL,*V,*N,*MAX) -/. +$PRELUDE(*CH,*D,*N,*MAX) -SORM("ERREUR DANS SYNTAXE - LA CHAINE MAL FORMEE:") -LIGNE -ANCETRE(-(SYNTAXE(*AXIOME,*CHAINE,*DONNEES))) -SORT(*CHAINE) -LIGNE -IMPASSE. +$SEPARER(*V,NIL,NIL) -VAR(*V) -/. +$SEPARER(.(=(*T,^(*N,*NO)),*D),*TR,.(*T,*PASTR)) -VAR(*NO) -/ -$SEPARER(*D,*TR,*PASTR) . +$SEPARER(.(=(*T,*NNO),*D),.(*T,*TR),*PASTR) -$SEPARER(*D,*TR,*PASTR) . +$ACCORDCHAINE(*TROUVE,*CHAINE) +VAR(*CHAINE) -/. +$ACCORDCHAINE(*TROUVE,*TROUVE). +$ACCORDRESTE(*PASTROUVE,*PASTROUVE). +$PORTE(*TERMINAL,.(*NOMBRES,*DONNEES),*CONTROLE) -$COMPTE(*NOMBRES,*N,*NO) -$CHERCHER(*CONTROLE,*TERMINAL,*DONNEES,*NO,*N). +$COMPTE(.(*A,*NOMBRES),*N,*NO) +VAR(*A) -/ -$COMPTE(*NOMBRES,*N,*NO1) -PLUS(*NO1,1,*NO). +$COMPTE(.(*N,*VAR),*N,1). +$ADDIT(*TE,.(*ND,*DO),*CONTROLE) +VAR(*DO) -/ -$ADDI(*TE,*DO). +$ADDIT(*TE,.(*NO,.(=(*TE,^(1,*X)),*DO)),*CONTROLE). +$ADDI(*TERMINAL,.(=(*T,^(*N,*X)),*V)) -VAR(*V) -/ -PLUS(*N,1,*N1) -$ADDIUNIF(*V,*TERMINAL,*N1). +$ADDI(*TERMINAL,.(*TNX,*V)) -$ADDI(*TERMINAL,*V). +$ADDIUNIF(.(=(*T,^(*N,*X)),*V),*T,*N). +$CHERCHER(*CONTROLE,*TERMINAL,*DONNEES,*NO,*N) +VAR(*DONNEES) -$TROUVER(*TERMINAL,*DONNEES,*NO,*N). +$TROUVER(*T,.(=(*T,^(*N,*NO)),*RESTE),*NO,*N) -/. +$TROUVER(*T,.(*TNX,*RESTE),*NO,*N) +VAR(*RESTE) -$TROUVER(*T,*RESTE,*NO,*N). +$NTERMINAL(*VAR,*C2,.(*U,*Y)) -/ -LUB(*C0) -$LIRE(*C0,*U,*C1) -$NER22(*U) -$LISTP(*VAR,*C1,*C2,*Y). +$BONTERME(*VAR,*C2,*E) -LUB(*C0) -$LIRE(*C0,*U,*C1) -$PRED(*VAR,*U,*C1,*C2,*E). +$SIGNE(+,*E,+(*E)) -/. +$SIGNE(-,*E,-(*E)). +$NERS14("NT") -/ -$ERF(14). +$NERS14(*U). +$NERS17(=) -/. +$NERS17(*C) -$ERF(17). +$NER22($STAR)-/-$ERF(22). +$NER22(*C). ** $SPRED COMMENCE SUR UN CAR NON BLANC FINIT SUR UN CAR(POINT OU !) *C****. +$SPRED(*VAR,+,.(+(*X),*Y)) -/ -LUB(*C)-$LIRE(*C,*U1,*C1) -$PRED(*VAR,*U1,*C1,*C2,*X)-$SPRED(*VAR,*C2,*Y). +$SPRED(*VAR,-,.(-(*X),*Y)) -/ -LUB(*C)-$LIRE(*C,*U1,*C1) -$PRED(*VAR,*U1,*C1,*C2,*X)-$SPRED(*VAR,*C2,*Y). +$SPRED(.(.,*VAR1),.,NIL)-/. +$SPRED(.(!,*VAR),!,NIL)-/. +$SPRED(*VAR,*C,NIL)-$ERF(3). **$PRED COMMENCE SUR UNE UNITE+CAR FINIT SUR UN CAR EN AVANT ***. +$PRED(.(*PONC,*VAR),.($STAR,NIL),*C,*C1,*X) -/ -$LIRE(*C,*U1,*C1) -$NER4(*U1) -&VAR(.(*U1,*X),*VAR). +$PRED(*VAR,*U,*C,*C1,*X)-$LISTP(*VAR,*C,*C1,*Y) -UNIV(*X,.(*U,*Y)). ****