:- ensure_loaded( increase_contiguous_count ). term_in_file_contiguous_counts( File, Term, Count ) :- open( File, read, Stream ), read( Stream, ReadTerm ), term_in_stream_contiguous_counts( ReadTerm, Stream, Term, [], Count ), close( Stream ). term_in_stream_contiguous_counts( end_of_file, _Stream, _Term, Acc, Counts ) :- !, Counts = Acc. term_in_stream_contiguous_counts( ReadTermIn, Stream, Term, Acc, Counts ) :- ( \+ ReadTermIn = Term -> NxAcc = Acc ; increase_contiguous_count( Acc, ReadTermIn, NxAcc ) ), read( Stream, NxReadTerm ), term_in_stream_contiguous_counts( NxReadTerm, Stream, Term, NxAcc, Counts ).