annotate exdev.pl @ 22:29cf617f49db default tip

newer CVS version
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 22 Apr 2016 16:47:13 +0900
parents 07d6c4c5654b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1 /*
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2 Copyright (C) 1991, Shinji Kono, Sony Computer Science Laboratory, Inc.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
3 The University, Newcastle upton Tyne
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
4
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
5 Everyone is permitted to copy and distribute verbatim copies
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
6 of this license, but changing it is not allowed. You can also
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
7 use this wording to make the terms for other programs.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
8
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
9 send your comments to kono@csl.sony.co.jp
22
29cf617f49db newer CVS version
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
10 $Id: exdev.pl,v 1.2 2007/08/30 05:16:36 kono Exp $
2
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
11 */
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
12
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
13 % develop Local ITL formula into state diagram
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
14 %
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
15 % Mon May 20 17:24:23 BST 1991
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
16 % require([chop]).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
17
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
18 :-dynamic verbose/0,state/2,links/2.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
19 :-dynamic stay/3.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
20
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
21 :-assert(verbose).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
22 verbose(off) :- retract(verbose),fail;true.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
23 verbose(on) :- asserta(verbose).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
24
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
25 deve(ITL) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
26 init,!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
27 expand(ITL,ITL0), % chop standard form
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
28 itlstd(ITL0,StdNOW), % BDT
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
29 assert(itl_state(StdNOW,1)),!, % Initial State
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
30 deve0((1,ITL0)).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
31
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
32 deve0((S,ITL)) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
33 % increment_state(ITL,ITL_1,S),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
34 show_state(S,ITL),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
35 % setof(Next,itldecomp(ITL,Next,S),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
36 bagof(Next,itldecomp(ITL,Next,S),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
37 Nexts),!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
38 deve1(Nexts).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
39 deve0(_).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
40
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
41 deve1([]).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
42 deve1([H|T]) :- deve0(H),deve1(T).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
43
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
44 itldecomp(ITL,(NextS,Next),From) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
45 init_var(current,From),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
46 itl(ITL,Next,Cond),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
47 %% showing
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
48 itlshow(Next,NextS,Cond,From).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
49
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
50 itlshow(Next,S,Cond,From):-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
51 itlstd(Next,StdNext),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
52 check_state(StdNext,Cond,New,S),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
53 inc_var(itl_transition,_),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
54 assertz(state(From,Cond,S)),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
55 (links(S,From),!;assertz(links(S,From))),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
56 !,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
57 itlshow0(S,Cond,Next,New).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
58
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
59 itlshow0(S,Cond,Next,New) :- verbose,!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
60 itlshow1(S,Cond,Next,New),nl,!,New=1.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
61 itlshow0(0,_,_,0):- !,put(101),!,fail. % "e"
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
62 itlshow0(false,_,_,0):- !,put(102),!,fail. % "f"
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
63 itlshow0(true,_,_,0):- !,put(116),!,fail. % "t"
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
64 itlshow0(_,_,_,0):- !,put(46),!,fail. % "."
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
65 itlshow0(S,_,_,1):- !,write(S),put(46),ttyflush,!. % "."
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
66
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
67 itlshow1(0,Cond,_,_):-!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
68 write(Cond),write('->'),write(empty).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
69 itlshow1(true,Cond,_,_):-!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
70 write(Cond),write('->'),write(true).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
71 itlshow1(false,Cond,_,_):-!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
72 write(Cond),write('->'),write(false).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
73 itlshow1(S,Cond,_,0):-!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
74 write(Cond),write('->'),write(S).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
75 itlshow1(S,Cond,Org,1):-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
76 write(Cond),write('->'),write(S),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
77 put(9),write(Org),!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
78
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
79 init :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
80 subterm_init,
20
07d6c4c5654b SICStus v4 (ISO prolog syntax)
kono
parents: 2
diff changeset
81 r_abolish(state,3),
2
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
82 asserta(state(true,[more],true)),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
83 asserta(state(true,[empty],0)),
20
07d6c4c5654b SICStus v4 (ISO prolog syntax)
kono
parents: 2
diff changeset
84 r_abolish(itl_state,2),
07d6c4c5654b SICStus v4 (ISO prolog syntax)
kono
parents: 2
diff changeset
85 r_abolish(stay,3),asserta(stay(0,0,0)),
2
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
86 asserta(itl_state(false,false)),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
87 asserta(itl_state(empty,0)),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
88 asserta(itl_state(true,true)),
20
07d6c4c5654b SICStus v4 (ISO prolog syntax)
kono
parents: 2
diff changeset
89 r_abolish(links,2),asserta(links(true,true)),
2
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
90 init_var(itl_transition,1),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
91 init_var(itl_state_number,1),!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
92
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
93 show_state(S,ITL) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
94 nl,write('state('),write(S), % (
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
95 (verbose,write(' , '), write(ITL),write(')'),nl;write(')')),!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
96
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
97 check_state(true,[more |_],0,true):-!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
98 check_state(true,[empty|_],0,0):-!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
99 check_state(false,_,0,false):-!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
100 check_state(STD,_,0,S):-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
101 itl_state(STD,S),!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
102 check_state(STD,_,1,S):-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
103 inc_var(itl_state_number,S),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
104 assert(itl_state(STD,S)),!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
105
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
106 init_var(X,_) :- functor(F,X,1),assert(F),fail.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
107 init_var(X,_) :- functor(F,X,1),retract(F),fail.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
108 init_var(X,V) :- functor(F,X,1),arg(1,F,V),assert(F),!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
109 inc_var(Name,X1) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
110 functor(F,Name,1),retract(F),arg(1,F,X),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
111 X1 is X+1,functor(F1,Name,1),arg(1,F1,X1),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
112 asserta(F1),!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
113
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
114 %init_var(X,_) :- recorded(X,_,Ref),erase(Ref),fail.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
115 %init_var(X,V) :- recorda(X,V,_).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
116 %inc_var(Name,X1) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
117 % recorded(Name,X,Ref),X1 is X+1,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
118 % erase(Ref),recorda(Name,X1,_).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
119
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
120 increment_state(stay(P,now),stay(P,S),S) :- !,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
121 (stay(P,F,S);assertz(stay(P,F,S))),!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
122 increment_state(N,N,_) :- atomic(N),!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
123 increment_state(P,R,S) :- functor(P,H,N),functor(R,H,N),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
124 increment_state_arg(N,P,R,S).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
125 increment_state_arg(0,_P,_R,_):-!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
126 increment_state_arg(N,P,R,S):-arg(N,P,PA),arg(N,R,RA),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
127 N1 is N-1,increment_state(PA,RA,S),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
128 increment_state_arg(N1,P,R,S).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
129
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
130 /* end */