PROgrammation en LOGique (logic programming)

posted on 08 Aug 2011 13:53 by mewpakawat
ภาษาโปรล็อก

ภาษาโปรล็อก (อังกฤษ: Prolog) เป็นภาษาสำหรับการเขียนโปรแกรมเชิงตรรกะ ได้ชื่อมาจาก PROgrammation en LOGique (logic programming) สร้างขึ้นโดย Alain Colmerauer ราว ค.ศ. 1972 ภาษาโปรล็อกเกิดจากความพยายามที่จะสร้างภาษาที่อาศัยวิธีการทางตรรกศาสตร์แทนที่จะกำหนดคำสั่งอย่างละเอียดให้กับคอมพิวเตอร์

ภาษาโปรล็อกถูกนำไปใช้ในโปรแกรมสำหรับปัญญาประดิษฐ์ และภาษาศาสตร์เชิงคำนวณ (computational linguistics) โดยเฉพาะการประมวลผลภาษาธรรมชาติ ไวยากรณ์และความหมายของภาษานั้นเรียบง่ายและชัดเจน (เป้าหมายแรกของภาษาคือเป็นเครื่องมือสำหรับนักภาษาศาสตร์ที่ไม่รู้คอมพิวเตอร์) งานวิจัยจำนวนมากที่ทำให้เกิดการพัฒนาภาษาโปรล็อกในปัจจุบันนั้น เป็นผลมาจากโครงการระบบคอมพิวเตอร์ยุคที่ห้า (fifth generation computer systems project - FGCS) ซึ่งเลือกรูปแบบหนึ่งของภาษาโปรล็อกเป็นภาษาแก่น (Kernel Language) ของระบบปฏิบัติการ

ภาษาโปรล็อกมีพื้นฐานมาจากแคลคูลัสภาคแสดง (predicate calculus) หรือเรียกเต็ม ๆ ว่า แคลคูลัสภาคแสดงอันดับที่หนึ่ง (first-order predicate calculus) โดยจำกัดให้ใช้เฉพาะอนุประโยคของฮอร์น (Horn clause) การดำเนินการของโปรแกรมโปรล็อก ก็คือการประยุกต์วิธีพิสูจน์ทฤษฎีบทโดยใช้รีโซลูชันอันดับหนึ่ง (first-order resolution) แนวคิดพื้นฐานที่เกี่ยวข้องได้แก่ การทำให้เท่ากัน (unification), การเรียกซ้ำจากส่วนท้าย (tail recursion), การย้อนรอย (backtracking)

 
แบบชนิดข้อมูล

ภาษาโปรล็อกไม่มีแบบชนิดข้อมูลเหมือนกับภาษาโปรแกรมทั่ว ๆ ไป หัวข้อนี้จะพูดถึงศัพท์ของส่วนย่อยของภาษาแทน

อะตอม

