Skip to content

Commit

Permalink
running etc
Browse files Browse the repository at this point in the history
  • Loading branch information
josd committed Feb 5, 2025
1 parent 15600df commit d1ce44a
Show file tree
Hide file tree
Showing 76 changed files with 720 additions and 477,402 deletions.
7 changes: 0 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,6 @@
cd eyelog/etc
./test-scryer
```
- Install [SICStus Prolog](https://sicstus.sics.se/download4.html)
and run the tests
```
git clone https://github.com/eyereasoner/eyelog
cd eyelog/etc
./test-sicstus
```
- Install [SWI Prolog](http://www.swi-prolog.org/Download.html)
and run the tests
```
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.7.21
1.7.22
2 changes: 1 addition & 1 deletion etc/collatz.pl
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@

% query
(true :+ '<urn:example:collatz>'(N, _)) :-
between(1, 10000, N).
between(1, 1000, N).
78 changes: 78 additions & 0 deletions etc/evolutionary-algorithm.pl
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
% Evolutionary algorithm
% See https://en.wikipedia.org/wiki/Evolutionary_algorithm
% Original code from https://rosettacode.org/wiki/Evolutionary_algorithm#Prolog

:- op(1200, xfx, :+).

:- use_module(library(random)).

:- dynamic(evolution/3).

'<https://eyereasoner.github.io/ns#solve>'(TargetAtom) :-
atom_codes(TargetAtom, Target),
length(Target, Len),
random_text(Len, Start),
evolve(0, 5, Target, Start). % evolution 0 and 5% probability for a mutation

random_text(0, []). % generate some random text (fixed length)
random_text(Len, [H|T]) :-
succ(L, Len),
random_alpha(H),
random_text(L, T).

random_alpha(Ch) :- % generate a single random character
random(R),
P is round(R*26),
( P = 0
-> Ch is 32
; Ch is P+64
).

evolve(Evolution, Probability, Target, mutation(Score, Value)) :-
atom_codes(Val, Value),
( \+evolution(Evolution, Score, Val)
-> assertz(evolution(Evolution, Score, Val))
; true
),
( Score = 0
-> true
; evolve(Evolution, Probability, Target, Value)
).
evolve(Evolution, Probability, Target, Start) :-
findall(mutation(Score, M), % generate 80 mutations, select the best
( between(1, 80, _),
mutate(Probability, Start, M),
score(M, Score, Target)
),
Mutations
),
sort(Mutations, [Best|_]),
succ(Evolution, Evo),
evolve(Evo, Probability, Target, Best).

mutate(_, [], []). % mutate(Probability, Input, Output)
mutate(Probability, [H|Txt], [H|Mut]) :-
random(R),
P is round(R*100),
P > Probability,
!,
mutate(Probability, Txt, Mut).
mutate(Probability, [_|Txt], [M|Mut]) :-
random_alpha(M),
mutate(Probability, Txt, Mut).

score(Txt, Score, Target) :-
score(Target, Txt, 0, Score).

score([], [], Score, Score). % score a generated mutation (count diffs)
score([Ht|Tt], [Ht|Tp], C, Score) :-
!,
score(Tt, Tp, C, Score).
score([_|Tt], [_|Tp], C, Score) :-
succ(C, N),
score(Tt, Tp, N, Score).

% query
true :+ set_random(seed(100)).
true :+ evolution(_, _, _).
true :+ '<https://eyereasoner.github.io/ns#solve>'('METHINKS IT IS LIKE A WEASEL').
2 changes: 1 addition & 1 deletion etc/goldbach.pl
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,4 @@

% query
(true :+ '<urn:example:goldbach>'(N, [_, _])) :-
between(2, 100000, N).
between(2, 10000, N).
18,000 changes: 0 additions & 18,000 deletions etc/output-scryer/collatz.pl

Large diffs are not rendered by default.

13 changes: 13 additions & 0 deletions etc/output-scryer/conflict-resolution.pl
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
:- op(1200, xfx, :+).

answer('<https://eyereasoner.github.io/ns#accessControl>'(john,report1,allow)).
answer('<https://eyereasoner.github.io/ns#accessControl>'(jane,report2,allow)).
answer('<https://eyereasoner.github.io/ns#accessControl>'(bob,report1,allow)).

% proof steps
step((policy(allow,A,B):+user_role(A,admin)),user_role(john,admin),policy(allow,john,sk_0)).
step((policy(deny,A,B):+resource_confidentiality(B,confidential)),resource_confidentiality(report1,confidential),policy(deny,sk_0,report1)).
step((policy(allow,A,B):+user_department(A,it)),user_department(jane,it),policy(allow,jane,sk_0)).
step((true:+'<https://eyereasoner.github.io/ns#accessControl>'(john,report1,A)),'<https://eyereasoner.github.io/ns#accessControl>'(john,report1,allow),true).
step((true:+'<https://eyereasoner.github.io/ns#accessControl>'(jane,report2,A)),'<https://eyereasoner.github.io/ns#accessControl>'(jane,report2,allow),true).
step((true:+'<https://eyereasoner.github.io/ns#accessControl>'(bob,report1,A)),'<https://eyereasoner.github.io/ns#accessControl>'(bob,report1,allow),true).
27 changes: 27 additions & 0 deletions etc/output-scryer/dijkstra.pl
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
:- op(1200, xfx, :+).

answer('<https://eyereasoner.github.io/ns#dijkstra>'("af",["acbdef",13])).
answer('<https://eyereasoner.github.io/ns#dijkstra>'("af",["acbdf",14])).
answer('<https://eyereasoner.github.io/ns#dijkstra>'("af",["abdef",14])).
answer('<https://eyereasoner.github.io/ns#dijkstra>'("af",["abdf",15])).
answer('<https://eyereasoner.github.io/ns#dijkstra>'("af",["acef",15])).
answer('<https://eyereasoner.github.io/ns#dijkstra>'("af",["acdef",15])).
answer('<https://eyereasoner.github.io/ns#dijkstra>'("af",["acdf",16])).

% proof steps
step((edge([A,B],C):+edge([B,A],C)),edge("ab",4),edge("ba",4)).
step((edge([A,B],C):+edge([B,A],C)),edge("ac",2),edge("ca",2)).
step((edge([A,B],C):+edge([B,A],C)),edge("bc",1),edge("cb",1)).
step((edge([A,B],C):+edge([B,A],C)),edge("bd",5),edge("db",5)).
step((edge([A,B],C):+edge([B,A],C)),edge("cd",8),edge("dc",8)).
step((edge([A,B],C):+edge([B,A],C)),edge("ce",10),edge("ec",10)).
step((edge([A,B],C):+edge([B,A],C)),edge("de",2),edge("ed",2)).
step((edge([A,B],C):+edge([B,A],C)),edge("df",6),edge("fd",6)).
step((edge([A,B],C):+edge([B,A],C)),edge("ef",3),edge("fe",3)).
step((true:+'<https://eyereasoner.github.io/ns#dijkstra>'("af",[A,B])),'<https://eyereasoner.github.io/ns#dijkstra>'("af",["acbdef",13]),true).
step((true:+'<https://eyereasoner.github.io/ns#dijkstra>'("af",[A,B])),'<https://eyereasoner.github.io/ns#dijkstra>'("af",["acbdf",14]),true).
step((true:+'<https://eyereasoner.github.io/ns#dijkstra>'("af",[A,B])),'<https://eyereasoner.github.io/ns#dijkstra>'("af",["abdef",14]),true).
step((true:+'<https://eyereasoner.github.io/ns#dijkstra>'("af",[A,B])),'<https://eyereasoner.github.io/ns#dijkstra>'("af",["abdf",15]),true).
step((true:+'<https://eyereasoner.github.io/ns#dijkstra>'("af",[A,B])),'<https://eyereasoner.github.io/ns#dijkstra>'("af",["acef",15]),true).
step((true:+'<https://eyereasoner.github.io/ns#dijkstra>'("af",[A,B])),'<https://eyereasoner.github.io/ns#dijkstra>'("af",["acdef",15]),true).
step((true:+'<https://eyereasoner.github.io/ns#dijkstra>'("af",[A,B])),'<https://eyereasoner.github.io/ns#dijkstra>'("af",["acdf",16]),true).
160 changes: 160 additions & 0 deletions etc/output-scryer/evolutionary-algorithm.pl
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
:- op(1200, xfx, :+).

