[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"detail-sidebar-cat-0-en-105":3,"doc-seo-504884-105":59,"doc-detail-504884-en":130},{"code":4,"msg":5,"data":6},0,"success",[7,13,18,23,28,33,38,43,48,51,55],{"id":8,"doc_module":4,"doc_module_name":9,"category_name":10,"show_sort_weight":11,"slug":12},1,"Document","Story & Novel",90,"story-novel",{"id":14,"doc_module":4,"doc_module_name":9,"category_name":15,"show_sort_weight":16,"slug":17},2,"Literature",80,"literature",{"id":19,"doc_module":4,"doc_module_name":9,"category_name":20,"show_sort_weight":21,"slug":22},4,"Exam",70,"exam",{"id":24,"doc_module":4,"doc_module_name":9,"category_name":25,"show_sort_weight":26,"slug":27},5,"Comic",60,"comic",{"id":29,"doc_module":4,"doc_module_name":9,"category_name":30,"show_sort_weight":31,"slug":32},6,"Technology",50,"technology",{"id":34,"doc_module":4,"doc_module_name":9,"category_name":35,"show_sort_weight":36,"slug":37},7,"Healthcare",40,"healthcare",{"id":39,"doc_module":4,"doc_module_name":9,"category_name":40,"show_sort_weight":41,"slug":42},8,"Research & Report",30,"research-report",{"id":44,"doc_module":4,"doc_module_name":9,"category_name":45,"show_sort_weight":46,"slug":47},9,"Religion & Spirituality",20,"religion-spirituality",{"id":46,"doc_module":4,"doc_module_name":9,"category_name":49,"show_sort_weight":46,"slug":50},"World Cup","world-cup",{"id":52,"doc_module":4,"doc_module_name":9,"category_name":53,"show_sort_weight":52,"slug":54},10,"Lifestyle","lifestyle",{"id":56,"doc_module":4,"doc_module_name":9,"category_name":57,"show_sort_weight":24,"slug":58},19,"General","general",{"code":4,"msg":60,"data":61},"ok",{"site_id":62,"language":63,"slug":64,"title":65,"keywords":66,"description":67,"schema_data":68,"social_meta":123,"head_meta":125,"extra_data":127,"updated_unix":129},105,"en","the-picat-sat-compiler-padl16-picat-sat-1-outline","The Picat-SAT Compiler - PADL'16 Picat-SAT 1 - Outline","","A presentation on compiling constraint satisfaction problems into SAT using Picat. It motivates Picat-SAT by highlighting improved SAT solver performance, the value of SAT as a system backbone, and the scarcity of practical compilers. The talk details Picat constraint modules (domain, arithmetic, boolean, table, global) and explains Booleanization steps for domain variables. It covers sign-and-magnitude log encoding, reified/implicative constraints, and specific arithmetic constraints including addition, multiplication, table, and global constraints, followed by experimental results and conclusions.",{"@graph":69,"@context":122},[70,84,105],{"@type":71,"itemListElement":72},"BreadcrumbList",[73,77,79,82],{"item":74,"name":75,"@type":76,"position":8},"https://docshare.wps.com","Home","ListItem",{"item":78,"name":9,"@type":76,"position":14},"https://docshare.wps.com/document/",{"item":80,"name":40,"@type":76,"position":81},"https://docshare.wps.com/document/research-report/",3,{"item":83,"name":65,"@type":76,"position":19},"https://docshare.wps.com/document/the-picat-sat-compiler-padl16-picat-sat-1-outline/504884/",{"url":83,"name":65,"@type":85,"image":86,"author":91,"headline":65,"publisher":94,"fileFormat":97,"inLanguage":63,"description":67,"dateModified":98,"datePublished":99,"encodingFormat":97,"isAccessibleForFree":100,"interactionStatistic":101},"DigitalDocument",{"url":87,"@type":88,"width":89,"height":90},"https://docshare.wps.com/thumbnails/the-picat-sat-compiler-padl16-picat-sat-1-outline/504884.png","ImageObject",300,407,{"name":92,"@type":93},"วิน","Person",{"url":74,"name":95,"@type":96},"DocShare","Organization","application/pdf","2026-10-22","2026-10-04",true,{"@type":102,"interactionType":103,"userInteractionCount":39},"InteractionCounter",{"@type":104},"ViewAction",{"@type":106,"mainEntity":107},"FAQPage",[108,114,118],{"name":109,"@type":110,"acceptedAnswer":111},"Why does the talk propose building a Picat-SAT compiler?","Question",{"text":112,"@type":113},"SAT solver performance has improved substantially over the past 20 years and SAT is now a backbone of many software systems. The talk argues it is viable to build SAT-based CSP solvers and notes the gap between many papers and few compilers.","Answer",{"name":115,"@type":110,"acceptedAnswer":116},"What constraint types does Picat’s constraint module cover?",{"text":117,"@type":113},"The outline lists domain constraints, arithmetic constraints, boolean constraints, table constraints, and global constraints. It also shows how to invoke the solver using solve(Options, Vars).",{"name":119,"@type":110,"acceptedAnswer":120},"How are domain variables encoded for SAT Booleanization?",{"text":121,"@type":113},"It contrasts sparse encoding, order encoding (as used by Sugar/BEE/meSAT), and log encoding (as used by FznTini). For negative domains, it compares 2’s complement representation and sign-and-magnitude representation, including handling for banning negative zero.","https://schema.org",{"og:url":83,"og:type":124,"og:title":65,"og:site_name":95,"og:description":67},"article",{"robots":126,"canonical":83},"index,follow",{"doc_id":128,"site_id":62},504884,1791288247,{"code":4,"msg":5,"data":131},{"doc_id":128,"user_id":132,"nickname":92,"user_avatar":133,"doc_module":4,"category_id":39,"category_name":40,"doc_title":65,"doc_description":67,"doc_content":134,"file_id":135,"file_url":136,"file_type":137,"file_size":138,"view_count":39,"is_deleted":4,"is_public":8,"is_downloadable":8,"audit_status":8,"page_count":139,"language":140,"language_code":63,"site_id":62,"html_lang":63,"table_of_contents":141,"faqs":142,"seo_title":143,"seo_description":67,"update_tm":144,"read_time":145},2336475104736,"https://ap-avatar.wpscdn.com/avatar/22000c4c5e0e5b17e70?x-image-process=image/resize,m_fixed,w_180,h_180&k=1786591360781797222","The Picat-SAT Compiler  \nNeng-Fa Zhou  \n(CUNY Brooklyn College & GC)  \nJoint work with Håkan Kjellerstrand  \nPADL'16 Picat-SAT 1  \nOutline  \n􏁮 Why Picat-SAT?  \n􏁮 Picat’s constraint modules  \n􏁮 Booleanization of constraints  \n􏂨 Sign-and-magnitude log encoding of domain variables  \n􏂨 Primitive, reified, and implicative constraints  \n􏂨 The addition constraint X+Y = Z  \n􏂨 The multiplication constraint X*Y = Z  \n􏂨 Table constraints  \n􏂨 Global constraints  \n􏁮 Experimental results  \n􏁮 Conclusion  \nPADL'16 Picat-SAT 2  \nWhy Picat-SAT?  \n􏁮 SAT solvers' performance has drastically improved during the past 20 years  \n􏁮 SAT has become the backbone of many software systems  \n􏁮 It is viable to build SAT-based CSP solvers  \n􏁮 There are so many papers but so few compilers  \n􏂨 Sugar, FznTini , BEE, and meSAT  \n􏁮 Build a SAT compiler that is solid, efficient, and practically usable  \nPADL'16 Picat-SAT 3  \nPicat’s Constraint Modules  \nimport cp . import sat . import mip .  \n􏁮 Constraints  \n􏂨 Domain  \n􏁮 X :: Domain, X notin Domain  \n􏂨 Arithmetic  \n􏁮 (X \\#= Y), (X \\#!= Y), (X \\#> Y), (X \\#>= Y),…  \n􏂨 Boolean  \n􏁮 (X \\#/\\ Y), (X \\#\\/ Y), (X \\#\u003C=> Y), (X \\#=> Y), (X \\#^ Y), (\\#~ X),  \n􏂨 Table  \n􏁮 table_in (VarTuple,Tuples), table_notin(VarTuple,Tuples)  \n􏂨 Global  \n􏁮 all_different(L), element(I, L,V), circuit(L), cumulative(…),…  \n􏁮 Solver invocation: solve (Options,Vars)  \nPADL'16 Picat-SAT 4  \nPicat’s Constraint Modules  \nSEND + MORE = MONEY  \nimport sat .  \ngo =>  \nVars=[S,E,N,D,M,O,R,Y], % generate variables Vars :: 0 . . 9, % define the domains  \nall_different (Vars), % generate constraints  \nS \\#!= 0,  \nM \\#!= 0,  \n1000*S+100*E+10*N+D+1000*M+100*O+10*R+E \\#= 10000*M+1000*O+100*N+10*E+Y,  \nsolve(Vars), % search  \nwriteln (Vars) .  \nPADL'16 Picat-SAT 5  \nPicat’s Constraint Modules  \nSudoku  \nBoard = {{5,3,_ ,_ ,7,_ ,_ ,_ ,_ },{6,_ ,_ ,1,9,5,_ ,_ ,_ },  \nimport sat . {{_8 ,,_9 ,,_8 ,,_ ,,_6 ,,_ ,,_ ,,_6 ,,_3}} ,,  \n{4,_ ,_ ,8,_ ,3,_ ,_ ,1},{7,_ ,_ ,_ ,2,_ ,_ ,_ ,6},  \nsudoku (Board) =>  \nN = Board .len , {{_ ,,_ ,,_ ,,_ ,,_ ,,_ ,,_ ,,_ ,,_}} ,,  \nVars = Board .vars (), {_ ,_ ,_ ,_ ,_ ,_ ,_ ,_ ,_ },  \nVars :: 1   N, {_ ,_ ,_ ,_ ,_ ,_ ,_ ,_ ,_ }} .  \nforeach (Row in Board) all_different (Row) end,  \nforeach (J in 1   N)  \nall_different ([Board[I, J] : I in 1 . .N])  \nend,  \nM = round( sqrt (N)),  \nforeach (I in 1 . .M . .N-M, J in 1 . .M . .N-M) all_different ([Board[I+K, J+L] : K in 0 . .M-1, L in 0 . .M-1])  \nend,  \nsolve(Vars) .  \nPADL'16 Picat-SAT 6  \nBooleanization of Constraints  \n􏁮 Domain variables  \n􏁮 Primitive, reified, and implicative constraints  \n􏁮 The addition constraint X+Y = Z  \n􏁮 The multiplication constraint X*Y = Z  \n􏁮 Table constraints  \n􏁮 Global constraints  \nPADL'16 Picat-SAT 7  \nEncoding Domain Variables  \n􏁮 Sparse encoding  \n􏂨 B 􏃳 X = a  \nOne Boolean variable is used for each value  \n􏁮 Order encoding [Sugar, BEE, meSAT]  \n􏂨 B 􏃳 X ≤ a  \n􏁮 Log encoding [FznTini]  \n􏂨 V: [a 1 ,…,an] 􏃳 \u003CBm,…, B 1 , B0 >  \nEach domain variable is encoded as a binary string m = log2 (max(|a 1 |,|an |))  \nPADL'16 Picat-SAT 8  \nLog-encoding  \n􏁮 Pros and Cons  \n􏂨 Pros: compact, and good for compiling arithmetic constraints  \n􏂨 Cons: less propagation power  \n􏁮 Encoding domains that have negative values  \n􏂨 2’s Complement Representation [FznTini]  \n􏁮 Only one representation for 0  \n􏂨 Sign-and-Magnitude Representation [PicatSAT]  \n􏁮 Efficient codes for Y = abs(X) and Y = -X  \n􏁮 One extra clause for banning negative zero  \nPADL'16 Picat-SAT 9  \nEncoding Domain Variables  \nX :: [-2,-1,1,2] 􏃳 \u003CS,X 1 ,X 0>  \n􏁮 A Naïve Code  \n􏁮 An Optimized Code (Using Espresso)  \nPADL'16 Picat-SAT 10","cbCaifWV5qq0D4tO","https://ap.wps.com/l/cbCaifWV5qq0D4tO","pdf",388652,22,"English","# Outline\n## Why Picat-SAT?\n## Picat’s constraint modules\n## Booleanization of constraints\n## Experimental results\n## Conclusion","[{\"question\":\"Why does the talk propose building a Picat-SAT compiler?\",\"answer\":\"SAT solver performance has improved substantially over the past 20 years and SAT is now a backbone of many software systems. The talk argues it is viable to build SAT-based CSP solvers and notes the gap between many papers and few compilers.\"},{\"question\":\"What constraint types does Picat’s constraint module cover?\",\"answer\":\"The outline lists domain constraints, arithmetic constraints, boolean constraints, table constraints, and global constraints. It also shows how to invoke the solver using solve(Options, Vars).\"},{\"question\":\"How are domain variables encoded for SAT Booleanization?\",\"answer\":\"It contrasts sparse encoding, order encoding (as used by Sugar/BEE/meSAT), and log encoding (as used by FznTini). For negative domains, it compares 2’s complement representation and sign-and-magnitude representation, including handling for banning negative zero.\"}]","The Picat-SAT Compiler - PADL'16 Picat-SAT 1 - Outline | PDF",1791077282,55]