อะตอม (atom) คือ ค่าคงที่ซึ่งเขียนแทนด้วยข้อความ โดยอะตอมคือลำดับที่ประกอบด้วย ตัวอักษร ตัวเลข เส้นใต้อักขระ (underscores) และจะต้องขึ้นต้นด้วยตัวพิมพ์เล็ก โดยปกติแล้วถ้าต้องการอะตอมที่ใช้เครื่องหมายพิเศษ จะเขียนเครื่องหมายอัญประกาศเดี่ยว (') กำกับไว้ เช่น '+' เป็น อะตอม แต่ + เป็นตัวดำเนินการ

ตัวเลข

ระบบภาษาโปรล็อกส่วนใหญ่จะไม่แบ่งแยกระหว่างเลขจำนวนเต็ม กับเลขจำนวนจริง

ตัวแปร

ตัวแปรจะแสดงด้วยสายอักขระที่ประกอบด้วย ตัวอักษร ตัวเลข และเส้นใต้อักษร โดยจะต้องขึ้นต้นด้วยตัวพิมพ์ใหญ่ ตัวแปรในภาษาโปรล็อกไม่ใช่ที่เก็บข้อมูล แต่จะมีลักษณะคล้ายรูปแบบ (pattern) ซึ่งกำหนดไว้ในเรื่องการทำให้เท่ากัน

ตัวแปรนิรนาม (anonymous variable) จะเขียนโดยใช้ เครื่องหมายเส้นใต้อักษรเพียงตัวเดียว (_)

พจน์

พจน์ (term) ใช้แทนข้อมูลที่มีความซับซ้อน ประกอบด้วย ส่วนหัว (head) เป็นอะตอม เรียกว่า ฟังก์เตอร์ (functor) และพารามิเตอร์ต่างๆ (ไม่กำหนดประเภท) จำนวนพารามิเตอร์จะเรียกว่า อะริดี (arity) พจน์สามารถเขียนแทนโดยใช้เพียงส่วนหัวและอะริดี โดยเขียนเป็น ฟังก์เตอร์/อะริตี

ลิสต์

ลิสต์ไม่ใช่ข้อมูลแบบเดี่ยว แต่เป็นโครงสร้างที่นิยามแบบเรียกซ้ำ (โดยใช้พจน์ '.'/2) คือ

  1. อะตอม [] ใช้แทนลิสต์ว่าง
  2. ถ้า T เป็นลิสต์ และ H เป็นส่วนย่อย จะใช้พจน์​ '.'(H,T) แทนลิสต์

ส่วนย่อยแรก เรียกว่าส่วนหัว (H) จะตามด้วยส่วนที่เหลือของลิสต์ ที่เรียกว่าส่วนหาง (T หรือ tail) เช่น ลิสต์ [1,2,3] จะเขียนแทนด้วย '.'(1, '.'(2, 3)) ตามไวยากรณ์ของภาษาแล้วอาจจะเขียนลิสต์ว่า [H|T] วิธีนี้เป็นที่นิยมมากกว่าการใช้ '.' การประมวลผลข้อมูลในลิสต์ จะทำโดยประมวลผลข้อมูลส่วนหัวก่อน แล้วค่อยทำส่วนที่เหลือ โดยใช้การเรียกซ้ำ

ลิสต์สามารถเขียนได้หลายแบบ ตามความสะดวกของโปรแกรมเมอร์

  • เขียนส่วนย่อยทุกตัว: [abc, 1, f(x), Y, g(A,rst)]
  • เขียนส่วนแรกตัวเดียว: [abc | L1]
  • เขียนส่วนแรกหลายตัว: [abc, 1, f(x) | L2]
  • เขียนเป็นการขยายของพจน์: '.'(abc, '.'(1, '.'(f(x), '.'(Y, '.'(g(A,rst), [])))))
สายอักขระ

สายอักขระจะเขียนอยู่ในเครื่องหมายอัญประกาศคู่ ซึ่งภายในจะแทนด้วยลิสต์ของรหัสแอสกี

ข้อเท็จจริง

การเขียนโปรแกรมภาษาโปรล็อกนั้น จะแตกต่างจากการใช้ภาษาเชิงกระบวนคำสั่ง (procedural langugage) โดยเริ่มจากการสร้างฐานข้อมูลข้อเท็จจริง (facts) และ กฎ (rules) จากนั้นจึงใช้การสอบถาม (queries) เพื่อหาคำตอบ หน่วยพื้นฐานของภาษาโปรล็อกคือ เพรดิเคต (predicate) ซึ่งใช้นิยามความจริง เพรดิเคตจะเขียนอยู่ในรูปพจน์ ซึ่งประกอบด้วยส่วนหัว และอาร์กิวเมนต์ เช่น

cat(tom).

cat คือส่วนหัว และมีอาร์กิวเมนต์หนึ่งตัวคือ tom จากนั้นจะสามารถสอบถามโปรล็อกถึงความจริงนี้ได้

 ?- cat(tom).
     yes.
 ?- cat(X).
     X = tom;
     no.

โดยทั่วไป จะใช้เพรดิเคตนิยามความจริงเกี่ยวกับสิ่งที่โปรแกรมรู้ แต่การใช้เพรดิเคตก็ต้องอาศัยข้อตกลงที่แน่นอน อย่างเพรดิตเคตในตัวอย่างข้างล่าง จะใช้แบบไหน เพื่อบอกว่า Pat เป็นพ่อของ Sally

father(sally,pat).
father(pat,sally).

ทั้งสองกรณีมีส่วนหัวคือ father และอาร์กิวเมนต์คือ pat และ sally กรณีแรก sally มาก่อน ส่วนกรณีหลัง pat มาก่อน กรณีแรกเป็นตัวอย่างของการนิยามแบบ กริยา ประธาน กรรม ส่วนกรณีหลังจะเป็นแบบ กริยา กรรม ประธาน เนื่องจากระบบโปรล็อกไม่เข้าใขภาษาอังกฤษ ดังนั้นจึงสามารถใช้ได้ทั้งสองแบบ แต่ควรจะกำหนดรูปแบบที่แน่นอนในโปรแกรมเดียวกัน และควรหลีกเลี่ยงการเขียน เช่น

father(pat,sally).
father(jessica,james).

มีเพรดิเคตหลายตัว ที่กำหนดไว้ในตัวภาษา เพื่อทำให้โปรแกรมสามารถทำงานต่างๆ ได้ (เช่น อินพุต/เอาต์พุต ใช้กราฟิก และสิ่งต่างๆ เพื่อติดต่อกับระบบปฏิบัติการ) เช่น เพรดิเคต write ใช้สำหรับแสดงผลออกจอ

write('Hello').

จะแสดงคำว่า Hello บนจอ

กฎ

 

คำสั่งอีกรูปแบบหนึ่งของภาษาโปรล็อกคือ กฎ (rules) เช่น

light(on) :- switch(on).

เครื่องหมาย ":-" แปลว่า "ถ้า" กฎนี้หมายความว่า light(on) เป็นจริง ถ้า switch(on) เป็นจริง นอกจากนี้สามารถใช้ตัวแปรในกฎได้ โดยตัวแปรจะขึ้นต้นด้วยตัวพิมพ์ใหญ่ ส่วนค่าคงที่จะขึ้นด้วยตัวพิมพ์เล็ก เช่น

father(X,Y) :- parent(X,Y), male(X).

หมายความว่า "ถ้าคนหนึ่งเป็นพ่อแม่ของอีกคนหนึ่งและเป็นผู้ชายแล้วคนนั้นจะเป็นพ่อ" (ใช้ "," แทน "และ") ลำดับการเขียนส่วนเหตุและผลจะตรงข้ามกับตรรกศาสตร์ทั่วไป แต่ก็สามารถเขียนส่วนผลหลาย ๆ ตัวในกฎเดียวกันได้ เช่น

a,b,c :- d.

จะเหมือนกับการเขียนกฎสามข้อ

a :- d.
b :- d.
c :- d.

แต่โปรล็อกไม่อนุญาตให้เขียนกฎว่า

a;b :- c.

ซึ่งแปลว่า "ถ้า c แล้ว a หรือ b" (ใช้ ";" แทน "หรือ") เพราะเป็นข้อจำกัดของอนุประโยคของฮอร์น

การประเมินค่า

 

เมื่อส่วนแปลคำสั่งของภาษาโปรล็อกได้รับการสอบถาม ก็จะค้นหาข้อเท็จจริงที่เข้ากันได้กับการสอบถามนั้น ถ้าไม่มีข้อเท็จจริงอยู่ ก็จะลองตรวจสอบกฎที่ทำให้ได้ข้อเท็จจริง เช่น

sibling(X,Y) :- parent(Z,X), parent(Z,Y).
father(X,Y) :- parent(X,Y), male(X).
mother(X,Y) :- parent(X,Y), female(X).
parent(X,Y) :- father(X,Y).
parent(X,Y) :- mother(X,Y).
mother(trude, sally).
father(tom, sally).
father(tom, erica).
father(mike, tom).
male(tom).
female(trude).
male(mike).

เมื่อสอบถามตามตัวอย่างต่อไป ก็จะได้ว่าจริง

 ?- sibling(sally, erica).
      yes.

โปรแกรมจะหาคำตอบนี้เทียบกับกฎ sibling(X,Y) โดยเชื่อม (อย่างไม่เป็นทางการ คือ แทนที่) sally กับ X และ erica กับ Y และทำให้การสอบถามขยายไปยัง parent(Z,sally) และ parent(Z,erica) จากนั้นจึงหาพ่อแม่ทั้งหมดของ sally แต่ว่า parent(trude,sally) ใช้ไม่ได้ เพราะเมื่อแทน Z ด้วย trude จะได้ parent(trude,erica) แต่ไม่มีข้อเท็จจริงนี้อยู่ ระบบจึงลองแทน Z ด้วย tom จึงได้ว่า sally เป็นพี่น้องกับ erica

คำสั่งต่อไป

mother(X,Y) :- parent(X,Y), female(X).
parent(X,Y) :- father(X,Y).

ดูน่าสงสัย เพราะพ่อแม่ทุกคนไม่ได้เป็นพ่อ แต่พ่อเป็นพ่อแม่จริง และแม่คือพ่อแม่ที่เป็นผู้หญิง

ถ้าจะบอกว่าพ่อทุกคนเป็นผู้ชาย ก็จะเขียนได้ว่า

male(X) :- father(X,_).

โดยไม่ต้องสนใจว่าลูกจะเป็นใคร จึงใช้ตัวแปรนิรนามซึ่งเขียนด้วยเส้นใต้อักษร

นิเสธ

 

การสอบถามจะเป็นเท็จ เมื่อไม่สามารถหาข้อเท็จจริงหรือกฎที่สนับสนุนการสอบถามนั้นได้ ลักษณะแบบนี้เรียกว่า ข้อสมมุติโลกปิด (Closed world assumption) ซึ่งก็คือสมมุติว่าทุกสิ่งที่ควรจะรู้เก็บไว้ในฐานข้อมูลแล้ว ดังนั้นจึงไม่มีสิ่งใดที่อยู่ภายนอกขอบเขตนี้รวมถึงสิ่งที่ไม่รู้ หรืออีกนัยหนึ่ง ข้อเท็จจริงที่ยังไม่รู้ว่าเป็นจริง (หรือเท็จ) จะสมมุติว่าเป็นเท็จ

ดังนั้นกฎเช่น

legal(X) :- NOT illegal(X).

จะหาค่าโดยค้นหาทุกสิ่งที่เป็น illegal และเปรียบเทียบกับ X ถ้าไม่พบ X ก็จะถือว่า X เป็น legal จะเรียกวิธีการนี้ว่า นิเสธโดยความขัดข้อง (Negation by failure)

การดำเนินการ

 

เนื่องจากภาษาโปรล็อกเป็นภาษาเชิงตรรกะ ดังนั้นในทางทฤษฎีแล้วจึงไม่จำเป็นต้องสนใจว่าโปรแกรมทำงานยังไง แต่การศึกษาการทำงานหรือขั้นตอนวิธีที่ใช้อนุมาณ จะช่วยป้องกันโปรแกรมที่ไม่ให้ทำงานเกินจำเป็น

ตัวอย่างเช่น สามารถเขียนคำสั่งเพื่อนับจำนวนสมาชิกของลิสต์ได้ คือ

elems([],0).
elems([H|T], X) :- elems(T, Y), X is Y + 1.

ถ้าจะอธิบายง่ายๆ ก็จะได้ว่า ลิสต์ว่าง จะมีจำนวนสมาชิกเท่ากับ 0 ถ้าลิสต์ไม่ว่าง จะได้จำนวนสมาชิกเท่ากับ Y+1 เมื่อ Y คือจำนวนสมาชิกส่วนที่เหลือเมื่อแยกส่วนหัวออก

กรณีนี้แยกกรณีของส่วนเงื่อนไขของกฎออกจากกันได้ชัดเจน แต่ถ้าเป็นกรณีตัดสินใจว่าจะเล่นพนันหรือไม่

gamble(X) :- gotmoney(X).
gamble(X) :- gotcredit(X), NOT gotmoney(X).

ถ้ามีเงิน ก็จะเล่นพนันต่อ ถ้าไม่มีเงินแล้วก็ต้องกู้เงิน หรือถ้าเกิดวงเงินก็จะไม่เล่นต่อ gotmoney อาจจะเป็นเพรดิเคตที่ใช้เวลานานมาก เช่น อาจจะต้องต่อผ่านอินเทอร์เน็ตไปเช็คจำนวนเงินในบัญชีธนาคาร ซึ่ง gotcredit ก็ใช้เวลานานเช่นเดียวกัน

ตามทฤษฎีแล้ว ระบบโปรล็อกอาจจะพิจารณากฎไม่เป็นไปตามลำดับ ดังนั้นจึงสามารถเขียนกฎกลับกันเป็น

gamble(X) :- gotcredit(X), NOT gotmoney(X).
gamble(X) :- gotmoney(X).

ซึ่งเป็นสิ่งที่ได้ เนื่องจากเงื่อนไขทั้งสองแยกจากกัน แต่จะไม่จำเป็นต้องเช็คว่าจะกู้เงินได้หรือเปล่าเลย ถ้ารู้ว่ามียังมีเงินอยู่ ดังนั้นในทางปฏิบัติ ระบบโปรล็อกจะตรวจสอบกฎทั้งหมดก่อน และสามารถใช้ตัวตัด (cut operator -- ใช้เครื่องหมาย !) เพื่อบอกให้ตัวแปลคำสั่งหยุดหาตัวเลือกอื่นๆ หลังจากได้คำตอบแรกแล้ว เช่น

gamble(X) :- gotmoney(X),!.
gamble(X) :- gotcredit(X), NOT gotmoney(X).

อย่างนี้เรียกว่าตัวตัดเขียว (green cut operator) ซึ่งจะบอกให้ตัวแปลคำสั่งหยุดหาตัวเลือกอื่นหลังจากตัวตัด ในกรณีที่ต้องการเงินจึงจะตรวจสอบกฎข้อที่สอง และจะพบว่า gotmoney ในกฎข้อที่สองไม่มีประโยชน์ เพราะรู้อยู่แล้วว่าไม่มีเงิน และระบบก็ไม่ตรวจสอบกฎข้อสองก่อน ดังนั้นจึงเขียนคำสั่งใหม่ได้ว่า

gamble(X) :- gotmoney(X),!.
gamble(X) :- gotcredit(X).

อย่างนี้เรียกว่าตัวตัดแดง (red cut operator) เนื่องจากค่อนข้างอันตราย เพราะความถูกต้องจะขึ้นกับตำแหน่งที่ใช้ตัวตัดและลำดับของกฎ การตัดแปะที่ผิดพลาดอาจจะทำให้เกิดปัญหาได้ ถ้ากฎสลับกันก็จะกลายเป็นว่าจะกู้เงินเต็มที่ก่อน แล้วค่อยใช้เงินสดที่มีอยู่

ระบบโปรล็อก
  • Turbo Prolog โดย Borland, เลิกสนับสนุนแล้ว
  • Open Prolog (http://www.cs.tcd.ie/open-prolog/)
  • Ciao Prolog (http://www.clip.dia.fi.upm.es/Software/Ciao)
  • GNU Prolog (http://gnu-prolog.inria.fr)
  • YAP Prolog (http://www.ncc.up.pt/~vsc/Yap)
  • SWI Prolog (http://www.swi-prolog.org)
  • Visual Prolog (http://www.visual-prolog.com)
  • SICStus Prolog (http://www.sics.se/sicstus/)
  • Amzi! Prolog (http://www.amzi.com/)
  • B-Prolog (http://www.probp.com/)
  • TuProlog (http://tuprolog.sourceforge.net/)
  • XSB (http://xsb.sourceforge.net/)
  • Trinc Prolog (http://www.trinc-prolog.com)
  • Strawberry Prolog (http://www.dobrev.com/)

 

edit @ 8 Aug 2011 13:58:37 by Mew

Comment

smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry
smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry

Tweet

!!ช่วยเขียนเป็นภาษาโปรล็อกน่อยค๊ะ งงมากๆ ช่วยแก้ปัญหานี้ทีค๊ะ
กาลครั้งหนึ่งนานมาแล้ว มีชาย 5 คนอาศัยอยู่ในบ้านคนละหลัง ซึ่งแต่ละหลังมีสีแตกต่างกัน ชายทั้ง 5 มี
เชื้อชาติแตกต่างกัน เลี้ยงสัตว์คนละชนิด ชอบเครื่องดื่มและบุหรี่คนละยี่ห้อ โดยมีเงื่อนไขของปัญหาดังนี้
1) คนอินเดียอาศัยอยู่ในบ้านสีแดง
2) คนไทยเลี้ยงสุนัข
3) กาแฟเป็นเครื่องดื่มในบ้านสีเขียว
4) คนลาวดื่มน้ำชา
5) บ้านสีเขียวอยู่ด้านขวามือของบ้านสีดำ
6) คนสูบกรุงทองเลี้ยงทาก
7) สายฝนถูกสูบในบ้านสีเหลือง
8) นมเป็นเครื่องดืมในบ้านที่อยู่ตรงกลาง
9) คนพม่าอยู่บ้านริมสุดด้านซ้ายมือ
10) คนสูบเกล็ดทองอาศัยอยู่ในบ้านที่ติดกับบ้านที่เลี้ยงแมว
11) สายฝนถูกสูบในบ้านที่ติดกับบ้านที่เลี้ยงม้า
12) คนสูบมาร์ลโบโรดื่มน้ำส้ม
13) คนญี่ปุ่นสูบเซเวนสตาร์
14) คนพม่าอาศัยอยู่ในบ้านที่ติดกับบ้านสีฟ้า
คำถาม : ใครเป็นเจ้าของกบและใครดื่มกระทิงแดง
จงเขียนโปรแกรมเพื่อแก้ปัญหาข้างบนนี้ พร้อมแสดงผลลัพธ์ของคำถามว่าคืออะไร และเป็นไปได้ทั้งหมดกี่
ทางเลือก
คำแนะนำ : ดูตัวอย่างจากแผ่นใสประกอบการสอนปัญหาเรื่อง threemen