answer(set_random(seed(100))).
answer('<https://eyereasoner.github.io/ns#solve>'('METHINKS IT IS LIKE A WEASEL')).
answer(evolution(1,25,'PPWVASWA CLVSSQUC DQMZNRATPT')).
answer(evolution(2,24,'PPWHASWA CLVSSQUCUDQMZNRATPT')).
answer(evolution(3,24,'GPWHASWA CLVSSQUCUDQMZNRAPPT')).
answer(evolution(4,22,'GETHASWA CKVSSQUCUDQMZNRAPPT')).
answer(evolution(5,21,'GETHASWA AKVSSQUCUDQMZNRAPPL')).
answer(evolution(6,20,'EETHASYA AKVSSQUIUSQMZNRAPPL')).
answer(evolution(7,18,'EETHASYS AKVSSQUIFSQMZNRAPEL')).
answer(evolution(8,17,'EETHANYS AKVSSQUIFSQMZNRAPEL')).
answer(evolution(9,16,'EETHANYS AKJSSQUIFSQM NRAPEL')).
answer(evolution(10,16,'EETHANES AKJSSQUIFSQM NRAPEL')).
answer(evolution(11,16,'BETHANES AKJSSQZIFSQM HRAPEL')).
answer(evolution(12,15,'BETHANXS AKJSSQZIFSQM HRASEL')).
answer(evolution(13,14,'BETHANXS AKJSSQZIFEQH HRASEL')).
answer(evolution(14,13,'BETHANXS AKJSSQZIFEQA HRASEL')).
answer(evolution(15,13,'BETHANES AKJSSQZIFEQA HTASEL')).
answer(evolution(16,13,'BETHANES ADJSSQZIFEQA HTASEL')).
answer(evolution(17,13,'BETHANES ADJNSQZIFEQA HTASEL')).
answer(evolution(18,13,'BETHANES ADENSQZICEQA HTASEL')).
answer(evolution(19,13,'BETHANES ACENSQZIYEQA HTASEL')).
answer(evolution(20,13,'BETHANBS AUENSQZIYEQA TTASEL')).
answer(evolution(21,12,'BETHANBS AUEISQZIYEQA TTASEL')).
answer(evolution(22,11,'BETHANBS AUEISQZIKEQA TTASEL')).
answer(evolution(23,11,'BETHANBS AUEISDZIKEQA TTASEL')).
answer(evolution(24,10,'BETHANBS AUEISDZIKE A TTASEL')).
answer(evolution(25,10,'BETHANBS ABEISDZIKE A TTASEL')).
answer(evolution(26,9,'BETHANBS ABEISDZIKE A TEASEL')).
answer(evolution(27,9,'BETHANBS ABEISDAIKE A TEASEL')).
answer(evolution(28,9,'BETHANBS ABEISDAIKE A TEASEL')).
answer(evolution(29,9,'BETHANBS ABEISD IKE A TEASEL')).
answer(evolution(30,9,' ETHANBS ABEISD IKE A TEASEL')).
answer(evolution(31,9,' THANBS ATEISD IKE A LEASEL')).
answer(evolution(32,9,' THANBS ATEISD IKE A LEASEL')).
answer(evolution(33,8,' THANBS ATEISD IKE A WEASEL')).
answer(evolution(34,8,' THANBS ATEISD IKE A WEASEL')).
answer(evolution(35,8,' THANBS ATEISD IKE A WEASEL')).
answer(evolution(36,7,' ETHANBS ATWISD IKE A WEASEL')).
answer(evolution(37,7,' ETHANBS ATSISD IKE A WEASEL')).
answer(evolution(38,6,' ETHINBS ATSISD IKE A WEASEL')).
answer(evolution(39,5,' ETHINBS ATSIS IKE A WEASEL')).
answer(evolution(40,5,' ETHINBS ATSIS IKE A WEASEL')).
answer(evolution(41,5,' ETHINBS ATSIS IKE A WEASEL')).
answer(evolution(42,5,' ETHINBS ATHIS IKE A WEASEL')).
answer(evolution(43,5,' ETHINBS ATAIS IKE A WEASEL')).
answer(evolution(44,5,' ETHINBS TAIS IKE A WEASEL')).
answer(evolution(45,5,' ETHINBS TAIS IKE A WEASEL')).
answer(evolution(46,4,' ETHINBS ITAIS IKE A WEASEL')).
answer(evolution(47,4,' ETHINBS ITAIS IKE A WEASEL')).
answer(evolution(48,3,' ETHINBS ITAIS LIKE A WEASEL')).
answer(evolution(49,3,' ETHINBS ITAIS LIKE A WEASEL')).
answer(evolution(50,3,' ETHINBS ITAIS LIKE A WEASEL')).
answer(evolution(51,3,' ETHINBS ITAIS LIKE A WEASEL')).
answer(evolution(52,3,' ETHINBS ITAIS LIKE A WEASEL')).
answer(evolution(53,3,' ETHINBS ITAIS LIKE A WEASEL')).
answer(evolution(54,3,' ETHINBS ITAIS LIKE A WEASEL')).
answer(evolution(55,3,' ETFINKS ITAIS LIKE A WEASEL')).
answer(evolution(56,3,' ETFINKS ITAIS LIKE A WEASEL')).
answer(evolution(57,2,'METFINKS ITAIS LIKE A WEASEL')).
answer(evolution(58,2,'METFINKS ITAIS LIKE A WEASEL')).
answer(evolution(59,2,'METFINKS ITAIS LIKE A WEASEL')).
answer(evolution(60,2,'METFINKS ITAIS LIKE A WEASEL')).
answer(evolution(61,2,'METFINKS ITAIS LIKE A WEASEL')).
answer(evolution(62,2,'METFINKS ITAIS LIKE A WEASEL')).
answer(evolution(63,2,'METFINKS ITAIS LIKE A WEASEL')).
answer(evolution(64,2,'METFINKS ITAIS LIKE A WEASEL')).
answer(evolution(65,2,'METFINKS ITAIS LIKE A WEASEL')).
answer(evolution(66,1,'METHINKS ITAIS LIKE A WEASEL')).
answer(evolution(67,1,'METHINKS ITAIS LIKE A WEASEL')).
answer(evolution(68,1,'METHINKS ITAIS LIKE A WEASEL')).
answer(evolution(69,1,'METHINKS ITAIS LIKE A WEASEL')).
answer(evolution(70,1,'METHINKS ITAIS LIKE A WEASEL')).
answer(evolution(71,1,'METHINKS ITAIS LIKE A WEASEL')).
answer(evolution(72,1,'METHINKS ITAIS LIKE A WEASEL')).
answer(evolution(73,1,'METHINKS ITAIS LIKE A WEASEL')).
answer(evolution(74,1,'METHINKS ITAIS LIKE A WEASEL')).
answer(evolution(75,1,'METHINKS ITAIS LIKE A WEASEL')).
answer(evolution(76,0,'METHINKS IT IS LIKE A WEASEL')).

