OCanren

Implementation of miniKanren relational (logic) EDSL
Legend:
Library
Module
Module type
Parameter
Class
Class type
Library OCanren
Module OCanren . Tabling
val succ : ( unit -> ( ( 'a -> 'b ) -> 'c ) * ( 'd -> 'e -> 'f ) ) -> unit -> ( ( ('g OCanren__Logic.ilogic * 'a) -> 'b ) -> 'g OCanren__Logic.ilogic -> 'c ) * ( ( 'i -> 'd ) -> ('i * 'e) -> 'f )
val one : unit -> ( ( 'a OCanren__Logic.ilogic -> 'c ) -> 'a OCanren__Logic.ilogic -> 'c ) * ( ( 'd -> 'e ) -> 'd -> 'e )
val two : unit -> ( ( ('a OCanren__Logic.ilogic * 'c OCanren__Logic.ilogic) -> 'e ) -> 'a OCanren__Logic.ilogic -> 'c OCanren__Logic.ilogic -> 'e ) * ( ( 'f -> 'g -> 'h ) -> ('f * 'g) -> 'h )
val three : unit -> ( ( ('a OCanren__Logic.ilogic * ('c OCanren__Logic.ilogic * 'e OCanren__Logic.ilogic)) -> 'g ) -> 'a OCanren__Logic.ilogic -> 'c OCanren__Logic.ilogic -> 'e OCanren__Logic.ilogic -> 'g ) * ( ( 'h -> 'i -> 'j -> 'k ) -> ('h * ('i * 'j)) -> 'k )
val four : unit -> ( ( ('a OCanren__Logic.ilogic * ('c OCanren__Logic.ilogic * ('e OCanren__Logic.ilogic * 'g OCanren__Logic.ilogic))) -> 'i ) -> 'a OCanren__Logic.ilogic -> 'c OCanren__Logic.ilogic -> 'e OCanren__Logic.ilogic -> 'g OCanren__Logic.ilogic -> 'i ) * ( ( 'j -> 'k -> 'l -> 'm -> 'n ) -> ('j * ('k * ('l * 'm))) -> 'n )
val five : unit -> ( ( ('a OCanren__Logic.ilogic * ('c OCanren__Logic.ilogic * ('e OCanren__Logic.ilogic * ('g OCanren__Logic.ilogic * 'i OCanren__Logic.ilogic)))) -> 'k ) -> 'a OCanren__Logic.ilogic -> 'c OCanren__Logic.ilogic -> 'e OCanren__Logic.ilogic -> 'g OCanren__Logic.ilogic -> 'i OCanren__Logic.ilogic -> 'k ) * ( ( 'l -> 'm -> 'n -> 'o -> 'p -> 'q ) -> ('l * ('m * ('n * ('o * 'p)))) -> 'q )
val tabled : ( unit -> ( ( 'a -> State.t Stream.t goal' ) -> 'b ) * ( 'c -> 'a -> State.t Stream.t goal' ) ) -> 'c -> 'b
val tabledrec : ( unit -> ( ( 'a -> State.t Stream.t goal' ) -> 'b -> 'c ) * ( 'd -> 'a -> State.t Stream.t goal' ) ) -> ( ( 'b -> 'c ) -> 'd ) -> 'b -> 'c