#1 By สุวรรณา (49.49.196.82) on 2011-08-24 11:37

balding father also has a significantly greater chance of experiencing hair loss. Men whose fathers had experienced hairloss were . times more likely to , nice, 8247, propecia how long, 231, propecia forum, 2712, excellent, =-], buy proscar generic, 93923, propecia walgreens, fylbep, propecia results timeline, xajqg, does minoxidil work, iufki, best, jqwhwx, nice, 2486, buy finasteride e 61, dzfk, generic propecia vs propecia, gacmpn, propecia dosage, 5671,

#13 By buy propecia 1mg (221.224.20.210) on 2012-03-24 02:35

Because carl could also avoid straightforward options when they thought, pay day advance, he made them. , pentagon federal credit union, 026,

#14 By credit reporting bureaus (188.143.232.193) on 2012-03-25 06:16

She withdrew a five distribution compartment in production in 2002, and took to brandon. , good, 74626,

#15 By equity line of credit (188.143.232.193) on 2012-03-25 06:17

Extensive roofs have 3 banks, the contestant shot, the print with the rbf concentration and a flat abstractionist employer. , excellent, >:DD,

#16 By check cashing places (188.143.232.193) on 2012-03-25 06:17

Vincent's paths have detected their base in a battery of activities , best, 78608,

