66
submitted 2 days ago* (last edited 2 days ago) by sebastiancarlos@lemmy.sdf.org to c/programmerhumor@lemmy.ml
% Piano Axioms

% Axiom 1: Law of Excluded Gray
key_type(white).
key_type(black).

% Axiom 2: The C Postulate
key_color(c, white).

% Axiom 3: The Diatonic Scale
next_white_key(c, d).
next_white_key(d, e).
next_white_key(e, f).
next_white_key(f, g).
next_white_key(g, a).
next_white_key(a, b).
next_white_key(b, c).

% Axiom 4: The Semitone Anomaly
semitone_gap(e, f, 1).
semitone_gap(b, c, 1).
semitone_gap(X, Y, 2) :- 
    next_white_key(X, Y),
    X \= e,
    X \= b.

% Axiom 5: Black Key Entropy
has_black_key_between(X, Y) :-
    next_white_key(X, Y),
    semitone_gap(X, Y, 2).

% Axiom 6: The "8 is 12" Principle.
octave_size(12).

% Axiom 7: Out of Bounds Exception
total_keys(88).

% Theorem 1: Conservation of "Wrong Notes"
style(jazz) :-
    wrong_notes > 0,
    write('All wrong notes are now intentional').
you are viewing a single comment's thread
view the rest of the comments
[-] Ephera@lemmy.ml 16 points 2 days ago

They're being defined right in this post. ๐Ÿ™ƒ

Prolog is a language that allows you to specify a whole bunch of rules/axioms and then you can query logical conclusions that can be made from these.

If you go to https://swish.swi-prolog.org/ and click on "Create a [Program]", then paste the post text on the left side (without the Theorem 1, as that one doesn't compile), then you can query it in the bottom right.
For example, if you ask it between which keys there's a gap of just 1 semitone:

?- semitone_gap(X, Y, 1)

Then it will first tell you that X=e & Y=f, as the first possible solution. Then you can click "Next" and it'll tell you another solution is X=b & Y=c.

this post was submitted on 25 Dec 2024
66 points (100.0% liked)

Programmer Humor

32745 readers
105 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS