Hệ Chuyên Gia Là Gì

Hệ chuyên gia, một nhánh của trí tuệ nhân tạo, là một trong những hướng khai thác tri thức của một ngành thuần lý thuyết, xuất hiện vào thập niên 60 và phần nào chứng minh khả năng áp dụng trí tuệ nhân tạo, khắc phục được các bế tắc gặp phải thời bấy giờ.

Hệ chuyên gia được tiếp cận thảo chương theo một quan niệm mới (phi thủ tục) so với cách tiếp cận thảo chương cổ điển (thủ tục). Với cách tiếp cận này hệ chuyên gia dần dần được đặt vào đúng vị trí vốn có của nó. Ngày nay trong sự phát triển chung của công nghệ thông tin toàn cầu, hệ chuyên gia tiếp tục được phát triển nhằm cung cấp các công cụ hữu hiệu cho những áp dụng tin học vào nhiều ngành nghề khác nhau trong xã hội.

 

Bạn đang xem: Hệ chuyên gia là gì


Bạn đang xem: Hệ chuyên gia là gì

*

*

*

Xem thêm: Constructor Trong Java Là Gì ? Java Bài 20: Phương Thức Khởi Tạo

*

*

8Download Bạn đang xem tài liệu "Đề tài Tìm hiểu về Hệ chuyên gia", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD
ở trênLỜI GIỚI THIỆU---oOo---Hệ chuyên gia, một nhánh của trí tuệ nhân tạo, là một trong những hướng khai thác tri thức của một ngành thuần lý thuyết, xuất hiện vào thập niên 60 và phần nào chứng minh khả năng áp dụng trí tuệ nhân tạo, khắc phục được các bế tắc gặp phải thời bấy giờ.Hệ chuyên gia được tiếp cận thảo chương theo một quan niệm mới (phi thủ tục) so với cách tiếp cận thảo chương cổ điển (thủ tục). Với cách tiếp cận này hệ chuyên gia dần dần được đặt vào đúng vị trí vốn có của nó. Ngày nay trong sự phát triển chung của công nghệ thông tin toàn cầu, hệ chuyên gia tiếp tục được phát triển nhằm cung cấp các công cụ hữu hiệu cho những áp dụng tin học vào nhiều ngành nghề khác nhau trong xã hội.Trong bước đường khai phá tìm tòi học hỏi những tri thức mới lạ trong lĩnh vực cơ sở tri thức. Và cũng với giới hạn thời gian không cho phép, cho nên nhóm chúng tôi chỉ tập trung vào việc nghiên cứu lý thuyết, chưa đi sâu vào chi tiết cài đặt, triển khai một ứng dụng cụ thể chuyên sâu.Hệ chuyên giaĐịnh nghĩaHệ chuyên gia: là một ứng dụng máy tính dùng để giải quyết một loại vấn đề nào đó. Ví dụ chẳng hạn nó dùng trong các ứng dụng chẩn đoán cho người và hệ thống. Ngoài ra, chúng còn có thể chơi cờ, tạo những dự án tài chính, quản lý hệ thống thời gian thực và những kiến thức có thể liên quan đến các lĩnh vực chuyên môn.Hiện nay, có nhiều hệ chuyên gia được xây dựng với thành phẩm được gọi là ES Shell, Shell là một phần trong sản phẩm phần mềm trong đó có chứa phần giao tiếp với người sử dụng, một định dạng cho những tri thức đã được khai báo trong các hệ Cơ sở tri thức và động cơ suy diễn. Các kỹ sư sẽ sử dụng shell đó để xây dựng hệ thống cho lĩnh vực chuyên môn của mình. Các kỹ sư hệ thống xây dựng bộ giao tiếp, thiết kế các khai báo định dạng cho tri thức và mã hóa chúng, thực hiện chúng trong động cơ suy diễn.Tùy theo kích thước của dự án, các kỹ sư chuyên môn và kỹ sư hệ thống có thể là một. Chẳng hạn, như xây dựng một hệ thống bình thường thì chúng phải phải trải qua nhiều công đọan cần thiết như là thiết kế định dạng cho tri thức, mã hóa tri thức chuyên môn và tất cả chúng hầu như là liên quan đến nhau như là một thể thống nhất.Một trong những vấn đề mấu chốt khi xây dựng một hệ chuyên gia là quá trình khai thác thông tin. Mã hóa các tri thức chuyên môn vào phần khai báo định dạng luật – đây chính là quá trình khó khăn và là công việc mang tính nhàm chán nhất. Mục tiêu chính của chúng ta là cung cấp những kỹ thuật cần thiết cho kỹ sư chuyên môn và kỹ sư hệ thống, để có thể thiết kế những hệ thống mềm dẻo.Đặc điểm khác biệt giữa động cơ duy diễn và hệ cơ sở tri thức lúc thiết kế và làm như thế nào để xây dựng và sử dụng chúng.Đi ngược dòng lịch sử.Đi ngược dòng lịch sử sự phát triển của các hệ chuyên gia cũng gần như gắn liền với sự phát triển vượt bậc của các kỹ thuật công nghệ ngày nay. Có thể cho đến nay, cái nhìn của nhiều người về ngành trí tuệ nhân tạo đã khác đi rất nhiều, bởi vì chúng không chỉ còn là những dự án trên bàn giấy mà hiện nay chúng lần lượt từng bước đưa vào tiến hành cài đặt và thử nghiệm – tương lai ngành công nghệ thông tin của chúng ta có phát triển đột phá hay không là nhờ vào mũi nhọn này.Sau đây là bảng tóm lược khái quát về lịch sử phát triển của các hệ chuyên gia.2000Intelligence agents – Web, E-Commerce, Search Engines1998More than 12500 Expert System (USA Only)1996GUESS-Generically Used Expert Scheduling System1994Commercial Artificial Neural Intelligence.1993Lumiere Project (Microsoft) Artificial neural systems 1990Artificial Neural System1985CLIPS expert system tool (NASA).1983KEE expert system tool (IntelliCorp)Japan – Fith Generation Project (intelligent computers)Hopfield Neural Net1982SMP math expert system1980LMI and symbolics founded for manufacturing LISP machinesInference Corp formedA.I. goes commercial1979RETE Algorithm for fast pattern matching (Forgy)Meta-DENDRAL- Metarules and rule induction (Buchanant)1978XCON/R1 (DEC computer system configuration) started (McDerMott, DEC).1977OPS expert system shell for XCON/R1 (Forgy)Theory of Reasoning under Uncertaintly (Dempater-Shafer)PROSPECTOR expert system started (Duds, Hart, )1976Artificial Mathmatician (AM) discovery of math concepts (Lenal).1975Frames and knowledge representation (Minsky).HEARSAY II – cooperating experts blackboard modelEMYCIN – expert system shell (Vam Mele, Shortlife, Buchanan).TEIRESIAS – explanation facility concept (Davis)GUIDON (intelligence tutoring) (Clancey)1973MYCIN expert system for medical diagnosis (Short Life )Human Problem Solving (Newell, Simon)1971HEARSAY I (speech recognization)1970PROLOG work started (Colmeraurer, Rousell )Perceptrons (Minsky and Paperl).1969MACSYMA math expert system (Martin, Moses)1968Semantic nets associative memory model (Quillian)Dendral started (Feigenbaum, Buchanan )Fuzzy Logic (Zadeh)1965Automatic Theorem Proving via Resolution Method (Robinson)1962Principles of Neurodynamics on perseptions (Rcenblatt).1958LISP AI language invented (Mc Cathy).1957Perceptron invented General Problem Solver started (Newell, Shaw, Simon).1956AI term used Logistic Theorist Heuristic Search.1954Makov Algorithm (control rule execution)1953Post production rules. The neuron model (McCulloch, Pitts)Trong lập trình trí tuệ nhân tạo thì hai ngôn ngữ dùng chủ yếu là ngôn ngữ lập trình hàm List và ngôn ngữ lập trình Logic Prolog.Trong lịch sử phát triển hệ chuyên gia cũng trải qua nhiều thăng trầm, nhưng ta có thể đánh dấu mốc phát triển bằng kỹ thuật phân loại với 2 thế hệ chuyên gia được phát triển.Thế hệ thứ 1:Đây là thế hệ đầu tiên, còn rất thô sơ cho nên có liên quan chủ yếu đến Thu thập tri thức Suy luận không chắc chắn.Nguyên lý giải quyết vấn đề theo nguyên lý cổ chai – các kiến thức tri thức, miền tri thức sẽ bị giới hạn lại. Điều này khi giải quyết vấn đề cho hệ thống sẽ khó vì đôi lúc chúng ta giải quyết những vấn đề mà giữa chúng cần phải kết hợp nhiều tri thức lĩnh vực khác nhau.Giải ThíchSuy DiễnThu thập tri thức từ Chuyên gia CSTTHệ Thống Giao TiếpUserExpertThế hệ thứ 2:Vấn đề thứ 2 là ta tiếp nhận các tri thức như thế nào? Khi nguồn tri thức ta có từ 2 hay nhiều các chuyên gia khác nhau và tri thức đó không hoàn toàn hoàn chỉnh, không chính xác và chỉ có tính tương đối.Hệ chuyên gia ở thế hệ thứ 2 được phát triển dựa trên nền tảng tri thức được thêm tự động bằng các công cụ, vẫn theo nguyên lý cổ chai và một số tính năng kỹ thuật cho phép hệ thống biểu diễn những luật mang tính tương đối.Ở thế hệ này, hệ chuyên gia có thể kết hợp với các công cụ và kỹ thuật khác như:Thu gom tri thức từ giải thích của chuyên giaTự động thu gom, góp nhặt tri thức bằng máy họcKiểm tra thẩm duyệt tri thức cơ sởCác kỹ thuật suy diễn truyền thống (suy diễn tiến, suy diễn lùi)Trình bày, biểu diễn các tri thức có tính tương đối.Mở rộng cơ chế suy diễn (tích hợp kỹ thuật mờ vào trong suy diễn).Tự động tinh chỉnh, bảo trì sửa chữa các tri thức cơ sởHệ thống giải thích các câu trả lời.CSTT(Rules + Facts + Biểu diễn tương đối)Giao tiếp giữa người dùng và hệ thốngTrí thức sẵn có từ:Tri thức chuyên mônTri thức lĩnh vựcKết quả thu được từ thực nghiệmMáy họcGiải thích tri thứcTri thức & Hệ chuyên giaMETA KNOWLEDGEKNOWLEDGEINFORMATIONDATANOISEThế giới bên ngoài đang ẩn chứa trong đó vô vàn những thông tin đầy bí ẩn, dưới con mắt của con người các thông tin ấy dần được khai phá & sử dụng.Chẳng hạn, trong biểu đồ ở trên chúng ta thấy rằng, từ các thông tin tạp ở thế giới bên ngoài (NOISE) sẽ được khai thác đưa vào sử dụng trong máy tính như là dữ liệu lưu trữ (DATA). Từ những dữ liệu này sẽ được con người khai thác sử dụng ở một mức độ cao hơn gọi là thông tin (Information). Ở mức độ trên thông tin một tí, tức nhiều thông tin sẽ được mô hình hóa ra thành tri thức (Knowledge). Và ở mức độ cao hơn tri thức (knowledge) là siêu tri thức (dùng để giao tiếp điều khiển giữa các hệ tri thức khác nhau), đó là điều mà con người mơ cũng không thể đạt đến ngay được (ít nhất là trong thời gian hiện tại), bởi vì như chúng ta đã biết chúng ta đang đi đến ngưỡng luôn lúc nào cũng dư thừa dữ liệu (Data) hoặc thông tin (Information).Giả như chúng ta có trong tay một đội ngũ các chuyên gia, nhưng để thống nhất được các ý kiến của các chuyên gia lại với nhau thì cả là một vấn đề nan giải. Tại sao chúng ta không đặt vấn đề là với khi chúng ta có thể qui tụ những kiến thức ấy lại với nhau phân tích tổng hợp chúng lại thành một thể thống nhất, được máy tính khai thác để phục vụ lại cho con người. Một số vấn đề đặt ra ?Tại sao phải là hệ chuyên gia ?:Nếu như vấn đề đặt ra có thể được giải quyết bằng lập trình truyền thống thông thường thì hệ chuyên gia không là cách chọn lựa tốt nhấtNhưng trong trường hợp có những tình huống mà giải pháp thông thường không giải quyết được bằng thuật toán (phi cấu trúc – không định được một cấu trúc rõ ràng trong sáng để giải quyết vấn đề) thì hệ chuyên gia là sự chọn lựa tốt nhất.Khi làm việc các vấn đề có tính phi cấu trúc, có khả năng hệ thống phải đưa ra giải pháp cho toàn bộ vấn đề đó. Điều này có thể xảy ra nếu kỹ sư chuyên môn cung cấp độ thứ tự ưu tiên cho quá nhiều luật. Do đó, hệ thống sẽ không thể phân biệt được là phải làm sao cho thỏa đáng.Tổng hợp lại tri thức từ nhiều hệ chuyên gia khác nhau. Hệ chuyên gia phải giới hạn một cách phạm vi ứng dụng rõ ràng. Vì khi thêm vào những tri thức thuộc lĩnh vực khác hệ chuyên gia sẽ ngày càng phức tạp hơn.Việc kết hợp trên sẽ đưa ra cho kỹ sư hệ thống nhiều nhiệm vụ nặng nề hơn là làm như thế nào để có thể dung hợp được giữa 2 hay nhiều ý niệm lại với nhau.Hiện tại, vấn đề kết hợp các tri thức từ nhiều lĩnh vực đang được triển khai và nghiên cứu, không thấy xuất hiện những phiên bản mang tính thương mại trên thị trường.Có được hoan nghênh hay không ?. Phải xuất phát từ những yêu cầu có được một hệ chuyên gia. Dù cho không được hoan nghênh khi thiết kế một hệ chuyên gia cũng mang một ý nghĩa - 1 cuộc cách mạng trong CNTT. Hoặc giả là nó bị từ chối một cách thẳng thừng thì tại sao chúng ta không chấp nhận nó dưới khía cạnh là một công cụ trợ giúp.Ta cần nhớ các chuyên gia cũng là con người, đã là con người thì có lúc phải mất đi nhưng làm sao những tri thức lượm lặt cả đời của họ, mấy ai có thể lưu lại được, tại sao ta không thể tận dụng ngay trong lúc có thể.Các chuyên gia cần phải có sự kết hợp với nhau nhiêu hơn nữa. Đơn cử 1 số ít thôi mà hệ thống đã có 1 đống luật mâu thuẫn với nhau. Thường xảy ra, vì ý kiến của mỗi người thường khác nhau.Người vận hành hệ thống phải có am hiểu nhất định về hệ thống. Kỹ sư chuyên môn (đang vận hành hệ thống) phải thật rõ ... g sẽ tổng hợp những gì mà người dùng cung cấp để cuối cùng cho ra được các vấn đề mà chúng nghi ngờ. Khi đề nghị ra giải pháp cho người sử dụng hệ thống hiển thị thông tin về mức độ tin cậy của mệnh. Như trong ví dụ dưới đây, độ nghi ngờ về tình trạng hết gas là đến 90% trong khi đó hiện tượng gas bị gò rỉ là lên đến 80%.Giao tiếp người dùngHỏi người dùngĐể hỏi người dùng về các thông tin về đặc điểm cá nhân của đối tượng.Giả sử ta có các thuộc tính, hành động của một động vật là eat (ăn), feet (chân), wings(đuôi), neck(cổ), color (màu).Ta có các vị từ sau:eats(X):-ask(eats, X).feet(X):-ask(feet, X).wings(X):-ask(wings, X).neck(X):-ask(neck, X).color(X):-ask(color, X).Vị từ ask được thiết kế với mục đích là hỏi đối tượng ấy có thuộc tính A, V, và chờ người dùng nhập vào câu trả lời.ask(A, V>:-write(A:V),write("? "),read(yes).Ghi nhận trả lời người dùngNhững thông tin mà người dùng cung cấp sẽ được hệ thống ghi nhận lại vào cơ sở dữ liệu (với sự xác nhận của người dùng khi trả lời câu hỏi: yes) bằng vị từ assert với mẫu do kỹ sư chuyên môn cung cấp, ask(A, V):-known(yes, A, V), !. ask(A, V):-known(_, A, V), !,fail.ask(A, V):-write(A:V),write("? : "),read(Y),asserta(known(Y, A, V)),Y == yes.Câu trả lời có nhiều giá trịVới trường hợp câu trả lời có nhiều giá trị thì theo thuật toán cải tiến cho vị từ ask là chúng ta thêm mẫu multivalued để ghi nhận thuộc tính nào đó của đối tượng mang nhiều giá trị. multivalued(voice).multivalued(feed).ask(A, V):-not multivalued(A),known(yes, A, V2),V \== V2,!, fail.Hệ thống thực đơn người dùngKhi người dùng sẽ được hệ thống giao tiếp thông qua hệ thống thực đơn đã được thiết kế.Vị từ menuask được thiết kế để người dùng qua đó giao tiếp với hệ thốngĐầu tiên với thuộc tính – giá trị, khi muốn hỏi một giá trị cho thuộc tính nào đó thì các câu trả lời sẽ tùy thuộc vào danh sách các câu trả lời mà hệ thống đã cung cấp sẵn thông qua tham số MenuList, khi muốn truy vấn người dùng một thuộc tính của đối tượng nào đó. Khi người trả lời câu hỏi hệ thống sẽ kiểm tra xem câu trả lời của người dùng có nắm trong danh sách thực đơn hay không ? (điều này sẽ được kiểm tra thông qua vị từ check-val ). Khi đã xác thực là câu trả lời hợp lệ thì vị từ assert sẽ ghi nhận câu trả lời vào cơ sở dữ liệu.Ví dụ dưới đây, sẽ truy vấn người dùng 2 thuộc tính kích thước (size) và tầm bay (flight).size(X):-menuask(size, X, ).flight(X):-menuask(flight, X, ).menuask(A, V, MenuList) :-write("What is the value for"), write(A), write("?"), nl,write(MenuList), nl,read(X),check_val(X, A, V, MenuList),asserta( known(yes, A, X) ),X == V.check_val(X, A, V, MenuList) :-member(X, MenuList),!.check_val(X, A, V, MenuList) :-write(X), write(" is not a legal value, try again."), nl,menuask(A, V, MenuList).Tạo Shell Cùng giống như một phần mềm bình thường, để giao tiếp với người dùng hệ thống phải cần đền shell, shell chẳng qua là một cầu nối giao tiếp trung gian giữa người dùng và hệ thống, thông qua đó người dùng và hệ thống có thể trao đổi thông tin, liên lạc với nhau.Trong qui trình làm việc của hệ thống với người dùng là như sau:Khởi động shellNạp cơ sở tri thức vào hệ thốngTương tác giữa người dùng và ShellHệ thống dựa cơ sở trên thông tin người dùng cung cấp để giải quyết vấn đề.top_goal(X) :- bird(X).solve :-abolish(known, 3),define(known, 3),top_goal(X),write("The answer is "), write(X), nl.solve :-write("No answer found."), nl.?- consult(native).yes?- consult("birds.kb").yes?- solve.nostrils : external_tubular?go :-greeting,repeat,write("> "),read(X),do(X),X == quit.greeting :-write("This is the Native Prolog shell."), nl,write("Enter load, consult, or quit at the prompt."), nl.do(load) :-load_kb,!.do(consult) :-solve,!.do(quit).do(X) :-write(X),write("is not a legal command."), nl,fail.Cơ chế giải thíchGiải thích cho người dùngXe khởi động được ? Sai.Động cơ không chạy? Đúng.Bạn nghe mùi xăng? Đúng.Lời đề nghị - Chờ khoảng 5 phút sau hãy khởi động lại..Tại sao?Hệ thống sử dụng luật:Nếu Xe không khởi động vàĐộng cơ không chạy vàCó mùi nhiên liệu.ThìĐề nghị 5 phút sau hãy khởi động xe lại.Trong ngữ cảnh cuộc hội thoại giữa người và hệ thống trợ giúp ở trên, sau khi đựa ra lời đề nghị là chờ thêm 5 phút thì nếu người dùng có nhu cầu muốn xem là “tại sao lại như vậy” thì hệ thống sẽ cung ứng những lý do tại sao chúng ta phải chờ.Đối với người dùng việc chúng ta giải thích lý do tại sao chúng ta giải thích sẽ làm người dùng rõ vấn đề hơn.Giải thích cho kỹ sư Đối với kỹ sư thiết kế hệ thống và kỹ sư chuyên môn, giải thích đối với họ là một việc hết sức quan trọng trong quá trình thiết kế và xây dựng hệ, họ có thể căn cứ vào đó để lần ra được những bug trong chương trình, có thể căn cứ vào đó để kiểm tra tính đúng đắn của hệ, dễ dàng phát hiện được những chỗ hỏng về mặt chuyên môn, cũng như các lỗi về kỹ thuật khi hệ thống đã được vận hành.Những giải thích này có thể xóa hỏi hệ thống khi hệ thống đã hoàn tất, nhưng đôi khi như thế sẽ làm công tác bảo trì sẽ gặp nhiều khó khăn. Cho nên Các loại giải thíchCó 4 loại giải thích thường được sử dụng trong hệ chuyên gia. Lần vết theo suy luận của luật (rất hợp đối với người thiết kế hệ thống).Giải thích How là làm như thế nào để có đựơc suy luận.Giải thích Why là lời giải thích tại sao hệ thống hỏi vấn đề đó.Giải thích Why not là kết luận được cung cấp.Mới nghe thoạt đầu chúng ta cảm thấy hệ thống có thể có được các đáp ứng như trên thì quả là một vấn đề cực kì khó khăn. Nhưng trên thực tế, sử dụng Prolog làm ngôn ngữ chính để thiết kế động cơ suy diễn thì vấn đề sẽ trở nên nhẹ nhàng hơn. Nếu mọi người không tin thì có thể thử xem !!!.Như đã khảo sát, quá trình suy diễn lùi cũng là quá trình đối thoại giữa người dùng và Hệ chuyên gia. Đó là khi Hệ chuyên gia cần nhập dữ liệu cho các sự kiện yêu cầu ( Là các nút tận cùng – Loại nút số 3). Ở đây người ta có thể có quyền đặt ra những câu hỏi nghi vấn như Tại sao? WHY phải cung cấp số liệu này? Hoặc khi đã tìm ra kết luận và xuất kết luận cho người dùng, họ cũng có thể đặt nghi vấn như làm Thế nào? HOW mà có kết qủa như vậy?Trong cả hai trường hợp trên, để khẳng định niềm tin, Hệ chuyên gia phải trả lời được cho người dùng các câu hỏi Why, How. Đó chính là Cơ chế giải thích của Hệ chuyên gia. Rỏ ràng là cơ chế giải thích phải được cài đặt song song với cơ chế suy diễn lùi.Giải thích HowCâu hỏi how là câu hỏi được hỏi bởi người dùng khi hệ thống cung cấp một số suy luận. Những bằng chứng cho suy luận này có thể được lấy từ nhiều nguồn khác nhau từ nguồn lần vết, từ trong môi trường làm việc, những suy luận có được tổng hợp từ các nguồn vừa kể trên. Cùng với câu hỏi Why, hệ chuyên gia đồng thời cũng phải trả lời câu hỏi How. Thời điểm để Hệ chuyên gia có thể trả lời câu hỏi How là lúc Hệ chuyên gia tìm được kết luận và trả lời cho người dùng. Câu hỏi How là một phương tiện giúp cho Hệ chuyên gia khẳng định niềm tin đối với người dùng. Đó là làm cách nào mà Hệ chuyên gia có thể đi đến một kết luận như vậy. Sau khi trả lời câu hỏi How kết thúc cũng là lúc qúa trình suy diễn lùi chấm dứt.fact(AV, CF, RuleList)update(Goal, NewCF, CF, RuleN) :-fact(Goal, OldCF, _),combine(NewCF, OldCF, CF),retract( fact(Goal, OldCF, OldRules) ),asserta( fact(Goal, CF, ) ),!.update(Goal, CF, CF, RuleN) :-asserta( fact(Goal, CF, ) ).fg(Goal, CurCF) :-rule(N, lhs(IfList), rhs(Goal, CF)),...update(Goal, NewCF, CurCF, N),...how(Goal) :-fact(Goal, CF, Rules),CF > 20,pretty(Goal, PG),write_line(),nl,list_rules(Rules),fail.how( _ ).how(not Goal) :-fact(Goal, CF, Rules),CF = 20,prov(T, Tal, Tally, Hist).get_user(X, Hist) :-repeat,write(": "),read_line(X),process_ans(X, Hist).process_ans(, Hist) :-nl, write_hist(Hist),!,fail.process_ans(, _) :-set_trace(X),!,fail.process_ans(, _) :-help, !,fail.process_ans(X, _). % just return user"s answerwrite_hist() :-nl.write_hist() :-write_line(),!,write_hist(T).write_hist() :-list_rule(N),!,write_hist(T).

Leave a Reply

Your email address will not be published. Required fields are marked *