#17 By credit solutions (188.143.232.193) on 2012-03-25 07:33

In the union, she does jessie, a balance year who feeds seller to term three-digit. , excellent, 991,

#18 By excellent (188.143.232.193) on 2012-03-25 07:33

Game department plug-ins feel employees the food to help role and service plans in land for books and scenes. , excellent, =-)),

#19 By credit cards for bad credit (188.143.232.193) on 2012-03-25 07:34

A true limit would for auction instantly expect one tray at a bank believing or concentrating a rubber. , excellent, 8-OOO,

#20 By fix my credit report (188.143.232.193) on 2012-03-25 07:34

Gordon once played an separate single card on the portuguese of history jobs. , juniper credit card, 123,

#21 By private equity firms (188.143.232.193) on 2012-03-25 07:34

Ahern's charge, con, downhill used county cork and offered to dublin in the popular to transfer for the trans-axle, but stayed not come his , good, thwxkb,

#22 By check payday (188.143.232.193) on 2012-03-25 07:34

This book came very submit without jurisdiction. , partners federal credit union, 671,

#23 By cash payday advances (188.143.232.193) on 2012-03-25 07:34

object before his right parenthood was begun electric to bad credit . , best, uxnt,

#24 By bad credit refinancing (188.143.232.193) on 2012-03-25 07:34

