OCanren

Implementation of miniKanren relational (logic) EDSL
Legend:
Library
Module
Module type
Parameter
Class
Class type
Library OCanren
Module OCanren . Std . Pair
type 'a logic'
class virtual ['ia, 'a, 'sa, 'inh, 'extra, 'syn] logic'_t : object ... end
val gcata_logic' : [ _, 'a, 'sa, 'inh, 'a logic', 'syn ] logic'_t -> 'inh -> 'a logic' -> 'syn
class ['a, 'extra_logic'] fmt_logic'_t : ( Format.formatter -> 'a -> unit ) -> ( Format.formatter -> 'a logic' -> unit ) -> object ... end
val fmt_logic' : ( Format.formatter -> 'a -> unit ) -> Format.formatter -> 'a logic' -> unit
class ['a, 'syn, 'extra_logic'] foldr_logic'_t : ( 'syn -> 'a -> 'syn ) -> ( 'syn -> 'a logic' -> 'syn ) -> object ... end
val foldr_logic' : ( 'syn -> 'a -> 'syn ) -> 'syn -> 'a logic' -> 'syn
class ['a, 'syn, 'extra_logic'] foldl_logic'_t : ( 'syn -> 'a -> 'syn ) -> ( 'syn -> 'a logic' -> 'syn ) -> object ... end
val foldl_logic' : ( 'syn -> 'a -> 'syn ) -> 'syn -> 'a logic' -> 'syn
class ['a, 'extra_logic'] compare_logic'_t : ( 'a -> 'a -> GT.comparison ) -> ( 'a logic' -> 'a logic' -> GT.comparison ) -> object ... end
val compare_logic' : ( 'a -> 'a -> GT.comparison ) -> 'a logic' -> 'a logic' -> GT.comparison
class ['a, 'extra_logic'] eq_logic'_t : ( 'a -> 'a -> bool ) -> ( 'a logic' -> 'a logic' -> bool ) -> object ... end
val eq_logic' : ( 'a -> 'a -> bool ) -> 'a logic' -> 'a logic' -> bool
class ['a, 'extra_logic'] html_logic'_t : ( unit -> 'a -> HTML.er ) -> ( unit -> 'a logic' -> HTML.er ) -> object ... end
val html_logic' : ( 'a -> HTML.er ) -> 'a logic' -> HTML.er
class ['a, 'a_2, 'extra_logic', 'syn_logic'] gmap_logic'_t : ( unit -> 'a -> 'a_2 ) -> ( unit -> 'a logic' -> 'a_2 logic' ) -> object ... end
val gmap_logic' : ( 'a -> 'a_2 ) -> 'a logic' -> 'a_2 logic'
class ['a, 'extra_logic'] show_logic'_t : ( unit -> 'a -> string ) -> ( unit -> 'a logic' -> string ) -> object ... end
val show_logic' : ( 'a -> string ) -> 'a logic' -> string
val logic' : ( [ _, 'a, 'sa, 'inh, 'a logic', 'syn ] logic'_t -> 'inh -> 'a logic' -> 'syn, < fmt : ( Format.formatter -> 'a -> unit ) -> Format.formatter -> 'a logic' -> unit ; foldr : ( 'syn -> 'a -> 'syn ) -> 'syn -> 'a logic' -> 'syn ; foldl : ( 'syn -> 'a -> 'syn ) -> 'syn -> 'a logic' -> 'syn ; compare : ( 'a -> 'a -> GT.comparison ) -> 'a logic' -> 'a logic' -> GT.comparison ; eq : ( 'a -> 'a -> bool ) -> 'a logic' -> 'a logic' -> bool ; html : ( 'a -> HTML.er ) -> 'a logic' -> HTML.er ; gmap : ( 'a -> 'a_2 ) -> 'a logic' -> 'a_2 logic' ; show : ( 'a -> string ) -> 'a logic' -> string >, ( ( 'inh2 -> 'a1 logic' -> 'syn3 ) -> [ 'a1_i, 'a1, 'a1_s, 'inh2, 'a1 logic', 'syn3 ] logic'_t ) -> 'inh2 -> 'a1 logic' -> 'syn3 ) GT.t
type ('a, 'b) t = 'a * 'b
class virtual ['ia, 'a, 'sa, 'ib, 'b, 'sb, 'inh, 'extra, 'syn] t_t : object ... end
val gcata_t : [ _, 'a, 'sa, _, 'b, 'sb, 'inh, ( 'a, 'b ) t, 'syn ] t_t -> 'inh -> ( 'a, 'b ) t -> 'syn
class ['a, 'b, 'extra_t] fmt_t_t : ( Format.formatter -> 'a -> unit ) -> ( Format.formatter -> 'b -> unit ) -> ( Format.formatter -> ( 'a, 'b ) t -> unit ) -> object ... end
val fmt_t : ( Format.formatter -> 'a -> unit ) -> ( Format.formatter -> 'b -> unit ) -> Format.formatter -> ( 'a, 'b ) t -> unit
class ['a, 'b, 'syn, 'extra_t] foldr_t_t : ( 'syn -> 'a -> 'syn ) -> ( 'syn -> 'b -> 'syn ) -> ( 'syn -> ( 'a, 'b ) t -> 'syn ) -> object ... end
val foldr_t : ( 'syn -> 'a -> 'syn ) -> ( 'syn -> 'b -> 'syn ) -> 'syn -> ( 'a, 'b ) t -> 'syn
class ['a, 'b, 'syn, 'extra_t] foldl_t_t : ( 'syn -> 'a -> 'syn ) -> ( 'syn -> 'b -> 'syn ) -> ( 'syn -> ( 'a, 'b ) t -> 'syn ) -> object ... end
val foldl_t : ( 'syn -> 'a -> 'syn ) -> ( 'syn -> 'b -> 'syn ) -> 'syn -> ( 'a, 'b ) t -> 'syn
class ['a, 'b, 'extra_t] compare_t_t : ( 'a -> 'a -> GT.comparison ) -> ( 'b -> 'b -> GT.comparison ) -> ( ( 'a, 'b ) t -> ( 'a, 'b ) t -> GT.comparison ) -> object ... end
val compare_t : ( 'a -> 'a -> GT.comparison ) -> ( 'b -> 'b -> GT.comparison ) -> ( 'a, 'b ) t -> ( 'a, 'b ) t -> GT.comparison
class ['a, 'b, 'extra_t] eq_t_t : ( 'a -> 'a -> bool ) -> ( 'b -> 'b -> bool ) -> ( ( 'a, 'b ) t -> ( 'a, 'b ) t -> bool ) -> object ... end
val eq_t : ( 'a -> 'a -> bool ) -> ( 'b -> 'b -> bool ) -> ( 'a, 'b ) t -> ( 'a, 'b ) t -> bool
class ['a, 'b, 'extra_t] html_t_t : ( unit -> 'a -> HTML.er ) -> ( unit -> 'b -> HTML.er ) -> ( unit -> ( 'a, 'b ) t -> HTML.er ) -> object ... end
val html_t : ( 'a -> HTML.er ) -> ( 'b -> HTML.er ) -> ( 'a, 'b ) t -> HTML.er
class ['a, 'a_2, 'b, 'b_2, 'extra_t, 'syn_t] gmap_t_t : ( unit -> 'a -> 'a_2 ) -> ( unit -> 'b -> 'b_2 ) -> ( unit -> ( 'a, 'b ) t -> ( 'a_2, 'b_2 ) t ) -> object ... end
val gmap_t : ( 'a -> 'a_2 ) -> ( 'b -> 'b_2 ) -> ( 'a, 'b ) t -> ( 'a_2, 'b_2 ) t
class ['a, 'b, 'extra_t] show_t_t : ( unit -> 'a -> string ) -> ( unit -> 'b -> string ) -> ( unit -> ( 'a, 'b ) t -> string ) -> object ... end
val show_t : ( 'a -> string ) -> ( 'b -> string ) -> ( 'a, 'b ) t -> string
val t : ( [ _, 'a, 'sa, _, 'b, 'sb, 'inh, ( 'a, 'b ) t, 'syn ] t_t -> 'inh -> ( 'a, 'b ) t -> 'syn, < fmt : ( Format.formatter -> 'a -> unit ) -> ( Format.formatter -> 'b -> unit ) -> Format.formatter -> ( 'a, 'b ) t -> unit ; foldr : ( 'syn -> 'a -> 'syn ) -> ( 'syn -> 'b -> 'syn ) -> 'syn -> ( 'a, 'b ) t -> 'syn ; foldl : ( 'syn -> 'a -> 'syn ) -> ( 'syn -> 'b -> 'syn ) -> 'syn -> ( 'a, 'b ) t -> 'syn ; compare : ( 'a -> 'a -> GT.comparison ) -> ( 'b -> 'b -> GT.comparison ) -> ( 'a, 'b ) t -> ( 'a, 'b ) t -> GT.comparison ; eq : ( 'a -> 'a -> bool ) -> ( 'b -> 'b -> bool ) -> ( 'a, 'b ) t -> ( 'a, 'b ) t -> bool ; html : ( 'a -> HTML.er ) -> ( 'b -> HTML.er ) -> ( 'a, 'b ) t -> HTML.er ; gmap : ( 'a -> 'a_2 ) -> ( 'b -> 'b_2 ) -> ( 'a, 'b ) t -> ( 'a_2, 'b_2 ) t ; show : ( 'a -> string ) -> ( 'b -> string ) -> ( 'a, 'b ) t -> string >, ( ( 'inh3 -> ( 'a1, 'a2 ) t -> 'syn4 ) -> [ 'a1_i, 'a1, 'a1_s, 'a2_i, 'a2, 'a2_s, 'inh3, ( 'a1, 'a2 ) t, 'syn4 ] t_t ) -> 'inh3 -> ( 'a1, 'a2 ) t -> 'syn4 ) GT.t
type ('a, 'b) ground = 'a * 'b
class virtual ['ia, 'a, 'sa, 'ib, 'b, 'sb, 'inh, 'extra, 'syn] ground_t : object ... end
val gcata_ground : [ _, 'a, 'sa, _, 'b, 'sb, 'inh, ( 'a, 'b ) ground, 'syn ] ground_t -> 'inh -> ( 'a, 'b ) ground -> 'syn
class ['a, 'b, 'extra_ground] fmt_ground_t : ( Format.formatter -> 'a -> unit ) -> ( Format.formatter -> 'b -> unit ) -> ( Format.formatter -> ( 'a, 'b ) ground -> unit ) -> object ... end
val fmt_ground : ( Format.formatter -> 'a -> unit ) -> ( Format.formatter -> 'b -> unit ) -> Format.formatter -> ( 'a, 'b ) ground -> unit
class ['a, 'b, 'syn, 'extra_ground] foldr_ground_t : ( 'syn -> 'a -> 'syn ) -> ( 'syn -> 'b -> 'syn ) -> ( 'syn -> ( 'a, 'b ) ground -> 'syn ) -> object ... end
val foldr_ground : ( 'syn -> 'a -> 'syn ) -> ( 'syn -> 'b -> 'syn ) -> 'syn -> ( 'a, 'b ) ground -> 'syn
class ['a, 'b, 'syn, 'extra_ground] foldl_ground_t : ( 'syn -> 'a -> 'syn ) -> ( 'syn -> 'b -> 'syn ) -> ( 'syn -> ( 'a, 'b ) ground -> 'syn ) -> object ... end
val foldl_ground : ( 'syn -> 'a -> 'syn ) -> ( 'syn -> 'b -> 'syn ) -> 'syn -> ( 'a, 'b ) ground -> 'syn
class ['a, 'b, 'extra_ground] compare_ground_t : ( 'a -> 'a -> GT.comparison ) -> ( 'b -> 'b -> GT.comparison ) -> ( ( 'a, 'b ) ground -> ( 'a, 'b ) ground -> GT.comparison ) -> object ... end
val compare_ground : ( 'a -> 'a -> GT.comparison ) -> ( 'b -> 'b -> GT.comparison ) -> ( 'a, 'b ) ground -> ( 'a, 'b ) ground -> GT.comparison
class ['a, 'b, 'extra_ground] eq_ground_t : ( 'a -> 'a -> bool ) -> ( 'b -> 'b -> bool ) -> ( ( 'a, 'b ) ground -> ( 'a, 'b ) ground -> bool ) -> object ... end
val eq_ground : ( 'a -> 'a -> bool ) -> ( 'b -> 'b -> bool ) -> ( 'a, 'b ) ground -> ( 'a, 'b ) ground -> bool
class ['a, 'b, 'extra_ground] html_ground_t : ( unit -> 'a -> HTML.er ) -> ( unit -> 'b -> HTML.er ) -> ( unit -> ( 'a, 'b ) ground -> HTML.er ) -> object ... end
val html_ground : ( 'a -> HTML.er ) -> ( 'b -> HTML.er ) -> ( 'a, 'b ) ground -> HTML.er
class ['a, 'a_2, 'b, 'b_2, 'extra_ground, 'syn_ground] gmap_ground_t : ( unit -> 'a -> 'a_2 ) -> ( unit -> 'b -> 'b_2 ) -> ( unit -> ( 'a, 'b ) ground -> ( 'a_2, 'b_2 ) ground ) -> object ... end
val gmap_ground : ( 'a -> 'a_2 ) -> ( 'b -> 'b_2 ) -> ( 'a, 'b ) ground -> ( 'a_2, 'b_2 ) ground
class ['a, 'b, 'extra_ground] show_ground_t : ( unit -> 'a -> string ) -> ( unit -> 'b -> string ) -> ( unit -> ( 'a, 'b ) ground -> string ) -> object ... end
val show_ground : ( 'a -> string ) -> ( 'b -> string ) -> ( 'a, 'b ) ground -> string
val ground : ( [ _, 'a, 'sa, _, 'b, 'sb, 'inh, ( 'a, 'b ) ground, 'syn ] ground_t -> 'inh -> ( 'a, 'b ) ground -> 'syn, < fmt : ( Format.formatter -> 'a -> unit ) -> ( Format.formatter -> 'b -> unit ) -> Format.formatter -> ( 'a, 'b ) ground -> unit ; foldr : ( 'syn -> 'a -> 'syn ) -> ( 'syn -> 'b -> 'syn ) -> 'syn -> ( 'a, 'b ) ground -> 'syn ; foldl : ( 'syn -> 'a -> 'syn ) -> ( 'syn -> 'b -> 'syn ) -> 'syn -> ( 'a, 'b ) ground -> 'syn ; compare : ( 'a -> 'a -> GT.comparison ) -> ( 'b -> 'b -> GT.comparison ) -> ( 'a, 'b ) ground -> ( 'a, 'b ) ground -> GT.comparison ; eq : ( 'a -> 'a -> bool ) -> ( 'b -> 'b -> bool ) -> ( 'a, 'b ) ground -> ( 'a, 'b ) ground -> bool ; html : ( 'a -> HTML.er ) -> ( 'b -> HTML.er ) -> ( 'a, 'b ) ground -> HTML.er ; gmap : ( 'a -> 'a_2 ) -> ( 'b -> 'b_2 ) -> ( 'a, 'b ) ground -> ( 'a_2, 'b_2 ) ground ; show : ( 'a -> string ) -> ( 'b -> string ) -> ( 'a, 'b ) ground -> string >, ( ( 'inh3 -> ( 'a1, 'a2 ) ground -> 'syn4 ) -> [ 'a1_i, 'a1, 'a1_s, 'a2_i, 'a2, 'a2_s, 'inh3, ( 'a1, 'a2 ) ground, 'syn4 ] ground_t ) -> 'inh3 -> ( 'a1, 'a2 ) ground -> 'syn4 ) GT.t
type ('a, 'b) logic = ('a * 'b) logic'
class virtual ['ia, 'a, 'sa, 'ib, 'b, 'sb, 'inh, 'extra, 'syn] logic_t : object ... end
val gcata_logic : [ _, 'a, 'sa, _, 'b, 'sb, 'inh, ( 'a, 'b ) logic, 'syn ] logic_t -> 'inh -> ( 'a, 'b ) logic -> 'syn
class ['a, 'b, 'extra_logic] fmt_logic_t : ( Format.formatter -> 'a -> unit ) -> ( Format.formatter -> 'b -> unit ) -> ( Format.formatter -> ( 'a, 'b ) logic -> unit ) -> object ... end
val fmt_logic : ( Format.formatter -> 'a -> unit ) -> ( Format.formatter -> 'b -> unit ) -> Format.formatter -> ( 'a, 'b ) logic -> unit
class ['a, 'b, 'syn, 'extra_logic] foldr_logic_t : ( 'syn -> 'a -> 'syn ) -> ( 'syn -> 'b -> 'syn ) -> ( 'syn -> ( 'a, 'b ) logic -> 'syn ) -> object ... end
val foldr_logic : ( 'syn -> 'a -> 'syn ) -> ( 'syn -> 'b -> 'syn ) -> 'syn -> ( 'a, 'b ) logic -> 'syn
class ['a, 'b, 'syn, 'extra_logic] foldl_logic_t : ( 'syn -> 'a -> 'syn ) -> ( 'syn -> 'b -> 'syn ) -> ( 'syn -> ( 'a, 'b ) logic -> 'syn ) -> object ... end
val foldl_logic : ( 'syn -> 'a -> 'syn ) -> ( 'syn -> 'b -> 'syn ) -> 'syn -> ( 'a, 'b ) logic -> 'syn
class ['a, 'b, 'extra_logic] compare_logic_t : ( 'a -> 'a -> GT.comparison ) -> ( 'b -> 'b -> GT.comparison ) -> ( ( 'a, 'b ) logic -> ( 'a, 'b ) logic -> GT.comparison ) -> object ... end
val compare_logic : ( 'a -> 'a -> GT.comparison ) -> ( 'b -> 'b -> GT.comparison ) -> ( 'a, 'b ) logic -> ( 'a, 'b ) logic -> GT.comparison
class ['a, 'b, 'extra_logic] eq_logic_t : ( 'a -> 'a -> bool ) -> ( 'b -> 'b -> bool ) -> ( ( 'a, 'b ) logic -> ( 'a, 'b ) logic -> bool ) -> object ... end
val eq_logic : ( 'a -> 'a -> bool ) -> ( 'b -> 'b -> bool ) -> ( 'a, 'b ) logic -> ( 'a, 'b ) logic -> bool
class ['a, 'b, 'extra_logic] html_logic_t : ( unit -> 'a -> HTML.er ) -> ( unit -> 'b -> HTML.er ) -> ( unit -> ( 'a, 'b ) logic -> HTML.er ) -> object ... end
val html_logic : ( 'a -> HTML.er ) -> ( 'b -> HTML.er ) -> ( 'a, 'b ) logic -> HTML.er
class ['a, 'a_2, 'b, 'b_2, 'extra_logic, 'syn_logic] gmap_logic_t : ( unit -> 'a -> 'a_2 ) -> ( unit -> 'b -> 'b_2 ) -> ( unit -> ( 'a, 'b ) logic -> ( 'a_2, 'b_2 ) logic ) -> object ... end
val gmap_logic : ( 'a -> 'a_2 ) -> ( 'b -> 'b_2 ) -> ( 'a, 'b ) logic -> ( 'a_2, 'b_2 ) logic
class ['a, 'b, 'extra_logic] show_logic_t : ( unit -> 'a -> string ) -> ( unit -> 'b -> string ) -> ( unit -> ( 'a, 'b ) logic -> string ) -> object ... end
val show_logic : ( 'a -> string ) -> ( 'b -> string ) -> ( 'a, 'b ) logic -> string
val logic : ( [ _, 'a, 'sa, _, 'b, 'sb, 'inh, ( 'a, 'b ) logic, 'syn ] logic_t -> 'inh -> ( 'a, 'b ) logic -> 'syn, < fmt : ( Format.formatter -> 'a -> unit ) -> ( Format.formatter -> 'b -> unit ) -> Format.formatter -> ( 'a, 'b ) logic -> unit ; foldr : ( 'syn -> 'a -> 'syn ) -> ( 'syn -> 'b -> 'syn ) -> 'syn -> ( 'a, 'b ) logic -> 'syn ; foldl : ( 'syn -> 'a -> 'syn ) -> ( 'syn -> 'b -> 'syn ) -> 'syn -> ( 'a, 'b ) logic -> 'syn ; compare : ( 'a -> 'a -> GT.comparison ) -> ( 'b -> 'b -> GT.comparison ) -> ( 'a, 'b ) logic -> ( 'a, 'b ) logic -> GT.comparison ; eq : ( 'a -> 'a -> bool ) -> ( 'b -> 'b -> bool ) -> ( 'a, 'b ) logic -> ( 'a, 'b ) logic -> bool ; html : ( 'a -> HTML.er ) -> ( 'b -> HTML.er ) -> ( 'a, 'b ) logic -> HTML.er ; gmap : ( 'a -> 'a_2 ) -> ( 'b -> 'b_2 ) -> ( 'a, 'b ) logic -> ( 'a_2, 'b_2 ) logic ; show : ( 'a -> string ) -> ( 'b -> string ) -> ( 'a, 'b ) logic -> string >, ( ( 'inh3 -> ( 'a1, 'a2 ) logic -> 'syn4 ) -> [ 'a1_i, 'a1, 'a1_s, 'a2_i, 'a2, 'a2_s, 'inh3, ( 'a1, 'a2 ) logic, 'syn4 ] logic_t ) -> 'inh3 -> ( 'a1, 'a2 ) logic -> 'syn4 ) GT.t
val inj : ( 'a -> 'c ) -> ( 'b -> 'd ) -> ( 'a, 'b ) ground -> ( 'c, 'd ) logic
type ('a, 'b) groundi
type ('a, 'b) injected = ( 'a, 'b ) groundi
val pair : 'a OCanren__Logic.ilogic -> 'b OCanren__Logic.ilogic -> ( 'a OCanren__Logic.ilogic, 'b OCanren__Logic.ilogic ) groundi
val reify : ( 'a -> 'b ) Env.Monad.t -> ( 'c -> 'd ) Env.Monad.t -> ( ( 'a, 'c ) groundi -> ( 'b, 'd ) logic ) Env.Monad.t
val prj_exn : ( 'a -> 'b ) Env.Monad.t -> ( 'c -> 'd ) Env.Monad.t -> ( ( 'a, 'c ) groundi -> ( 'b, 'd ) ground ) Env.Monad.t