:- module( _, [forward/2], [assertions , regtypes , basicmodes , nativeprops] ).

forward([[ref(loc(1))],[[num(int(A)),num(int(B)),num(int(C))]]],[ref(loc(2)),[[num(int(A)),num(int(B)),num(int(C))],[num(int(D)),num(int(B)),num(int(C))]]]) :-
        A\=31,
        A\=28,
        A\=30,
        D is A+1 .
forward([[ref(loc(1))],[[num(int(30)),num(int(4)),num(int(A))]]],[ref(loc(2)),[[num(int(30)),num(int(4)),num(int(A))],[num(int(1)),num(int(5)),num(int(A))]]]).
forward([[ref(loc(1))],[[num(int(30)),num(int(6)),num(int(A))]]],[ref(loc(2)),[[num(int(30)),num(int(6)),num(int(A))],[num(int(1)),num(int(7)),num(int(A))]]]).
forward([[ref(loc(1))],[[num(int(30)),num(int(9)),num(int(A))]]],[ref(loc(2)),[[num(int(30)),num(int(9)),num(int(A))],[num(int(1)),num(int(10)),num(int(A))]]]).
forward([[ref(loc(1))],[[num(int(30)),num(int(A)),num(int(B))]]],[ref(loc(2)),[[num(int(30)),num(int(A)),num(int(B))],[num(int(31)),num(int(A)),num(int(B))]]]) :-
        A\=4,
        A\=6,
        A\=9,
        A\=11 .
forward([[ref(loc(1))],[[num(int(30)),num(int(11)),num(int(A))]]],[ref(loc(2)),[[num(int(30)),num(int(11)),num(int(A))],[num(int(1)),num(int(12)),num(int(A))]]]).
forward([[ref(loc(1))],[[num(int(28)),num(int(A)),num(int(B))]]],[ref(loc(2)),[[num(int(28)),num(int(A)),num(int(B))],[num(int(29)),num(int(A)),num(int(B))]]]) :-
        A\=2 .
forward([[ref(loc(1))],[[num(int(28)),num(int(2)),num(int(A))]]],[ref(loc(2)),[[num(int(28)),num(int(2)),num(int(A))],[num(int(1)),num(int(3)),num(int(A))]]]).
forward([[ref(loc(1))],[[num(int(31)),num(int(A)),num(int(B))]]],[ref(loc(2)),[[num(int(31)),num(int(A)),num(int(B))],[num(int(1)),num(int(C)),num(int(B))]]]) :-
        A\=12,
        C is A+1 .
forward([[ref(loc(1))],[[num(int(31)),num(int(12)),num(int(A))]]],[ref(loc(2)),[[num(int(31)),num(int(12)),num(int(A))],[num(int(1)),num(int(1)),num(int(B))]]]) :-
        B is A+1 .


