% 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').
    • Ephera@lemmy.ml
      link
      fedilink
      English
      arrow-up
      15
      ·
      1 day 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.

    • Funkytom467@lemmy.world
      link
      fedilink
      arrow-up
      13
      ·
      1 day ago

      Just a joke on what makes a piano, i suppose the pun is intended but Peano’s axiom are famous mathematical axioms.