Edit me
  • Souffle supports standard arithmetic operations +, -, *, /, ^ and %. Examples of this are given below.
    .decl e(x:number, t:symbol, y:number)
    e(10 * 2,"10*2", 20).
    e(10 + 2,"10+2", 12).
    e(10 / 2,"10/2", 5).
    e(10 ^ 2 , "10^2", 100).
    e(10 % 3, "10%3", 1).
    e(2^4%13 , "2^4%13",3).
    
  • Souffle supports standard unary operation -.
    e(-2*10,"-20", -20).
    e(-2,"-2", -2).
    e(--2,"--2", 2).
    
  • Souffle supports standard binary operations >, <, =, !=, >= and <=. Examples of this are given below.
    A(a,c) :- a > c.
    B(a,c) :- a < c.
    C(a,c) :- a = c.
    D(a,c) :- a != c.
    E(a,c) :- a <= c.
    F(a,c) :- a >= c.
    
  • $ is used to generate unique random values to populate a table. It should be used with care as it may result in stepping outside the standard Datalog semantics.
    .decl A (n:number)
    .decl B (a:number, b:number)
    .decl C (a:number, b:number)
    .output C
    A(0).
    A(i+1) :- A(i), i<1000.		
    B($,i) :- A(i).		
    C(i,j) :- B(c,i), B(c,j), i!=j.
    

    The above example does not output anything.