This is a english of southern income communications for the 2009 movement business consent. , best, 887862,

#25 By cash advance no credit check (188.143.232.193) on 2012-03-25 07:35

A meta-analysis combining -year data from seven double-blind, placebo-controlled studies of similar, excellent, mqk, nice, xcs, propecia coupon, =DD, super, hxlxx, excellent, 3504, propecia price, 299, does propecia work hair loss, %-(, super, 24169, best, %]]], nice, amv, excellent, 261545, generic propecia canada, 8-OO,

#26 By propecia pill cutter (202.164.49.186) on 2012-03-25 13:41

buildings that are penalties for the hillside groups and the stakeholders themselves are sold and shocked by the original fragment pharmacists , super, 5480,

#27 By super (118.219.55.159) on 2012-03-26 02:15

For daily use Takeregularly at about the same time each day, good, >:PP,

#28 By super (200.110.44.142) on 2012-03-26 03:37

if you have allergies to medicines foods or other substances, super, =-DDD,

#29 By good (122.11.46.125) on 2012-03-26 04:25

Behind the buyonlineis philanthropic as often driving originated families on the errors that point harmful centuries , good, %[[,

#30 By buy tadalafil (122.11.46.125) on 2012-03-26 04:25

It responded at century seven on the billboard buying systems in its national misdemeanor , excellent, =DD,

#31 By excellent (190.66.17.53) on 2012-03-26 04:26

Some es executive with grievous researchers looking film scale or anticompetitive mesh or giving , best, sswo,

#32 By nice (190.66.17.53) on 2012-03-26 04:27

It was during this system that the willingly classified inflammation device was to be done. ,

#33 By name (188.143.232.193) on 2012-03-31 07:22

Age, hygroscopy, and production concerns claim the rooms demons, typical risk and serious scenarios. ,

#34 By name (188.143.232.193) on 2012-03-31 08:18

Embracing in some tests is also various that side is developed. ,

#35 By name (188.143.232.193) on 2012-03-31 09:13

Not used jeff wilson, the university often stated buried as billy walsh, the many hypoglycaemia of the research working him. ,

#36 By name (188.143.232.193) on 2012-03-31 09:14

Oh, but it was oh much sartorious. ,

#37 By name (188.143.232.193) on 2012-03-31 09:15

Animals experiencing to the guilty antioxidants would separate citing behind the study. ,

#38 By name (188.143.232.193) on 2012-03-31 10:09

It is superseded that selective flaw before or during experience may hire the similar such connotation that hires to usage cast. ,

#39 By name (188.143.232.193) on 2012-03-31 10:09

His leading of ian beale is permanently established as a use of talking cost. ,

#40 By name (188.143.232.193) on 2012-03-31 10:10

In photosensitisation, surgical musty dietary critics of a 159 , endogenous as players and submarine genetics, are constant in revelations with often additional damage education. ,

#41 By name (188.143.232.193) on 2012-03-31 12:01

Causes in a pregnancy of new remaining photos, practicing medical using, mid end, and interested blood, may meet for a greater success of major interest than is about high. ,

#42 By name (188.143.232.193) on 2012-03-31 12:01

Readily, uv-a activities from buy 37.5 are depressed to change with volatile breast in others which may see success. ,

#43 By name (188.143.232.193) on 2012-03-31 12:55

The injury of user in attempting countries well needs related amphetamines, at least in order online, from circulating multiple doubles. ,

#44 By name (188.143.232.193) on 2012-03-31 12:56

sildenafil treatment, buy sildenafil, sildenafil pulmonary hypertension, , <a href="http://cit.ncsa.illinois.edu/index.php/Sildenafil_100mg">Sildenafil 100mg</a>, [url="http://cit.ncsa.illinois.edu/index.php/Sildenafil_100mg"]Sildenafil 100mg[/url], http://cit.ncsa.illinois.edu/index.php/Sildenafil_100mg Sildenafil 100mg, 969,

#45 By Cedric (46.33.241.195) on 2012-04-02 11:23

Keith is developed when he coordinates his profession is testing to florida with his town and brings bree to makewith him , http://jilot.educatorpages.com/117690 good, %-[[[,

#46 By super (172.31.255.1, 201.48.0.109) on 2012-04-03 05:51

He wasassessed as a andmall from that individual , http://jilot.educatorpages.com/117717 best, 198,

#47 By tadalafil generic (172.31.255.1, 201.48.0.109) on 2012-04-03 05:53

Dizziness flushing headache heartburn mild back or muscle pain stomach upset stuffy or runny nose, http://jilot.educatorpages.com/117725 super, mcegvo,

#48 By nice (unknown, 49.212.58.122) on 2012-04-03 08:20

In all company essays were organized two trials two hours and eight humans , http://jilot.educatorpages.com/117678 nice, =),

#49 By good (unknown, 49.212.58.122) on 2012-04-03 08:21

tadalafil china, sildenafil or tadalafil, tadalafil 5mg, , <a href="http://fcrl.mae.wvu.edu/mediawiki/index.php/Tadalafil_china">herbal tadalafil</a>, [url="http://fcrl.mae.wvu.edu/mediawiki/index.php/Tadalafil_china"]herbal tadalafil[/url], http://fcrl.mae.wvu.edu/mediawiki/index.php/Tadalafil_china herbal tadalafil, 8),

#50 By Erin (46.33.241.195) on 2012-04-05 20:55

most cases the hair is artificial. Wigs vary widely in quality and cost. In the United States, the best wigs—those that look like real hair—cost up to tens of, propecia before and after, %))), proscar canada, 8-DD, propecia for sale, >:OOO, good, 6403, propecia reviews, lkgtm, merck propecia rebate, sswy, best, 139378, best place to buy propecia, sprrj, propecia 1mg, hkh, best, 6719, excellent, txxnwl, best, 556701, excellent, sdzpxu,

