$𝖘𝖑𝖑𝖐/𝖘𝖑𝖎𝖙𝖍𝖊𝖗𝖑𝖎𝖓𝖐-𝖗𝖚𝖑𝖊𝖘.𝖘𝖆𝖕𝖕𝖍𝖎𝖗𝖊 
    0-------------------------------| Slitherlink Rules in Sapphire |--------------------------------
    1--|Ann×mgridofcells,n>1,m>1,somecellsareshowncontainingnumbersfrom0to3.       
    2--|Thesolutionisasingle,non-intersectingloopontheedges,wherethenumberofedges    
    3--|usedaroundeachpimecellisequaltothenumbergiven.                                   
    4                                                                                               
    5--|bordersaredefinedtobe0                                                                
    6--|pim-amapfromthen×mcellsto{0⋯3};numberofthecellsedgesintheloop             
    7--|hrz-amapofthen×(m+1)horizontaledgesto{01};1meansinthesolution              
    8--|vrt-amapofthe(n+1)×mverticaledgesto{01};1meansinthesolution                
    9--|flo-thenumberofedgesconnectedtoeachofthe(n+1)×(m+1)vertices                    
   10--|dst-⦗dstabcd⦘isthedistancebetweentwoverticesonthepath;A0ifunconnected    
   11                                                                                               
   12--|Theborderofbothhrzandvrtarepaddedwith0                                           
   13--|Theconstraintonpimmeans1×1cellpuzzlesaren'tallowed                                
   14--|floenforcesnon-intersectionandthesolutionisoneormoreloops                        
   15--|dstenforcessingleloopconnectivity                                                      
   16--|∙∙arelationindicatingconnectivitycanbesatisfiedsimplybyenforcingconnectivity     
   17                                                                                               
   18                                                                                               
   19a{0n}vrta1=0vrtam=0b{0m1}vrtab{01}                               
   20b{0m}hrz1b=0hrznb=0a{0n1}hrzab{01}                               
   21                                                                                               
   22a{1n+1}floa1=0floam+1=0                                                       
   23b{1m+1}flo1b=0flon+1b=0                                                       
   24                                                                                               
   25ab{0n1}×{0m1}pimab{04}pimab=vrtab+vrta+1b+hrzab+hrzab+1 
   26                                                                                               
   27∀⟨ab{0n}×{0m}                                                                             
   28floab{02}floab=vrtab1+vrtab+hrza1b+hrzab                      
   29                                                                                               
   30                                                                                               
   31--|Beforesingleloopconstraint,definecellsasinteriororexterior                        
   32                                                                                               
   33∀⟨xy{0n1}×{0m1}                                                                         
   34in?xy{01}                                                                              
   35x=0∙∙∙in?xy=vrtxy                                                                  
   36x>0∙∙∙(in?xy=in?x1y⇐⇒vrtxy=0)                                               
   37x<n1(in?xy=in?x+1y⇐⇒vrtx+1y=0)                                             
   38x=n1in?xy=vrtx+1y                                                                
   39y=0∙∙∙in?xy=hrzxy                                                                  
   40y>0∙∙∙(in?xy=in?xy1⇐⇒hrzxy⦘=0)                                               
   41y<m1(in?xy=in?xy+1⇐⇒hrzxy+1=0)                                             
   42y=m1in?xy=hrzxy+1                                                                
   43                                                                                               
   44                                                                                               
   45dc=(n+1)·(m+1)                                                                                 
   46                                                                                               
   47x0{0n}y0{0m}idx0y0=0                                                             
   48                                                                                               
   49--|pathgoesclockwisearoundtheinterior                                                    
   50∀⟨xy{0n1}×{0m1}                                                                         
   51⦗in?xy=1                                                                                
   52hrzxy=1⇐⇒idx+1y=idxy+1                                                       
   53vrtx+1y=1⇐⇒idx+1y+1=idx+1y+1                                                 
   54hrzxy+1=1⇐⇒idxy+1=idx+1y+1+1                                                 
   55vrtxy=1idxy=idxy+1+1idxy=0                                           
   56y0<=y(y0=yx0<=x)                                                                     
   57                                                                                               
   58⦗in?xy=0                                                                                
   59hrzxy=1⇐⇒idxy=idx+1y+1                                                       
   60vrtx+1y=1⇐⇒idx+1y=idx+1y+1+1idx+1y=0                                    
   61hrzxy+1=1⇐⇒idx+1y+1=idxy+1+1                                                 
   62vrtxy=1idxy+1=idxy+1                                                        
   63                                                                                               
   64                                                                                               
   65∀⟨xy{0n}×{0m}                                                                             
   66idxy{0dc}                                                                              
   67idxy=0⇐⇒x=x0y=y0                                                                    
   68floxy=0⇐⇒idxy=dc                                                                   
   69--|⦗floxy⦘=2y0<=y(y0=yx0<=x)                                                     
   70--|∀⟨x'y'⟩∈{0⋯n}×{0⋯m}                                                                     
   71--|∙∙⦗idxy⦘¬=0∧⦗idxy⦘¬=dc                                                             
   72--|∙∙⦗idxy⦘=⦗idx'y'⦘⇐⇒x=x'∧y=y'∨⦗idxy⦘=dc∧⦗idx'y'⦘=dc                             
   73  --|   ⦗id x y⦘=0 ⇒ x<n ∧ y<m ∧ (⦗id x' y'⦘<=⦗id x y+1⦘ ∧ (y'>y ∨ y'=y ∧ x'>=x) ∨ ⦗id x' y'⦘=dc
   74                                                                                               
   75--|(∀⟨x'y'⟩∈{0⋯n}×{0⋯m}y'<yy'=y∧x'<x⦗idx'y'⦘=dc)⦗idxy⦘∈{0dc}                
   76--|reallywanttomakeuseofthefollowinganditscontrapositive                          
   77--|⦗idxy⦘=0∀⟨x'y'⟩∈{0⋯n}×{0⋯m}y'<yy'=y∧x'<x⦗idx'y'⦘=dc