From bbcb29a202436fc0e222e187f1fadf0b1f305465 Mon Sep 17 00:00:00 2001 From: Timotej Lazar Date: Sun, 22 May 2016 17:48:30 +0200 Subject: Prolog: update denotational_semantics problems --- .../denotational_semantics/algol_for_3/common.py | 92 ---------------------- 1 file changed, 92 deletions(-) delete mode 100644 prolog/problems/denotational_semantics/algol_for_3/common.py (limited to 'prolog/problems/denotational_semantics/algol_for_3/common.py') diff --git a/prolog/problems/denotational_semantics/algol_for_3/common.py b/prolog/problems/denotational_semantics/algol_for_3/common.py deleted file mode 100644 index 1107308..0000000 --- a/prolog/problems/denotational_semantics/algol_for_3/common.py +++ /dev/null @@ -1,92 +0,0 @@ -id = 178 -number = 85 -visible = False -facts = None - -solution = '''\ -algol_for(fun(S0,S,apply178([printout=[]|S0],S,Minstructs))) --> - [begin], instructs178(Minstructs), [end]. - -instructs178(Minstr) --> instr178(Minstr). -instructs178(fun(S0,S, - (apply178(S0,S1,Minstr), - apply178(S1,S,Minstructs)))) - --> - instr178(Minstr), instructs178(Minstructs). - -instr178(Massign) --> assign178(Massign). -instr178(fun(S0,[printout = L1|S1], - (memb(X = V,S0), - del(printout = L0,S0,S1), - conc(L0,[V],L1)))) - --> - [print(X)]. -instr178(fun(S0,S, - loop178(S0,Mcond,Minstructs,S))) - --> - [while], cond178(Mcond), [do,begin], instructs178(Minstructs), [end]. -instr178(fun(S0, S, - (apply178(S0, S1, Minit), - for178(S1, Mcond, Mstep, Mbody, S)))) - --> - [for], assign178(Minit), [&], cond178(Mcond), [&], assign178(Mstep), [do, begin], instructs178(Mbody), [end]. - -assign178(fun(S0,[X = Value|S1], - (apply178(S0,Value,Mexpr), - del(X = _,S0,S1)))) - --> - var178(X), [:=], expr178(Mexpr). - -cond178( fun( S, TruthVal, - (apply178(S,Val1,ME1), - apply178(S,Val2,ME2), - (Val1 < Val2,!,TruthVal = true ; TruthVal = false)))) - --> - expr178(ME1), [<], expr178(ME2). - -var178(X) --> [X], {atom(X)}. - -expr178(fun(S,Value,eval(Expr,S,Value))) --> - [Expr]. - -apply178(In, Out, fun(In, Out, Goals)) :- - call(Goals). - -loop178( State0, Mcond, _, State0) :- - apply178( State0, false, Mcond), !. -loop178( S0, Mcond, MBody, S) :- - copy_term( MBody, MBodyCopy), - apply178( S0, S1, MBody), - loop178( S1, Mcond, MBodyCopy, S). - -for178(S0, Mcond, _, _, S0) :- - apply178(S0, false, Mcond), !. -for178(S0, Mcond, Mstep, Mbody, S) :- - copy_term(Mbody, Mbody2), - copy_term(Mstep, Mstep2), - apply178(S0, S1, Mbody), - apply178(S1, S2, Mstep), - for178(S2, Mcond, Mstep2, Mbody2, S). - -eval178( N, _, N) :- - number178( N), !. -eval178( X, State, Val) :- % A program variable - atom( X), !, - memb( X = Val, State). -eval178( E1 + E2, State, Val) :- !, - eval178( E1, State, V1), - eval178( E2, State, V2), - Val is V1 + V2. -eval178( E1 - E2, State, Val) :- !, - eval178( E1, State, V1), - eval178( E2, State, V2), - Val is V1 - V2. -eval178( E1 * E2, State, Val) :- !, - eval178( E1, State, V1), - eval178( E2, State, V2), - Val is V1 * V2. -eval178( E1 / E2, State, Val) :- !, - eval178( E1, State, V1), - eval178( E2, State, V2), - Val is V1 / V2. -''' -- cgit v1.2.1