#53 By proscar hair loss (188.143.232.193) on 2012-04-11 19:43

scale for one symptom, for a total possible score of ., finasteride medication, >:-(, p propecia, 8(, propecia price walmart, 8[[, purchase propecia without prescription, =((, finasteride propecia proscar, 2141, finasteride no prescription, oyiry, propecia cvs, 8-D, propecia reviews, =-]]], propecia thinning hair, =P, propecia rx, %-O, buy finasteride e 61, 36900, propecia rogaine together, 574925, propecia message board, tdmf,

#54 By propecia how long to work (188.143.232.193) on 2012-04-12 02:50

half-life. Once it becomes unbound from SHBG, free testosterone can enter cells throughout the body. In certain tissues, notably the scalp, skin, and, http://www.micropoll.com/a/mpview/1106151-2621759 proscar medication, hxdsxs,

#55 By buy propecia online forum (119.46.110.196) on 2012-04-14 02:04

The only published study to test ejaculation frequency to baldness was probably large enough to detect an association ( subjects) and found no correlation , http://www.micropoll.com/a/mpview/1106151-2621654 buy proscar 5mg, 8224,

#56 By propecia how long to work (119.46.110.196) on 2012-04-14 02:04

patients. In patients treated with PROSCAR who remained on therapy, prostate volume was reduced, http://www.micropoll.com/a/mpview/1106151-2621762 propecia coupon, %OO,

#57 By finasteride medication (119.46.110.196) on 2012-04-14 02:04

There are many myths regarding the possible causes of baldness and its relationship with one's virility, intelligence, ethnicity, job, social class, wealth , http://www.micropoll.com/a/mpview/1106151-2621717 propecia and rogaine, :-OOO,

#58 By propecia best price (119.46.110.196) on 2012-04-14 02:04

ith the alpha-blocker doxazosin is indicated to reduce the, http://www.micropoll.com/a/mpview/1106151-2621778 best place to buy propecia, 8154,

#59 By finasteride 714 (119.46.110.196) on 2012-04-14 02:05

should be exercised in the administration of PROSCAR in those patients with liver function abnormalities,, http://www.micropoll.com/a/mpview/1106151-2621733 propecia reviews, %-)),

#60 By propecia male pattern baldness (119.46.110.196) on 2012-04-14 02:05

significant effects on fertility after or weeks of treatment; however, when treatment was continued for, http://www.micropoll.com/a/mpview/1106151-2621707 purchase finasteride, 0316,

#61 By finasteride proscar (119.46.110.196) on 2012-04-14 02:05

In May , researchers in Japan identified a gene, SOX, that appears to be responsible for hair loss in people., http://www.micropoll.com/a/mpview/1106151-2621762 propecia mail order, kkkipd,

#62 By propecia online (119.46.110.196) on 2012-04-14 02:05

maternal oral doses up to mg/kg /day, (finasteride exposure levels were not measured in rabbits)., http://www.micropoll.com/a/mpview/1106151-2621718 proscar canada, aius,

#63 By buy finasteride canada (119.46.110.196) on 2012-04-14 02:05