47 lines
		
	
	
		
			623 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			47 lines
		
	
	
		
			623 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								:- object(varlist,
							 | 
						||
| 
								 | 
							
									extends(list)).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									:- info([
							 | 
						||
| 
								 | 
							
										version is 1.0,
							 | 
						||
| 
								 | 
							
										authors is 'Paulo Moura',
							 | 
						||
| 
								 | 
							
										date is 2000/7/24,
							 | 
						||
| 
								 | 
							
										comment is 'List of variables predicates.']).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									member(Element, [Head| _]) :-
							 | 
						||
| 
								 | 
							
										Element == Head.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									member(Element, [_| Tail]) :-
							 | 
						||
| 
								 | 
							
										member(Element, Tail).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									memberchk(Element, [Head| Tail]) :-
							 | 
						||
| 
								 | 
							
										Element == Head ->
							 | 
						||
| 
								 | 
							
											true
							 | 
						||
| 
								 | 
							
											;
							 | 
						||
| 
								 | 
							
											memberchk(Element, Tail).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									prefix([], _).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									prefix([Head1| Tail1], [Head2| Tail2]) :-
							 | 
						||
| 
								 | 
							
										Head1 == Head2,
							 | 
						||
| 
								 | 
							
										prefix(Tail1, Tail2).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									valid(List) :-
							 | 
						||
| 
								 | 
							
										nonvar(List),
							 | 
						||
| 
								 | 
							
										\+ \+ valid2(List).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									valid2([]).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									valid2([Head| Tail]) :-
							 | 
						||
| 
								 | 
							
										var(Head),
							 | 
						||
| 
								 | 
							
										valid2(Tail).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								:- end_object.
							 |