% proof steps
step((true:+set_random(seed(100))),set_random(seed(100)),true).
step((true:+'<https://eyereasoner.github.io/ns#solve>'('METHINKS IT IS LIKE A WEASEL')),'<https://eyereasoner.github.io/ns#solve>'('METHINKS IT IS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(1,25,'PPWVASWA CLVSSQUC DQMZNRATPT'),true).
step((true:+evolution(A,B,C)),evolution(2,24,'PPWHASWA CLVSSQUCUDQMZNRATPT'),true).
step((true:+evolution(A,B,C)),evolution(3,24,'GPWHASWA CLVSSQUCUDQMZNRAPPT'),true).
step((true:+evolution(A,B,C)),evolution(4,22,'GETHASWA CKVSSQUCUDQMZNRAPPT'),true).
step((true:+evolution(A,B,C)),evolution(5,21,'GETHASWA AKVSSQUCUDQMZNRAPPL'),true).
step((true:+evolution(A,B,C)),evolution(6,20,'EETHASYA AKVSSQUIUSQMZNRAPPL'),true).
step((true:+evolution(A,B,C)),evolution(7,18,'EETHASYS AKVSSQUIFSQMZNRAPEL'),true).
step((true:+evolution(A,B,C)),evolution(8,17,'EETHANYS AKVSSQUIFSQMZNRAPEL'),true).
step((true:+evolution(A,B,C)),evolution(9,16,'EETHANYS AKJSSQUIFSQM NRAPEL'),true).
step((true:+evolution(A,B,C)),evolution(10,16,'EETHANES AKJSSQUIFSQM NRAPEL'),true).
step((true:+evolution(A,B,C)),evolution(11,16,'BETHANES AKJSSQZIFSQM HRAPEL'),true).
step((true:+evolution(A,B,C)),evolution(12,15,'BETHANXS AKJSSQZIFSQM HRASEL'),true).
step((true:+evolution(A,B,C)),evolution(13,14,'BETHANXS AKJSSQZIFEQH HRASEL'),true).
step((true:+evolution(A,B,C)),evolution(14,13,'BETHANXS AKJSSQZIFEQA HRASEL'),true).
step((true:+evolution(A,B,C)),evolution(15,13,'BETHANES AKJSSQZIFEQA HTASEL'),true).
step((true:+evolution(A,B,C)),evolution(16,13,'BETHANES ADJSSQZIFEQA HTASEL'),true).
step((true:+evolution(A,B,C)),evolution(17,13,'BETHANES ADJNSQZIFEQA HTASEL'),true).
step((true:+evolution(A,B,C)),evolution(18,13,'BETHANES ADENSQZICEQA HTASEL'),true).
step((true:+evolution(A,B,C)),evolution(19,13,'BETHANES ACENSQZIYEQA HTASEL'),true).
step((true:+evolution(A,B,C)),evolution(20,13,'BETHANBS AUENSQZIYEQA TTASEL'),true).
step((true:+evolution(A,B,C)),evolution(21,12,'BETHANBS AUEISQZIYEQA TTASEL'),true).
step((true:+evolution(A,B,C)),evolution(22,11,'BETHANBS AUEISQZIKEQA TTASEL'),true).
step((true:+evolution(A,B,C)),evolution(23,11,'BETHANBS AUEISDZIKEQA TTASEL'),true).
step((true:+evolution(A,B,C)),evolution(24,10,'BETHANBS AUEISDZIKE A TTASEL'),true).
step((true:+evolution(A,B,C)),evolution(25,10,'BETHANBS ABEISDZIKE A TTASEL'),true).
step((true:+evolution(A,B,C)),evolution(26,9,'BETHANBS ABEISDZIKE A TEASEL'),true).
step((true:+evolution(A,B,C)),evolution(27,9,'BETHANBS ABEISDAIKE A TEASEL'),true).
step((true:+evolution(A,B,C)),evolution(28,9,'BETHANBS ABEISDAIKE A TEASEL'),true).
step((true:+evolution(A,B,C)),evolution(29,9,'BETHANBS ABEISD IKE A TEASEL'),true).
step((true:+evolution(A,B,C)),evolution(30,9,' ETHANBS ABEISD IKE A TEASEL'),true).
step((true:+evolution(A,B,C)),evolution(31,9,' THANBS ATEISD IKE A LEASEL'),true).
step((true:+evolution(A,B,C)),evolution(32,9,' THANBS ATEISD IKE A LEASEL'),true).
step((true:+evolution(A,B,C)),evolution(33,8,' THANBS ATEISD IKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(34,8,' THANBS ATEISD IKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(35,8,' THANBS ATEISD IKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(36,7,' ETHANBS ATWISD IKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(37,7,' ETHANBS ATSISD IKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(38,6,' ETHINBS ATSISD IKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(39,5,' ETHINBS ATSIS IKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(40,5,' ETHINBS ATSIS IKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(41,5,' ETHINBS ATSIS IKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(42,5,' ETHINBS ATHIS IKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(43,5,' ETHINBS ATAIS IKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(44,5,' ETHINBS TAIS IKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(45,5,' ETHINBS TAIS IKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(46,4,' ETHINBS ITAIS IKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(47,4,' ETHINBS ITAIS IKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(48,3,' ETHINBS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(49,3,' ETHINBS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(50,3,' ETHINBS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(51,3,' ETHINBS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(52,3,' ETHINBS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(53,3,' ETHINBS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(54,3,' ETHINBS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(55,3,' ETFINKS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(56,3,' ETFINKS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(57,2,'METFINKS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(58,2,'METFINKS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(59,2,'METFINKS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(60,2,'METFINKS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(61,2,'METFINKS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(62,2,'METFINKS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(63,2,'METFINKS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(64,2,'METFINKS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(65,2,'METFINKS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(66,1,'METHINKS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(67,1,'METHINKS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(68,1,'METHINKS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(69,1,'METHINKS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(70,1,'METHINKS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(71,1,'METHINKS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(72,1,'METHINKS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(73,1,'METHINKS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(74,1,'METHINKS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(75,1,'METHINKS ITAIS LIKE A WEASEL'),true).
step((true:+evolution(A,B,C)),evolution(76,0,'METHINKS IT IS LIKE A WEASEL'),true).
Loading

0 comments on commit d1ce44a

Please sign in to comment.