@prefix skolem: <https://eyereasoner.github.io/.well-known/genid/8b98b360-9a70-4845-b52c-c675af60ad01#>.
@prefix r: <http://www.w3.org/2000/10/swap/reason#>.
@prefix : <https://eyereasoner.github.io/eye/reasoning#>.
@prefix n3: <http://www.w3.org/2004/06/rei#>.
@prefix var: <http://www.w3.org/2000/10/swap/var#>.
@prefix math: <http://www.w3.org/2000/10/swap/math#>.
@prefix list: <http://www.w3.org/2000/10/swap/list#>.

skolem:proof a r:Proof, r:Conjunction;
    r:component skolem:lemma1;
    r:gives {
        3 :answer ((:left :right) (:left :center) (:right :center) (:left :right) (:center :left) (:center :right) (:left :right)).
    }.

skolem:lemma1 a r:Inference;
    r:gives {
        3 :answer ((:left :right) (:left :center) (:right :center) (:left :right) (:center :left) (:center :right) (:left :right)).
    };
    r:evidence (
        skolem:lemma2
    );
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_0"]; r:boundTo [ n3:uri "https://eyereasoner.github.io/eye/reasoning#answer"]];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_1"]; r:boundTo 3];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_2"]; r:boundTo ((:left :right) (:left :center) (:right :center) (:left :right) (:center :left) (:center :right) (:left :right))];
    r:rule skolem:lemma3.

skolem:lemma2 a r:Inference;
    r:gives {
        3 :answer ((:left :right) (:left :center) (:right :center) (:left :right) (:center :left) (:center :right) (:left :right)).
    };
    r:evidence (
        skolem:lemma4
    );
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_0"]; r:boundTo ((:left :right) (:left :center) (:right :center) (:left :right) (:center :left) (:center :right) (:left :right))];
    r:rule skolem:lemma5.

skolem:lemma3 a r:Extraction;
    r:gives {
        @forAll var:x_0, var:x_1, var:x_2. {
            var:x_1 var:x_0 var:x_2.
        } => {
            var:x_1 var:x_0 var:x_2.
        }.
    };
    r:because [ a r:Parsing; r:source <http://eulersharp.sourceforge.net/2003/03swap/pass>].

skolem:lemma4 a r:Inference;
    r:gives {
        (3 :left :right :center) :moves ((:left :right) (:left :center) (:right :center) (:left :right) (:center :left) (:center :right) (:left :right)).
    };
    r:evidence (
        [ a r:Fact; r:gives {3 math:greaterThan 1}]
        [ a r:Fact; r:gives {(3 1) math:difference 2}]
        skolem:lemma6
        skolem:lemma7
        [ a r:Fact; r:gives {(((:left :right) (:left :center) (:right :center)) ((:left :right)) ((:center :left) (:center :right) (:left :right))) list:append ((:left :right) (:left :center) (:right :center) (:left :right) (:center :left) (:center :right) (:left :right))}]
    );
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_0"]; r:boundTo 3];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_1"]; r:boundTo 2];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_5"]; r:boundTo ((:left :right) (:left :center) (:right :center))];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_2"]; r:boundTo [ n3:uri "https://eyereasoner.github.io/eye/reasoning#left"]];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_3"]; r:boundTo [ n3:uri "https://eyereasoner.github.io/eye/reasoning#center"]];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_4"]; r:boundTo [ n3:uri "https://eyereasoner.github.io/eye/reasoning#right"]];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_6"]; r:boundTo ((:center :left) (:center :right) (:left :right))];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_7"]; r:boundTo ((:left :right) (:left :center) (:right :center) (:left :right) (:center :left) (:center :right) (:left :right))];
    r:rule skolem:lemma8.

skolem:lemma5 a r:Extraction;
    r:gives {
        @forAll var:x_0. {
            (3 :left :right :center) :moves var:x_0.
        } => {
            3 :answer var:x_0.
        }.
    };
    r:because [ a r:Parsing; r:source <https://eyereasoner.github.io/eye/reasoning/hanoi/hanoi.n3>].

skolem:lemma6 a r:Inference;
    r:gives {
        (2 :left :center :right) :moves ((:left :right) (:left :center) (:right :center)).
    };
    r:evidence (
        [ a r:Fact; r:gives {2 math:greaterThan 1}]
        [ a r:Fact; r:gives {(2 1) math:difference 1}]
        skolem:lemma9
        skolem:lemma10
        [ a r:Fact; r:gives {(((:left :right)) ((:left :center)) ((:right :center))) list:append ((:left :right) (:left :center) (:right :center))}]
    );
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_0"]; r:boundTo 2];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_1"]; r:boundTo 1];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_5"]; r:boundTo ((:left :right))];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_2"]; r:boundTo [ n3:uri "https://eyereasoner.github.io/eye/reasoning#left"]];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_3"]; r:boundTo [ n3:uri "https://eyereasoner.github.io/eye/reasoning#right"]];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_4"]; r:boundTo [ n3:uri "https://eyereasoner.github.io/eye/reasoning#center"]];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_6"]; r:boundTo ((:right :center))];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_7"]; r:boundTo ((:left :right) (:left :center) (:right :center))];
    r:rule skolem:lemma8.

