fml TwoFixedBox(fml A) { return Box(Rel(ONE),Box(Rel(TWO),A)); } fml TwoFixedPos(fml A) { return Pos(Rel(ONE),Pos(Rel(TWO),A)); } fml GenerateModalVariable(ident var) { integer i,j; fml A[3],Qi,NQi; if (flag_Kenc) { Qi=TwoFixedPos(Var(ONE)); for (j=1; jop) { case UNKNOWN: case FALSE: case TRUE: break; case VAR: MA=GenerateModalVariable(A->name); DeleteFml(A); A=MA; break; case NOT: case AND: case OR: case XOR: case EQUIV: case IMP: for (Asub=A->subfml; Asub!=EMPTY_SEQUENT; Asub = Asub->rest) Asub->first=ModalizeFml(Asub->first); break; case BOX: case POS: A->subprg->first=ModalizePrg(A->subprg->first); for (Asub=A->subfml; Asub!=EMPTY_SEQUENT; Asub = Asub->rest) Asub->first=ModalizeFml(Asub->first); break; } return A; } prg ModalizePrg(prg P) { pool Psub; if (P==NOT_EXISTS_PRG) { fprintf(stderr,"\nERROR - Program does not exists - ERROR\n"); exit(1); } switch (P->op) { case UNKNOWN: case REL: break; case INVERSE: case UNION: case SEQUENCE: case STAR: for (Psub=P->subprg; Psub!=EMPTY_POOL; Psub = Psub->rest) Psub->first=ModalizePrg(Psub->first); break; case TEST: P->subfml->first=ModalizeFml(P->subfml->first); break; } return P; } sequent ModalizeFormulae(sequent S) { sequent NS; for (NS=S;NS!=EMPTY_SEQUENT;NS=NS->rest) NS->first=ModalizeFml(NS->first); return S; }