use neorusticus::PrologEngine;
fn main() {
let mut engine = PrologEngine::new();
println!("Testing undefined predicates to see what actually happens...\n");
println!("Test 1: lengthh([1, 2, 3], X).");
match engine.parse_query("lengthh([1, 2, 3], X).") {
Ok(solutions) => println!(" SUCCESS: Found {} solutions", solutions.len()),
Err(e) => println!(" ERROR: {}", e),
}
println!("\nTest 2: appnd([1], [2], X).");
match engine.parse_query("appnd([1], [2], X).") {
Ok(solutions) => println!(" SUCCESS: Found {} solutions", solutions.len()),
Err(e) => println!(" ERROR: {}", e),
}
println!("\nTest 3: append([1], [2]).");
match engine.parse_query("append([1], [2]).") {
Ok(solutions) => println!(" SUCCESS: Found {} solutions", solutions.len()),
Err(e) => println!(" ERROR: {}", e),
}
println!("\nTest 4: totally_fake_predicate_xyz(X).");
match engine.parse_query("totally_fake_predicate_xyz(X).") {
Ok(solutions) => println!(" SUCCESS: Found {} solutions", solutions.len()),
Err(e) => println!(" ERROR: {}", e),
}
println!("\nTest 5: append([1], [2], X). (correct arity)");
match engine.parse_query("append([1], [2], X).") {
Ok(solutions) => println!(" SUCCESS: Found {} solutions", solutions.len()),
Err(e) => println!(" ERROR: {}", e),
}
println!("\nTest 6: length([1, 2, 3], X). (correct)");
match engine.parse_query("length([1, 2, 3], X).") {
Ok(solutions) => println!(" SUCCESS: Found {} solutions", solutions.len()),
Err(e) => println!(" ERROR: {}", e),
}
println!("\nChecking defined predicates:");
let predicates = engine.list_predicates();
println!(" User-defined predicates: {:?}", predicates);
let builtins = engine.list_builtins();
println!(" Built-in predicates count: {}", builtins.len());
println!("\nThis will show us which queries actually fail vs succeed.");
}