package Ġit . uni bo . tup ro log . solve Ċ Ċ import Ġit . uni bo . tup ro log . dsl . theory . pro log Ċ import Ġkotlin . collections . listOf Ġas Ġkt ListOf Ċ Ċ internal Ġclass ĠTest Atom Impl ( private Ġval Ġsolver Factory : ĠSolver Factory ) Ġ: ĠTest Atom Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġtest Atom Atom () Ġ{ ĊĠĠĠĠĠĠĠ Ġpro log Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsolver Ġ= Ġsolver Factory . solver WithDefault Built ins () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġatom (" atom ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsolutions Ġ= Ġsolver . solve ( query , Ġmedium Duration ). toList () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Solution Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkt ListOf ( query . yes ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsolutions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtest Atom String () Ġ{ ĊĠĠĠĠĠĠĠ Ġpro log Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsolver Ġ= Ġsolver Factory . solver WithDefault Built ins () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġatom (" string ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsolutions Ġ= Ġsolver . solve ( query , Ġmedium Duration ). toList () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Solution Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkt ListOf ( query . yes ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsolutions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtest Atom A of B () Ġ{ ĊĠĠĠĠĠĠĠ Ġpro log Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsolver Ġ= Ġsolver Factory . solver WithDefault Built ins () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġatom (" a " (" b ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsolutions Ġ= Ġsolver . solve ( query , Ġmedium Duration ). toList () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Solution Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkt ListOf ( query . no ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsolutions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtest Atom Var () Ġ{ ĊĠĠĠĠĠĠĠ Ġpro log Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsolver Ġ= Ġsolver Factory . solver WithDefault Built ins () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġatom (" Var ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsolutions Ġ= Ġsolver . solve ( query , Ġmedium Duration ). toList () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Solution Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkt ListOf ( query . no ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsolutions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtest Atom Empty List () Ġ{ ĊĠĠĠĠĠĠĠ Ġpro log Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsolver Ġ= Ġsolver Factory . solver WithDefault Built ins () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġatom ( emptyList ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsolutions Ġ= Ġsolver . solve ( query , Ġmedium Duration ). toList () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Solution Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkt ListOf ( query . yes ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsolutions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtest Atom Num () Ġ{ ĊĠĠĠĠĠĠĠ Ġpro log Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsolver Ġ= Ġsolver Factory . solver WithDefault Built ins () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġatom ( 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsolutions Ġ= Ġsolver . solve ( query , Ġmedium Duration ). toList () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Solution Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkt ListOf ( query . no ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsolutions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtest Atom Num Dec () Ġ{ ĊĠĠĠĠĠĠĠ Ġpro log Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsolver Ġ= Ġsolver Factory . solver WithDefault Built ins () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġatom ( 3 . 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsolutions Ġ= Ġsolver . solve ( query , Ġmedium Duration ). toList () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Solution Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkt ListOf ( query . no ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsolutions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }