Example #1
0
func islando(q l.V) l.Goal {
	db.Assert("A", North_of, "C")
	db.Assert("B", North_of, "D")
	db.Assert("D", East_of, "C")
	db.Assert("B", East_of, "A")

	membero := l.StructMemberoConstructor4(n)

	alabaster_island, durian_island, banana_island := l.Fresh3()
	pwana_island, quero_island, skern_island, rayou_island := l.Fresh4()
	hotel_island, koala_island, jai_island, skating_island := l.Fresh4()

	return l.And(
		l.Unify(Nation{Island{"A", v(), v(), v()}, Island{"B", v(), v(), v()}, Island{"C", v(), v(), v()}, Island{"D", v(), v(), v()}}, q),
		// 1
		north_of(pwana_island, koala_island),
		//2
		east_of(quero_island, alabaster_island),
		//3
		east_of(hotel_island, durian_island),
		//4
		north_south_bridge(skern_island, jai_island),
		//5
		west_east_bridge(rayou_island, banana_island),
		//6
		disconnected(skating_island, jai_island),
		//
		membero(Island{pwana_island, "Pwana", v(), v()}, q),
		membero(Island{quero_island, "Quero", v(), v()}, q),
		membero(Island{rayou_island, "Rayou", v(), v()}, q),
		membero(Island{skern_island, "Skern", v(), v()}, q),
		//
		membero(Island{alabaster_island, v(), "alabaster", v()}, q),
		membero(Island{banana_island, v(), "bananas", v()}, q),
		membero(Island{v(), v(), "coconuts", v()}, q),
		membero(Island{durian_island, v(), "durian fruit", v()}, q),
		//
		membero(Island{hotel_island, v(), v(), "hotel"}, q),
		membero(Island{skating_island, v(), v(), "ice skating rink"}, q),
		membero(Island{jai_island, v(), v(), "jai alai stadium"}, q),
		membero(Island{koala_island, v(), v(), "koala preserve"}, q),
	)
}
Example #2
0
func babbyo(q l.V) l.Goal {
	keiths_last_name, libbys_last_name, margos_last_name, noras_last_name, ottos_last_name := l.Fresh5()
	keiths_age, noras_age, margos_age, ottos_age, libbys_age := l.Fresh5()
	iveys_age, fells_age, halls_age := l.Fresh3()
	membero := l.StructMemberoConstructor5(c)
	return l.And(
		l.Unify(Children{Child{"Keith", keiths_last_name, keiths_age},
			Child{"Libby", libbys_last_name, libbys_age},
			Child{"Margo", margos_last_name, margos_age},
			Child{"Nora", noras_last_name, noras_age},
			Child{"Otto", ottos_last_name, ottos_age}}, q),

		//2
		l.Difference(keiths_age, 1, iveys_age),
		l.Difference(iveys_age, 1, noras_age),

		//3
		l.Difference(fells_age, 3, margos_age),

		//4
		l.Mult(halls_age, 2, ottos_age),

		// 1
		membero(Child{"Libby", "Jule", v()}, q),

		//
		membero(Child{v(), "Fell", fells_age}, q),
		membero(Child{v(), "Gant", v()}, q),
		membero(Child{v(), "Hall", halls_age}, q),
		membero(Child{v(), "Ivey", iveys_age}, q),
		membero(Child{v(), "Jule", v()}, q),
		membero(Child{v(), v(), 2}, q),
		membero(Child{v(), v(), 3}, q),
		membero(Child{v(), v(), 4}, q),
		membero(Child{v(), v(), 5}, q),
		membero(Child{v(), v(), 6}, q),
	)
}