skolem:lemma7 a r:Inference;
    r:gives {
        (2 :center :right :left) :moves ((:center :left) (:center :right) (:left :right)).
    };
    r:evidence (
        [ a r:Fact; r:gives {2 math:greaterThan 1}]
        [ a r:Fact; r:gives {(2 1) math:difference 1}]
        skolem:lemma11
        skolem:lemma9
        [ a r:Fact; r:gives {(((:center :left)) ((:center :right)) ((:left :right))) list:append ((:center :left) (:center :right) (:left :right))}]
    );
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_0"]; r:boundTo 2];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_1"]; r:boundTo 1];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_5"]; r:boundTo ((:center :left))];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_2"]; r:boundTo [ n3:uri "https://eyereasoner.github.io/eye/reasoning#center"]];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_3"]; r:boundTo [ n3:uri "https://eyereasoner.github.io/eye/reasoning#left"]];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_4"]; r:boundTo [ n3:uri "https://eyereasoner.github.io/eye/reasoning#right"]];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_6"]; r:boundTo ((:left :right))];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_7"]; r:boundTo ((:center :left) (:center :right) (:left :right))];
    r:rule skolem:lemma8.

skolem:lemma8 a r:Extraction;
    r:gives {
        @forAll var:x_0, var:x_1, var:x_2, var:x_3, var:x_4, var:x_5, var:x_6, var:x_7. {
            (var:x_0 var:x_2 var:x_4 var:x_3) :moves var:x_7.
        } <= {
            var:x_0 math:greaterThan 1 .
            (var:x_0 1) math:difference var:x_1.
            (var:x_1 var:x_2 var:x_3 var:x_4) :moves var:x_5.
            (var:x_1 var:x_3 var:x_4 var:x_2) :moves var:x_6.
            (var:x_5 ((var:x_2 var:x_4)) var:x_6) list:append var:x_7.
        }.
    };
    r:because [ a r:Parsing; r:source <https://eyereasoner.github.io/eye/reasoning/hanoi/hanoi.n3>].

skolem:lemma9 a r:Inference;
    r:gives {
        (1 :left :right :center) :moves ((:left :right)).
    };
    r:evidence (
        [ a r:Fact; r:gives true]
    );
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_0"]; r:boundTo [ n3:uri "https://eyereasoner.github.io/eye/reasoning#left"]];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_1"]; r:boundTo [ n3:uri "https://eyereasoner.github.io/eye/reasoning#right"]];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_2"]; r:boundTo [ n3:uri "https://eyereasoner.github.io/eye/reasoning#center"]];
    r:rule skolem:lemma12.

skolem:lemma10 a r:Inference;
    r:gives {
        (1 :right :center :left) :moves ((:right :center)).
    };
    r:evidence (
        [ a r:Fact; r:gives true]
    );
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_0"]; r:boundTo [ n3:uri "https://eyereasoner.github.io/eye/reasoning#right"]];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_1"]; r:boundTo [ n3:uri "https://eyereasoner.github.io/eye/reasoning#center"]];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_2"]; r:boundTo [ n3:uri "https://eyereasoner.github.io/eye/reasoning#left"]];
    r:rule skolem:lemma12.

skolem:lemma11 a r:Inference;
    r:gives {
        (1 :center :left :right) :moves ((:center :left)).
    };
    r:evidence (
        [ a r:Fact; r:gives true]
    );
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_0"]; r:boundTo [ n3:uri "https://eyereasoner.github.io/eye/reasoning#center"]];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_1"]; r:boundTo [ n3:uri "https://eyereasoner.github.io/eye/reasoning#left"]];
    r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_2"]; r:boundTo [ n3:uri "https://eyereasoner.github.io/eye/reasoning#right"]];
    r:rule skolem:lemma12.

skolem:lemma12 a r:Extraction;
    r:gives {
        @forSome var:x_0, var:x_1, var:x_2. {
            (1 var:x_0 var:x_1 var:x_2) :moves ((var:x_0 var:x_1)).
        } <= true.
    };
    r:because [ a r:Parsing; r:source <https://eyereasoner.github.io/eye/reasoning/hanoi/hanoi.n3>].

